attio-mcp 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/CHANGELOG.md +62 -0
- package/LICENSE +236 -0
- package/README.md +105 -0
- package/dist/api/attio-client.d.ts +25 -0
- package/dist/api/attio-client.d.ts.map +1 -0
- package/dist/api/attio-client.js +64 -0
- package/dist/api/attio-client.js.map +1 -0
- package/dist/api/attribute-types.d.ts +119 -0
- package/dist/api/attribute-types.d.ts.map +1 -0
- package/dist/api/attribute-types.js +320 -0
- package/dist/api/attribute-types.js.map +1 -0
- package/dist/api/client.d.ts +3 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +61 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/operations/batch.d.ts +55 -0
- package/dist/api/operations/batch.d.ts.map +1 -0
- package/dist/api/operations/batch.js +176 -0
- package/dist/api/operations/batch.js.map +1 -0
- package/dist/api/operations/crud.d.ts +61 -0
- package/dist/api/operations/crud.d.ts.map +1 -0
- package/dist/api/operations/crud.js +192 -0
- package/dist/api/operations/crud.js.map +1 -0
- package/dist/api/operations/index.d.ts +14 -0
- package/dist/api/operations/index.d.ts.map +1 -0
- package/dist/api/operations/index.js +18 -0
- package/dist/api/operations/index.js.map +1 -0
- package/dist/api/operations/lists.d.ts +66 -0
- package/dist/api/operations/lists.d.ts.map +1 -0
- package/dist/api/operations/lists.js +300 -0
- package/dist/api/operations/lists.js.map +1 -0
- package/dist/api/operations/notes.d.ts +29 -0
- package/dist/api/operations/notes.d.ts.map +1 -0
- package/dist/api/operations/notes.js +63 -0
- package/dist/api/operations/notes.js.map +1 -0
- package/dist/api/operations/retry.d.ts +48 -0
- package/dist/api/operations/retry.d.ts.map +1 -0
- package/dist/api/operations/retry.js +98 -0
- package/dist/api/operations/retry.js.map +1 -0
- package/dist/api/operations/search.d.ts +37 -0
- package/dist/api/operations/search.d.ts.map +1 -0
- package/dist/api/operations/search.js +186 -0
- package/dist/api/operations/search.js.map +1 -0
- package/dist/api/operations/tasks.d.ts +20 -0
- package/dist/api/operations/tasks.d.ts.map +1 -0
- package/dist/api/operations/tasks.js +87 -0
- package/dist/api/operations/tasks.js.map +1 -0
- package/dist/api/operations/types.d.ts +61 -0
- package/dist/api/operations/types.d.ts.map +1 -0
- package/dist/api/operations/types.js +10 -0
- package/dist/api/operations/types.js.map +1 -0
- package/dist/cli/commands/attributes.d.ts +34 -0
- package/dist/cli/commands/attributes.d.ts.map +1 -0
- package/dist/cli/commands/attributes.js +171 -0
- package/dist/cli/commands/attributes.js.map +1 -0
- package/dist/cli/discover.d.ts +3 -0
- package/dist/cli/discover.d.ts.map +1 -0
- package/dist/cli/discover.js +72 -0
- package/dist/cli/discover.js.map +1 -0
- package/dist/errors/api-errors.d.ts +191 -0
- package/dist/errors/api-errors.d.ts.map +1 -0
- package/dist/errors/api-errors.js +305 -0
- package/dist/errors/api-errors.js.map +1 -0
- package/dist/errors/company-errors.d.ts +40 -0
- package/dist/errors/company-errors.d.ts.map +1 -0
- package/dist/errors/company-errors.js +62 -0
- package/dist/errors/company-errors.js.map +1 -0
- package/dist/errors/value-match-error.d.ts +15 -0
- package/dist/errors/value-match-error.d.ts.map +1 -0
- package/dist/errors/value-match-error.js +40 -0
- package/dist/errors/value-match-error.js.map +1 -0
- package/dist/handlers/error-interceptor.d.ts +6 -0
- package/dist/handlers/error-interceptor.d.ts.map +1 -0
- package/dist/handlers/error-interceptor.js +17 -0
- package/dist/handlers/error-interceptor.js.map +1 -0
- package/dist/handlers/rate-limited-handler.d.ts +17 -0
- package/dist/handlers/rate-limited-handler.d.ts.map +1 -0
- package/dist/handlers/rate-limited-handler.js +126 -0
- package/dist/handlers/rate-limited-handler.js.map +1 -0
- package/dist/handlers/resources.d.ts +11 -0
- package/dist/handlers/resources.d.ts.map +1 -0
- package/dist/handlers/resources.js +109 -0
- package/dist/handlers/resources.js.map +1 -0
- package/dist/handlers/tool-configs/companies/attributes.d.ts +85 -0
- package/dist/handlers/tool-configs/companies/attributes.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/attributes.js +203 -0
- package/dist/handlers/tool-configs/companies/attributes.js.map +1 -0
- package/dist/handlers/tool-configs/companies/batch.d.ts +145 -0
- package/dist/handlers/tool-configs/companies/batch.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/batch.js +249 -0
- package/dist/handlers/tool-configs/companies/batch.js.map +1 -0
- package/dist/handlers/tool-configs/companies/crud.d.ts +103 -0
- package/dist/handlers/tool-configs/companies/crud.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/crud.js +157 -0
- package/dist/handlers/tool-configs/companies/crud.js.map +1 -0
- package/dist/handlers/tool-configs/companies/definitions.d.ts +5 -0
- package/dist/handlers/tool-configs/companies/definitions.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/definitions.js +9 -0
- package/dist/handlers/tool-configs/companies/definitions.js.map +1 -0
- package/dist/handlers/tool-configs/companies/formatters.d.ts +42 -0
- package/dist/handlers/tool-configs/companies/formatters.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/formatters.js +324 -0
- package/dist/handlers/tool-configs/companies/formatters.js.map +1 -0
- package/dist/handlers/tool-configs/companies/index.d.ts +642 -0
- package/dist/handlers/tool-configs/companies/index.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/index.js +86 -0
- package/dist/handlers/tool-configs/companies/index.js.map +1 -0
- package/dist/handlers/tool-configs/companies/notes.d.ts +61 -0
- package/dist/handlers/tool-configs/companies/notes.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/notes.js +109 -0
- package/dist/handlers/tool-configs/companies/notes.js.map +1 -0
- package/dist/handlers/tool-configs/companies/relationships.d.ts +137 -0
- package/dist/handlers/tool-configs/companies/relationships.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/relationships.js +163 -0
- package/dist/handlers/tool-configs/companies/relationships.js.map +1 -0
- package/dist/handlers/tool-configs/companies/search.d.ts +101 -0
- package/dist/handlers/tool-configs/companies/search.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/search.js +163 -0
- package/dist/handlers/tool-configs/companies/search.js.map +1 -0
- package/dist/handlers/tool-configs/companies/types.d.ts +6 -0
- package/dist/handlers/tool-configs/companies/types.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/types.js +2 -0
- package/dist/handlers/tool-configs/companies/types.js.map +1 -0
- package/dist/handlers/tool-configs/index.d.ts +12 -0
- package/dist/handlers/tool-configs/index.d.ts.map +1 -0
- package/dist/handlers/tool-configs/index.js +12 -0
- package/dist/handlers/tool-configs/index.js.map +1 -0
- package/dist/handlers/tool-configs/lists.d.ts +459 -0
- package/dist/handlers/tool-configs/lists.d.ts.map +1 -0
- package/dist/handlers/tool-configs/lists.js +597 -0
- package/dist/handlers/tool-configs/lists.js.map +1 -0
- package/dist/handlers/tool-configs/paginated-people.d.ts +197 -0
- package/dist/handlers/tool-configs/paginated-people.d.ts.map +1 -0
- package/dist/handlers/tool-configs/paginated-people.js +256 -0
- package/dist/handlers/tool-configs/paginated-people.js.map +1 -0
- package/dist/handlers/tool-configs/people/activity-search.d.ts +98 -0
- package/dist/handlers/tool-configs/people/activity-search.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people/activity-search.js +113 -0
- package/dist/handlers/tool-configs/people/activity-search.js.map +1 -0
- package/dist/handlers/tool-configs/people/advanced-search.d.ts +62 -0
- package/dist/handlers/tool-configs/people/advanced-search.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people/advanced-search.js +74 -0
- package/dist/handlers/tool-configs/people/advanced-search.js.map +1 -0
- package/dist/handlers/tool-configs/people/crud.d.ts +63 -0
- package/dist/handlers/tool-configs/people/crud.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people/crud.js +71 -0
- package/dist/handlers/tool-configs/people/crud.js.map +1 -0
- package/dist/handlers/tool-configs/people/date-search.d.ts +42 -0
- package/dist/handlers/tool-configs/people/date-search.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people/date-search.js +93 -0
- package/dist/handlers/tool-configs/people/date-search.js.map +1 -0
- package/dist/handlers/tool-configs/people/formatters.d.ts +19 -0
- package/dist/handlers/tool-configs/people/formatters.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people/formatters.js +98 -0
- package/dist/handlers/tool-configs/people/formatters.js.map +1 -0
- package/dist/handlers/tool-configs/people/index.d.ts +407 -0
- package/dist/handlers/tool-configs/people/index.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people/index.js +30 -0
- package/dist/handlers/tool-configs/people/index.js.map +1 -0
- package/dist/handlers/tool-configs/people/notes.d.ts +38 -0
- package/dist/handlers/tool-configs/people/notes.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people/notes.js +57 -0
- package/dist/handlers/tool-configs/people/notes.js.map +1 -0
- package/dist/handlers/tool-configs/people/relationships.d.ts +112 -0
- package/dist/handlers/tool-configs/people/relationships.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people/relationships.js +173 -0
- package/dist/handlers/tool-configs/people/relationships.js.map +1 -0
- package/dist/handlers/tool-configs/people/search.d.ts +53 -0
- package/dist/handlers/tool-configs/people/search.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people/search.js +61 -0
- package/dist/handlers/tool-configs/people/search.js.map +1 -0
- package/dist/handlers/tool-configs/people-fix-complete.d.ts +6 -0
- package/dist/handlers/tool-configs/people-fix-complete.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people-fix-complete.js +76 -0
- package/dist/handlers/tool-configs/people-fix-complete.js.map +1 -0
- package/dist/handlers/tool-configs/people-fixed.d.ts +12 -0
- package/dist/handlers/tool-configs/people-fixed.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people-fixed.js +58 -0
- package/dist/handlers/tool-configs/people-fixed.js.map +1 -0
- package/dist/handlers/tool-configs/people-types.d.ts +32 -0
- package/dist/handlers/tool-configs/people-types.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people-types.js +5 -0
- package/dist/handlers/tool-configs/people-types.js.map +1 -0
- package/dist/handlers/tool-configs/people.d.ts +599 -0
- package/dist/handlers/tool-configs/people.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people.js +817 -0
- package/dist/handlers/tool-configs/people.js.map +1 -0
- package/dist/handlers/tool-configs/prompts.d.ts +69 -0
- package/dist/handlers/tool-configs/prompts.d.ts.map +1 -0
- package/dist/handlers/tool-configs/prompts.js +90 -0
- package/dist/handlers/tool-configs/prompts.js.map +1 -0
- package/dist/handlers/tool-configs/rate-limited-people.d.ts +203 -0
- package/dist/handlers/tool-configs/rate-limited-people.d.ts.map +1 -0
- package/dist/handlers/tool-configs/rate-limited-people.js +44 -0
- package/dist/handlers/tool-configs/rate-limited-people.js.map +1 -0
- package/dist/handlers/tool-configs/records/index.d.ts +282 -0
- package/dist/handlers/tool-configs/records/index.d.ts.map +1 -0
- package/dist/handlers/tool-configs/records/index.js +277 -0
- package/dist/handlers/tool-configs/records/index.js.map +1 -0
- package/dist/handlers/tool-configs/records.d.ts +282 -0
- package/dist/handlers/tool-configs/records.d.ts.map +1 -0
- package/dist/handlers/tool-configs/records.js +277 -0
- package/dist/handlers/tool-configs/records.js.map +1 -0
- package/dist/handlers/tool-configs/resource-specific-tools.d.ts +15 -0
- package/dist/handlers/tool-configs/resource-specific-tools.d.ts.map +1 -0
- package/dist/handlers/tool-configs/resource-specific-tools.js +33 -0
- package/dist/handlers/tool-configs/resource-specific-tools.js.map +1 -0
- package/dist/handlers/tool-configs/tasks.d.ts +127 -0
- package/dist/handlers/tool-configs/tasks.d.ts.map +1 -0
- package/dist/handlers/tool-configs/tasks.js +95 -0
- package/dist/handlers/tool-configs/tasks.js.map +1 -0
- package/dist/handlers/tool-types.d.ts +47 -0
- package/dist/handlers/tool-types.d.ts.map +1 -0
- package/dist/handlers/tool-types.js +2 -0
- package/dist/handlers/tool-types.js.map +1 -0
- package/dist/handlers/tools/config-verifier.d.ts +27 -0
- package/dist/handlers/tools/config-verifier.d.ts.map +1 -0
- package/dist/handlers/tools/config-verifier.js +108 -0
- package/dist/handlers/tools/config-verifier.js.map +1 -0
- package/dist/handlers/tools/dispatcher/core.d.ts +12 -0
- package/dist/handlers/tools/dispatcher/core.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/core.js +276 -0
- package/dist/handlers/tools/dispatcher/core.js.map +1 -0
- package/dist/handlers/tools/dispatcher/formatting.d.ts +17 -0
- package/dist/handlers/tools/dispatcher/formatting.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/formatting.js +25 -0
- package/dist/handlers/tools/dispatcher/formatting.js.map +1 -0
- package/dist/handlers/tools/dispatcher/logging.d.ts +63 -0
- package/dist/handlers/tools/dispatcher/logging.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/logging.js +108 -0
- package/dist/handlers/tools/dispatcher/logging.js.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/batch.d.ts +29 -0
- package/dist/handlers/tools/dispatcher/operations/batch.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/batch.js +137 -0
- package/dist/handlers/tools/dispatcher/operations/batch.js.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/crud.d.ts +25 -0
- package/dist/handlers/tools/dispatcher/operations/crud.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/crud.js +110 -0
- package/dist/handlers/tools/dispatcher/operations/crud.js.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/details.d.ts +13 -0
- package/dist/handlers/tools/dispatcher/operations/details.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/details.js +52 -0
- package/dist/handlers/tools/dispatcher/operations/details.js.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/info.d.ts +25 -0
- package/dist/handlers/tools/dispatcher/operations/info.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/info.js +82 -0
- package/dist/handlers/tools/dispatcher/operations/info.js.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/lists.d.ts +62 -0
- package/dist/handlers/tools/dispatcher/operations/lists.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/lists.js +283 -0
- package/dist/handlers/tools/dispatcher/operations/lists.js.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/notes.d.ts +17 -0
- package/dist/handlers/tools/dispatcher/operations/notes.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/notes.js +102 -0
- package/dist/handlers/tools/dispatcher/operations/notes.js.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/search.d.ts +43 -0
- package/dist/handlers/tools/dispatcher/operations/search.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/search.js +190 -0
- package/dist/handlers/tools/dispatcher/operations/search.js.map +1 -0
- package/dist/handlers/tools/dispatcher/validation.d.ts +27 -0
- package/dist/handlers/tools/dispatcher/validation.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/validation.js +47 -0
- package/dist/handlers/tools/dispatcher/validation.js.map +1 -0
- package/dist/handlers/tools/dispatcher.d.ts +11 -0
- package/dist/handlers/tools/dispatcher.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher.js +15 -0
- package/dist/handlers/tools/dispatcher.js.map +1 -0
- package/dist/handlers/tools/error-types.d.ts +33 -0
- package/dist/handlers/tools/error-types.d.ts.map +1 -0
- package/dist/handlers/tools/error-types.js +21 -0
- package/dist/handlers/tools/error-types.js.map +1 -0
- package/dist/handlers/tools/formatters.d.ts +43 -0
- package/dist/handlers/tools/formatters.d.ts.map +1 -0
- package/dist/handlers/tools/formatters.js +170 -0
- package/dist/handlers/tools/formatters.js.map +1 -0
- package/dist/handlers/tools/index.d.ts +15 -0
- package/dist/handlers/tools/index.d.ts.map +1 -0
- package/dist/handlers/tools/index.js +34 -0
- package/dist/handlers/tools/index.js.map +1 -0
- package/dist/handlers/tools/registry.d.ts +1874 -0
- package/dist/handlers/tools/registry.d.ts.map +1 -0
- package/dist/handlers/tools/registry.js +103 -0
- package/dist/handlers/tools/registry.js.map +1 -0
- package/dist/health/http-server.d.ts +24 -0
- package/dist/health/http-server.d.ts.map +1 -0
- package/dist/health/http-server.js +106 -0
- package/dist/health/http-server.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +238 -0
- package/dist/index.js.map +1 -0
- package/dist/objects/base-operations.d.ts +41 -0
- package/dist/objects/base-operations.d.ts.map +1 -0
- package/dist/objects/base-operations.js +116 -0
- package/dist/objects/base-operations.js.map +1 -0
- package/dist/objects/batch-companies.d.ts +112 -0
- package/dist/objects/batch-companies.d.ts.map +1 -0
- package/dist/objects/batch-companies.js +347 -0
- package/dist/objects/batch-companies.js.map +1 -0
- package/dist/objects/companies/attributes.d.ts +83 -0
- package/dist/objects/companies/attributes.d.ts.map +1 -0
- package/dist/objects/companies/attributes.js +426 -0
- package/dist/objects/companies/attributes.js.map +1 -0
- package/dist/objects/companies/basic.d.ts +117 -0
- package/dist/objects/companies/basic.d.ts.map +1 -0
- package/dist/objects/companies/basic.js +367 -0
- package/dist/objects/companies/basic.js.map +1 -0
- package/dist/objects/companies/batch.d.ts +6 -0
- package/dist/objects/companies/batch.d.ts.map +1 -0
- package/dist/objects/companies/batch.js +6 -0
- package/dist/objects/companies/batch.js.map +1 -0
- package/dist/objects/companies/index.d.ts +13 -0
- package/dist/objects/companies/index.d.ts.map +1 -0
- package/dist/objects/companies/index.js +17 -0
- package/dist/objects/companies/index.js.map +1 -0
- package/dist/objects/companies/notes.d.ts +26 -0
- package/dist/objects/companies/notes.d.ts.map +1 -0
- package/dist/objects/companies/notes.js +199 -0
- package/dist/objects/companies/notes.js.map +1 -0
- package/dist/objects/companies/relationships.d.ts +41 -0
- package/dist/objects/companies/relationships.d.ts.map +1 -0
- package/dist/objects/companies/relationships.js +142 -0
- package/dist/objects/companies/relationships.js.map +1 -0
- package/dist/objects/companies/search.d.ts +158 -0
- package/dist/objects/companies/search.d.ts.map +1 -0
- package/dist/objects/companies/search.js +463 -0
- package/dist/objects/companies/search.js.map +1 -0
- package/dist/objects/companies/types.d.ts +27 -0
- package/dist/objects/companies/types.d.ts.map +1 -0
- package/dist/objects/companies/types.js +3 -0
- package/dist/objects/companies/types.js.map +1 -0
- package/dist/objects/lists.d.ts +148 -0
- package/dist/objects/lists.d.ts.map +1 -0
- package/dist/objects/lists.js +586 -0
- package/dist/objects/lists.js.map +1 -0
- package/dist/objects/paginated-people.d.ts +50 -0
- package/dist/objects/paginated-people.d.ts.map +1 -0
- package/dist/objects/paginated-people.js +171 -0
- package/dist/objects/paginated-people.js.map +1 -0
- package/dist/objects/people/basic.d.ts +90 -0
- package/dist/objects/people/basic.d.ts.map +1 -0
- package/dist/objects/people/basic.js +157 -0
- package/dist/objects/people/basic.js.map +1 -0
- package/dist/objects/people/batch.d.ts +24 -0
- package/dist/objects/people/batch.d.ts.map +1 -0
- package/dist/objects/people/batch.js +145 -0
- package/dist/objects/people/batch.js.map +1 -0
- package/dist/objects/people/index.d.ts +11 -0
- package/dist/objects/people/index.d.ts.map +1 -0
- package/dist/objects/people/index.js +17 -0
- package/dist/objects/people/index.js.map +1 -0
- package/dist/objects/people/notes.d.ts +20 -0
- package/dist/objects/people/notes.d.ts.map +1 -0
- package/dist/objects/people/notes.js +60 -0
- package/dist/objects/people/notes.js.map +1 -0
- package/dist/objects/people/relationships.d.ts +23 -0
- package/dist/objects/people/relationships.d.ts.map +1 -0
- package/dist/objects/people/relationships.js +116 -0
- package/dist/objects/people/relationships.js.map +1 -0
- package/dist/objects/people/search.d.ts +83 -0
- package/dist/objects/people/search.d.ts.map +1 -0
- package/dist/objects/people/search.js +286 -0
- package/dist/objects/people/search.js.map +1 -0
- package/dist/objects/people/types.d.ts +37 -0
- package/dist/objects/people/types.d.ts.map +1 -0
- package/dist/objects/people/types.js +71 -0
- package/dist/objects/people/types.js.map +1 -0
- package/dist/objects/people-write.d.ts +71 -0
- package/dist/objects/people-write.d.ts.map +1 -0
- package/dist/objects/people-write.js +261 -0
- package/dist/objects/people-write.js.map +1 -0
- package/dist/objects/records/formatters.d.ts +20 -0
- package/dist/objects/records/formatters.d.ts.map +1 -0
- package/dist/objects/records/formatters.js +47 -0
- package/dist/objects/records/formatters.js.map +1 -0
- package/dist/objects/records/index.d.ts +74 -0
- package/dist/objects/records/index.d.ts.map +1 -0
- package/dist/objects/records/index.js +374 -0
- package/dist/objects/records/index.js.map +1 -0
- package/dist/objects/records.d.ts +88 -0
- package/dist/objects/records.d.ts.map +1 -0
- package/dist/objects/records.js +432 -0
- package/dist/objects/records.js.map +1 -0
- package/dist/objects/tasks.d.ts +19 -0
- package/dist/objects/tasks.d.ts.map +1 -0
- package/dist/objects/tasks.js +23 -0
- package/dist/objects/tasks.js.map +1 -0
- package/dist/prompts/error-handler.d.ts +28 -0
- package/dist/prompts/error-handler.d.ts.map +1 -0
- package/dist/prompts/error-handler.js +47 -0
- package/dist/prompts/error-handler.js.map +1 -0
- package/dist/prompts/handlers.d.ts +49 -0
- package/dist/prompts/handlers.d.ts.map +1 -0
- package/dist/prompts/handlers.js +353 -0
- package/dist/prompts/handlers.js.map +1 -0
- package/dist/prompts/index.d.ts +11 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +15 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/templates/companies.d.ts +10 -0
- package/dist/prompts/templates/companies.d.ts.map +1 -0
- package/dist/prompts/templates/companies.js +128 -0
- package/dist/prompts/templates/companies.js.map +1 -0
- package/dist/prompts/templates/index.d.ts +42 -0
- package/dist/prompts/templates/index.d.ts.map +1 -0
- package/dist/prompts/templates/index.js +58 -0
- package/dist/prompts/templates/index.js.map +1 -0
- package/dist/prompts/templates/lists.d.ts +10 -0
- package/dist/prompts/templates/lists.d.ts.map +1 -0
- package/dist/prompts/templates/lists.js +127 -0
- package/dist/prompts/templates/lists.js.map +1 -0
- package/dist/prompts/templates/notes.d.ts +10 -0
- package/dist/prompts/templates/notes.d.ts.map +1 -0
- package/dist/prompts/templates/notes.js +119 -0
- package/dist/prompts/templates/notes.js.map +1 -0
- package/dist/prompts/templates/people.d.ts +10 -0
- package/dist/prompts/templates/people.d.ts.map +1 -0
- package/dist/prompts/templates/people.js +127 -0
- package/dist/prompts/templates/people.js.map +1 -0
- package/dist/prompts/types.d.ts +52 -0
- package/dist/prompts/types.d.ts.map +1 -0
- package/dist/prompts/types.js +5 -0
- package/dist/prompts/types.js.map +1 -0
- package/dist/types/attio.d.ts +424 -0
- package/dist/types/attio.d.ts.map +1 -0
- package/dist/types/attio.js +116 -0
- package/dist/types/attio.js.map +1 -0
- package/dist/types/company-types.d.ts +52 -0
- package/dist/types/company-types.d.ts.map +1 -0
- package/dist/types/company-types.js +5 -0
- package/dist/types/company-types.js.map +1 -0
- package/dist/types/tool-types.d.ts +262 -0
- package/dist/types/tool-types.d.ts.map +1 -0
- package/dist/types/tool-types.js +6 -0
- package/dist/types/tool-types.js.map +1 -0
- package/dist/utils/api-fallback.d.ts +39 -0
- package/dist/utils/api-fallback.d.ts.map +1 -0
- package/dist/utils/api-fallback.js +94 -0
- package/dist/utils/api-fallback.js.map +1 -0
- package/dist/utils/attribute-mapping/attribute-mappers.d.ts +39 -0
- package/dist/utils/attribute-mapping/attribute-mappers.d.ts.map +1 -0
- package/dist/utils/attribute-mapping/attribute-mappers.js +394 -0
- package/dist/utils/attribute-mapping/attribute-mappers.js.map +1 -0
- package/dist/utils/attribute-mapping/filter-translator.d.ts +9 -0
- package/dist/utils/attribute-mapping/filter-translator.d.ts.map +1 -0
- package/dist/utils/attribute-mapping/filter-translator.js +104 -0
- package/dist/utils/attribute-mapping/filter-translator.js.map +1 -0
- package/dist/utils/attribute-mapping/index.d.ts +10 -0
- package/dist/utils/attribute-mapping/index.d.ts.map +1 -0
- package/dist/utils/attribute-mapping/index.js +12 -0
- package/dist/utils/attribute-mapping/index.js.map +1 -0
- package/dist/utils/attribute-mapping/legacy-maps.d.ts +11 -0
- package/dist/utils/attribute-mapping/legacy-maps.d.ts.map +1 -0
- package/dist/utils/attribute-mapping/legacy-maps.js +54 -0
- package/dist/utils/attribute-mapping/legacy-maps.js.map +1 -0
- package/dist/utils/attribute-mapping/mapping-utils.d.ts +90 -0
- package/dist/utils/attribute-mapping/mapping-utils.d.ts.map +1 -0
- package/dist/utils/attribute-mapping/mapping-utils.js +145 -0
- package/dist/utils/attribute-mapping/mapping-utils.js.map +1 -0
- package/dist/utils/auto-discovery.d.ts +22 -0
- package/dist/utils/auto-discovery.d.ts.map +1 -0
- package/dist/utils/auto-discovery.js +143 -0
- package/dist/utils/auto-discovery.js.map +1 -0
- package/dist/utils/cli-colors.d.ts +36 -0
- package/dist/utils/cli-colors.d.ts.map +1 -0
- package/dist/utils/cli-colors.js +35 -0
- package/dist/utils/cli-colors.js.map +1 -0
- package/dist/utils/config-loader.d.ts +41 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +167 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/dist/utils/config-migration.d.ts +140 -0
- package/dist/utils/config-migration.d.ts.map +1 -0
- package/dist/utils/config-migration.js +310 -0
- package/dist/utils/config-migration.js.map +1 -0
- package/dist/utils/date-utils.d.ts +63 -0
- package/dist/utils/date-utils.d.ts.map +1 -0
- package/dist/utils/date-utils.js +329 -0
- package/dist/utils/date-utils.js.map +1 -0
- package/dist/utils/debug-b2b-segment.d.ts +2 -0
- package/dist/utils/debug-b2b-segment.d.ts.map +1 -0
- package/dist/utils/debug-b2b-segment.js +67 -0
- package/dist/utils/debug-b2b-segment.js.map +1 -0
- package/dist/utils/domain-utils.d.ts +46 -0
- package/dist/utils/domain-utils.d.ts.map +1 -0
- package/dist/utils/domain-utils.js +143 -0
- package/dist/utils/domain-utils.js.map +1 -0
- package/dist/utils/dynamic-import.d.ts +33 -0
- package/dist/utils/dynamic-import.d.ts.map +1 -0
- package/dist/utils/dynamic-import.js +41 -0
- package/dist/utils/dynamic-import.js.map +1 -0
- package/dist/utils/error-enhancer.d.ts +23 -0
- package/dist/utils/error-enhancer.d.ts.map +1 -0
- package/dist/utils/error-enhancer.js +188 -0
- package/dist/utils/error-enhancer.js.map +1 -0
- package/dist/utils/error-handler.d.ts +89 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +336 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/filters/builders/activity.d.ts +13 -0
- package/dist/utils/filters/builders/activity.d.ts.map +1 -0
- package/dist/utils/filters/builders/activity.js +65 -0
- package/dist/utils/filters/builders/activity.js.map +1 -0
- package/dist/utils/filters/builders/basic.d.ts +13 -0
- package/dist/utils/filters/builders/basic.d.ts.map +1 -0
- package/dist/utils/filters/builders/basic.js +36 -0
- package/dist/utils/filters/builders/basic.js.map +1 -0
- package/dist/utils/filters/builders/complex.d.ts +31 -0
- package/dist/utils/filters/builders/complex.d.ts.map +1 -0
- package/dist/utils/filters/builders/complex.js +92 -0
- package/dist/utils/filters/builders/complex.js.map +1 -0
- package/dist/utils/filters/builders/date.d.ts +17 -0
- package/dist/utils/filters/builders/date.d.ts.map +1 -0
- package/dist/utils/filters/builders/date.js +51 -0
- package/dist/utils/filters/builders/date.js.map +1 -0
- package/dist/utils/filters/builders/index.d.ts +8 -0
- package/dist/utils/filters/builders/index.d.ts.map +1 -0
- package/dist/utils/filters/builders/index.js +8 -0
- package/dist/utils/filters/builders/index.js.map +1 -0
- package/dist/utils/filters/builders/numeric.d.ts +17 -0
- package/dist/utils/filters/builders/numeric.d.ts.map +1 -0
- package/dist/utils/filters/builders/numeric.js +61 -0
- package/dist/utils/filters/builders/numeric.js.map +1 -0
- package/dist/utils/filters/builders/text.d.ts +17 -0
- package/dist/utils/filters/builders/text.d.ts.map +1 -0
- package/dist/utils/filters/builders/text.js +47 -0
- package/dist/utils/filters/builders/text.js.map +1 -0
- package/dist/utils/filters/builders/types.d.ts +2 -0
- package/dist/utils/filters/builders/types.d.ts.map +1 -0
- package/dist/utils/filters/builders/types.js +2 -0
- package/dist/utils/filters/builders/types.js.map +1 -0
- package/dist/utils/filters/builders.d.ts +2 -0
- package/dist/utils/filters/builders.d.ts.map +1 -0
- package/dist/utils/filters/builders.js +2 -0
- package/dist/utils/filters/builders.js.map +1 -0
- package/dist/utils/filters/cache.d.ts +80 -0
- package/dist/utils/filters/cache.d.ts.map +1 -0
- package/dist/utils/filters/cache.js +212 -0
- package/dist/utils/filters/cache.js.map +1 -0
- package/dist/utils/filters/index.d.ts +51 -0
- package/dist/utils/filters/index.d.ts.map +1 -0
- package/dist/utils/filters/index.js +67 -0
- package/dist/utils/filters/index.js.map +1 -0
- package/dist/utils/filters/operators.d.ts +65 -0
- package/dist/utils/filters/operators.d.ts.map +1 -0
- package/dist/utils/filters/operators.js +214 -0
- package/dist/utils/filters/operators.js.map +1 -0
- package/dist/utils/filters/relationship.d.ts +81 -0
- package/dist/utils/filters/relationship.d.ts.map +1 -0
- package/dist/utils/filters/relationship.js +393 -0
- package/dist/utils/filters/relationship.js.map +1 -0
- package/dist/utils/filters/translators.d.ts +120 -0
- package/dist/utils/filters/translators.d.ts.map +1 -0
- package/dist/utils/filters/translators.js +397 -0
- package/dist/utils/filters/translators.js.map +1 -0
- package/dist/utils/filters/types.d.ts +77 -0
- package/dist/utils/filters/types.d.ts.map +1 -0
- package/dist/utils/filters/types.js +85 -0
- package/dist/utils/filters/types.js.map +1 -0
- package/dist/utils/filters/utils.d.ts +86 -0
- package/dist/utils/filters/utils.d.ts.map +1 -0
- package/dist/utils/filters/utils.js +142 -0
- package/dist/utils/filters/utils.js.map +1 -0
- package/dist/utils/filters/validation-utils.d.ts +123 -0
- package/dist/utils/filters/validation-utils.d.ts.map +1 -0
- package/dist/utils/filters/validation-utils.js +282 -0
- package/dist/utils/filters/validation-utils.js.map +1 -0
- package/dist/utils/filters/validators.d.ts +73 -0
- package/dist/utils/filters/validators.d.ts.map +1 -0
- package/dist/utils/filters/validators.js +311 -0
- package/dist/utils/filters/validators.js.map +1 -0
- package/dist/utils/json-serializer.d.ts +68 -0
- package/dist/utils/json-serializer.d.ts.map +1 -0
- package/dist/utils/json-serializer.js +235 -0
- package/dist/utils/json-serializer.js.map +1 -0
- package/dist/utils/logger.d.ts +226 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +323 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/numeric-utils.d.ts +27 -0
- package/dist/utils/numeric-utils.d.ts.map +1 -0
- package/dist/utils/numeric-utils.js +83 -0
- package/dist/utils/numeric-utils.js.map +1 -0
- package/dist/utils/pagination.d.ts +85 -0
- package/dist/utils/pagination.d.ts.map +1 -0
- package/dist/utils/pagination.js +169 -0
- package/dist/utils/pagination.js.map +1 -0
- package/dist/utils/person-lookup.d.ts +35 -0
- package/dist/utils/person-lookup.d.ts.map +1 -0
- package/dist/utils/person-lookup.js +67 -0
- package/dist/utils/person-lookup.js.map +1 -0
- package/dist/utils/rate-limiter.d.ts +82 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +159 -0
- package/dist/utils/rate-limiter.js.map +1 -0
- package/dist/utils/record-utils.d.ts +74 -0
- package/dist/utils/record-utils.d.ts.map +1 -0
- package/dist/utils/record-utils.js +312 -0
- package/dist/utils/record-utils.js.map +1 -0
- package/dist/utils/relationship-utils.d.ts +61 -0
- package/dist/utils/relationship-utils.d.ts.map +1 -0
- package/dist/utils/relationship-utils.js +242 -0
- package/dist/utils/relationship-utils.js.map +1 -0
- package/dist/utils/response-formatter.d.ts +121 -0
- package/dist/utils/response-formatter.d.ts.map +1 -0
- package/dist/utils/response-formatter.js +188 -0
- package/dist/utils/response-formatter.js.map +1 -0
- package/dist/utils/uri-parser.d.ts +18 -0
- package/dist/utils/uri-parser.d.ts.map +1 -0
- package/dist/utils/uri-parser.js +31 -0
- package/dist/utils/uri-parser.js.map +1 -0
- package/dist/utils/validation.d.ts +59 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +264 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/utils/value-matcher.d.ts +58 -0
- package/dist/utils/value-matcher.d.ts.map +1 -0
- package/dist/utils/value-matcher.js +131 -0
- package/dist/utils/value-matcher.js.map +1 -0
- package/dist/validators/attribute-validator.d.ts +59 -0
- package/dist/validators/attribute-validator.d.ts.map +1 -0
- package/dist/validators/attribute-validator.js +531 -0
- package/dist/validators/attribute-validator.js.map +1 -0
- package/dist/validators/company/field_detector.d.ts +5 -0
- package/dist/validators/company/field_detector.d.ts.map +1 -0
- package/dist/validators/company/field_detector.js +95 -0
- package/dist/validators/company/field_detector.js.map +1 -0
- package/dist/validators/company/index.d.ts +26 -0
- package/dist/validators/company/index.d.ts.map +1 -0
- package/dist/validators/company/index.js +433 -0
- package/dist/validators/company/index.js.map +1 -0
- package/dist/validators/company/type_cache.d.ts +14 -0
- package/dist/validators/company/type_cache.d.ts.map +1 -0
- package/dist/validators/company/type_cache.js +28 -0
- package/dist/validators/company/type_cache.js.map +1 -0
- package/dist/validators/company/types.d.ts +8 -0
- package/dist/validators/company/types.d.ts.map +1 -0
- package/dist/validators/company/types.js +2 -0
- package/dist/validators/company/types.js.map +1 -0
- package/dist/validators/company-validator.d.ts +2 -0
- package/dist/validators/company-validator.d.ts.map +1 -0
- package/dist/validators/company-validator.js +2 -0
- package/dist/validators/company-validator.js.map +1 -0
- package/package.json +167 -0
|
@@ -0,0 +1,817 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility function to safely extract a person's name from Attio record format.
|
|
3
|
+
* Tries multiple potential paths to find a valid name.
|
|
4
|
+
*
|
|
5
|
+
* @param person - The person record from Attio API
|
|
6
|
+
* @returns The person's name or 'Unnamed' if not found
|
|
7
|
+
*/
|
|
8
|
+
function getPersonName(person) {
|
|
9
|
+
// Try multiple potential paths to find a name
|
|
10
|
+
return (person.values?.name?.[0]?.full_name ||
|
|
11
|
+
person.values?.name?.[0]?.value ||
|
|
12
|
+
person.values?.name?.[0]?.formatted ||
|
|
13
|
+
person.values?.full_name?.[0]?.value ||
|
|
14
|
+
person.attributes?.name?.value ||
|
|
15
|
+
'Unnamed');
|
|
16
|
+
}
|
|
17
|
+
import { searchPeople, searchPeopleByEmail, searchPeopleByPhone, getPersonDetails, getPersonNotes, createPersonNote, searchPeopleByCreationDate, searchPeopleByModificationDate, searchPeopleByLastInteraction, searchPeopleByActivity, searchPeopleByCompanyList, searchPeopleByNotes, advancedSearchPeople, } from '../../objects/people/index.js';
|
|
18
|
+
import { createPerson } from '../../objects/people-write.js';
|
|
19
|
+
import { searchCompanies } from '../../objects/companies/index.js';
|
|
20
|
+
import { getAttioClient } from '../../api/attio-client.js';
|
|
21
|
+
// People tool configurations
|
|
22
|
+
export const peopleToolConfigs = {
|
|
23
|
+
create: {
|
|
24
|
+
name: 'create-person',
|
|
25
|
+
handler: async (objectSlug, attributes, _objectId) => {
|
|
26
|
+
// Adapter function to match RecordCreateToolConfig interface
|
|
27
|
+
// The dispatcher passes (objectSlug, attributes, objectId) but createPerson only needs attributes
|
|
28
|
+
try {
|
|
29
|
+
return await createPerson(attributes);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
// Add context to errors for better debugging
|
|
33
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
34
|
+
const contextualError = new Error(`Failed to create person via adapter: ${errorMessage}`);
|
|
35
|
+
contextualError.cause = error;
|
|
36
|
+
throw contextualError;
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
formatResult: (result) => `Person created: ${getPersonName(result)} (ID: ${result.id?.record_id || result.id || 'unknown'})`,
|
|
40
|
+
},
|
|
41
|
+
search: {
|
|
42
|
+
name: 'search-people',
|
|
43
|
+
handler: searchPeople,
|
|
44
|
+
formatResult: (results) => {
|
|
45
|
+
return results
|
|
46
|
+
.map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'})`)
|
|
47
|
+
.join('\n');
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
searchByEmail: {
|
|
51
|
+
name: 'search-people-by-email',
|
|
52
|
+
handler: searchPeopleByEmail,
|
|
53
|
+
formatResult: (results) => {
|
|
54
|
+
return results
|
|
55
|
+
.map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'})`)
|
|
56
|
+
.join('\n');
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
searchByPhone: {
|
|
60
|
+
name: 'search-people-by-phone',
|
|
61
|
+
handler: searchPeopleByPhone,
|
|
62
|
+
formatResult: (results) => {
|
|
63
|
+
return results
|
|
64
|
+
.map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'})`)
|
|
65
|
+
.join('\n');
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
advancedSearch: {
|
|
69
|
+
name: 'advanced-search-people',
|
|
70
|
+
handler: advancedSearchPeople,
|
|
71
|
+
formatResult: (response) => {
|
|
72
|
+
const results = response.results || response;
|
|
73
|
+
return results
|
|
74
|
+
.map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'})`)
|
|
75
|
+
.join('\n');
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
details: {
|
|
79
|
+
name: 'get-person-details',
|
|
80
|
+
handler: getPersonDetails,
|
|
81
|
+
/**
|
|
82
|
+
* Formats a person record into a human-readable string representation
|
|
83
|
+
*
|
|
84
|
+
* This function takes a Person object from the Attio API and formats it into a
|
|
85
|
+
* well-structured, human-readable markdown text. It organizes person details into
|
|
86
|
+
* logical sections (basic info, contact, professional, additional attributes) and
|
|
87
|
+
* handles edge cases like missing or empty values.
|
|
88
|
+
*
|
|
89
|
+
* @param person - The person record to format
|
|
90
|
+
* @returns A formatted string with person details in markdown format
|
|
91
|
+
*/
|
|
92
|
+
formatResult: (person) => {
|
|
93
|
+
if (!person || !person.id || !person.values) {
|
|
94
|
+
return 'No person details found.';
|
|
95
|
+
}
|
|
96
|
+
const personId = person.id.record_id || 'unknown';
|
|
97
|
+
const name = person.values.name?.[0]?.value || 'Unnamed';
|
|
98
|
+
// Define fields that are displayed in specific sections to avoid duplicating them
|
|
99
|
+
const DISPLAYED_FIELDS = [
|
|
100
|
+
'name',
|
|
101
|
+
'email_addresses',
|
|
102
|
+
'phone_numbers',
|
|
103
|
+
'job_title',
|
|
104
|
+
'company',
|
|
105
|
+
];
|
|
106
|
+
// Build sections of the output
|
|
107
|
+
const sections = [];
|
|
108
|
+
// Basic information section
|
|
109
|
+
sections.push(`# Person Details: ${name} (ID: ${personId})`);
|
|
110
|
+
// Contact information section
|
|
111
|
+
const contactInfo = [];
|
|
112
|
+
if (person.values.email_addresses?.length) {
|
|
113
|
+
contactInfo.push(`Email: ${person.values.email_addresses
|
|
114
|
+
.map((e) => e.email_address || e.value || 'N/A')
|
|
115
|
+
.join(', ')}`);
|
|
116
|
+
}
|
|
117
|
+
if (person.values.phone_numbers?.length) {
|
|
118
|
+
contactInfo.push(`Phone: ${person.values.phone_numbers
|
|
119
|
+
.map((p) => p.phone_number || p.value || 'N/A')
|
|
120
|
+
.join(', ')}`);
|
|
121
|
+
}
|
|
122
|
+
if (contactInfo.length) {
|
|
123
|
+
sections.push(`## Contact Information\n${contactInfo.join('\n')}`);
|
|
124
|
+
}
|
|
125
|
+
// Professional information section
|
|
126
|
+
const professionalInfo = [];
|
|
127
|
+
if (person.values.job_title?.[0]?.value) {
|
|
128
|
+
professionalInfo.push(`Job Title: ${person.values.job_title[0].value}`);
|
|
129
|
+
}
|
|
130
|
+
if (person.values.company?.[0]?.value) {
|
|
131
|
+
professionalInfo.push(`Company: ${person.values.company[0].value}`);
|
|
132
|
+
}
|
|
133
|
+
if (professionalInfo.length) {
|
|
134
|
+
sections.push(`## Professional Information\n${professionalInfo.join('\n')}`);
|
|
135
|
+
}
|
|
136
|
+
// Additional attributes section - show all other attributes
|
|
137
|
+
const additionalAttributes = [];
|
|
138
|
+
for (const [key, values] of Object.entries(person.values)) {
|
|
139
|
+
// Skip already displayed attributes
|
|
140
|
+
if (DISPLAYED_FIELDS.includes(key)) {
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
if (Array.isArray(values) && values.length > 0) {
|
|
144
|
+
// Format different value types appropriately
|
|
145
|
+
const formattedValues = values
|
|
146
|
+
.map((v) => {
|
|
147
|
+
if (v.value === undefined)
|
|
148
|
+
return 'N/A';
|
|
149
|
+
if (typeof v.value === 'object')
|
|
150
|
+
return JSON.stringify(v.value);
|
|
151
|
+
return String(v.value);
|
|
152
|
+
})
|
|
153
|
+
.join(', ');
|
|
154
|
+
// Convert snake_case to Title Case for display
|
|
155
|
+
const displayKey = key
|
|
156
|
+
.replace(/_/g, ' ')
|
|
157
|
+
.replace(/\b\w/g, (c) => c.toUpperCase());
|
|
158
|
+
additionalAttributes.push(`${displayKey}: ${formattedValues}`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (additionalAttributes.length) {
|
|
162
|
+
sections.push(`## Additional Attributes\n${additionalAttributes.join('\n')}`);
|
|
163
|
+
}
|
|
164
|
+
// Timestamps section
|
|
165
|
+
const timestamps = [];
|
|
166
|
+
if (person.values.created_at?.[0]?.value) {
|
|
167
|
+
timestamps.push(`Created: ${person.values.created_at[0].value}`);
|
|
168
|
+
}
|
|
169
|
+
if (person.values.updated_at?.[0]?.value) {
|
|
170
|
+
timestamps.push(`Updated: ${person.values.updated_at[0].value}`);
|
|
171
|
+
}
|
|
172
|
+
if (timestamps.length) {
|
|
173
|
+
sections.push(`## Timestamps\n${timestamps.join('\n')}`);
|
|
174
|
+
}
|
|
175
|
+
return sections.join('\n\n');
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
notes: {
|
|
179
|
+
name: 'get-person-notes',
|
|
180
|
+
handler: getPersonNotes,
|
|
181
|
+
formatResult: (notes) => {
|
|
182
|
+
if (!notes || notes.length === 0) {
|
|
183
|
+
return 'No notes found for this person.';
|
|
184
|
+
}
|
|
185
|
+
return `Found ${notes.length} notes:\n${notes
|
|
186
|
+
.map((note) => `- ${note.title || 'Untitled'} (Created: ${note.timestamp || 'unknown'})\n ${note.content ? note.content.substring(0, 100) + '...' : 'No content'}`)
|
|
187
|
+
.join('\n\n')}`;
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
createNote: {
|
|
191
|
+
name: 'create-person-note',
|
|
192
|
+
handler: createPersonNote,
|
|
193
|
+
idParam: 'personId',
|
|
194
|
+
},
|
|
195
|
+
// Advanced search and activity filtering tools
|
|
196
|
+
searchByCreationDate: {
|
|
197
|
+
name: 'search-people-by-creation-date',
|
|
198
|
+
handler: searchPeopleByCreationDate,
|
|
199
|
+
formatResult: (results) => {
|
|
200
|
+
return `Found ${results.length} people created in the specified date range:\n${results
|
|
201
|
+
.map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'}, Created: ${person.values?.created_at || 'unknown'})`)
|
|
202
|
+
.join('\n')}`;
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
searchByModificationDate: {
|
|
206
|
+
name: 'search-people-by-modification-date',
|
|
207
|
+
handler: searchPeopleByModificationDate,
|
|
208
|
+
formatResult: (results) => {
|
|
209
|
+
return `Found ${results.length} people modified in the specified date range:\n${results
|
|
210
|
+
.map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'}, Modified: ${person.values?.updated_at || 'unknown'})`)
|
|
211
|
+
.join('\n')}`;
|
|
212
|
+
},
|
|
213
|
+
},
|
|
214
|
+
searchByLastInteraction: {
|
|
215
|
+
name: 'search-people-by-last-interaction',
|
|
216
|
+
handler: searchPeopleByLastInteraction,
|
|
217
|
+
formatResult: (results) => {
|
|
218
|
+
return `Found ${results.length} people with interactions in the specified date range:\n${results
|
|
219
|
+
.map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'}, Last Interaction: ${person.values?.last_interaction?.interacted_at || 'unknown'})`)
|
|
220
|
+
.join('\n')}`;
|
|
221
|
+
},
|
|
222
|
+
},
|
|
223
|
+
searchByActivity: {
|
|
224
|
+
name: 'search-people-by-activity',
|
|
225
|
+
handler: searchPeopleByActivity,
|
|
226
|
+
formatResult: (results) => {
|
|
227
|
+
return `Found ${results.length} people with matching activity:\n${results
|
|
228
|
+
.map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'}, Last Interaction: ${person.values?.last_interaction?.interacted_at || 'unknown'})`)
|
|
229
|
+
.join('\n')}`;
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
// Relationship-based filtering tools
|
|
233
|
+
searchByCompany: {
|
|
234
|
+
name: 'search-people-by-company',
|
|
235
|
+
/**
|
|
236
|
+
* Handler for searching people by company affiliation
|
|
237
|
+
*
|
|
238
|
+
* This handler transforms the filter to match Attio API expectations
|
|
239
|
+
* for record reference attributes (company.target_record_id)
|
|
240
|
+
*/
|
|
241
|
+
handler: async (args) => {
|
|
242
|
+
// Extract companyFilter from arguments
|
|
243
|
+
const { companyFilter } = args;
|
|
244
|
+
// Log the incoming request for debugging
|
|
245
|
+
if (process.env.NODE_ENV === 'development') {
|
|
246
|
+
console.log('[search-people-by-company] Received filter:', JSON.stringify(companyFilter, null, 2));
|
|
247
|
+
}
|
|
248
|
+
// Validate filter structure
|
|
249
|
+
if (!companyFilter?.filters ||
|
|
250
|
+
!Array.isArray(companyFilter.filters) ||
|
|
251
|
+
companyFilter.filters.length === 0) {
|
|
252
|
+
throw new Error('Invalid companyFilter format. Expected filters array with at least one filter');
|
|
253
|
+
}
|
|
254
|
+
// Process filters to handle company ID and name lookups
|
|
255
|
+
const filters = [];
|
|
256
|
+
for (const filter of companyFilter.filters) {
|
|
257
|
+
const slug = filter.attribute?.slug;
|
|
258
|
+
if (slug === 'companies.id') {
|
|
259
|
+
// Direct company ID filter - use correct Attio structure
|
|
260
|
+
const recordId = filter.value?.record_id || filter.value;
|
|
261
|
+
// Transform to Attio API structure for record reference
|
|
262
|
+
// API expects shorthand format: { company: { target_record_id: { $eq: "id" } } }
|
|
263
|
+
filters.push({
|
|
264
|
+
company: {
|
|
265
|
+
target_record_id: {
|
|
266
|
+
$eq: recordId,
|
|
267
|
+
},
|
|
268
|
+
},
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
else if (slug === 'companies.name') {
|
|
272
|
+
// Company name filter - need to look up company ID first
|
|
273
|
+
try {
|
|
274
|
+
const companies = await searchCompanies(filter.value);
|
|
275
|
+
if (companies.length === 0) {
|
|
276
|
+
throw new Error(`No company found with name: ${filter.value}`);
|
|
277
|
+
}
|
|
278
|
+
// Use the first matching company's ID
|
|
279
|
+
const companyId = companies[0].id?.record_id;
|
|
280
|
+
filters.push({
|
|
281
|
+
company: {
|
|
282
|
+
target_record_id: {
|
|
283
|
+
$eq: companyId,
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
catch (error) {
|
|
289
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
290
|
+
throw new Error(`Failed to find company by name: ${errorMessage}`);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
// Unknown filter type - throw error for better debugging
|
|
295
|
+
throw new Error(`Unsupported filter type: '${slug}'. ` +
|
|
296
|
+
`Supported filters are: 'companies.id' and 'companies.name'`);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
// Create the final filter structure
|
|
300
|
+
const apiFilter = filters.length === 1
|
|
301
|
+
? filters[0]
|
|
302
|
+
: companyFilter.matchAny
|
|
303
|
+
? { $or: filters }
|
|
304
|
+
: { $and: filters };
|
|
305
|
+
if (process.env.NODE_ENV === 'development') {
|
|
306
|
+
console.log('[search-people-by-company] Final API filter:', JSON.stringify(apiFilter, null, 2));
|
|
307
|
+
}
|
|
308
|
+
// Use the Attio API directly to avoid filter transformation issues
|
|
309
|
+
const api = getAttioClient();
|
|
310
|
+
const response = await api.post('/objects/people/records/query', {
|
|
311
|
+
filter: apiFilter,
|
|
312
|
+
limit: 50,
|
|
313
|
+
});
|
|
314
|
+
return response.data.data || [];
|
|
315
|
+
},
|
|
316
|
+
formatResult: (results) => {
|
|
317
|
+
return `Found ${results.length} people matching the company filter:\n${results
|
|
318
|
+
.map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'})`)
|
|
319
|
+
.join('\n')}`;
|
|
320
|
+
},
|
|
321
|
+
},
|
|
322
|
+
searchByCompanyList: {
|
|
323
|
+
name: 'search-people-by-company-list',
|
|
324
|
+
handler: searchPeopleByCompanyList,
|
|
325
|
+
formatResult: (results) => {
|
|
326
|
+
return `Found ${results.length} people who work at companies in the specified list:\n${results
|
|
327
|
+
.map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'})`)
|
|
328
|
+
.join('\n')}`;
|
|
329
|
+
},
|
|
330
|
+
},
|
|
331
|
+
searchByNotes: {
|
|
332
|
+
name: 'search-people-by-notes',
|
|
333
|
+
handler: searchPeopleByNotes,
|
|
334
|
+
formatResult: (results) => {
|
|
335
|
+
return `Found ${results.length} people with matching notes:\n${results
|
|
336
|
+
.map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'})`)
|
|
337
|
+
.join('\n')}`;
|
|
338
|
+
},
|
|
339
|
+
},
|
|
340
|
+
};
|
|
341
|
+
// People tool definitions
|
|
342
|
+
export const peopleToolDefinitions = [
|
|
343
|
+
{
|
|
344
|
+
name: 'create-person',
|
|
345
|
+
description: 'Create a new person in Attio',
|
|
346
|
+
inputSchema: {
|
|
347
|
+
type: 'object',
|
|
348
|
+
properties: {
|
|
349
|
+
attributes: {
|
|
350
|
+
type: 'object',
|
|
351
|
+
description: 'Person attributes to set',
|
|
352
|
+
properties: {
|
|
353
|
+
name: {
|
|
354
|
+
type: 'string',
|
|
355
|
+
description: 'Person name',
|
|
356
|
+
},
|
|
357
|
+
email_addresses: {
|
|
358
|
+
type: 'array',
|
|
359
|
+
items: { type: 'string' },
|
|
360
|
+
description: 'Email address(es) - array of email strings. For single email, provide as single-item array.',
|
|
361
|
+
},
|
|
362
|
+
phone_numbers: {
|
|
363
|
+
type: 'array',
|
|
364
|
+
items: { type: 'string' },
|
|
365
|
+
description: 'Phone number(s) - array of phone strings. For single phone, provide as single-item array.',
|
|
366
|
+
},
|
|
367
|
+
job_title: {
|
|
368
|
+
type: 'string',
|
|
369
|
+
description: 'Job title',
|
|
370
|
+
},
|
|
371
|
+
company: {
|
|
372
|
+
type: 'string',
|
|
373
|
+
description: 'Company name',
|
|
374
|
+
},
|
|
375
|
+
},
|
|
376
|
+
},
|
|
377
|
+
},
|
|
378
|
+
required: ['attributes'],
|
|
379
|
+
},
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
name: 'search-people',
|
|
383
|
+
description: 'Search for people in Attio',
|
|
384
|
+
inputSchema: {
|
|
385
|
+
type: 'object',
|
|
386
|
+
properties: {
|
|
387
|
+
query: {
|
|
388
|
+
type: 'string',
|
|
389
|
+
description: 'Search query for people',
|
|
390
|
+
},
|
|
391
|
+
},
|
|
392
|
+
required: ['query'],
|
|
393
|
+
},
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
name: 'search-people-by-email',
|
|
397
|
+
description: 'Search for people by email in Attio',
|
|
398
|
+
inputSchema: {
|
|
399
|
+
type: 'object',
|
|
400
|
+
properties: {
|
|
401
|
+
email: {
|
|
402
|
+
type: 'string',
|
|
403
|
+
description: 'Email address to search for',
|
|
404
|
+
},
|
|
405
|
+
},
|
|
406
|
+
required: ['email'],
|
|
407
|
+
},
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
name: 'search-people-by-phone',
|
|
411
|
+
description: 'Search for people by phone number in Attio',
|
|
412
|
+
inputSchema: {
|
|
413
|
+
type: 'object',
|
|
414
|
+
properties: {
|
|
415
|
+
phone: {
|
|
416
|
+
type: 'string',
|
|
417
|
+
description: 'Phone number to search for',
|
|
418
|
+
},
|
|
419
|
+
},
|
|
420
|
+
required: ['phone'],
|
|
421
|
+
},
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
name: 'advanced-search-people',
|
|
425
|
+
description: 'Search for people using advanced filtering capabilities',
|
|
426
|
+
inputSchema: {
|
|
427
|
+
type: 'object',
|
|
428
|
+
properties: {
|
|
429
|
+
filters: {
|
|
430
|
+
type: 'object',
|
|
431
|
+
description: 'Complex filter object for advanced searching',
|
|
432
|
+
properties: {
|
|
433
|
+
filters: {
|
|
434
|
+
type: 'array',
|
|
435
|
+
description: 'Array of filter conditions',
|
|
436
|
+
items: {
|
|
437
|
+
type: 'object',
|
|
438
|
+
properties: {
|
|
439
|
+
attribute: {
|
|
440
|
+
type: 'object',
|
|
441
|
+
properties: {
|
|
442
|
+
slug: {
|
|
443
|
+
type: 'string',
|
|
444
|
+
description: "Attribute to filter on (e.g., 'name', 'email', 'phone')",
|
|
445
|
+
},
|
|
446
|
+
},
|
|
447
|
+
required: ['slug'],
|
|
448
|
+
},
|
|
449
|
+
condition: {
|
|
450
|
+
type: 'string',
|
|
451
|
+
description: "Condition to apply (e.g., 'equals', 'contains', 'starts_with')",
|
|
452
|
+
},
|
|
453
|
+
value: {
|
|
454
|
+
type: ['string', 'number', 'boolean'],
|
|
455
|
+
description: 'Value to filter by',
|
|
456
|
+
},
|
|
457
|
+
},
|
|
458
|
+
required: ['attribute', 'condition', 'value'],
|
|
459
|
+
},
|
|
460
|
+
},
|
|
461
|
+
matchAny: {
|
|
462
|
+
type: 'boolean',
|
|
463
|
+
description: 'When true, matches any filter (OR logic). When false, matches all filters (AND logic)',
|
|
464
|
+
},
|
|
465
|
+
},
|
|
466
|
+
required: ['filters'],
|
|
467
|
+
},
|
|
468
|
+
limit: {
|
|
469
|
+
type: 'number',
|
|
470
|
+
description: 'Maximum number of results to return (default: 20)',
|
|
471
|
+
},
|
|
472
|
+
offset: {
|
|
473
|
+
type: 'number',
|
|
474
|
+
description: 'Number of results to skip (default: 0)',
|
|
475
|
+
},
|
|
476
|
+
},
|
|
477
|
+
required: ['filters'],
|
|
478
|
+
},
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
name: 'get-person-details',
|
|
482
|
+
description: 'Get details of a person',
|
|
483
|
+
inputSchema: {
|
|
484
|
+
type: 'object',
|
|
485
|
+
properties: {
|
|
486
|
+
personId: {
|
|
487
|
+
type: 'string',
|
|
488
|
+
description: 'ID of the person to get details for',
|
|
489
|
+
},
|
|
490
|
+
},
|
|
491
|
+
required: ['personId'],
|
|
492
|
+
},
|
|
493
|
+
},
|
|
494
|
+
{
|
|
495
|
+
name: 'get-person-notes',
|
|
496
|
+
description: 'Get notes for a person',
|
|
497
|
+
inputSchema: {
|
|
498
|
+
type: 'object',
|
|
499
|
+
properties: {
|
|
500
|
+
personId: {
|
|
501
|
+
type: 'string',
|
|
502
|
+
description: 'ID of the person to get notes for',
|
|
503
|
+
},
|
|
504
|
+
},
|
|
505
|
+
required: ['personId'],
|
|
506
|
+
},
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
name: 'create-person-note',
|
|
510
|
+
description: 'Create a note for a specific person',
|
|
511
|
+
inputSchema: {
|
|
512
|
+
type: 'object',
|
|
513
|
+
properties: {
|
|
514
|
+
personId: {
|
|
515
|
+
type: 'string',
|
|
516
|
+
description: 'ID of the person to create a note for',
|
|
517
|
+
},
|
|
518
|
+
content: {
|
|
519
|
+
type: 'string',
|
|
520
|
+
description: 'Content of the note',
|
|
521
|
+
},
|
|
522
|
+
},
|
|
523
|
+
required: ['personId', 'content'],
|
|
524
|
+
},
|
|
525
|
+
},
|
|
526
|
+
// New activity and historical filtering tool definitions
|
|
527
|
+
{
|
|
528
|
+
name: 'search-people-by-creation-date',
|
|
529
|
+
description: 'Search for people by their creation date',
|
|
530
|
+
inputSchema: {
|
|
531
|
+
type: 'object',
|
|
532
|
+
properties: {
|
|
533
|
+
dateRange: {
|
|
534
|
+
type: 'object',
|
|
535
|
+
description: 'Date range for filtering',
|
|
536
|
+
properties: {
|
|
537
|
+
start: {
|
|
538
|
+
type: 'string',
|
|
539
|
+
description: "Start date in ISO format or relative date expression (e.g., '2023-01-01')",
|
|
540
|
+
},
|
|
541
|
+
end: {
|
|
542
|
+
type: 'string',
|
|
543
|
+
description: "End date in ISO format or relative date expression (e.g., '2023-12-31')",
|
|
544
|
+
},
|
|
545
|
+
preset: {
|
|
546
|
+
type: 'string',
|
|
547
|
+
description: "Predefined date range (e.g., 'today', 'this_week', 'last_month')",
|
|
548
|
+
},
|
|
549
|
+
},
|
|
550
|
+
},
|
|
551
|
+
limit: {
|
|
552
|
+
type: 'number',
|
|
553
|
+
description: 'Maximum number of results to return (default: 20)',
|
|
554
|
+
},
|
|
555
|
+
offset: {
|
|
556
|
+
type: 'number',
|
|
557
|
+
description: 'Number of results to skip (default: 0)',
|
|
558
|
+
},
|
|
559
|
+
},
|
|
560
|
+
required: ['dateRange'],
|
|
561
|
+
},
|
|
562
|
+
},
|
|
563
|
+
{
|
|
564
|
+
name: 'search-people-by-modification-date',
|
|
565
|
+
description: 'Search for people by their last modification date',
|
|
566
|
+
inputSchema: {
|
|
567
|
+
type: 'object',
|
|
568
|
+
properties: {
|
|
569
|
+
dateRange: {
|
|
570
|
+
type: 'object',
|
|
571
|
+
description: 'Date range for filtering',
|
|
572
|
+
properties: {
|
|
573
|
+
start: {
|
|
574
|
+
type: 'string',
|
|
575
|
+
description: "Start date in ISO format or relative date expression (e.g., '2023-01-01')",
|
|
576
|
+
},
|
|
577
|
+
end: {
|
|
578
|
+
type: 'string',
|
|
579
|
+
description: "End date in ISO format or relative date expression (e.g., '2023-12-31')",
|
|
580
|
+
},
|
|
581
|
+
preset: {
|
|
582
|
+
type: 'string',
|
|
583
|
+
description: "Predefined date range (e.g., 'today', 'this_week', 'last_month')",
|
|
584
|
+
},
|
|
585
|
+
},
|
|
586
|
+
},
|
|
587
|
+
limit: {
|
|
588
|
+
type: 'number',
|
|
589
|
+
description: 'Maximum number of results to return (default: 20)',
|
|
590
|
+
},
|
|
591
|
+
offset: {
|
|
592
|
+
type: 'number',
|
|
593
|
+
description: 'Number of results to skip (default: 0)',
|
|
594
|
+
},
|
|
595
|
+
},
|
|
596
|
+
required: ['dateRange'],
|
|
597
|
+
},
|
|
598
|
+
},
|
|
599
|
+
{
|
|
600
|
+
name: 'search-people-by-last-interaction',
|
|
601
|
+
description: 'Search for people by their last interaction date',
|
|
602
|
+
inputSchema: {
|
|
603
|
+
type: 'object',
|
|
604
|
+
properties: {
|
|
605
|
+
dateRange: {
|
|
606
|
+
type: 'object',
|
|
607
|
+
description: 'Date range for filtering',
|
|
608
|
+
properties: {
|
|
609
|
+
start: {
|
|
610
|
+
type: 'string',
|
|
611
|
+
description: "Start date in ISO format or relative date expression (e.g., '2023-01-01')",
|
|
612
|
+
},
|
|
613
|
+
end: {
|
|
614
|
+
type: 'string',
|
|
615
|
+
description: "End date in ISO format or relative date expression (e.g., '2023-12-31')",
|
|
616
|
+
},
|
|
617
|
+
preset: {
|
|
618
|
+
type: 'string',
|
|
619
|
+
description: "Predefined date range (e.g., 'today', 'this_week', 'last_month')",
|
|
620
|
+
},
|
|
621
|
+
},
|
|
622
|
+
},
|
|
623
|
+
interactionType: {
|
|
624
|
+
type: 'string',
|
|
625
|
+
description: 'Type of interaction to filter by (any, email, calendar, phone, meeting, custom)',
|
|
626
|
+
enum: ['any', 'email', 'calendar', 'phone', 'meeting', 'custom'],
|
|
627
|
+
},
|
|
628
|
+
limit: {
|
|
629
|
+
type: 'number',
|
|
630
|
+
description: 'Maximum number of results to return (default: 20)',
|
|
631
|
+
},
|
|
632
|
+
offset: {
|
|
633
|
+
type: 'number',
|
|
634
|
+
description: 'Number of results to skip (default: 0)',
|
|
635
|
+
},
|
|
636
|
+
},
|
|
637
|
+
required: ['dateRange'],
|
|
638
|
+
},
|
|
639
|
+
},
|
|
640
|
+
{
|
|
641
|
+
name: 'search-people-by-activity',
|
|
642
|
+
description: 'Search for people by their activity history',
|
|
643
|
+
inputSchema: {
|
|
644
|
+
type: 'object',
|
|
645
|
+
properties: {
|
|
646
|
+
activityFilter: {
|
|
647
|
+
type: 'object',
|
|
648
|
+
description: 'Activity filter configuration',
|
|
649
|
+
properties: {
|
|
650
|
+
dateRange: {
|
|
651
|
+
type: 'object',
|
|
652
|
+
description: 'Date range for filtering',
|
|
653
|
+
properties: {
|
|
654
|
+
start: {
|
|
655
|
+
type: 'string',
|
|
656
|
+
description: "Start date in ISO format or relative date expression (e.g., '2023-01-01')",
|
|
657
|
+
},
|
|
658
|
+
end: {
|
|
659
|
+
type: 'string',
|
|
660
|
+
description: "End date in ISO format or relative date expression (e.g., '2023-12-31')",
|
|
661
|
+
},
|
|
662
|
+
preset: {
|
|
663
|
+
type: 'string',
|
|
664
|
+
description: "Predefined date range (e.g., 'today', 'this_week', 'last_month')",
|
|
665
|
+
},
|
|
666
|
+
},
|
|
667
|
+
required: ['start', 'end'],
|
|
668
|
+
},
|
|
669
|
+
interactionType: {
|
|
670
|
+
type: 'string',
|
|
671
|
+
description: 'Type of interaction to filter by (any, email, calendar, phone, meeting, custom)',
|
|
672
|
+
enum: ['any', 'email', 'calendar', 'phone', 'meeting', 'custom'],
|
|
673
|
+
},
|
|
674
|
+
},
|
|
675
|
+
required: ['dateRange'],
|
|
676
|
+
},
|
|
677
|
+
limit: {
|
|
678
|
+
type: 'number',
|
|
679
|
+
description: 'Maximum number of results to return (default: 20)',
|
|
680
|
+
},
|
|
681
|
+
offset: {
|
|
682
|
+
type: 'number',
|
|
683
|
+
description: 'Number of results to skip (default: 0)',
|
|
684
|
+
},
|
|
685
|
+
},
|
|
686
|
+
required: ['activityFilter'],
|
|
687
|
+
},
|
|
688
|
+
},
|
|
689
|
+
// Relationship-based filtering tool definitions
|
|
690
|
+
{
|
|
691
|
+
name: 'search-people-by-company',
|
|
692
|
+
description: 'Search for people based on attributes of their associated companies',
|
|
693
|
+
/**
|
|
694
|
+
* @example
|
|
695
|
+
* Search by company ID:
|
|
696
|
+
* {
|
|
697
|
+
* companyFilter: {
|
|
698
|
+
* filters: [{
|
|
699
|
+
* attribute: { slug: 'companies.id' },
|
|
700
|
+
* condition: 'equals',
|
|
701
|
+
* value: { record_id: '0c472146-9c7b-5fde-96cd-5df8e5cf9575' }
|
|
702
|
+
* }]
|
|
703
|
+
* }
|
|
704
|
+
* }
|
|
705
|
+
*
|
|
706
|
+
* @example
|
|
707
|
+
* Search by company name:
|
|
708
|
+
* {
|
|
709
|
+
* companyFilter: {
|
|
710
|
+
* filters: [{
|
|
711
|
+
* attribute: { slug: 'companies.name' },
|
|
712
|
+
* condition: 'equals',
|
|
713
|
+
* value: 'Oakwood Precision Medicine'
|
|
714
|
+
* }]
|
|
715
|
+
* }
|
|
716
|
+
* }
|
|
717
|
+
*/
|
|
718
|
+
inputSchema: {
|
|
719
|
+
type: 'object',
|
|
720
|
+
properties: {
|
|
721
|
+
companyFilter: {
|
|
722
|
+
type: 'object',
|
|
723
|
+
description: "Filter conditions to apply to companies. Supported slugs: 'companies.id', 'companies.name'",
|
|
724
|
+
properties: {
|
|
725
|
+
filters: {
|
|
726
|
+
type: 'array',
|
|
727
|
+
description: 'Array of filter conditions. The handler processes filters in order and uses the first valid one.',
|
|
728
|
+
items: {
|
|
729
|
+
type: 'object',
|
|
730
|
+
properties: {
|
|
731
|
+
attribute: {
|
|
732
|
+
type: 'object',
|
|
733
|
+
properties: {
|
|
734
|
+
slug: {
|
|
735
|
+
type: 'string',
|
|
736
|
+
description: "Company attribute to filter on. Currently supports: 'companies.id', 'companies.name'",
|
|
737
|
+
},
|
|
738
|
+
},
|
|
739
|
+
required: ['slug'],
|
|
740
|
+
},
|
|
741
|
+
condition: {
|
|
742
|
+
type: 'string',
|
|
743
|
+
description: "Condition to apply (e.g., 'equals', 'contains', 'starts_with')",
|
|
744
|
+
},
|
|
745
|
+
value: {
|
|
746
|
+
type: ['string', 'number', 'boolean', 'object'],
|
|
747
|
+
description: "Value to filter by. For company ID, use { record_id: 'id' }. For company name, use a string.",
|
|
748
|
+
},
|
|
749
|
+
},
|
|
750
|
+
required: ['attribute', 'condition', 'value'],
|
|
751
|
+
},
|
|
752
|
+
},
|
|
753
|
+
matchAny: {
|
|
754
|
+
type: 'boolean',
|
|
755
|
+
description: 'When true, matches any filter (OR logic). When false, matches all filters (AND logic)',
|
|
756
|
+
},
|
|
757
|
+
},
|
|
758
|
+
required: ['filters'],
|
|
759
|
+
},
|
|
760
|
+
limit: {
|
|
761
|
+
type: 'number',
|
|
762
|
+
description: 'Maximum number of results to return (default: 20)',
|
|
763
|
+
},
|
|
764
|
+
offset: {
|
|
765
|
+
type: 'number',
|
|
766
|
+
description: 'Number of results to skip (default: 0)',
|
|
767
|
+
},
|
|
768
|
+
},
|
|
769
|
+
required: ['companyFilter'],
|
|
770
|
+
},
|
|
771
|
+
},
|
|
772
|
+
{
|
|
773
|
+
name: 'search-people-by-company-list',
|
|
774
|
+
description: 'Search for people who work at companies in a specific list',
|
|
775
|
+
inputSchema: {
|
|
776
|
+
type: 'object',
|
|
777
|
+
properties: {
|
|
778
|
+
listId: {
|
|
779
|
+
type: 'string',
|
|
780
|
+
description: 'ID of the list containing companies',
|
|
781
|
+
},
|
|
782
|
+
limit: {
|
|
783
|
+
type: 'number',
|
|
784
|
+
description: 'Maximum number of results to return (default: 20)',
|
|
785
|
+
},
|
|
786
|
+
offset: {
|
|
787
|
+
type: 'number',
|
|
788
|
+
description: 'Number of results to skip (default: 0)',
|
|
789
|
+
},
|
|
790
|
+
},
|
|
791
|
+
required: ['listId'],
|
|
792
|
+
},
|
|
793
|
+
},
|
|
794
|
+
{
|
|
795
|
+
name: 'search-people-by-notes',
|
|
796
|
+
description: 'Search for people that have notes containing specific text',
|
|
797
|
+
inputSchema: {
|
|
798
|
+
type: 'object',
|
|
799
|
+
properties: {
|
|
800
|
+
searchText: {
|
|
801
|
+
type: 'string',
|
|
802
|
+
description: 'Text to search for in notes',
|
|
803
|
+
},
|
|
804
|
+
limit: {
|
|
805
|
+
type: 'number',
|
|
806
|
+
description: 'Maximum number of results to return (default: 20)',
|
|
807
|
+
},
|
|
808
|
+
offset: {
|
|
809
|
+
type: 'number',
|
|
810
|
+
description: 'Number of results to skip (default: 0)',
|
|
811
|
+
},
|
|
812
|
+
},
|
|
813
|
+
required: ['searchText'],
|
|
814
|
+
},
|
|
815
|
+
},
|
|
816
|
+
];
|
|
817
|
+
//# sourceMappingURL=people.js.map
|