attio-mcp 1.3.5 → 1.4.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 +263 -9
- package/README.md +315 -235
- package/dist/api/attio-client.d.ts +13 -3
- package/dist/api/attio-client.d.ts.map +1 -1
- package/dist/api/attio-client.js +37 -7
- package/dist/api/attio-client.js.map +1 -1
- package/dist/api/attribute-types.d.ts.map +1 -1
- package/dist/api/attribute-types.js +59 -29
- package/dist/api/attribute-types.js.map +1 -1
- package/dist/api/client-context.d.ts.map +1 -1
- package/dist/api/client-context.js +28 -42
- package/dist/api/client-context.js.map +1 -1
- package/dist/api/operations/batch.d.ts.map +1 -1
- package/dist/api/operations/batch.js +3 -1
- package/dist/api/operations/batch.js.map +1 -1
- package/dist/cli/commands/generate-skill.d.ts +28 -0
- package/dist/cli/commands/generate-skill.d.ts.map +1 -0
- package/dist/cli/commands/generate-skill.js +101 -0
- package/dist/cli/commands/generate-skill.js.map +1 -0
- package/dist/cli/discover.js +65 -0
- package/dist/cli/discover.js.map +1 -1
- package/dist/config/deal-defaults.d.ts +2 -2
- package/dist/config/deal-defaults.d.ts.map +1 -1
- package/dist/config/deal-defaults.js +15 -6
- package/dist/config/deal-defaults.js.map +1 -1
- package/dist/config/tool-aliases.d.ts +12 -0
- package/dist/config/tool-aliases.d.ts.map +1 -1
- package/dist/config/tool-aliases.js +213 -69
- package/dist/config/tool-aliases.js.map +1 -1
- package/dist/constants/tool-names.d.ts +84 -0
- package/dist/constants/tool-names.d.ts.map +1 -0
- package/dist/constants/tool-names.js +81 -0
- package/dist/constants/tool-names.js.map +1 -0
- package/dist/constants/universal.constants.d.ts +24 -0
- package/dist/constants/universal.constants.d.ts.map +1 -1
- package/dist/constants/universal.constants.js +81 -9
- package/dist/constants/universal.constants.js.map +1 -1
- package/dist/handlers/tool-configs/tasks.d.ts.map +1 -1
- package/dist/handlers/tool-configs/tasks.js +28 -0
- package/dist/handlers/tool-configs/tasks.js.map +1 -1
- package/dist/handlers/tool-configs/universal/batch-search.js +4 -4
- package/dist/handlers/tool-configs/universal/core/crud-error-handlers.d.ts +26 -4
- package/dist/handlers/tool-configs/universal/core/crud-error-handlers.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/core/crud-error-handlers.js +181 -21
- package/dist/handlers/tool-configs/universal/core/crud-error-handlers.js.map +1 -1
- package/dist/handlers/tool-configs/universal/core/crud-operations.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/core/crud-operations.js +52 -13
- package/dist/handlers/tool-configs/universal/core/crud-operations.js.map +1 -1
- package/dist/handlers/tool-configs/universal/core/detailed-info-operations.js +3 -3
- package/dist/handlers/tool-configs/universal/core/detailed-info-operations.js.map +1 -1
- package/dist/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.d.ts +17 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.d.ts.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.js +118 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.js.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.d.ts +14 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.d.ts.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.js +77 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.js.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/index.d.ts +24 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/index.d.ts.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/index.js +35 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/index.js.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.d.ts +15 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.d.ts.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.js +108 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.js.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.d.ts +14 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.d.ts.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.js +91 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.js.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/select-status-enhancer.d.ts +14 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/select-status-enhancer.d.ts.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/select-status-enhancer.js +118 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/select-status-enhancer.js.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/types.d.ts +77 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/types.d.ts.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/types.js +42 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/types.js.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/uniqueness-enhancer.d.ts +15 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/uniqueness-enhancer.d.ts.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/uniqueness-enhancer.js +109 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/uniqueness-enhancer.js.map +1 -0
- package/dist/handlers/tool-configs/universal/core/index.d.ts +63 -22
- package/dist/handlers/tool-configs/universal/core/index.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/core/index.js +24 -22
- package/dist/handlers/tool-configs/universal/core/index.js.map +1 -1
- package/dist/handlers/tool-configs/universal/core/metadata-operations.d.ts +43 -1
- package/dist/handlers/tool-configs/universal/core/metadata-operations.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/core/metadata-operations.js +117 -11
- package/dist/handlers/tool-configs/universal/core/metadata-operations.js.map +1 -1
- package/dist/handlers/tool-configs/universal/core/notes-operations.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/core/notes-operations.js +27 -12
- package/dist/handlers/tool-configs/universal/core/notes-operations.js.map +1 -1
- package/dist/handlers/tool-configs/universal/core/record-details-operations.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/core/record-details-operations.js +20 -3
- package/dist/handlers/tool-configs/universal/core/record-details-operations.js.map +1 -1
- package/dist/handlers/tool-configs/universal/core/search-operations.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/core/search-operations.js +11 -4
- package/dist/handlers/tool-configs/universal/core/search-operations.js.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/constants/companies.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/constants/companies.js +32 -9
- package/dist/handlers/tool-configs/universal/field-mapper/constants/companies.js.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/constants/deals.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/constants/deals.js +45 -6
- package/dist/handlers/tool-configs/universal/field-mapper/constants/deals.js.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/constants/people.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/constants/people.js +36 -5
- package/dist/handlers/tool-configs/universal/field-mapper/constants/people.js.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/transformers/value-transformer.d.ts +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/transformers/value-transformer.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/transformers/value-transformer.js +17 -1
- package/dist/handlers/tool-configs/universal/field-mapper/transformers/value-transformer.js.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/validators/field-validator.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/validators/field-validator.js +3 -1
- package/dist/handlers/tool-configs/universal/field-mapper/validators/field-validator.js.map +1 -1
- package/dist/handlers/tool-configs/universal/index.d.ts +75 -34
- package/dist/handlers/tool-configs/universal/index.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/index.js +58 -58
- package/dist/handlers/tool-configs/universal/index.js.map +1 -1
- package/dist/handlers/tool-configs/universal/operations/advanced-search.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/operations/advanced-search.js +5 -4
- package/dist/handlers/tool-configs/universal/operations/advanced-search.js.map +1 -1
- package/dist/handlers/tool-configs/universal/operations/batch-operations.js +3 -3
- package/dist/handlers/tool-configs/universal/operations/content-search.js +3 -3
- package/dist/handlers/tool-configs/universal/operations/index.d.ts +10 -10
- package/dist/handlers/tool-configs/universal/operations/index.js +15 -15
- package/dist/handlers/tool-configs/universal/operations/relationship-search.js +3 -3
- package/dist/handlers/tool-configs/universal/operations/timeframe-search.js +3 -3
- package/dist/handlers/tool-configs/universal/schemas/utility-schemas.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/schemas/utility-schemas.js +5 -2
- package/dist/handlers/tool-configs/universal/schemas/utility-schemas.js.map +1 -1
- package/dist/handlers/tool-configs/universal/schemas/validation-schemas.d.ts +29 -0
- package/dist/handlers/tool-configs/universal/schemas/validation-schemas.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/schemas/validation-schemas.js +28 -0
- package/dist/handlers/tool-configs/universal/schemas/validation-schemas.js.map +1 -1
- package/dist/handlers/tool-configs/universal/schemas.d.ts +1 -1
- package/dist/handlers/tool-configs/universal/schemas.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/schemas.js +1 -1
- package/dist/handlers/tool-configs/universal/schemas.js.map +1 -1
- package/dist/handlers/tool-configs/universal/shared-handlers.d.ts +20 -1
- package/dist/handlers/tool-configs/universal/shared-handlers.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/shared-handlers.js +216 -0
- package/dist/handlers/tool-configs/universal/shared-handlers.js.map +1 -1
- package/dist/handlers/tool-configs/universal/smithery-diagnostics.js +2 -2
- package/dist/handlers/tool-configs/universal/types.d.ts +9 -0
- package/dist/handlers/tool-configs/universal/types.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/validators/schema-validator.d.ts +11 -0
- package/dist/handlers/tool-configs/universal/validators/schema-validator.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/validators/schema-validator.js +63 -9
- package/dist/handlers/tool-configs/universal/validators/schema-validator.js.map +1 -1
- package/dist/handlers/tool-types.d.ts +9 -0
- package/dist/handlers/tool-types.d.ts.map +1 -1
- package/dist/handlers/tools/dispatcher/core.d.ts.map +1 -1
- package/dist/handlers/tools/dispatcher/core.js +24 -5
- package/dist/handlers/tools/dispatcher/core.js.map +1 -1
- package/dist/handlers/tools/formatters.d.ts +8 -1
- package/dist/handlers/tools/formatters.d.ts.map +1 -1
- package/dist/handlers/tools/formatters.js +30 -14
- package/dist/handlers/tools/formatters.js.map +1 -1
- package/dist/handlers/tools/registry.d.ts +125 -84
- package/dist/handlers/tools/registry.d.ts.map +1 -1
- package/dist/handlers/tools/registry.js +14 -9
- package/dist/handlers/tools/registry.js.map +1 -1
- package/dist/handlers/tools/standards/index.d.ts.map +1 -1
- package/dist/handlers/tools/standards/index.js +19 -11
- package/dist/handlers/tools/standards/index.js.map +1 -1
- package/dist/objects/companies/attributes.d.ts +5 -0
- package/dist/objects/companies/attributes.d.ts.map +1 -1
- package/dist/objects/companies/attributes.js +45 -31
- package/dist/objects/companies/attributes.js.map +1 -1
- package/dist/server/createServer.d.ts.map +1 -1
- package/dist/server/createServer.js +4 -3
- package/dist/server/createServer.js.map +1 -1
- package/dist/services/ErrorService.js +3 -3
- package/dist/services/ErrorService.js.map +1 -1
- package/dist/services/UniversalCreateService.d.ts.map +1 -1
- package/dist/services/UniversalCreateService.js +136 -12
- package/dist/services/UniversalCreateService.js.map +1 -1
- package/dist/services/UniversalSearchService.d.ts +4 -25
- package/dist/services/UniversalSearchService.d.ts.map +1 -1
- package/dist/services/UniversalSearchService.js +14 -324
- package/dist/services/UniversalSearchService.js.map +1 -1
- package/dist/services/UniversalUpdateService.d.ts +15 -4
- package/dist/services/UniversalUpdateService.d.ts.map +1 -1
- package/dist/services/UniversalUpdateService.js +79 -151
- package/dist/services/UniversalUpdateService.js.map +1 -1
- package/dist/services/create/factory.d.ts.map +1 -1
- package/dist/services/create/factory.js +2 -1
- package/dist/services/create/factory.js.map +1 -1
- package/dist/services/metadata/AttributeOptionsService.d.ts +38 -0
- package/dist/services/metadata/AttributeOptionsService.d.ts.map +1 -0
- package/dist/services/metadata/AttributeOptionsService.js +92 -0
- package/dist/services/metadata/AttributeOptionsService.js.map +1 -0
- package/dist/services/metadata/index.d.ts +1 -0
- package/dist/services/metadata/index.d.ts.map +1 -1
- package/dist/services/metadata/index.js +1 -0
- package/dist/services/metadata/index.js.map +1 -1
- package/dist/services/search/QueryApiService.d.ts +27 -0
- package/dist/services/search/QueryApiService.d.ts.map +1 -0
- package/dist/services/search/QueryApiService.js +144 -0
- package/dist/services/search/QueryApiService.js.map +1 -0
- package/dist/services/search/RecordsSearchService.d.ts +27 -0
- package/dist/services/search/RecordsSearchService.d.ts.map +1 -0
- package/dist/services/search/RecordsSearchService.js +122 -0
- package/dist/services/search/RecordsSearchService.js.map +1 -0
- package/dist/services/search/SearchCoordinator.d.ts +41 -0
- package/dist/services/search/SearchCoordinator.d.ts.map +1 -0
- package/dist/services/search/SearchCoordinator.js +83 -0
- package/dist/services/search/SearchCoordinator.js.map +1 -0
- package/dist/services/search/StrategyFactory.d.ts +31 -0
- package/dist/services/search/StrategyFactory.d.ts.map +1 -0
- package/dist/services/search/StrategyFactory.js +100 -0
- package/dist/services/search/StrategyFactory.js.map +1 -0
- package/dist/services/skill-generator/OutputWriterService.d.ts +41 -0
- package/dist/services/skill-generator/OutputWriterService.d.ts.map +1 -0
- package/dist/services/skill-generator/OutputWriterService.js +100 -0
- package/dist/services/skill-generator/OutputWriterService.js.map +1 -0
- package/dist/services/skill-generator/SchemaFormatterService.d.ts +61 -0
- package/dist/services/skill-generator/SchemaFormatterService.d.ts.map +1 -0
- package/dist/services/skill-generator/SchemaFormatterService.js +168 -0
- package/dist/services/skill-generator/SchemaFormatterService.js.map +1 -0
- package/dist/services/skill-generator/WorkspaceSchemaService.d.ts +84 -0
- package/dist/services/skill-generator/WorkspaceSchemaService.d.ts.map +1 -0
- package/dist/services/skill-generator/WorkspaceSchemaService.js +292 -0
- package/dist/services/skill-generator/WorkspaceSchemaService.js.map +1 -0
- package/dist/services/skill-generator/index.d.ts +12 -0
- package/dist/services/skill-generator/index.d.ts.map +1 -0
- package/dist/services/skill-generator/index.js +11 -0
- package/dist/services/skill-generator/index.js.map +1 -0
- package/dist/services/skill-generator/types.d.ts +137 -0
- package/dist/services/skill-generator/types.d.ts.map +1 -0
- package/dist/services/skill-generator/types.js +10 -0
- package/dist/services/skill-generator/types.js.map +1 -0
- package/dist/services/update/FieldPersistenceHandler.d.ts +101 -0
- package/dist/services/update/FieldPersistenceHandler.d.ts.map +1 -0
- package/dist/services/update/FieldPersistenceHandler.js +198 -0
- package/dist/services/update/FieldPersistenceHandler.js.map +1 -0
- package/dist/services/update/FieldValidationHandler.d.ts +77 -0
- package/dist/services/update/FieldValidationHandler.d.ts.map +1 -0
- package/dist/services/update/FieldValidationHandler.js +157 -0
- package/dist/services/update/FieldValidationHandler.js.map +1 -0
- package/dist/services/update/MetadataResolver.d.ts +50 -0
- package/dist/services/update/MetadataResolver.d.ts.map +1 -0
- package/dist/services/update/MetadataResolver.js +110 -0
- package/dist/services/update/MetadataResolver.js.map +1 -0
- package/dist/services/update/UpdateOrchestrator.d.ts +37 -0
- package/dist/services/update/UpdateOrchestrator.d.ts.map +1 -0
- package/dist/services/update/UpdateOrchestrator.js +58 -0
- package/dist/services/update/UpdateOrchestrator.js.map +1 -0
- package/dist/services/update/UpdateValidation.d.ts +5 -1
- package/dist/services/update/UpdateValidation.d.ts.map +1 -1
- package/dist/services/update/UpdateValidation.js +46 -14
- package/dist/services/update/UpdateValidation.js.map +1 -1
- package/dist/services/value-transformer/index.d.ts +57 -0
- package/dist/services/value-transformer/index.d.ts.map +1 -0
- package/dist/services/value-transformer/index.js +326 -0
- package/dist/services/value-transformer/index.js.map +1 -0
- package/dist/services/value-transformer/multi-select-transformer.d.ts +63 -0
- package/dist/services/value-transformer/multi-select-transformer.d.ts.map +1 -0
- package/dist/services/value-transformer/multi-select-transformer.js +144 -0
- package/dist/services/value-transformer/multi-select-transformer.js.map +1 -0
- package/dist/services/value-transformer/record-reference-transformer.d.ts +43 -0
- package/dist/services/value-transformer/record-reference-transformer.d.ts.map +1 -0
- package/dist/services/value-transformer/record-reference-transformer.js +245 -0
- package/dist/services/value-transformer/record-reference-transformer.js.map +1 -0
- package/dist/services/value-transformer/select-transformer.d.ts +48 -0
- package/dist/services/value-transformer/select-transformer.d.ts.map +1 -0
- package/dist/services/value-transformer/select-transformer.js +232 -0
- package/dist/services/value-transformer/select-transformer.js.map +1 -0
- package/dist/services/value-transformer/status-transformer.d.ts +32 -0
- package/dist/services/value-transformer/status-transformer.d.ts.map +1 -0
- package/dist/services/value-transformer/status-transformer.js +294 -0
- package/dist/services/value-transformer/status-transformer.js.map +1 -0
- package/dist/services/value-transformer/types.d.ts +100 -0
- package/dist/services/value-transformer/types.d.ts.map +1 -0
- package/dist/services/value-transformer/types.js +6 -0
- package/dist/services/value-transformer/types.js.map +1 -0
- package/dist/templates/skill/SKILL.template.md +78 -0
- package/dist/templates/skill/attribute-reference.template.md +126 -0
- package/dist/templates/skill/complex-types.template.md +255 -0
- package/dist/utils/client-resolver.d.ts.map +1 -1
- package/dist/utils/client-resolver.js +8 -16
- package/dist/utils/client-resolver.js.map +1 -1
- package/dist/utils/complex-type-validation.d.ts +16 -0
- package/dist/utils/complex-type-validation.d.ts.map +1 -0
- package/dist/utils/complex-type-validation.js +196 -0
- package/dist/utils/complex-type-validation.js.map +1 -0
- package/dist/utils/error-utilities.d.ts.map +1 -1
- package/dist/utils/error-utilities.js +16 -9
- package/dist/utils/error-utilities.js.map +1 -1
- package/dist/utils/location-normalizer.d.ts +26 -0
- package/dist/utils/location-normalizer.d.ts.map +1 -0
- package/dist/utils/location-normalizer.js +39 -0
- package/dist/utils/location-normalizer.js.map +1 -0
- package/dist/utils/metadata-utils.d.ts +27 -0
- package/dist/utils/metadata-utils.d.ts.map +1 -0
- package/dist/utils/metadata-utils.js +59 -0
- package/dist/utils/metadata-utils.js.map +1 -0
- package/dist/utils/personal-name-parser.d.ts.map +1 -1
- package/dist/utils/personal-name-parser.js +26 -17
- package/dist/utils/personal-name-parser.js.map +1 -1
- package/dist/validators/company/field_detector.d.ts.map +1 -1
- package/dist/validators/company/field_detector.js +5 -0
- package/dist/validators/company/field_detector.js.map +1 -1
- package/package.json +28 -25
|
@@ -3,18 +3,51 @@ import { handleUniversalCreate, handleUniversalUpdate, handleUniversalDelete, ge
|
|
|
3
3
|
import { handleCreateError, handleUpdateError, handleDeleteError, } from './error-utils.js';
|
|
4
4
|
import { extractDisplayName, formatValidationDetails, } from './utils.js';
|
|
5
5
|
import { formatToolDescription } from '../../../../handlers/tools/standards/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Normalize record data for structured output
|
|
8
|
+
* - Companies: values.name → string (from array)
|
|
9
|
+
* - Tasks: id.workspace_id must exist
|
|
10
|
+
*/
|
|
11
|
+
function normalizeRecordForOutput(record, resourceType) {
|
|
12
|
+
if (!record)
|
|
13
|
+
return {};
|
|
14
|
+
const result = { ...record };
|
|
15
|
+
// Normalize company name to string
|
|
16
|
+
if (resourceType === 'companies' && record.values) {
|
|
17
|
+
const values = record.values;
|
|
18
|
+
const nameArray = values.name;
|
|
19
|
+
if (Array.isArray(nameArray) && nameArray[0]?.value) {
|
|
20
|
+
result.values = {
|
|
21
|
+
...values,
|
|
22
|
+
name: nameArray[0].value,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Ensure tasks have workspace_id on id object
|
|
27
|
+
if (resourceType === 'tasks') {
|
|
28
|
+
const id = record.id;
|
|
29
|
+
const workspaceId = id?.workspace_id ||
|
|
30
|
+
record.workspace_id ||
|
|
31
|
+
'default';
|
|
32
|
+
result.id = {
|
|
33
|
+
...id,
|
|
34
|
+
workspace_id: workspaceId,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
6
39
|
export const createRecordConfig = {
|
|
7
|
-
name: '
|
|
40
|
+
name: 'create_record',
|
|
8
41
|
handler: async (params) => {
|
|
9
42
|
try {
|
|
10
|
-
const sanitizedParams = validateUniversalToolParams('
|
|
43
|
+
const sanitizedParams = validateUniversalToolParams('create_record', params);
|
|
11
44
|
const { CrossResourceValidator } = await import('../schemas.js');
|
|
12
45
|
await CrossResourceValidator.validateRecordRelationships(sanitizedParams.resource_type, sanitizedParams.record_data);
|
|
13
46
|
const result = await handleUniversalCreate(sanitizedParams);
|
|
14
47
|
try {
|
|
15
48
|
if (sanitizedParams.resource_type === 'tasks') {
|
|
16
49
|
const { logTaskDebug, inspectTaskRecordShape } = await import('../../../../utils/task-debug.js');
|
|
17
|
-
logTaskDebug('mcp.
|
|
50
|
+
logTaskDebug('mcp.create_record', 'Returning MCP task record', {
|
|
18
51
|
shape: inspectTaskRecordShape(result),
|
|
19
52
|
});
|
|
20
53
|
}
|
|
@@ -43,12 +76,15 @@ export const createRecordConfig = {
|
|
|
43
76
|
'unknown');
|
|
44
77
|
return `✅ Successfully created ${resourceTypeName}: ${displayName} (ID: ${id})`;
|
|
45
78
|
},
|
|
79
|
+
structuredOutput: (record, resourceType) => {
|
|
80
|
+
return normalizeRecordForOutput(record, resourceType);
|
|
81
|
+
},
|
|
46
82
|
};
|
|
47
83
|
export const updateRecordConfig = {
|
|
48
|
-
name: '
|
|
84
|
+
name: 'update_record',
|
|
49
85
|
handler: async (params) => {
|
|
50
86
|
try {
|
|
51
|
-
const sanitizedParams = validateUniversalToolParams('
|
|
87
|
+
const sanitizedParams = validateUniversalToolParams('update_record', params);
|
|
52
88
|
const { CrossResourceValidator } = await import('../schemas.js');
|
|
53
89
|
await CrossResourceValidator.validateRecordRelationships(sanitizedParams.resource_type, sanitizedParams.record_data);
|
|
54
90
|
let result;
|
|
@@ -77,7 +113,7 @@ export const updateRecordConfig = {
|
|
|
77
113
|
try {
|
|
78
114
|
if (sanitizedParams.resource_type === 'tasks') {
|
|
79
115
|
const { logTaskDebug, inspectTaskRecordShape } = await import('../../../../utils/task-debug.js');
|
|
80
|
-
logTaskDebug('mcp.
|
|
116
|
+
logTaskDebug('mcp.update_record', 'Returning MCP task record', {
|
|
81
117
|
shape: inspectTaskRecordShape(result),
|
|
82
118
|
});
|
|
83
119
|
}
|
|
@@ -110,12 +146,15 @@ export const updateRecordConfig = {
|
|
|
110
146
|
: `✅ Successfully updated ${resourceTypeName}: ${name} (ID: ${id})`;
|
|
111
147
|
return `${baseMessage}${formatValidationDetails(metadata)}`;
|
|
112
148
|
},
|
|
149
|
+
structuredOutput: (record, resourceType) => {
|
|
150
|
+
return normalizeRecordForOutput(record, resourceType);
|
|
151
|
+
},
|
|
113
152
|
};
|
|
114
153
|
export const deleteRecordConfig = {
|
|
115
|
-
name: '
|
|
154
|
+
name: 'delete_record',
|
|
116
155
|
handler: async (params) => {
|
|
117
156
|
try {
|
|
118
|
-
const sanitizedParams = validateUniversalToolParams('
|
|
157
|
+
const sanitizedParams = validateUniversalToolParams('delete_record', params);
|
|
119
158
|
return await handleUniversalDelete(sanitizedParams);
|
|
120
159
|
}
|
|
121
160
|
catch (error) {
|
|
@@ -134,13 +173,13 @@ export const deleteRecordConfig = {
|
|
|
134
173
|
},
|
|
135
174
|
};
|
|
136
175
|
export const createRecordDefinition = {
|
|
137
|
-
name: '
|
|
176
|
+
name: 'create_record',
|
|
138
177
|
description: formatToolDescription({
|
|
139
178
|
capability: 'Create new Attio records (companies, people, deals, tasks).',
|
|
140
179
|
boundaries: 'update existing records, attach files, or bypass required fields.',
|
|
141
180
|
constraints: 'Requires resource_type/objectSlug plus attributes map that matches records_discover_attributes output.',
|
|
142
181
|
requiresApproval: true,
|
|
143
|
-
recoveryHint: 'If validation fails, call records_discover_attributes to confirm required fields and enums.',
|
|
182
|
+
recoveryHint: 'If validation fails, call records_discover_attributes to confirm required fields and enums. If a select/status value is rejected, call records_get_attribute_options for that attribute to list valid options before retrying.',
|
|
144
183
|
}),
|
|
145
184
|
inputSchema: createRecordSchema,
|
|
146
185
|
annotations: {
|
|
@@ -149,13 +188,13 @@ export const createRecordDefinition = {
|
|
|
149
188
|
},
|
|
150
189
|
};
|
|
151
190
|
export const updateRecordDefinition = {
|
|
152
|
-
name: '
|
|
191
|
+
name: 'update_record',
|
|
153
192
|
description: formatToolDescription({
|
|
154
193
|
capability: 'Update existing Attio record fields across all supported resource types.',
|
|
155
194
|
boundaries: 'create new records, delete data, or manage list memberships.',
|
|
156
195
|
constraints: 'Requires record_id and attributes payload; supports partial updates with schema validation.',
|
|
157
196
|
requiresApproval: true,
|
|
158
|
-
recoveryHint: 'Call records_get_details first to inspect the latest values before editing.',
|
|
197
|
+
recoveryHint: 'Call records_get_details first to inspect the latest values before editing. If a select/status value is rejected, call records_get_attribute_options for that attribute to list valid options.',
|
|
159
198
|
}),
|
|
160
199
|
inputSchema: updateRecordSchema,
|
|
161
200
|
annotations: {
|
|
@@ -164,7 +203,7 @@ export const updateRecordDefinition = {
|
|
|
164
203
|
},
|
|
165
204
|
};
|
|
166
205
|
export const deleteRecordDefinition = {
|
|
167
|
-
name: '
|
|
206
|
+
name: 'delete_record',
|
|
168
207
|
description: formatToolDescription({
|
|
169
208
|
capability: 'Delete an Attio record from its object (company, person, deal, task).',
|
|
170
209
|
boundaries: 'cascade delete related data or clean up list memberships automatically.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud-operations.js","sourceRoot":"","sources":["../../../../../src/handlers/tool-configs/universal/core/crud-operations.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"crud-operations.js","sourceRoot":"","sources":["../../../../../src/handlers/tool-configs/universal/core/crud-operations.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,uBAAuB,GAExB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAE5E;;;;GAIG;AACH,SAAS,wBAAwB,CAC/B,MAAmB,EACnB,YAAqB;IAErB,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEvB,MAAM,MAAM,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;IAEtD,mCAAmC;IACnC,IAAI,YAAY,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAiC,CAAC;QACxD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;QAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;YACpD,MAAM,CAAC,MAAM,GAAG;gBACd,GAAG,MAAM;gBACT,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK;aACzB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,MAAM,CAAC,EAAyC,CAAC;QAC5D,MAAM,WAAW,GACf,EAAE,EAAE,YAAY;YACf,MAAkC,CAAC,YAAY;YAChD,SAAS,CAAC;QACZ,MAAM,CAAC,EAAE,GAAG;YACV,GAAG,EAAE;YACL,YAAY,EAAE,WAAW;SAC1B,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAG3B;IACF,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,KAAK,EAAE,MAA6B,EAAwB,EAAE;QACrE,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,2BAA2B,CACjD,eAAe,EACf,MAAM,CACP,CAAC;YAEF,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YACjE,MAAM,sBAAsB,CAAC,2BAA2B,CACtD,eAAe,CAAC,aAAa,EAC7B,eAAe,CAAC,WAAW,CAC5B,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,eAAe,CAAC,CAAC;YAC5D,IAAI,CAAC;gBACH,IAAI,eAAe,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;oBAC9C,MAAM,EAAE,YAAY,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAC3D,iCAAiC,CAClC,CAAC;oBACF,YAAY,CAAC,mBAAmB,EAAE,2BAA2B,EAAE;wBAC7D,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC;qBACtC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,2BAA2B;YAC7B,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,MAAM,iBAAiB,CAC5B,KAAK,EACL,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,WAAsC,CAC9C,CAAC;QACJ,CAAC;IACH,CAAC;IACD,YAAY,EAAE,CAAC,MAAmB,EAAE,GAAG,IAAe,EAAU,EAAE;QAChE,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAsC,CAAC;QAClE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,wBAAwB,CAAC;QAClC,CAAC;QAED,MAAM,gBAAgB,GAAG,YAAY;YACnC,CAAC,CAAC,uBAAuB,CAAC,YAAY,CAAC;YACvC,CAAC,CAAC,QAAQ,CAAC;QAEb,MAAM,YAAY,GAAG,kBAAkB,CACrC,MAAM,CAAC,MAA6C,EACpD,YAAY,CACb,CAAC;QACF,MAAM,WAAW,GACf,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,gBAAgB,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;QAExE,MAAM,EAAE,GAAG,MAAM,CACf,MAAM,CAAC,EAAE,EAAE,SAAS;YACjB,MAAiC,CAAC,SAAS;YAC5C,SAAS,CACZ,CAAC;QAEF,OAAO,0BAA0B,gBAAgB,KAAK,WAAW,SAAS,EAAE,GAAG,CAAC;IAClF,CAAC;IACD,gBAAgB,EAAE,CAChB,MAAmB,EACnB,YAAqB,EACI,EAAE;QAC3B,OAAO,wBAAwB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAG3B;IACF,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,KAAK,EACZ,MAA6B,EACC,EAAE;QAChC,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,2BAA2B,CACjD,eAAe,EACf,MAAM,CACP,CAAC;YAEF,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YACjE,MAAM,sBAAsB,CAAC,2BAA2B,CACtD,eAAe,CAAC,aAAa,EAC7B,eAAe,CAAC,WAAW,CAC5B,CAAC;YAEF,IAAI,MAA2B,CAAC;YAChC,IAAI,eAAe,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;gBAC9C,IAAI,CAAC;oBACH,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAC7C,gDAAgD,CACjD,CAAC;oBACF,MAAM,cAAc,GAClB,MAAM,sBAAsB,CAAC,0BAA0B,CACrD,eAAe,CAChB,CAAC;oBAEJ,MAAM,GAAG;wBACP,GAAG,cAAc,CAAC,MAAM;wBACxB,kBAAkB,EAAE;4BAClB,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,QAAQ;4BAC5C,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,WAAW;4BAClD,YAAY,EAAE,cAAc,CAAC,UAAU,CAAC,YAAY;yBACrD;qBACqB,CAAC;gBAC3B,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACxB,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC,eAAe,CAAC,CAAC;oBACpE,MAAM,GAAG,EAAE,GAAG,cAAc,EAAyB,CAAC;gBACxD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC,eAAe,CAAC,CAAC;gBACpE,MAAM,GAAG,EAAE,GAAG,cAAc,EAAyB,CAAC;YACxD,CAAC;YAED,IAAI,CAAC;gBACH,IAAI,eAAe,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;oBAC9C,MAAM,EAAE,YAAY,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAC3D,iCAAiC,CAClC,CAAC;oBACF,YAAY,CAAC,mBAAmB,EAAE,2BAA2B,EAAE;wBAC7D,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC;qBACtC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,2BAA2B;YAC7B,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,MAAM,iBAAiB,CAC5B,KAAK,EACL,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,WAAsC,EAC7C,MAAM,CAAC,SAAS,EAChB,SAAS,CAAC,kDAAkD;aAC7D,CAAC;QACJ,CAAC;IACH,CAAC;IACD,YAAY,EAAE,CAAC,MAA2B,EAAE,GAAG,IAAe,EAAU,EAAE;QACxE,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAsC,CAAC;QAClE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,sBAAsB,CAAC;QAChC,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,kBAAkB;YACxC,MAAM,CAAC,QAA2C,CAExC,CAAC;QAEd,MAAM,gBAAgB,GAAG,YAAY;YACnC,CAAC,CAAC,uBAAuB,CAAC,YAAY,CAAC;YACvC,CAAC,CAAC,QAAQ,CAAC;QAEb,MAAM,IAAI,GAAG,kBAAkB,CAC7B,MAAM,CAAC,MAA6C,EACpD,YAAY,CACb,CAAC;QACF,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,IAAI,SAAS,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAExD,MAAM,WAAW,GAAG,WAAW;YAC7B,CAAC,CAAC,eAAe,gBAAgB,mBAAmB,IAAI,SAAS,EAAE,GAAG;YACtE,CAAC,CAAC,0BAA0B,gBAAgB,KAAK,IAAI,SAAS,EAAE,GAAG,CAAC;QAEtE,OAAO,GAAG,WAAW,GAAG,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC9D,CAAC;IACD,gBAAgB,EAAE,CAChB,MAA2B,EAC3B,YAAqB,EACI,EAAE;QAC3B,OAAO,wBAAwB,CAAC,MAAqB,EAAE,YAAY,CAAC,CAAC;IACvE,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAG3B;IACF,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,KAAK,EACZ,MAA6B,EACqB,EAAE;QACpD,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,2BAA2B,CACjD,eAAe,EACf,MAAM,CACP,CAAC;YACF,OAAO,MAAM,qBAAqB,CAAC,eAAe,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,MAAM,iBAAiB,CAC5B,KAAK,EACL,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,SAAS,CACjB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,YAAY,EAAE,CACZ,MAA+C,EAC/C,GAAG,IAAe,EACV,EAAE;QACV,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAsC,CAAC;QAClE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,sBAAsB,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,aAAa,MAAM,CAAC,SAAS,EAAE,CAAC;QAC9H,CAAC;QAED,MAAM,gBAAgB,GAAG,YAAY;YACnC,CAAC,CAAC,uBAAuB,CAAC,YAAY,CAAC;YACvC,CAAC,CAAC,QAAQ,CAAC;QACb,OAAO,0BAA0B,gBAAgB,aAAa,MAAM,CAAC,SAAS,EAAE,CAAC;IACnF,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,qBAAqB,CAAC;QACjC,UAAU,EAAE,6DAA6D;QACzE,UAAU,EACR,mEAAmE;QACrE,WAAW,EACT,wGAAwG;QAC1G,gBAAgB,EAAE,IAAI;QACtB,YAAY,EACV,gOAAgO;KACnO,CAAC;IACF,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EAAE;QACX,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,KAAK;KACvB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,qBAAqB,CAAC;QACjC,UAAU,EACR,0EAA0E;QAC5E,UAAU,EAAE,8DAA8D;QAC1E,WAAW,EACT,6FAA6F;QAC/F,gBAAgB,EAAE,IAAI;QACtB,YAAY,EACV,gMAAgM;KACnM,CAAC;IACF,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EAAE;QACX,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,KAAK;KACvB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,qBAAqB,CAAC;QACjC,UAAU,EACR,uEAAuE;QACzE,UAAU,EACR,yEAAyE;QAC3E,WAAW,EACT,iFAAiF;QACnF,gBAAgB,EAAE,IAAI;QACtB,YAAY,EACV,qFAAqF;KACxF,CAAC;IACF,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EAAE;QACX,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,IAAI;KACtB;CACF,CAAC"}
|
|
@@ -2,9 +2,9 @@ import { getDetailedInfoSchema, validateUniversalToolParams, } from '../schemas.
|
|
|
2
2
|
import { handleUniversalGetDetailedInfo, getSingularResourceType, } from '../shared-handlers.js';
|
|
3
3
|
import { formatToolDescription } from '../../../../handlers/tools/standards/index.js';
|
|
4
4
|
export const getDetailedInfoConfig = {
|
|
5
|
-
name: '
|
|
5
|
+
name: 'get_record_info',
|
|
6
6
|
handler: async (params) => {
|
|
7
|
-
validateUniversalToolParams('
|
|
7
|
+
validateUniversalToolParams('get_record_info', params);
|
|
8
8
|
return await handleUniversalGetDetailedInfo(params);
|
|
9
9
|
},
|
|
10
10
|
formatResult: (info, ...args) => {
|
|
@@ -59,7 +59,7 @@ export const getDetailedInfoConfig = {
|
|
|
59
59
|
},
|
|
60
60
|
};
|
|
61
61
|
export const getDetailedInfoDefinition = {
|
|
62
|
-
name: '
|
|
62
|
+
name: 'get_record_info',
|
|
63
63
|
description: formatToolDescription({
|
|
64
64
|
capability: 'Retrieve enriched info subsets (contact, business, social) for a record.',
|
|
65
65
|
boundaries: 'search lists of records or mutate data.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detailed-info-operations.js","sourceRoot":"","sources":["../../../../../src/handlers/tool-configs/universal/core/detailed-info-operations.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,8BAA8B,EAC9B,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,MAAM,CAAC,MAAM,qBAAqB,GAG9B;IACF,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"detailed-info-operations.js","sourceRoot":"","sources":["../../../../../src/handlers/tool-configs/universal/core/detailed-info-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attribute Not Found Error Enhancer
|
|
3
|
+
* Issue #1001 - Strategy Pattern for CRUD error handling
|
|
4
|
+
*
|
|
5
|
+
* Detects "Cannot find attribute with slug/ID" errors and provides
|
|
6
|
+
* suggestions using Levenshtein distance algorithm.
|
|
7
|
+
*
|
|
8
|
+
* CRITICAL: This enhancer caused PR #1048 to fail due to missing
|
|
9
|
+
* function signatures. All functions must have COMPLETE declarations.
|
|
10
|
+
*/
|
|
11
|
+
import type { ErrorEnhancer } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Attribute Not Found Enhancer
|
|
14
|
+
* Uses Levenshtein distance to suggest similar attribute names
|
|
15
|
+
*/
|
|
16
|
+
export declare const attributeNotFoundEnhancer: ErrorEnhancer;
|
|
17
|
+
//# sourceMappingURL=attribute-enhancer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribute-enhancer.d.ts","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,YAAY,CAAC;AAmIlE;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,aAevC,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attribute Not Found Error Enhancer
|
|
3
|
+
* Issue #1001 - Strategy Pattern for CRUD error handling
|
|
4
|
+
*
|
|
5
|
+
* Detects "Cannot find attribute with slug/ID" errors and provides
|
|
6
|
+
* suggestions using Levenshtein distance algorithm.
|
|
7
|
+
*
|
|
8
|
+
* CRITICAL: This enhancer caused PR #1048 to fail due to missing
|
|
9
|
+
* function signatures. All functions must have COMPLETE declarations.
|
|
10
|
+
*/
|
|
11
|
+
import { sanitizedLog } from '../pii-sanitizer.js';
|
|
12
|
+
import { createScopedLogger } from '../../../../../utils/logger.js';
|
|
13
|
+
const logger = createScopedLogger('attribute-enhancer');
|
|
14
|
+
/**
|
|
15
|
+
* Calculate Levenshtein distance between two strings
|
|
16
|
+
* Used for suggesting similar attribute names
|
|
17
|
+
*
|
|
18
|
+
* PR #1048 FAILURE POINT: Must include COMPLETE function signature
|
|
19
|
+
* NOT: const matrix: number[][] = []
|
|
20
|
+
* BUT: const levenshteinDistance = (a: string, b: string): number => { const matrix... }
|
|
21
|
+
*/
|
|
22
|
+
const levenshteinDistance = (a, b) => {
|
|
23
|
+
const matrix = [];
|
|
24
|
+
// Initialize first column
|
|
25
|
+
for (let i = 0; i <= a.length; i++) {
|
|
26
|
+
matrix[i] = [i];
|
|
27
|
+
}
|
|
28
|
+
// Initialize first row
|
|
29
|
+
for (let j = 0; j <= b.length; j++) {
|
|
30
|
+
matrix[0][j] = j;
|
|
31
|
+
}
|
|
32
|
+
// Fill in the rest of the matrix
|
|
33
|
+
for (let i = 1; i <= a.length; i++) {
|
|
34
|
+
for (let j = 1; j <= b.length; j++) {
|
|
35
|
+
if (a[i - 1] === b[j - 1]) {
|
|
36
|
+
matrix[i][j] = matrix[i - 1][j - 1];
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
|
|
40
|
+
matrix[i][j - 1] + 1, // insertion
|
|
41
|
+
matrix[i - 1][j] + 1 // deletion
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return matrix[a.length][b.length];
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Find similar attribute names using Levenshtein distance
|
|
50
|
+
*/
|
|
51
|
+
const findSimilarAttributes = (target, candidates, maxResults) => {
|
|
52
|
+
const scored = candidates.map((c) => ({
|
|
53
|
+
name: c,
|
|
54
|
+
distance: levenshteinDistance(target.toLowerCase(), c.toLowerCase()),
|
|
55
|
+
}));
|
|
56
|
+
return scored
|
|
57
|
+
.filter((s) => s.distance <= 3) // Max 3 edits
|
|
58
|
+
.sort((a, b) => a.distance - b.distance)
|
|
59
|
+
.slice(0, maxResults)
|
|
60
|
+
.map((s) => s.name);
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Enhance error messages for attribute-not-found errors
|
|
64
|
+
* Detects "Cannot find attribute with slug/ID" errors and provides suggestions
|
|
65
|
+
*/
|
|
66
|
+
const enhanceAttributeNotFoundError = async (error, resourceType) => {
|
|
67
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
68
|
+
// Pattern: "Cannot find attribute with slug/ID "X"."
|
|
69
|
+
const attrMatch = msg.match(/Cannot find attribute with slug\/ID "(.+?)"/);
|
|
70
|
+
if (!attrMatch)
|
|
71
|
+
return null;
|
|
72
|
+
const invalidAttr = attrMatch[1];
|
|
73
|
+
try {
|
|
74
|
+
// Fetch valid attributes and find similar ones
|
|
75
|
+
const { handleUniversalDiscoverAttributes } = await import('../../shared-handlers.js');
|
|
76
|
+
const schema = await handleUniversalDiscoverAttributes(resourceType);
|
|
77
|
+
const allAttrs = (schema.all || []);
|
|
78
|
+
const attrNames = allAttrs
|
|
79
|
+
.flatMap((a) => [a.name, a.title, a.api_slug])
|
|
80
|
+
.filter(Boolean);
|
|
81
|
+
// Find similar attribute names using Levenshtein distance
|
|
82
|
+
const suggestions = findSimilarAttributes(invalidAttr, attrNames, 3);
|
|
83
|
+
let message = `Attribute "${invalidAttr}" does not exist on ${resourceType}.\n\n`;
|
|
84
|
+
if (suggestions.length > 0) {
|
|
85
|
+
message += `Did you mean: ${suggestions.map((s) => `"${s}"`).join(', ')}?\n\n`;
|
|
86
|
+
}
|
|
87
|
+
message += `Next step: Call records_discover_attributes with\n`;
|
|
88
|
+
message += ` resource_type: "${resourceType}"\n`;
|
|
89
|
+
message += `to see all valid attributes.`;
|
|
90
|
+
return message;
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
sanitizedLog(logger, 'debug', 'Failed to discover attributes for suggestions', {
|
|
94
|
+
enhancerName: 'attribute-not-found',
|
|
95
|
+
resourceType,
|
|
96
|
+
invalidAttribute: invalidAttr,
|
|
97
|
+
error: err instanceof Error ? err.message : String(err),
|
|
98
|
+
});
|
|
99
|
+
return (`Attribute "${invalidAttr}" does not exist on ${resourceType}.\n\n` +
|
|
100
|
+
`Next step: Use records_discover_attributes to see valid attributes.`);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Attribute Not Found Enhancer
|
|
105
|
+
* Uses Levenshtein distance to suggest similar attribute names
|
|
106
|
+
*/
|
|
107
|
+
export const attributeNotFoundEnhancer = {
|
|
108
|
+
name: 'attribute-not-found',
|
|
109
|
+
errorName: 'attribute_not_found',
|
|
110
|
+
matches: (error, _context) => {
|
|
111
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
112
|
+
return msg.includes('Cannot find attribute with slug/ID');
|
|
113
|
+
},
|
|
114
|
+
enhance: async (error, context) => {
|
|
115
|
+
return enhanceAttributeNotFoundError(error, context.resourceType);
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=attribute-enhancer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribute-enhancer.js","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Complex Type Error Enhancer
|
|
3
|
+
* Issue #1001 - Strategy Pattern for CRUD error handling
|
|
4
|
+
*
|
|
5
|
+
* Enhances errors for complex type fields: location, phone-number, personal-name
|
|
6
|
+
* Provides example structures and usage tips.
|
|
7
|
+
*/
|
|
8
|
+
import type { ErrorEnhancer } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Complex Type Enhancer
|
|
11
|
+
* Handles location, phone-number, and personal-name field errors
|
|
12
|
+
*/
|
|
13
|
+
export declare const complexTypeEnhancer: ErrorEnhancer;
|
|
14
|
+
//# sourceMappingURL=complex-type-enhancer.d.ts.map
|
package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"complex-type-enhancer.d.ts","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,YAAY,CAAC;AAqFlE;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAoBjC,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Complex Type Error Enhancer
|
|
3
|
+
* Issue #1001 - Strategy Pattern for CRUD error handling
|
|
4
|
+
*
|
|
5
|
+
* Enhances errors for complex type fields: location, phone-number, personal-name
|
|
6
|
+
* Provides example structures and usage tips.
|
|
7
|
+
*/
|
|
8
|
+
import { getErrorMessage, isAxiosError } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Enhance complex type errors (location, personal-name, phone-number)
|
|
11
|
+
*/
|
|
12
|
+
const enhanceComplexTypeError = (error, recordData) => {
|
|
13
|
+
const locationExample = '{\n' +
|
|
14
|
+
' "line_1": "123 Main St",\n' +
|
|
15
|
+
' "locality": "City",\n' +
|
|
16
|
+
' "region": "State",\n' +
|
|
17
|
+
' "postcode": "12345",\n' +
|
|
18
|
+
' "country_code": "US",\n' +
|
|
19
|
+
' "latitude": null,\n' +
|
|
20
|
+
' "longitude": null,\n' +
|
|
21
|
+
' "line_2": null,\n' +
|
|
22
|
+
' "line_3": null,\n' +
|
|
23
|
+
' "line_4": null\n' +
|
|
24
|
+
'}';
|
|
25
|
+
const phoneExample = '{ "phone_number": "+15551234567", "country_code": "US" }';
|
|
26
|
+
const nameExample = '{ "first_name": "Jane", "last_name": "Doe" }';
|
|
27
|
+
const msg = getErrorMessage(error);
|
|
28
|
+
const validationErrors = isAxiosError(error)
|
|
29
|
+
? error.response?.data?.validation_errors
|
|
30
|
+
: null;
|
|
31
|
+
const recordFields = recordData ? Object.keys(recordData) : [];
|
|
32
|
+
const containsLocation = /location/i.test(msg) ||
|
|
33
|
+
recordFields.some((f) => /location/i.test(f)) ||
|
|
34
|
+
(validationErrors &&
|
|
35
|
+
validationErrors.some((ve) => /location/i.test(String(ve?.field || ve?.path || ve?.message || ''))));
|
|
36
|
+
if (containsLocation) {
|
|
37
|
+
return (`Invalid location value. Expected an object with all required fields.\n\n` +
|
|
38
|
+
`Expected structure:\n${locationExample}\n\n` +
|
|
39
|
+
`Tip: Missing fields are auto-filled with null; pass an object, not a string.`);
|
|
40
|
+
}
|
|
41
|
+
const containsPhone = /phone/.test(msg) ||
|
|
42
|
+
(validationErrors &&
|
|
43
|
+
validationErrors.some((ve) => /phone/.test(String(ve?.field || ve?.path || ve?.message || ''))));
|
|
44
|
+
if (containsPhone) {
|
|
45
|
+
return (`Invalid phone-number value. Provide phone_number or original_phone_number strings.\n\n` +
|
|
46
|
+
`Example: ${phoneExample}\n\n` +
|
|
47
|
+
`Tip: Strings are normalized to E.164; keep label/type fields if needed.`);
|
|
48
|
+
}
|
|
49
|
+
const containsPersonalName = /personal-name/.test(msg) ||
|
|
50
|
+
(validationErrors &&
|
|
51
|
+
validationErrors.some((ve) => /name/.test(String(ve?.field || ve?.path || ve?.message || ''))));
|
|
52
|
+
if (containsPersonalName) {
|
|
53
|
+
return (`Invalid personal-name value. Provide first_name/last_name or full_name.\n\n` +
|
|
54
|
+
`Example: ${nameExample}\n\n` +
|
|
55
|
+
`Tip: Strings are parsed automatically; empty strings are rejected.`);
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Complex Type Enhancer
|
|
61
|
+
* Handles location, phone-number, and personal-name field errors
|
|
62
|
+
*/
|
|
63
|
+
export const complexTypeEnhancer = {
|
|
64
|
+
name: 'complex-type',
|
|
65
|
+
errorName: 'validation_error',
|
|
66
|
+
matches: (error, _context) => {
|
|
67
|
+
const msg = getErrorMessage(error);
|
|
68
|
+
return (/location/i.test(msg) ||
|
|
69
|
+
/phone/.test(msg) ||
|
|
70
|
+
/personal-name/.test(msg) ||
|
|
71
|
+
msg.includes('Invalid value'));
|
|
72
|
+
},
|
|
73
|
+
enhance: async (error, context) => {
|
|
74
|
+
return enhanceComplexTypeError(error, context.recordData);
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=complex-type-enhancer.js.map
|
package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"complex-type-enhancer.js","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Enhancers - Centralized Exports & Pipelines
|
|
3
|
+
* Issue #1001 - Strategy Pattern for CRUD error handling
|
|
4
|
+
*/
|
|
5
|
+
import { requiredFieldsEnhancer } from './required-fields-enhancer.js';
|
|
6
|
+
import { uniquenessEnhancer } from './uniqueness-enhancer.js';
|
|
7
|
+
import { attributeNotFoundEnhancer } from './attribute-enhancer.js';
|
|
8
|
+
import { selectStatusEnhancer } from './select-status-enhancer.js';
|
|
9
|
+
import { complexTypeEnhancer } from './complex-type-enhancer.js';
|
|
10
|
+
import { recordReferenceEnhancer } from './record-reference-enhancer.js';
|
|
11
|
+
/**
|
|
12
|
+
* Enhancer pipeline for CREATE operations
|
|
13
|
+
* Order matters: more specific errors before generic ones
|
|
14
|
+
*/
|
|
15
|
+
export declare const CREATE_ERROR_ENHANCERS: readonly [import("./types.js").ErrorEnhancer, import("./types.js").ErrorEnhancer, import("./types.js").ErrorEnhancer, import("./types.js").ErrorEnhancer, import("./types.js").ErrorEnhancer, import("./types.js").ErrorEnhancer];
|
|
16
|
+
/**
|
|
17
|
+
* Enhancer pipeline for UPDATE operations
|
|
18
|
+
* Note: Required fields and uniqueness checks not needed for updates
|
|
19
|
+
*/
|
|
20
|
+
export declare const UPDATE_ERROR_ENHANCERS: readonly [import("./types.js").ErrorEnhancer, import("./types.js").ErrorEnhancer, import("./types.js").ErrorEnhancer, import("./types.js").ErrorEnhancer];
|
|
21
|
+
export { requiredFieldsEnhancer, uniquenessEnhancer, attributeNotFoundEnhancer, selectStatusEnhancer, complexTypeEnhancer, recordReferenceEnhancer, };
|
|
22
|
+
export type { CrudErrorContext, ErrorEnhancer, ValidationMetadata, AxiosError, AxiosErrorResponse, } from './types.js';
|
|
23
|
+
export { isAxiosError } from './types.js';
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,mOAOzB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,sBAAsB,2JAKzB,CAAC;AAEX,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,GACxB,CAAC;AAEF,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Enhancers - Centralized Exports & Pipelines
|
|
3
|
+
* Issue #1001 - Strategy Pattern for CRUD error handling
|
|
4
|
+
*/
|
|
5
|
+
import { requiredFieldsEnhancer } from './required-fields-enhancer.js';
|
|
6
|
+
import { uniquenessEnhancer } from './uniqueness-enhancer.js';
|
|
7
|
+
import { attributeNotFoundEnhancer } from './attribute-enhancer.js';
|
|
8
|
+
import { selectStatusEnhancer } from './select-status-enhancer.js';
|
|
9
|
+
import { complexTypeEnhancer } from './complex-type-enhancer.js';
|
|
10
|
+
import { recordReferenceEnhancer } from './record-reference-enhancer.js';
|
|
11
|
+
/**
|
|
12
|
+
* Enhancer pipeline for CREATE operations
|
|
13
|
+
* Order matters: more specific errors before generic ones
|
|
14
|
+
*/
|
|
15
|
+
export const CREATE_ERROR_ENHANCERS = [
|
|
16
|
+
requiredFieldsEnhancer,
|
|
17
|
+
uniquenessEnhancer,
|
|
18
|
+
attributeNotFoundEnhancer,
|
|
19
|
+
complexTypeEnhancer,
|
|
20
|
+
selectStatusEnhancer,
|
|
21
|
+
recordReferenceEnhancer,
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* Enhancer pipeline for UPDATE operations
|
|
25
|
+
* Note: Required fields and uniqueness checks not needed for updates
|
|
26
|
+
*/
|
|
27
|
+
export const UPDATE_ERROR_ENHANCERS = [
|
|
28
|
+
attributeNotFoundEnhancer,
|
|
29
|
+
complexTypeEnhancer,
|
|
30
|
+
selectStatusEnhancer,
|
|
31
|
+
recordReferenceEnhancer,
|
|
32
|
+
];
|
|
33
|
+
export { requiredFieldsEnhancer, uniquenessEnhancer, attributeNotFoundEnhancer, selectStatusEnhancer, complexTypeEnhancer, recordReferenceEnhancer, };
|
|
34
|
+
export { isAxiosError } from './types.js';
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,sBAAsB;IACtB,kBAAkB;IAClB,yBAAyB;IACzB,mBAAmB;IACnB,oBAAoB;IACpB,uBAAuB;CACf,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,yBAAyB;IACzB,mBAAmB;IACnB,oBAAoB;IACpB,uBAAuB;CACf,CAAC;AAEX,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,GACxB,CAAC;AAUF,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Record Reference Error Enhancer
|
|
3
|
+
* Issue #1001 - Strategy Pattern for CRUD error handling
|
|
4
|
+
* Issue #997 - Enhanced record-reference attribute error handling
|
|
5
|
+
*
|
|
6
|
+
* Detects "Missing target_object on record reference value" and similar errors
|
|
7
|
+
* Provides format guidance for record-reference fields.
|
|
8
|
+
*/
|
|
9
|
+
import type { ErrorEnhancer } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Record Reference Enhancer
|
|
12
|
+
* Handles record-reference field format errors (Issue #997)
|
|
13
|
+
*/
|
|
14
|
+
export declare const recordReferenceEnhancer: ErrorEnhancer;
|
|
15
|
+
//# sourceMappingURL=record-reference-enhancer.d.ts.map
|
package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-reference-enhancer.d.ts","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,YAAY,CAAC;AA8ElE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,aAyCrC,CAAC"}
|