@contentful/mcp-server 1.2.2 → 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/build/config/env.js +1 -0
- package/build/config/env.js.map +1 -1
- package/build/tools/content-types/createContentType.js +3 -0
- package/build/tools/content-types/createContentType.js.map +1 -1
- package/build/tools/content-types/updateContentType.js +3 -0
- package/build/tools/content-types/updateContentType.js.map +1 -1
- package/build/tools/context/getInitialContextTool.js +3 -1
- package/build/tools/context/getInitialContextTool.js.map +1 -1
- package/build/tools/entries/createEntry.js +3 -12
- package/build/tools/entries/createEntry.js.map +1 -1
- package/build/tools/entries/updateEntry.js +7 -11
- package/build/tools/entries/updateEntry.js.map +1 -1
- package/build/tools/orgs/getOrg.js +23 -0
- package/build/tools/orgs/getOrg.js.map +1 -0
- package/build/tools/orgs/listOrgs.js +57 -0
- package/build/tools/orgs/listOrgs.js.map +1 -0
- package/build/tools/orgs/mockClient.js +38 -0
- package/build/tools/orgs/mockClient.js.map +1 -0
- package/build/tools/orgs/register.js +7 -0
- package/build/tools/orgs/register.js.map +1 -0
- package/build/tools/register.js +2 -0
- package/build/tools/register.js.map +1 -1
- package/build/types/taxonomySchema.js +67 -0
- package/build/types/taxonomySchema.js.map +1 -0
- package/package.json +1 -1
package/build/config/env.js
CHANGED
|
@@ -17,6 +17,7 @@ const EnvSchema = z.object({
|
|
|
17
17
|
.optional()
|
|
18
18
|
.default('master')
|
|
19
19
|
.describe('Contentful environment ID'),
|
|
20
|
+
ORGANIZATION_ID: z.string().optional().describe('Contentful organization ID'),
|
|
20
21
|
});
|
|
21
22
|
export const env = EnvSchema.safeParse(process.env);
|
|
22
23
|
if (!env.success && process.env.TEST_TYPE !== 'unit') {
|
package/build/config/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,kCAAkC,EAAE,CAAC;SAClC,MAAM,EAAE;SACR,QAAQ,CAAC,sBAAsB,CAAC;IACnC,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,oBAAoB,CAAC;SAC7B,QAAQ,CAAC,qBAAqB,CAAC;IAElC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC3D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC/D,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,kCAAkC,EAAE,CAAC;SAClC,MAAM,EAAE;SACR,QAAQ,CAAC,sBAAsB,CAAC;IACnC,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,oBAAoB,CAAC;SAC7B,QAAQ,CAAC,qBAAqB,CAAC;IAElC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC3D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC/D,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,2BAA2B,CAAC;IACxC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CAC9E,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEpD,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;IACrD,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { z } from 'zod';
|
|
|
2
2
|
import { createSuccessResponse, withErrorHandling, } from '../../utils/response.js';
|
|
3
3
|
import { BaseToolSchema, createToolClient } from '../../utils/tools.js';
|
|
4
4
|
import { FieldSchema } from '../../types/fieldSchema.js';
|
|
5
|
+
import { ContentTypeMetadataSchema } from '../../types/taxonomySchema.js';
|
|
5
6
|
export const CreateContentTypeToolParams = BaseToolSchema.extend({
|
|
6
7
|
name: z.string().describe('The name of the content type'),
|
|
7
8
|
displayField: z.string().describe('The field ID to use as the display field'),
|
|
@@ -16,6 +17,7 @@ export const CreateContentTypeToolParams = BaseToolSchema.extend({
|
|
|
16
17
|
fields: z
|
|
17
18
|
.array(FieldSchema)
|
|
18
19
|
.describe('Array of field definitions for the content type'),
|
|
20
|
+
metadata: ContentTypeMetadataSchema,
|
|
19
21
|
});
|
|
20
22
|
async function tool(args) {
|
|
21
23
|
const params = {
|
|
@@ -28,6 +30,7 @@ async function tool(args) {
|
|
|
28
30
|
displayField: args.displayField,
|
|
29
31
|
description: args.description,
|
|
30
32
|
fields: args.fields,
|
|
33
|
+
metadata: args.metadata,
|
|
31
34
|
};
|
|
32
35
|
// Create the content type with or without ID
|
|
33
36
|
const contentType = args.contentTypeId
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createContentType.js","sourceRoot":"","sources":["../../../src/tools/content-types/createContentType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"createContentType.js","sourceRoot":"","sources":["../../../src/tools/content-types/createContentType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,MAAM,CAAC,MAAM,2BAA2B,GAAG,cAAc,CAAC,MAAM,CAAC;IAC/D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACzD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC7E,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,6EAA6E,CAC9E;IACH,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,WAAW,CAAC;SAClB,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,QAAQ,EAAE,yBAAyB;CACpC,CAAC,CAAC;AAIH,KAAK,UAAU,IAAI,CAAC,IAAY;IAC9B,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAC;IAEF,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAEhD,MAAM,eAAe,GAAG;QACtB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC;IAEF,6CAA6C;IAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa;QACpC,CAAC,CAAC,MAAM,gBAAgB,CAAC,WAAW,CAAC,YAAY,CAC7C,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAChD,eAAe,CAChB;QACH,CAAC,CAAC,MAAM,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAEvE,OAAO,qBAAqB,CAAC,mCAAmC,EAAE;QAChE,WAAW;KACZ,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CACpD,IAAI,EACJ,6BAA6B,CAC9B,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { z } from 'zod';
|
|
|
2
2
|
import { createSuccessResponse, withErrorHandling, } from '../../utils/response.js';
|
|
3
3
|
import { BaseToolSchema, createToolClient } from '../../utils/tools.js';
|
|
4
4
|
import { FieldSchema } from '../../types/fieldSchema.js';
|
|
5
|
+
import { ContentTypeMetadataSchema } from '../../types/taxonomySchema.js';
|
|
5
6
|
export const UpdateContentTypeToolParams = BaseToolSchema.extend({
|
|
6
7
|
contentTypeId: z.string().describe('The ID of the content type to update'),
|
|
7
8
|
name: z.string().optional().describe('The name of the content type'),
|
|
@@ -17,6 +18,7 @@ export const UpdateContentTypeToolParams = BaseToolSchema.extend({
|
|
|
17
18
|
.array(FieldSchema)
|
|
18
19
|
.optional()
|
|
19
20
|
.describe('Array of field definitions for the content type. Will be merged with existing fields.'),
|
|
21
|
+
metadata: ContentTypeMetadataSchema,
|
|
20
22
|
});
|
|
21
23
|
async function tool(args) {
|
|
22
24
|
const params = {
|
|
@@ -70,6 +72,7 @@ async function tool(args) {
|
|
|
70
72
|
description: args.description || currentContentType.description,
|
|
71
73
|
displayField: args.displayField || currentContentType.displayField,
|
|
72
74
|
fields: fields,
|
|
75
|
+
metadata: args.metadata || currentContentType.metadata,
|
|
73
76
|
});
|
|
74
77
|
return createSuccessResponse('Content type updated successfully', {
|
|
75
78
|
contentType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateContentType.js","sourceRoot":"","sources":["../../../src/tools/content-types/updateContentType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"updateContentType.js","sourceRoot":"","sources":["../../../src/tools/content-types/updateContentType.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,10 +12,12 @@ async function tool(_params) {
|
|
|
12
12
|
const config = {
|
|
13
13
|
space: env.data?.SPACE_ID,
|
|
14
14
|
environment: env.data?.ENVIRONMENT_ID,
|
|
15
|
+
organization: env.data?.ORGANIZATION_ID,
|
|
15
16
|
};
|
|
16
17
|
const configInfo = `Current Contentful Configuration:
|
|
17
18
|
- Space ID: ${config.space}
|
|
18
|
-
- Environment ID: ${config.environment}
|
|
19
|
+
- Environment ID: ${config.environment}
|
|
20
|
+
- Organization ID: ${config.organization}`;
|
|
19
21
|
const todaysDate = new Date().toLocaleDateString('en-US');
|
|
20
22
|
const message = outdent `
|
|
21
23
|
${MCP_INSTRUCTIONS}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getInitialContextTool.js","sourceRoot":"","sources":["../../../src/tools/context/getInitialContextTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE1C,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAIxD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,YAAY,CAAC,iBAAiB,EAAE,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,OAAe;IACjC,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ;QACzB,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,cAAc;
|
|
1
|
+
{"version":3,"file":"getInitialContextTool.js","sourceRoot":"","sources":["../../../src/tools/context/getInitialContextTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE1C,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAIxD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,YAAY,CAAC,iBAAiB,EAAE,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,OAAe;IACjC,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ;QACzB,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,cAAc;QACrC,YAAY,EAAE,GAAG,CAAC,IAAI,EAAE,eAAe;KACxC,CAAC;IAEF,MAAM,UAAU,GAAG;gBACL,MAAM,CAAC,KAAK;sBACN,MAAM,CAAC,WAAW;uBACjB,MAAM,CAAC,YAAY,EAAE,CAAC;IAE3C,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAE1D,MAAM,OAAO,GAAG,OAAO,CAAA;MACnB,gBAAgB;;;;;QAKd,UAAU;;;kBAGA,UAAU;GACzB,CAAC;IAEF,YAAY,CAAC,uBAAuB,EAAE,CAAC;IAEvC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,OAAO;aACd;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CACpD,IAAI,EACJ,+BAA+B,CAChC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { createSuccessResponse, withErrorHandling, } from '../../utils/response.js';
|
|
3
3
|
import { BaseToolSchema, createToolClient } from '../../utils/tools.js';
|
|
4
|
+
import { EntryMetadataSchema } from '../../types/taxonomySchema.js';
|
|
4
5
|
export const CreateEntryToolParams = BaseToolSchema.extend({
|
|
5
6
|
contentTypeId: z
|
|
6
7
|
.string()
|
|
@@ -8,17 +9,7 @@ export const CreateEntryToolParams = BaseToolSchema.extend({
|
|
|
8
9
|
fields: z
|
|
9
10
|
.record(z.any())
|
|
10
11
|
.describe('The field values for the new entry. Keys should be field IDs and values should be the field content.'),
|
|
11
|
-
metadata:
|
|
12
|
-
.object({
|
|
13
|
-
tags: z.array(z.object({
|
|
14
|
-
sys: z.object({
|
|
15
|
-
type: z.literal('Link'),
|
|
16
|
-
linkType: z.literal('Tag'),
|
|
17
|
-
id: z.string(),
|
|
18
|
-
}),
|
|
19
|
-
})),
|
|
20
|
-
})
|
|
21
|
-
.optional(),
|
|
12
|
+
metadata: EntryMetadataSchema,
|
|
22
13
|
});
|
|
23
14
|
async function tool(args) {
|
|
24
15
|
const params = {
|
|
@@ -31,7 +22,7 @@ async function tool(args) {
|
|
|
31
22
|
contentTypeId: args.contentTypeId,
|
|
32
23
|
}, {
|
|
33
24
|
fields: args.fields,
|
|
34
|
-
metadata: args.metadata,
|
|
25
|
+
...(args.metadata ? { metadata: args.metadata } : {}),
|
|
35
26
|
});
|
|
36
27
|
//return info about the entry that was created
|
|
37
28
|
return createSuccessResponse('Entry created successfully', { newEntry });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createEntry.js","sourceRoot":"","sources":["../../../src/tools/entries/createEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"createEntry.js","sourceRoot":"","sources":["../../../src/tools/entries/createEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,CAAC,MAAM,qBAAqB,GAAG,cAAc,CAAC,MAAM,CAAC;IACzD,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,CAAC,mDAAmD,CAAC;IAChE,MAAM,EAAE,CAAC;SACN,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SACf,QAAQ,CACP,sGAAsG,CACvG;IACH,QAAQ,EAAE,mBAAmB;CAC9B,CAAC,CAAC;AAIH,KAAK,UAAU,IAAI,CAAC,IAAY;IAC9B,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAC;IAEF,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAClD;QACE,GAAG,MAAM;QACT,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,EACD;QACE,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CACF,CAAC;IAEF,8CAA8C;IAC9C,OAAO,qBAAqB,CAAC,4BAA4B,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC"}
|
|
@@ -1,22 +1,13 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { createSuccessResponse, withErrorHandling, } from '../../utils/response.js';
|
|
3
3
|
import { BaseToolSchema, createToolClient } from '../../utils/tools.js';
|
|
4
|
+
import { EntryMetadataSchema } from '../../types/taxonomySchema.js';
|
|
4
5
|
export const UpdateEntryToolParams = BaseToolSchema.extend({
|
|
5
6
|
entryId: z.string().describe('The ID of the entry to update'),
|
|
6
7
|
fields: z
|
|
7
8
|
.record(z.any())
|
|
8
9
|
.describe('The field values to update. Keys should be field IDs and values should be the field content. Will be merged with existing fields.'),
|
|
9
|
-
metadata:
|
|
10
|
-
.object({
|
|
11
|
-
tags: z.array(z.object({
|
|
12
|
-
sys: z.object({
|
|
13
|
-
type: z.literal('Link'),
|
|
14
|
-
linkType: z.literal('Tag'),
|
|
15
|
-
id: z.string(),
|
|
16
|
-
}),
|
|
17
|
-
})),
|
|
18
|
-
})
|
|
19
|
-
.optional(),
|
|
10
|
+
metadata: EntryMetadataSchema,
|
|
20
11
|
});
|
|
21
12
|
async function tool(args) {
|
|
22
13
|
const params = {
|
|
@@ -36,12 +27,17 @@ async function tool(args) {
|
|
|
36
27
|
...(existingEntry.metadata?.tags || []),
|
|
37
28
|
...(args.metadata?.tags || []),
|
|
38
29
|
];
|
|
30
|
+
const allConcepts = [
|
|
31
|
+
...(existingEntry.metadata?.concepts || []),
|
|
32
|
+
...(args.metadata?.concepts || []),
|
|
33
|
+
];
|
|
39
34
|
// Update the entry with merged fields
|
|
40
35
|
const updatedEntry = await contentfulClient.entry.update(params, {
|
|
41
36
|
...existingEntry,
|
|
42
37
|
fields: mergedFields,
|
|
43
38
|
metadata: {
|
|
44
39
|
tags: allTags,
|
|
40
|
+
concepts: allConcepts,
|
|
45
41
|
},
|
|
46
42
|
});
|
|
47
43
|
//return info about the entry that was updated
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateEntry.js","sourceRoot":"","sources":["../../../src/tools/entries/updateEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"updateEntry.js","sourceRoot":"","sources":["../../../src/tools/entries/updateEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,CAAC,MAAM,qBAAqB,GAAG,cAAc,CAAC,MAAM,CAAC;IACzD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IAC7D,MAAM,EAAE,CAAC;SACN,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SACf,QAAQ,CACP,mIAAmI,CACpI;IACH,QAAQ,EAAE,mBAAmB;CAC9B,CAAC,CAAC;AAIH,KAAK,UAAU,IAAI,CAAC,IAAY;IAC9B,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC;IAEF,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAEhD,gCAAgC;IAChC,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE/D,iDAAiD;IACjD,MAAM,YAAY,GAAG;QACnB,GAAG,aAAa,CAAC,MAAM;QACvB,GAAG,IAAI,CAAC,MAAM;KACf,CAAC;IAEF,MAAM,OAAO,GAAG;QACd,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;QACvC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;KAC/B,CAAC;IAEF,MAAM,WAAW,GAAG;QAClB,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC;QAC3C,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC;KACnC,CAAC;IAEF,sCAAsC;IACtC,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;QAC/D,GAAG,aAAa;QAChB,MAAM,EAAE,YAAY;QACpB,QAAQ,EAAE;YACR,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,WAAW;SACtB;KACF,CAAC,CAAC;IAEH,8CAA8C;IAC9C,OAAO,qBAAqB,CAAC,4BAA4B,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createSuccessResponse, withErrorHandling, } from '../../utils/response.js';
|
|
3
|
+
import ctfl from 'contentful-management';
|
|
4
|
+
import { getDefaultClientConfig } from '../../config/contentful.js';
|
|
5
|
+
export const GetOrgToolParams = z.object({
|
|
6
|
+
organizationId: z.string().describe('The ID of the organization to retrieve'),
|
|
7
|
+
});
|
|
8
|
+
async function tool(args) {
|
|
9
|
+
// Create a client without space-specific configuration
|
|
10
|
+
const clientConfig = getDefaultClientConfig();
|
|
11
|
+
// Remove space from config since we're working at the organization level
|
|
12
|
+
delete clientConfig.space;
|
|
13
|
+
const contentfulClient = ctfl.createClient(clientConfig, { type: 'plain' });
|
|
14
|
+
// Get the organization
|
|
15
|
+
const organization = await contentfulClient.organization.get({
|
|
16
|
+
organizationId: args.organizationId,
|
|
17
|
+
});
|
|
18
|
+
return createSuccessResponse('Organization retrieved successfully', {
|
|
19
|
+
organization,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
export const getOrgTool = withErrorHandling(tool, 'Error retrieving organization');
|
|
23
|
+
//# sourceMappingURL=getOrg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOrg.js","sourceRoot":"","sources":["../../../src/tools/orgs/getOrg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,IAAI,MAAM,uBAAuB,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;CAC9E,CAAC,CAAC;AAIH,KAAK,UAAU,IAAI,CAAC,IAAY;IAC9B,uDAAuD;IACvD,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;IAC9C,yEAAyE;IACzE,OAAO,YAAY,CAAC,KAAK,CAAC;IAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAE5E,uBAAuB;IACvB,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC;QAC3D,cAAc,EAAE,IAAI,CAAC,cAAc;KACpC,CAAC,CAAC;IAEH,OAAO,qBAAqB,CAAC,qCAAqC,EAAE;QAClE,YAAY;KACb,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,iBAAiB,CACzC,IAAI,EACJ,+BAA+B,CAChC,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createSuccessResponse, withErrorHandling, } from '../../utils/response.js';
|
|
3
|
+
import ctfl from 'contentful-management';
|
|
4
|
+
import { getDefaultClientConfig } from '../../config/contentful.js';
|
|
5
|
+
import { summarizeData } from '../../utils/summarizer.js';
|
|
6
|
+
// For listing organizations, we don't need spaceId or environmentId parameters
|
|
7
|
+
export const ListOrgsToolParams = z.object({
|
|
8
|
+
limit: z
|
|
9
|
+
.number()
|
|
10
|
+
.optional()
|
|
11
|
+
.describe('Maximum number of organizations to return (max 10)'),
|
|
12
|
+
skip: z
|
|
13
|
+
.number()
|
|
14
|
+
.optional()
|
|
15
|
+
.describe('Skip this many organizations for pagination'),
|
|
16
|
+
select: z
|
|
17
|
+
.string()
|
|
18
|
+
.optional()
|
|
19
|
+
.describe('Comma-separated list of fields to return'),
|
|
20
|
+
order: z.string().optional().describe('Order organizations by this field'),
|
|
21
|
+
});
|
|
22
|
+
async function tool(args) {
|
|
23
|
+
// Create a client without space-specific configuration for listing all organizations
|
|
24
|
+
const clientConfig = getDefaultClientConfig();
|
|
25
|
+
// Remove space from config since we're listing organizations at the account level
|
|
26
|
+
delete clientConfig.space;
|
|
27
|
+
const contentfulClient = ctfl.createClient(clientConfig, { type: 'plain' });
|
|
28
|
+
const organizations = await contentfulClient.organization.getAll({
|
|
29
|
+
query: {
|
|
30
|
+
limit: Math.min(args.limit || 10, 10),
|
|
31
|
+
skip: args.skip || 0,
|
|
32
|
+
...(args.select && { select: args.select }),
|
|
33
|
+
...(args.order && { order: args.order }),
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
const summarizedOrganizations = organizations.items.map((org) => ({
|
|
37
|
+
id: org.sys.id,
|
|
38
|
+
name: org.name,
|
|
39
|
+
createdAt: org.sys.createdAt,
|
|
40
|
+
updatedAt: org.sys.updatedAt,
|
|
41
|
+
}));
|
|
42
|
+
const summarized = summarizeData({
|
|
43
|
+
...organizations,
|
|
44
|
+
items: summarizedOrganizations,
|
|
45
|
+
}, {
|
|
46
|
+
maxItems: 10,
|
|
47
|
+
remainingMessage: 'To see more organizations, please ask me to retrieve the next page using the skip parameter.',
|
|
48
|
+
});
|
|
49
|
+
return createSuccessResponse('Organizations retrieved successfully', {
|
|
50
|
+
organizations: summarized,
|
|
51
|
+
total: organizations.total,
|
|
52
|
+
limit: organizations.limit,
|
|
53
|
+
skip: organizations.skip,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
export const listOrgsTool = withErrorHandling(tool, 'Error listing organizations');
|
|
57
|
+
//# sourceMappingURL=listOrgs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listOrgs.js","sourceRoot":"","sources":["../../../src/tools/orgs/listOrgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,IAAI,MAAM,uBAAuB,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,+EAA+E;AAC/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;IACjE,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;IACvD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CAC3E,CAAC,CAAC;AAIH,KAAK,UAAU,IAAI,CAAC,IAAY;IAC9B,qFAAqF;IACrF,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;IAC9C,kFAAkF;IAClF,OAAO,YAAY,CAAC,KAAK,CAAC;IAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAE5E,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC;QAC/D,KAAK,EAAE;YACL,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC;YACrC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3C,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;SACzC;KACF,CAAC,CAAC;IAEH,MAAM,uBAAuB,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS;QAC5B,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS;KAC7B,CAAC,CAAC,CAAC;IAEJ,MAAM,UAAU,GAAG,aAAa,CAC9B;QACE,GAAG,aAAa;QAChB,KAAK,EAAE,uBAAuB;KAC/B,EACD;QACE,QAAQ,EAAE,EAAE;QACZ,gBAAgB,EACd,8FAA8F;KACjG,CACF,CAAC;IAEF,OAAO,qBAAqB,CAAC,sCAAsC,EAAE;QACnE,aAAa,EAAE,UAAU;QACzB,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,IAAI,EAAE,aAAa,CAAC,IAAI;KACzB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,iBAAiB,CAC3C,IAAI,EACJ,6BAA6B,CAC9B,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { vi } from 'vitest';
|
|
2
|
+
const { mockOrgGet, mockOrgGetAll, mockCreateClient } = vi.hoisted(() => {
|
|
3
|
+
const mockOrgGet = vi.fn();
|
|
4
|
+
const mockOrgGetAll = vi.fn();
|
|
5
|
+
const mockCreateClient = vi.fn(() => ({
|
|
6
|
+
organization: {
|
|
7
|
+
get: mockOrgGet,
|
|
8
|
+
getAll: mockOrgGetAll,
|
|
9
|
+
},
|
|
10
|
+
}));
|
|
11
|
+
return { mockOrgGet, mockOrgGetAll, mockCreateClient };
|
|
12
|
+
});
|
|
13
|
+
vi.mock('contentful-management', () => {
|
|
14
|
+
return {
|
|
15
|
+
default: {
|
|
16
|
+
createClient: mockCreateClient,
|
|
17
|
+
},
|
|
18
|
+
createClient: mockCreateClient,
|
|
19
|
+
};
|
|
20
|
+
});
|
|
21
|
+
export { mockOrgGet, mockOrgGetAll, mockCreateClient };
|
|
22
|
+
export const testOrg = {
|
|
23
|
+
name: 'Test Organization',
|
|
24
|
+
sys: {
|
|
25
|
+
id: 'test-org-id',
|
|
26
|
+
type: 'Organization',
|
|
27
|
+
createdAt: '2025-08-25T10:00:00Z',
|
|
28
|
+
updatedAt: '2025-08-25T10:00:00Z',
|
|
29
|
+
version: 1,
|
|
30
|
+
accessPolicy: {
|
|
31
|
+
sso: false,
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
export const mockArgs = {
|
|
36
|
+
organizationId: 'test-org-id',
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=mockClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockClient.js","sourceRoot":"","sources":["../../../src/tools/orgs/mockClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE5B,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;IACtE,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAC3B,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAC9B,MAAM,gBAAgB,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACpC,YAAY,EAAE;YACZ,GAAG,EAAE,UAAU;YACf,MAAM,EAAE,aAAa;SACtB;KACF,CAAC,CAAC,CAAC;IACJ,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC;AACzD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACpC,OAAO;QACL,OAAO,EAAE;YACP,YAAY,EAAE,gBAAgB;SAC/B;QACD,YAAY,EAAE,gBAAgB;KAC/B,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC;AAEvD,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,mBAAmB;IACzB,GAAG,EAAE;QACH,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,sBAAsB;QACjC,SAAS,EAAE,sBAAsB;QACjC,OAAO,EAAE,CAAC;QACV,YAAY,EAAE;YACZ,GAAG,EAAE,KAAK;SACX;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,cAAc,EAAE,aAAa;CAC9B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ListOrgsToolParams, listOrgsTool } from './listOrgs.js';
|
|
2
|
+
import { GetOrgToolParams, getOrgTool } from './getOrg.js';
|
|
3
|
+
export function registerOrgTools(server) {
|
|
4
|
+
server.tool('list_orgs', 'List all organizations that the user has access to', ListOrgsToolParams.shape, listOrgsTool);
|
|
5
|
+
server.tool('get_org', 'Get details of a specific organization', GetOrgToolParams.shape, getOrgTool);
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/tools/orgs/register.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,IAAI,CACT,WAAW,EACX,oDAAoD,EACpD,kBAAkB,CAAC,KAAK,EACxB,YAAY,CACb,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,SAAS,EACT,wCAAwC,EACxC,gBAAgB,CAAC,KAAK,EACtB,UAAU,CACX,CAAC;AACJ,CAAC"}
|
package/build/tools/register.js
CHANGED
|
@@ -7,6 +7,7 @@ import { registerSpaceTools } from './spaces/register.js';
|
|
|
7
7
|
import { registerTagsTools } from './tags/register.js';
|
|
8
8
|
import { registerAiActionsTools } from './ai-actions/register.js';
|
|
9
9
|
import { registerLocaleTools } from './locales/register.js';
|
|
10
|
+
import { registerOrgTools } from './orgs/register.js';
|
|
10
11
|
export function registerAllTools(server) {
|
|
11
12
|
registerContextTools(server);
|
|
12
13
|
registerEntriesTools(server);
|
|
@@ -17,5 +18,6 @@ export function registerAllTools(server) {
|
|
|
17
18
|
registerTagsTools(server);
|
|
18
19
|
registerAiActionsTools(server);
|
|
19
20
|
registerLocaleTools(server);
|
|
21
|
+
registerOrgTools(server);
|
|
20
22
|
}
|
|
21
23
|
//# sourceMappingURL=register.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/tools/register.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/tools/register.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Schema for taxonomy concept validation links
|
|
4
|
+
* Matches Contentful's TaxonomyConceptValidationLink type
|
|
5
|
+
*/
|
|
6
|
+
export const TaxonomyConceptValidationLinkSchema = z.object({
|
|
7
|
+
sys: z.object({
|
|
8
|
+
type: z.literal('Link'),
|
|
9
|
+
linkType: z.literal('TaxonomyConcept'),
|
|
10
|
+
id: z.string().describe('The ID of the taxonomy concept'),
|
|
11
|
+
}),
|
|
12
|
+
required: z.boolean().optional(),
|
|
13
|
+
});
|
|
14
|
+
/**
|
|
15
|
+
* Schema for taxonomy concept scheme validation links
|
|
16
|
+
* Matches Contentful's TaxonomyConceptSchemeValidationLink type
|
|
17
|
+
*/
|
|
18
|
+
export const TaxonomyConceptSchemeValidationLinkSchema = z.object({
|
|
19
|
+
sys: z.object({
|
|
20
|
+
type: z.literal('Link'),
|
|
21
|
+
linkType: z.literal('TaxonomyConceptScheme'),
|
|
22
|
+
id: z.string().describe('The ID of the taxonomy concept scheme'),
|
|
23
|
+
}),
|
|
24
|
+
required: z.boolean().optional(),
|
|
25
|
+
});
|
|
26
|
+
/**
|
|
27
|
+
* Union schema for taxonomy validation links
|
|
28
|
+
* Matches the array type expected by Contentful's ContentTypeMetadata.taxonomy
|
|
29
|
+
*/
|
|
30
|
+
export const TaxonomyValidationLinkSchema = z.union([
|
|
31
|
+
TaxonomyConceptValidationLinkSchema,
|
|
32
|
+
TaxonomyConceptSchemeValidationLinkSchema,
|
|
33
|
+
]);
|
|
34
|
+
/**
|
|
35
|
+
* Schema for content type metadata
|
|
36
|
+
* Matches Contentful's ContentTypeMetadata type structure
|
|
37
|
+
*/
|
|
38
|
+
export const ContentTypeMetadataSchema = z
|
|
39
|
+
.object({
|
|
40
|
+
taxonomy: z.array(TaxonomyValidationLinkSchema).optional(),
|
|
41
|
+
})
|
|
42
|
+
.optional();
|
|
43
|
+
/**
|
|
44
|
+
* Schema for entry type metadata
|
|
45
|
+
* Matches Contentful's MetadataProps type structure
|
|
46
|
+
*/
|
|
47
|
+
export const EntryMetadataSchema = z
|
|
48
|
+
.object({
|
|
49
|
+
tags: z.array(z.object({
|
|
50
|
+
sys: z.object({
|
|
51
|
+
type: z.literal('Link'),
|
|
52
|
+
linkType: z.literal('Tag'),
|
|
53
|
+
id: z.string(),
|
|
54
|
+
}),
|
|
55
|
+
})),
|
|
56
|
+
concepts: z
|
|
57
|
+
.array(z.object({
|
|
58
|
+
sys: z.object({
|
|
59
|
+
type: z.literal('Link'),
|
|
60
|
+
linkType: z.literal('TaxonomyConcept'),
|
|
61
|
+
id: z.string(),
|
|
62
|
+
}),
|
|
63
|
+
}))
|
|
64
|
+
.optional(),
|
|
65
|
+
})
|
|
66
|
+
.optional();
|
|
67
|
+
//# sourceMappingURL=taxonomySchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taxonomySchema.js","sourceRoot":"","sources":["../../src/types/taxonomySchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1D,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;QACZ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;QACtC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAC1D,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,CAAC,CAAC,MAAM,CAAC;IAChE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;QACZ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC;QAC5C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;KACjE,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC;IAClD,mCAAmC;IACnC,yCAAyC;CAC1C,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,QAAQ,EAAE;CAC3D,CAAC;KACD,QAAQ,EAAE,CAAC;AAEd;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,KAAK,CACX,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;YACZ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YACvB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;YAC1B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;SACf,CAAC;KACH,CAAC,CACH;IACD,QAAQ,EAAE,CAAC;SACR,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;YACZ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YACvB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;YACtC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;SACf,CAAC;KACH,CAAC,CACH;SACA,QAAQ,EAAE;CACd,CAAC;KACD,QAAQ,EAAE,CAAC"}
|