@forumone/throughline 1.3.0-pr-287-4bd70f6 → 1.3.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 CHANGED
@@ -1,20 +1,16 @@
1
1
  # @forumone/throughline
2
2
 
3
- ## 1.3.0-pr-287-4bd70f6
3
+ ## 1.3.0
4
4
 
5
5
  ### Minor Changes
6
6
 
7
- - 485c257: Adds `create_draft` and `update_draft` to the content tools. Both write drafts only and refuse `_status`, publishing dates, the approval policy and any field off the site's allow-list. They refuse a document someone has open in the admin, naming the person (even when it's the key's own person, whose tab would autosave over the change). They also refuse a block the field doesn't offer, a layout that breaks the composition rules, and a slug that's taken, including one held in the trash. Each write is recorded in the audit log with the caller's `_meta`.
8
-
9
- **Upgrading: a migration.** The key collection gains two checkbox columns, one per new tool. Run `migrate:create` and apply it before deploying.
10
-
11
7
  - 43a7b6d: Adds `@forumone/throughline/content` and a `content:` option on `throughline()`, with the MCP tools an agent uses to read before it writes a draft: `describe_content_type`, `find_documents`, `find_related` and `get_document`. Each call runs as the person behind the API key. Field types, limits and a blocks field's allowed blocks come from the live config. Draft-writing tools follow in a later release.
12
8
 
13
9
  **Upgrading: a migration.** The audit log's `mcpServer` gains `content`, a new value on `enum_audit_events_mcp_server`. A site that turns the tools on also gets four new checkbox columns on `payload-mcp-api-keys`. Run `migrate:create` and apply it before deploying.
14
10
 
15
11
  ### Patch Changes
16
12
 
17
- - @forumone/throughline-design-system@1.3.0-pr-287-4bd70f6
13
+ - @forumone/throughline-design-system@1.3.0
18
14
 
19
15
  ## 1.2.0
20
16
 
@@ -4,8 +4,4 @@ export { describeField, describeFields, topLevelFields, unknownFieldNames, writa
4
4
  export type { BlockDescription, DescribeContext, FieldDescription } from './describe.js';
5
5
  export { CONTENT_READ_TOOLS, CONTENT_READ_TOOL_DESCRIPTORS, createContentReadTools, createDescribeContentTypeTool, createFindDocumentsTool, createFindRelatedTool, createGetDocumentTool, toWriteShape, } from './tools.js';
6
6
  export type { ContentToolDeps } from './tools.js';
7
- export { CONTENT_WRITE_TOOLS, CONTENT_WRITE_TOOL_DESCRIPTORS, createContentWriteTools, createCreateDraftTool, createUpdateDraftTool, } from './write.js';
8
- export type { ContentWriteDeps } from './write.js';
9
- export { compositionErrors, disallowedBlocks, lockHolder, lockRefusal, mergePatch, refusedFields, } from './guards.js';
10
- export type { CompositionIssue, LockHolder, RefusedField } from './guards.js';
11
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACjE,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,aAAa,EACb,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,cAAc,GACf,MAAM,eAAe,CAAA;AACtB,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACxF,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,GACb,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,UAAU,EACV,aAAa,GACd,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACjE,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,aAAa,EACb,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,cAAc,GACf,MAAM,eAAe,CAAA;AACtB,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACxF,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,GACb,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA"}
@@ -1,6 +1,4 @@
1
1
  export { assertContentOptions, contentPlugin } from './plugin.js';
2
2
  export { describeField, describeFields, topLevelFields, unknownFieldNames, writableFields, } from './describe.js';
3
3
  export { CONTENT_READ_TOOLS, CONTENT_READ_TOOL_DESCRIPTORS, createContentReadTools, createDescribeContentTypeTool, createFindDocumentsTool, createFindRelatedTool, createGetDocumentTool, toWriteShape, } from './tools.js';
4
- export { CONTENT_WRITE_TOOLS, CONTENT_WRITE_TOOL_DESCRIPTORS, createContentWriteTools, createCreateDraftTool, createUpdateDraftTool, } from './write.js';
5
- export { compositionErrors, disallowedBlocks, lockHolder, lockRefusal, mergePatch, refusedFields, } from './guards.js';
6
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAMjE,OAAO,EACL,aAAa,EACb,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,cAAc,GACf,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,GACb,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,UAAU,EACV,aAAa,GACd,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAMjE,OAAO,EACL,aAAa,EACb,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,cAAc,GACf,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,GACb,MAAM,YAAY,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/content/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAU,MAAM,EAAE,MAAM,SAAS,CAAA;AAG/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAIxD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAoCnE;AAOD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,aAAa,GAAG,SAAS,CAAC,EAC9D,WAAW,EAAE,SAAS,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,QAAQ,CAAC,EAAE,GAChE,IAAI,CAsBN"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/content/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAU,MAAM,EAAE,MAAM,SAAS,CAAA;AAG/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAGxD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CA6BnE;AAOD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,aAAa,GAAG,SAAS,CAAC,EAC9D,WAAW,EAAE,SAAS,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,QAAQ,CAAC,EAAE,GAChE,IAAI,CAsBN"}
@@ -1,7 +1,6 @@
1
1
  import { findAuditWriter } from '../audit/plugin.js';
2
2
  import { unknownFieldNames } from './describe.js';
3
3
  import { CONTENT_READ_TOOL_DESCRIPTORS, createContentReadTools } from './tools.js';
4
- import { CONTENT_WRITE_TOOL_DESCRIPTORS, createContentWriteTools } from './write.js';
5
4
  /**
6
5
  * The content tools: what an agent reads before it writes a draft, and — in
7
6
  * the phases that follow — the drafts themselves. forumone-2026#803.
@@ -26,7 +25,7 @@ export function contentPlugin(options) {
26
25
  if (options.enabled === false)
27
26
  return incoming;
28
27
  // Declared at config time so `mcpPlugin` makes a checkbox per tool; bound at `onInit`.
29
- options.mcpTools?.declare([...CONTENT_READ_TOOL_DESCRIPTORS, ...CONTENT_WRITE_TOOL_DESCRIPTORS], { serverName: 'content' });
28
+ options.mcpTools?.declare(CONTENT_READ_TOOL_DESCRIPTORS, { serverName: 'content' });
30
29
  return {
31
30
  ...incoming,
32
31
  onInit: async (payload) => {
@@ -36,16 +35,12 @@ export function contentPlugin(options) {
36
35
  if (!options.mcpTools)
37
36
  return;
38
37
  const audit = findAuditWriter(payload);
39
- const deps = {
38
+ options.mcpTools.add(createContentReadTools({
40
39
  payload,
41
40
  collections: options.collections,
42
41
  related: options.related ?? {},
43
42
  ...(options.canUse ? { canUse: options.canUse } : {}),
44
- };
45
- options.mcpTools.add([
46
- ...createContentReadTools(deps),
47
- ...createContentWriteTools({ ...deps, ...(audit ? { audit } : {}) }),
48
- ], { serverName: 'content', ...(audit ? { audit } : {}) });
43
+ }), { serverName: 'content', ...(audit ? { audit } : {}) });
49
44
  },
50
45
  };
51
46
  };
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/content/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/content/plugin.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { type Block, type Payload, type PayloadRequest } from 'payload';
2
+ import { type Payload } from 'payload';
3
3
  import type { McpToolContext, McpToolDefinition } from '../plugin-contract/index.js';
4
4
  import type { McpToolDescriptor } from '../mcp/collector.js';
5
5
  import type { ContentCollectionOptions, RelatedKindOptions } from './options.js';
@@ -28,24 +28,6 @@ export interface ContentToolDeps {
28
28
  related: Readonly<Record<string, RelatedKindOptions>>;
29
29
  canUse?: (ctx: McpToolContext) => boolean;
30
30
  }
31
- export declare function defaultCanUse(ctx: McpToolContext): boolean;
32
- export declare function refusal(ctx: McpToolContext, canUse: (ctx: McpToolContext) => boolean): {
33
- error: string;
34
- } | undefined;
35
- /** `ctx.user` as Payload's own user, the cast the publishing tools make for the same reason. */
36
- export declare function userOf(ctx: McpToolContext): PayloadRequest['user'];
37
- export declare function unknownCollection(deps: ContentToolDeps, collection: string): {
38
- error: string;
39
- };
40
- export declare function titleFieldOf(payload: Payload, collection: string): string;
41
- export declare function adminUrl(payload: Payload, collection: string, id: number | string): string;
42
- /**
43
- * The collection's own Preview link, absolute. `null` when it has none, or has
44
- * none for this document yet — a draft with no slug, for instance.
45
- */
46
- export declare function previewUrl(payload: Payload, collection: string, doc: Record<string, unknown>, req: PayloadRequest): Promise<string | null>;
47
- export declare function requestAs(payload: Payload, ctx: McpToolContext): Promise<PayloadRequest>;
48
- export declare function blockRegistry(payload: Payload): Map<string, Block>;
49
31
  declare const describeInput: z.ZodObject<{
50
32
  collection: z.ZodString;
51
33
  }, "strip", z.ZodTypeAny, {
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/content/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/content/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAIL,KAAK,OAAO,EAGb,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAI5D,OAAO,KAAK,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAWhF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;CAqBuB,CAAA;AAEtD,eAAO,MAAM,6BAA6B,EAAE,SAAS,iBAAiB,EACnC,CAAA;AAEnC,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAA;IAC/D,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAA;IACrD,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAA;CAC1C;AAoFD,QAAA,MAAM,aAAa;;;;;;EAEjB,CAAA;AAEF,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,eAAe,GACpB,iBAAiB,CAAC,OAAO,aAAa,CAAC,CAsCzC;AAID,QAAA,MAAM,SAAS;;;;;;;;;;;;EAOb,CAAA;AAEF,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,eAAe,GACpB,iBAAiB,CAAC,OAAO,SAAS,CAAC,CA6DrC;AAID,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;EAQhB,CAAA;AAWF,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,eAAe,GACpB,iBAAiB,CAAC,OAAO,YAAY,CAAC,CAgExC;AAID,QAAA,MAAM,QAAQ;;;;;;;;;;;;EAOZ,CAAA;AAEF,uEAAuE;AACvE,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,eAAe,GACpB,iBAAiB,CAAC,OAAO,QAAQ,CAAC,CA0CpC;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,EAAE,CAOjF"}
@@ -30,7 +30,7 @@ export const CONTENT_READ_TOOLS = {
30
30
  },
31
31
  };
32
32
  export const CONTENT_READ_TOOL_DESCRIPTORS = Object.values(CONTENT_READ_TOOLS);
33
- export function defaultCanUse(ctx) {
33
+ function defaultCanUse(ctx) {
34
34
  const roles = ctx.user?.roles ?? [];
35
35
  return roles.includes('admin') || roles.includes('editor');
36
36
  }
@@ -40,7 +40,7 @@ Two refusals before any query. No user means a key with nobody behind it, and
40
40
  reading as nobody would read past every rule the person is subject to; the role
41
41
  check is the same line `check_slug` and `find_references` draw.
42
42
  */
43
- export function refusal(ctx, canUse) {
43
+ function refusal(ctx, canUse) {
44
44
  if (!ctx.user) {
45
45
  return deniedEnvelope('This key is not tied to a person, and content is read with that person\'s access.');
46
46
  }
@@ -49,26 +49,26 @@ export function refusal(ctx, canUse) {
49
49
  return undefined;
50
50
  }
51
51
  /** `ctx.user` as Payload's own user, the cast the publishing tools make for the same reason. */
52
- export function userOf(ctx) {
52
+ function userOf(ctx) {
53
53
  return ctx.user;
54
54
  }
55
- export function unknownCollection(deps, collection) {
55
+ function unknownCollection(deps, collection) {
56
56
  return {
57
57
  error: `"${collection}" is not a content type these tools write. They write: ${Object.keys(deps.collections).join(', ')}.`,
58
58
  };
59
59
  }
60
- export function titleFieldOf(payload, collection) {
60
+ function titleFieldOf(payload, collection) {
61
61
  const config = payload.collections[collection]?.config;
62
62
  return config?.admin?.useAsTitle ?? 'id';
63
63
  }
64
- export function adminUrl(payload, collection, id) {
64
+ function adminUrl(payload, collection, id) {
65
65
  return `${payload.config.routes.admin}/collections/${collection}/${encodeURIComponent(String(id))}`;
66
66
  }
67
67
  /**
68
68
  * The collection's own Preview link, absolute. `null` when it has none, or has
69
69
  * none for this document yet — a draft with no slug, for instance.
70
70
  */
71
- export async function previewUrl(payload, collection, doc, req) {
71
+ async function previewUrl(payload, collection, doc, req) {
72
72
  const preview = payload.collections[collection]?.config.admin?.preview;
73
73
  if (typeof preview !== 'function')
74
74
  return null;
@@ -82,10 +82,10 @@ export async function previewUrl(payload, collection, doc, req) {
82
82
  return null;
83
83
  }
84
84
  }
85
- export async function requestAs(payload, ctx) {
85
+ async function requestAs(payload, ctx) {
86
86
  return createLocalReq({ user: userOf(ctx) ?? undefined }, payload);
87
87
  }
88
- export function blockRegistry(payload) {
88
+ function blockRegistry(payload) {
89
89
  return new Map((payload.config.blocks ?? []).map((block) => [block.slug, block]));
90
90
  }
91
91
  /** Collection slug → the `find_related` kind that searches it. */
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/content/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EACL,cAAc,GAMf,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAwB,MAAM,eAAe,CAAA;AAGpF;;;;;;;EAOE;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,mBAAmB,EAAE;QACnB,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EACT,2cAA2c;KAC9c;IACD,aAAa,EAAE;QACb,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,mUAAmU;KACtU;IACD,WAAW,EAAE;QACX,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,qSAAqS;KACxS;IACD,WAAW,EAAE;QACX,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,mQAAmQ;KACtQ;CACmD,CAAA;AAEtD,MAAM,CAAC,MAAM,6BAA6B,GACxC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;AASnC,MAAM,UAAU,aAAa,CAAC,GAAmB;IAC/C,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAA;IACnC,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAC5D,CAAC;AAED,MAAM,MAAM,GAAG,+DAA+D,CAAA;AAE9E;;;;EAIE;AACF,MAAM,UAAU,OAAO,CAAC,GAAmB,EAAE,MAAwC;IACnF,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,cAAc,CACnB,mFAAmF,CACpF,CAAA;IACH,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QAAE,OAAO,cAAc,CAAC,MAAM,CAAC,CAAA;IAC/C,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,MAAM,CAAC,GAAmB;IACxC,OAAO,GAAG,CAAC,IAAyC,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAqB,EAAE,UAAkB;IACzE,OAAO;QACL,KAAK,EAAE,IAAI,UAAU,0DAA0D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;KAC3H,CAAA;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAgB,EAAE,UAAkB;IAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,UAA4B,CAAC,EAAE,MAAM,CAAA;IACxE,OAAO,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,IAAI,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAgB,EAAE,UAAkB,EAAE,EAAmB;IAChF,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,gBAAgB,UAAU,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;AACrG,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAgB,EAChB,UAAkB,EAClB,GAA4B,EAC5B,GAAmB;IAEnB,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,UAA4B,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAA;IACxF,IAAI,OAAO,OAAO,KAAK,UAAU;QAAE,OAAO,IAAI,CAAA;IAC9C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAW,CAAC,CAAA;QAC9F,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE;YAAE,OAAO,IAAI,CAAA;QACtD,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAgB,EAAE,GAAmB;IACnE,OAAO,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,SAAS,EAAW,EAAE,OAAO,CAAC,CAAA;AAC7E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;AACnF,CAAC;AAED,kEAAkE;AAClE,SAAS,aAAa,CAAC,OAAmC;IACxD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAA;IACvC,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IACzE,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,8EAA8E;AAE9E,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CAC3E,CAAC,CAAA;AAEF,MAAM,UAAU,6BAA6B,CAC3C,IAAqB;IAErB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAA;IAC3C,OAAO;QACL,GAAG,kBAAkB,CAAC,mBAAmB;QACzC,WAAW,EAAE,aAAa;QAC1B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YACpC,IAAI,OAAO;gBAAE,OAAO,OAAO,CAAA;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,UAA4B,CAAC,EAAE,MAAM,CAAA;YACnF,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM;gBAAE,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;YAEzE,MAAM,WAAW,GAAoB;gBACnC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;gBACnC,GAAG,EAAE,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;gBACvC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;aACtC,CAAA;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAkD,CAAA;YACxE,OAAO;gBACL,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,GAAG,CAAC,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAK,MAAM,CAAC,QAAiC,CAAC,MAAM,CAAC;gBACpF,MAAM,EAAE,MAAM,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;gBACxF,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM;oBAC/B,CAAC,CAAC;wBACE,aAAa,EAAE,OAAO,CAAC,aAAa;wBACpC,YAAY,EACV,0GAA0G;qBAC7G;oBACH,CAAC,CAAC,EAAE,CAAC;gBACP,UAAU,EAAE;oBACV,QAAQ,EAAE,OAAO,CAAC,eAAe,IAAI,EAAE;oBACvC,KAAK,EACH,2JAA2J;iBAC9J;aACF,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC;AAED,8EAA8E;AAE9E,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IAC1E,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,yEAAyE,CAAC;IACtF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;CAC/E,CAAC,CAAA;AAEF,MAAM,UAAU,uBAAuB,CACrC,IAAqB;IAErB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAA;IAC3C,OAAO;QACL,GAAG,kBAAkB,CAAC,aAAa;QACnC,WAAW,EAAE,SAAS;QACtB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YACpC,IAAI,OAAO;gBAAE,OAAO,OAAO,CAAA;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,UAA4B,CAAC,EAAE,MAAM,CAAA;YACnF,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACnD,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;YAClD,CAAC;YAED,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;YAC/D,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;YACnC,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;YAC7E,MAAM,KAAK,GAAsB,CAAC;gBAChC,CAAC,CAAC;oBACE,EAAE,EAAE;wBACF,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;wBAC7B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC5C;iBACF;gBACH,CAAC,CAAC,SAAS,CAAA;YACb,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAK,MAAM,CAAC,QAAiC,CAAC,MAAM,CAAC,CAAA;YAC3F,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;YAE9C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBACvC,UAAU,EAAE,KAAK,CAAC,UAA4B;gBAC9C,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;gBACxB,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,YAAY;gBAClB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClC,cAAc,EAAE,KAAK;gBACrB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;gBACjB,GAAG;aACJ,CAAC,CAAA;YAEF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,IAA6C,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBAC/D,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAA;gBAC7B,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAA;gBAC5E,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAoB,CAAA;gBACvC,OAAO;oBACL,EAAE;oBACF,KAAK;oBACL,GAAG,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjE,GAAG,CAAC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzE,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC;oBAC3B,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;oBACtD,UAAU,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC;oBACtE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC5C,CAAA;YACH,CAAC,CAAC,CACH,CAAA;YACD,4EAA4E;YAC5E,IAAI,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAA;YAC5D,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAA;QAC9E,CAAC;KACF,CAAA;AACH,CAAC;AAED,8EAA8E;AAE9E,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;IAC9F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IAC5F,KAAK,EAAE,CAAC;SACL,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;SAClE,QAAQ,EAAE;SACV,QAAQ,CAAC,qFAAqF,CAAC;IAClG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;CAC/E,CAAC,CAAA;AAEF,6EAA6E;AAC7E,SAAS,WAAW,CAAC,GAA4B;IAC/C,MAAM,KAAK,GAA4B,EAAE,CAAA;IACzC,KAAK,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;QAC5E,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IACxE,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAAqB;IAErB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAA;IAC3C,OAAO;QACL,GAAG,kBAAkB,CAAC,WAAW;QACjC,WAAW,EAAE,YAAY;QACzB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YACpC,IAAI,OAAO;gBAAE,OAAO,OAAO,CAAA;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACrC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO;oBACL,KAAK,EAAE,qBAAqB,KAAK,CAAC,IAAI,aAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG;iBACrG,CAAA;YACH,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;YAC3C,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YACxF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO;oBACL,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,2BAA2B,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,GAAG;iBAC7I,CAAA;YACH,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAA4B,CAAC,EAAE,MAAM,CAAA;YAClF,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,KAAK,EAAE,0BAA0B,KAAK,CAAC,IAAI,sBAAsB,EAAE,CAAA;YACzF,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;YAC9D,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;YACnC,MAAM,GAAG,GAAY,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC5E,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;aACzB,CAAC,CAAC,CAAA;YACH,IAAI,CAAC,EAAE,CAAC;gBACN,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;gBAC7E,GAAG,CAAC,IAAI,CACN,QAAQ,CAAC,MAAM,KAAK,CAAC;oBACnB,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;oBACjC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAChE,CAAA;YACH,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBACvC,UAAU,EAAE,IAAI,CAAC,UAA4B;gBAC7C,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;gBACxB,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,YAAY;gBAClB,cAAc,EAAE,KAAK;gBACrB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;aAClB,CAAC,CAAA;YAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YACvC,MAAM,OAAO,GAAI,IAA6C,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACzE,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAA;gBAC7B,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;gBACnF,OAAO;oBACL,EAAE,EAAE,GAAG,CAAC,IAAI,CAAoB;oBAChC,KAAK;oBACL,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACzE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC5C,CAAA;YACH,CAAC,CAAC,CAAA;YACF,IAAI,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAA;YAC5D,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAA;QACnE,CAAC;KACF,CAAA;AACH,CAAC;AAED,8EAA8E;AAE9E,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IAC1E,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACvF,KAAK,EAAE,CAAC;SACL,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,iEAAiE,CAAC;CAC/E,CAAC,CAAA;AAEF,uEAAuE;AACvE,MAAM,UAAU,YAAY,CAC1B,GAA4B,EAC5B,UAA6B;IAE7B,MAAM,GAAG,GAA4B,EAAE,CAAA;IACvC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAAqB;IAErB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAA;IAC3C,OAAO;QACL,GAAG,kBAAkB,CAAC,WAAW;QACjC,WAAW,EAAE,QAAQ;QACrB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YACpC,IAAI,OAAO;gBAAE,OAAO,OAAO,CAAA;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,UAA4B,CAAC,EAAE,MAAM,CAAA;YACnF,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM;gBAAE,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;YAEzE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAK,MAAM,CAAC,QAAiC,CAAC,MAAM,CAAC,CAAA;YAC3F,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;YAC9C,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACvC,UAAU,EAAE,KAAK,CAAC,UAA4B;gBAC9C,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,KAAK,EAAE,CAAC;gBACR,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjD,cAAc,EAAE,KAAK;gBACrB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;gBACjB,aAAa,EAAE,IAAI;gBACnB,GAAG;aACJ,CAAC,CAAmC,CAAA;YACrC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,UAAU,aAAa,KAAK,CAAC,EAAE,qBAAqB,EAAE,CAAA;YACpF,CAAC;YAED,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAC7D,CAAC,KAAK,EAAE,EAAE,CAAE,KAA0B,CAAC,IAAI,CAC5C,CAAA;YACD,OAAO;gBACL,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC;gBACb,GAAG,CAAC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzE,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC;gBAC3B,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAoB,CAAC;gBAChF,UAAU,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC;gBACtE,IAAI,EAAE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;aAC/B,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAqB;IAC1D,OAAO;QACL,6BAA6B,CAAC,IAAI,CAAC;QACnC,uBAAuB,CAAC,IAAI,CAAC;QAC7B,qBAAqB,CAAC,IAAI,CAAC;QAC3B,qBAAqB,CAAC,IAAI,CAAC;KACM,CAAA;AACrC,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/content/tools.ts"],"names":[],"mappings":"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"}
@@ -55,8 +55,6 @@
55
55
  "CONTENT_HEALTH_VIEW_PATH": ["@forumone/throughline/editorial"],
56
56
  "CONTENT_READ_TOOLS": ["@forumone/throughline/content"],
57
57
  "CONTENT_READ_TOOL_DESCRIPTORS": ["@forumone/throughline/content"],
58
- "CONTENT_WRITE_TOOLS": ["@forumone/throughline/content"],
59
- "CONTENT_WRITE_TOOL_DESCRIPTORS": ["@forumone/throughline/content"],
60
58
  "CacheTagScheme": ["@forumone/throughline/cache-tags"],
61
59
  "CacheTags": ["@forumone/throughline/cache-tags"],
62
60
  "CalendarClock": ["@forumone/throughline/editorial"],
@@ -75,7 +73,6 @@
75
73
  "CommandPalette": ["@forumone/throughline/client"],
76
74
  "CommandPaletteProps": ["@forumone/throughline/client"],
77
75
  "ComponentsPluginOptions": ["@forumone/throughline/components"],
78
- "CompositionIssue": ["@forumone/throughline/content"],
79
76
  "ConfigInput": ["@forumone/throughline/testing"],
80
77
  "ContentCalendarReport": ["@forumone/throughline/rsc"],
81
78
  "ContentCalendarView": ["@forumone/throughline/rsc"],
@@ -84,7 +81,6 @@
84
81
  "ContentHealthView": ["@forumone/throughline/rsc"],
85
82
  "ContentPluginOptions": ["@forumone/throughline/content"],
86
83
  "ContentToolDeps": ["@forumone/throughline/content"],
87
- "ContentWriteDeps": ["@forumone/throughline/content"],
88
84
  "CoreEvents": ["@forumone/throughline/jobs"],
89
85
  "CorePlugin": ["@forumone/throughline"],
90
86
  "CreateActionEndpointDeps": ["@forumone/throughline/approvals"],
@@ -184,7 +180,6 @@
184
180
  "KeyParts": ["@forumone/throughline/media"],
185
181
  "LISTED": ["@forumone/throughline/fields"],
186
182
  "LOCKED_DOCUMENTS_SLUG": ["@forumone/throughline"],
187
- "LockHolder": ["@forumone/throughline/content"],
188
183
  "Logger": ["@forumone/throughline"],
189
184
  "MANUAL_SYNC_EVENT": ["@forumone/throughline/integrations"],
190
185
  "MCP_API_KEYS_SLUG": ["@forumone/throughline"],
@@ -244,7 +239,6 @@
244
239
  "ReferenceToolDeps": ["@forumone/throughline/media"],
245
240
  "ReferencesInOptions": ["@forumone/throughline/media"],
246
241
  "ReferencesPluginOptions": ["@forumone/throughline/media"],
247
- "RefusedField": ["@forumone/throughline/content"],
248
242
  "RelatedKindOptions": ["@forumone/throughline/content"],
249
243
  "Report": ["@forumone/throughline/editorial"],
250
244
  "ReportDeployment": ["@forumone/throughline/observability"],
@@ -340,7 +334,6 @@
340
334
  "clientPrefix": ["@forumone/throughline/observability"],
341
335
  "clockFor": ["@forumone/throughline/editorial"],
342
336
  "componentsPlugin": ["@forumone/throughline/components"],
343
- "compositionErrors": ["@forumone/throughline/content"],
344
337
  "contentPlugin": ["@forumone/throughline/content"],
345
338
  "contentRevisedAt": ["@forumone/throughline/fields"],
346
339
  "couldReference": ["@forumone/throughline/media"],
@@ -354,8 +347,6 @@
354
347
  "createCanDeleteTool": ["@forumone/throughline/media"],
355
348
  "createCheckSlugTool": ["@forumone/throughline/fields"],
356
349
  "createContentReadTools": ["@forumone/throughline/content"],
357
- "createContentWriteTools": ["@forumone/throughline/content"],
358
- "createCreateDraftTool": ["@forumone/throughline/content"],
359
350
  "createDescribeContentTypeTool": ["@forumone/throughline/content"],
360
351
  "createEmailClient": ["@forumone/throughline/email"],
361
352
  "createErrorReporter": ["@forumone/throughline/observability"],
@@ -386,7 +377,6 @@
386
377
  "createTerminalFailureHandler": ["@forumone/throughline/jobs"],
387
378
  "createTestIntegrationTool": ["@forumone/throughline/integrations"],
388
379
  "createTriggerSyncTool": ["@forumone/throughline/integrations"],
389
- "createUpdateDraftTool": ["@forumone/throughline/content"],
390
380
  "createWhatChangedInRangeTool": ["@forumone/throughline/audit"],
391
381
  "createWhoChangedWhatTool": ["@forumone/throughline/audit"],
392
382
  "currentDeployment": ["@forumone/throughline/observability"],
@@ -405,7 +395,6 @@
405
395
  "describeFields": ["@forumone/throughline/content"],
406
396
  "describeReferences": ["@forumone/throughline/media"],
407
397
  "describeSyncOutcome": ["@forumone/throughline/client"],
408
- "disallowedBlocks": ["@forumone/throughline/content"],
409
398
  "documentContentHash": ["@forumone/throughline"],
410
399
  "documentFromPath": ["@forumone/throughline/editorial"],
411
400
  "editorialPlugin": ["@forumone/throughline/editorial"],
@@ -455,13 +444,10 @@
455
444
  "keepOrStampPublishedAt": ["@forumone/throughline/fields"],
456
445
  "linkLabelsCheck": ["@forumone/throughline/publishing"],
457
446
  "listHref": ["@forumone/throughline/editorial"],
458
- "lockHolder": ["@forumone/throughline/content"],
459
- "lockRefusal": ["@forumone/throughline/content"],
460
447
  "mapFields": ["@forumone/throughline/fields"],
461
448
  "matchCommands": ["@forumone/throughline/editorial"],
462
449
  "matchRank": ["@forumone/throughline/editorial"],
463
450
  "mcpApiKeyAccess": ["@forumone/throughline"],
464
- "mergePatch": ["@forumone/throughline/content"],
465
451
  "mergeTokens": ["@forumone/throughline/email"],
466
452
  "missingAltCheck": ["@forumone/throughline/editorial"],
467
453
  "missingSeoCheck": ["@forumone/throughline/editorial"],
@@ -497,7 +483,6 @@
497
483
  "refuseSlugHeldInTrash": ["@forumone/throughline/fields"],
498
484
  "refuseStorageKeyMismatch": ["@forumone/throughline/media"],
499
485
  "refuseTrashWhileReferenced": ["@forumone/throughline/media"],
500
- "refusedFields": ["@forumone/throughline/content"],
501
486
  "registersInngestCrons": ["@forumone/throughline/jobs/inngest"],
502
487
  "registrableInngestFunctions": ["@forumone/throughline/jobs/inngest"],
503
488
  "relativeTime": ["@forumone/throughline/editorial"],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forumone/throughline",
3
- "version": "1.3.0-pr-287-4bd70f6",
3
+ "version": "1.3.0",
4
4
  "description": "Throughline: an editorial platform for Payload CMS. Publishing, approvals, audit, integrations, email and jobs, with every feature reachable over MCP.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -166,7 +166,7 @@
166
166
  "dependencies": {
167
167
  "zod": "^3.23.0",
168
168
  "zod-to-json-schema": "^3.25.2",
169
- "@forumone/throughline-design-system": "1.3.0-pr-287-4bd70f6"
169
+ "@forumone/throughline-design-system": "1.3.0"
170
170
  },
171
171
  "devDependencies": {
172
172
  "@payloadcms/db-sqlite": "^3.83.0",
@@ -189,7 +189,7 @@
189
189
  "typescript": "^5.6.0",
190
190
  "vitest": "^4.1.10",
191
191
  "@forumone/throughline-eslint-config": "0.0.1",
192
- "@forumone/throughline-reference-ds": "0.3.12-pr-287-4bd70f6",
192
+ "@forumone/throughline-reference-ds": "0.3.12",
193
193
  "@forumone/throughline-tsconfig": "0.0.1"
194
194
  },
195
195
  "scripts": {
@@ -1,45 +0,0 @@
1
- import type { Block, Field, Payload, PayloadRequest } from 'payload';
2
- export interface RefusedField {
3
- field: string;
4
- reason: string;
5
- }
6
- /** Every top-level key in `data` that is not on the allow-list, with why. */
7
- export declare function refusedFields(data: Record<string, unknown>, allowed: readonly string[]): RefusedField[];
8
- export declare function mergePatch(current: Record<string, unknown>, patch: Record<string, unknown>, fields: readonly Field[]): Record<string, unknown>;
9
- export interface LockHolder {
10
- /** Who has it open: their name, else their email, else their id. */
11
- user: string;
12
- /** Whether that is the person the key belongs to. */
13
- self: boolean;
14
- /** When the lock was last refreshed. */
15
- since: string;
16
- }
17
- export declare function lockHolder(payload: Payload, collection: string, id: number | string, self: unknown): Promise<LockHolder | undefined>;
18
- export declare function lockRefusal(collection: string, id: number | string, lock: LockHolder): {
19
- error: string;
20
- lockedBy: string;
21
- since: string;
22
- };
23
- /**
24
- * The blocks in `rows` that `field` would not let an editor add, asked the way
25
- * the picker asks: with the document's current rows as sibling data, so a block
26
- * a document already holds stays allowed (it is how `filterOptions` keeps old
27
- * documents saveable).
28
- */
29
- export declare function disallowedBlocks(field: Extract<Field, {
30
- type: 'blocks';
31
- }>, rows: readonly unknown[], currentRows: readonly unknown[], registry: ReadonlyMap<string, Block>, req: PayloadRequest): Promise<string[]>;
32
- export interface CompositionIssue {
33
- rule: string;
34
- message: string;
35
- /** Which row, when the rule is about one. */
36
- index?: number;
37
- }
38
- /**
39
- * The composition errors in a blocks field's rows, from the same validator the
40
- * publish pipeline runs (attached by the components plugin). Warnings do not
41
- * stop a publish and do not stop a draft. `undefined` when there is no
42
- * validator, which is a site without the components plugin.
43
- */
44
- export declare function compositionErrors(payload: Payload, rows: readonly unknown[]): Promise<CompositionIssue[] | undefined>;
45
- //# sourceMappingURL=guards.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../src/content/guards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAkB,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AA8BpF,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,YAAY,EAAE,CAUhB;AAQD,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,EAAE,SAAS,KAAK,EAAE,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB;AAoBD,MAAM,WAAW,UAAU;IACzB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAA;IACZ,qDAAqD;IACrD,IAAI,EAAE,OAAO,CAAA;IACb,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAA;CACd;AAWD,wBAAsB,UAAU,CAC9B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAqCjC;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,UAAU;;;;EAQpF;AAID;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,EACzC,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,WAAW,EAAE,SAAS,OAAO,EAAE,EAC/B,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EACpC,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CA6BnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAQD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,SAAS,OAAO,EAAE,GACvB,OAAO,CAAC,gBAAgB,EAAE,GAAG,SAAS,CAAC,CAmBzC"}
@@ -1,176 +0,0 @@
1
- import { COMPONENTS_VALIDATOR_SYMBOL } from '../publishing/pipeline/steps/composition.js';
2
- /*
3
- What stands between an agent and a saved draft, beyond the person's own access.
4
-
5
- A draft save in the admin skips Payload's field validation — that is what lets
6
- an editor save half a page — and so does a draft saved through the Local API.
7
- So the two checks the admin's *picker* makes before anything is saved, which
8
- blocks may be added and whether the page still composes, are made here
9
- explicitly. Required fields and the rest are the publish pipeline's to enforce,
10
- exactly as they are for an editor.
11
- */
12
- /** Why each field an agent might reach for is not its to set. */
13
- const REASONS = {
14
- _status: 'Writes are always drafts. Going live is publish, schedule_publish or request_approval.',
15
- publishedAt: 'Set when the document is published, by the publishing tools.',
16
- scheduledPublishAt: 'Set by schedule_publish.',
17
- policy: 'The approval policy is set by a person in the admin, not over MCP.',
18
- narration: 'Generated when the article is narrated.',
19
- readTime: 'Calculated from the body.',
20
- legacy: 'The record of an import, which nothing should change.',
21
- id: 'Assigned by the database.',
22
- createdAt: 'Maintained by Payload.',
23
- updatedAt: 'Maintained by Payload.',
24
- deletedAt: 'A document is trashed in the admin, not over MCP.',
25
- };
26
- /** Every top-level key in `data` that is not on the allow-list, with why. */
27
- export function refusedFields(data, allowed) {
28
- const permitted = new Set(allowed);
29
- return Object.keys(data)
30
- .filter((key) => !permitted.has(key))
31
- .map((field) => ({
32
- field,
33
- reason: REASONS[field] ??
34
- `Not a field an author may set over MCP here. Settable: ${allowed.join(', ')}.`,
35
- }));
36
- }
37
- /*
38
- `update_draft` changes the fields it is given and leaves the rest. A group is
39
- merged, so setting `meta.title` keeps `meta.description`; an array or a blocks
40
- field is replaced whole, because its rows have no names to merge by — the block
41
- tools change one block at a time.
42
- */
43
- export function mergePatch(current, patch, fields) {
44
- const out = {};
45
- for (const [key, value] of Object.entries(patch)) {
46
- const field = fields.find((f) => 'name' in f && f.name === key);
47
- out[key] =
48
- field?.type === 'group' && isPlainObject(value) && isPlainObject(current[key])
49
- ? mergeGroup(current[key], value, fieldsOf(field))
50
- : value;
51
- }
52
- return out;
53
- }
54
- function mergeGroup(current, patch, fields) {
55
- return { ...current, ...mergePatch(current, patch, fields) };
56
- }
57
- function fieldsOf(field) {
58
- return 'fields' in field && Array.isArray(field.fields) ? field.fields : [];
59
- }
60
- function isPlainObject(value) {
61
- return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
62
- }
63
- /*
64
- Whether somebody has the document open in the admin.
65
-
66
- Payload's own check lets a write through when the lock is the writer's — but
67
- the person behind an MCP key may well have the page open in another tab, and
68
- their form autosaves every couple of seconds over whatever was written here.
69
- Worse, an update deletes the lock it found, so the editor's tab would not even
70
- know. So any fresh lock refuses, the key holder's included, and says whose it is.
71
- */
72
- export async function lockHolder(payload, collection, id, self) {
73
- const config = payload.collections[collection]?.config;
74
- const setting = config?.lockDocuments;
75
- if (setting === false || !payload.collections['payload-locked-documents']) {
76
- return undefined;
77
- }
78
- const duration = (typeof setting === 'object' ? setting.duration : 300) * 1000;
79
- const { docs } = await payload.find({
80
- collection: 'payload-locked-documents',
81
- where: {
82
- and: [
83
- { 'document.relationTo': { equals: collection } },
84
- { 'document.value': { equals: id } },
85
- ],
86
- },
87
- sort: '-updatedAt',
88
- limit: 1,
89
- depth: 1,
90
- overrideAccess: true,
91
- });
92
- const lock = docs[0];
93
- if (!lock?.updatedAt)
94
- return undefined;
95
- if (Date.now() - Date.parse(lock.updatedAt) > duration)
96
- return undefined;
97
- const holder = lock.user?.value;
98
- const person = holder && typeof holder === 'object' ? holder : { id: holder };
99
- const name = [person['name'], person['email'], person['id']].find((value) => typeof value === 'string' || typeof value === 'number');
100
- return {
101
- user: String(name ?? 'somebody'),
102
- self: person['id'] !== undefined && String(person['id']) === String(self),
103
- since: lock.updatedAt,
104
- };
105
- }
106
- export function lockRefusal(collection, id, lock) {
107
- return {
108
- error: lock.self
109
- ? `You have ${collection} ${id} open in the admin, and it autosaves over anything written here. Close it, or wait for its lock to lapse, then try again.`
110
- : `${lock.user} has ${collection} ${id} open in the admin, so writing to it now would overwrite their work or be overwritten by it. Try again once they have closed it.`,
111
- lockedBy: lock.user,
112
- since: lock.since,
113
- };
114
- }
115
- /* ------------------------------------------------------------------------ */
116
- /**
117
- * The blocks in `rows` that `field` would not let an editor add, asked the way
118
- * the picker asks: with the document's current rows as sibling data, so a block
119
- * a document already holds stays allowed (it is how `filterOptions` keeps old
120
- * documents saveable).
121
- */
122
- export async function disallowedBlocks(field, rows, currentRows, registry, req) {
123
- const known = new Set([
124
- ...(field.blocks ?? []).map((block) => block.slug),
125
- ...(field.blockReferences ?? []).flatMap((ref) => {
126
- const slug = typeof ref === 'string' ? ref : ref.slug;
127
- return registry.has(slug) || typeof ref !== 'string' ? [slug] : [];
128
- }),
129
- ]);
130
- let allowed = known;
131
- if (typeof field.filterOptions === 'function') {
132
- const answer = await field.filterOptions({
133
- data: { [field.name]: currentRows },
134
- siblingData: { [field.name]: currentRows },
135
- id: undefined,
136
- req,
137
- user: req.user,
138
- });
139
- if (Array.isArray(answer))
140
- allowed = new Set(answer);
141
- }
142
- const types = rows.map((row) => row?.blockType);
143
- return [
144
- ...new Set(types.map((type) => typeof type === 'string' && known.has(type) && allowed.has(type)
145
- ? undefined
146
- : String(type ?? '(no blockType)'))),
147
- ].filter((type) => type !== undefined);
148
- }
149
- /**
150
- * The composition errors in a blocks field's rows, from the same validator the
151
- * publish pipeline runs (attached by the components plugin). Warnings do not
152
- * stop a publish and do not stop a draft. `undefined` when there is no
153
- * validator, which is a site without the components plugin.
154
- */
155
- export async function compositionErrors(payload, rows) {
156
- const validator = payload[COMPONENTS_VALIDATOR_SYMBOL];
157
- if (!validator)
158
- return undefined;
159
- const blocks = rows.flatMap((row) => {
160
- const r = row;
161
- if (typeof r?.blockType !== 'string')
162
- return [];
163
- return [typeof r.variant === 'string' ? { type: r.blockType, variant: r.variant } : { type: r.blockType }];
164
- });
165
- if (blocks.length === 0)
166
- return [];
167
- const result = await validator({ blocks });
168
- return result.issues
169
- .filter((issue) => issue.severity === 'error')
170
- .map((issue) => ({
171
- rule: issue.rule,
172
- message: issue.message,
173
- ...(issue.blockIndex !== undefined ? { index: issue.blockIndex } : {}),
174
- }));
175
- }
176
- //# sourceMappingURL=guards.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"guards.js","sourceRoot":"","sources":["../../src/content/guards.ts"],"names":[],"mappings":"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"}
@@ -1,95 +0,0 @@
1
- import { z } from 'zod';
2
- import type { AuditWriter } from '../audit/writer.js';
3
- import type { McpToolDefinition } from '../plugin-contract/index.js';
4
- import type { McpToolDescriptor } from '../mcp/collector.js';
5
- import { type ContentToolDeps } from './tools.js';
6
- export declare const CONTENT_WRITE_TOOLS: {
7
- readonly createDraft: {
8
- readonly name: "create_draft";
9
- readonly description: "Creates a new draft of a content type from the fields `describe_content_type` lists. Never published: the result is a draft with an admin link and a preview link, and going live is publish, schedule_publish or request_approval. A slug is made from the title when none is given, and one already taken (the trash included) is refused with a free alternative. Blocks must be ones the field accepts, and the layout must pass the composition rules.";
10
- };
11
- readonly updateDraft: {
12
- readonly name: "update_draft";
13
- readonly description: "Changes fields of a document's draft, leaving the rest as they are. A group is merged (setting meta.title keeps meta.description); an array or a blocks field is replaced whole. Refused while somebody has the document open in the admin. The published version is untouched until it is published again.";
14
- };
15
- };
16
- export declare const CONTENT_WRITE_TOOL_DESCRIPTORS: readonly McpToolDescriptor[];
17
- export interface ContentWriteDeps extends ContentToolDeps {
18
- audit?: AuditWriter;
19
- }
20
- declare const createInput: z.ZodObject<{
21
- collection: z.ZodString;
22
- data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
23
- } & {
24
- _meta: z.ZodOptional<z.ZodObject<{
25
- userPrompt: z.ZodOptional<z.ZodString>;
26
- reasoning: z.ZodOptional<z.ZodString>;
27
- changesSummary: z.ZodOptional<z.ZodString>;
28
- }, "strip", z.ZodTypeAny, {
29
- reasoning?: string | undefined;
30
- changesSummary?: string | undefined;
31
- userPrompt?: string | undefined;
32
- }, {
33
- reasoning?: string | undefined;
34
- changesSummary?: string | undefined;
35
- userPrompt?: string | undefined;
36
- }>>;
37
- }, "strip", z.ZodTypeAny, {
38
- collection: string;
39
- data: Record<string, unknown>;
40
- _meta?: {
41
- reasoning?: string | undefined;
42
- changesSummary?: string | undefined;
43
- userPrompt?: string | undefined;
44
- } | undefined;
45
- }, {
46
- collection: string;
47
- data: Record<string, unknown>;
48
- _meta?: {
49
- reasoning?: string | undefined;
50
- changesSummary?: string | undefined;
51
- userPrompt?: string | undefined;
52
- } | undefined;
53
- }>;
54
- declare const updateInput: z.ZodObject<{
55
- collection: z.ZodString;
56
- id: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
57
- patch: z.ZodRecord<z.ZodString, z.ZodUnknown>;
58
- } & {
59
- _meta: z.ZodOptional<z.ZodObject<{
60
- userPrompt: z.ZodOptional<z.ZodString>;
61
- reasoning: z.ZodOptional<z.ZodString>;
62
- changesSummary: z.ZodOptional<z.ZodString>;
63
- }, "strip", z.ZodTypeAny, {
64
- reasoning?: string | undefined;
65
- changesSummary?: string | undefined;
66
- userPrompt?: string | undefined;
67
- }, {
68
- reasoning?: string | undefined;
69
- changesSummary?: string | undefined;
70
- userPrompt?: string | undefined;
71
- }>>;
72
- }, "strip", z.ZodTypeAny, {
73
- collection: string;
74
- id: string | number;
75
- patch: Record<string, unknown>;
76
- _meta?: {
77
- reasoning?: string | undefined;
78
- changesSummary?: string | undefined;
79
- userPrompt?: string | undefined;
80
- } | undefined;
81
- }, {
82
- collection: string;
83
- id: string | number;
84
- patch: Record<string, unknown>;
85
- _meta?: {
86
- reasoning?: string | undefined;
87
- changesSummary?: string | undefined;
88
- userPrompt?: string | undefined;
89
- } | undefined;
90
- }>;
91
- export declare function createCreateDraftTool(deps: ContentWriteDeps): McpToolDefinition<typeof createInput>;
92
- export declare function createUpdateDraftTool(deps: ContentWriteDeps): McpToolDefinition<typeof updateInput>;
93
- export declare function createContentWriteTools(deps: ContentWriteDeps): McpToolDefinition[];
94
- export {};
95
- //# sourceMappingURL=write.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/content/write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAkB,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAa5D,OAAO,EAUL,KAAK,eAAe,EACrB,MAAM,YAAY,CAAA;AAenB,eAAO,MAAM,mBAAmB;;;;;;;;;CAWsB,CAAA;AAEtD,eAAO,MAAM,8BAA8B,EAAE,SAAS,iBAAiB,EACnC,CAAA;AAEpC,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,KAAK,CAAC,EAAE,WAAW,CAAA;CACpB;AAKD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKI,CAAA;AAErB,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMI,CAAA;AAgKrB,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,gBAAgB,GACrB,iBAAiB,CAAC,OAAO,WAAW,CAAC,CAsEvC;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,gBAAgB,GACrB,iBAAiB,CAAC,OAAO,WAAW,CAAC,CA4FvC;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,GAAG,iBAAiB,EAAE,CAEnF"}
@@ -1,329 +0,0 @@
1
- import { z } from 'zod';
2
- import { ValidationError } from 'payload';
3
- import { withMeta } from '../mcp/meta.js';
4
- import { checkSlug, hasSlugField } from '../fields/checkSlug.js';
5
- import { slugify } from '../fields/slug.js';
6
- import { topLevelFields, writableFields } from './describe.js';
7
- import { compositionErrors, disallowedBlocks, lockHolder, lockRefusal, mergePatch, refusedFields, } from './guards.js';
8
- import { adminUrl, blockRegistry, defaultCanUse, previewUrl, refusal, requestAs, titleFieldOf, unknownCollection, userOf, } from './tools.js';
9
- /*
10
- `create_draft` and `update_draft`: the step between reading the design system
11
- and publishing, which until now only a person in the admin could take.
12
-
13
- Drafts only. Every write is `draft: true` and none may carry `_status`, so a
14
- document reaches the public only through the publishing tools — the same gates,
15
- approvals and audit an editor's publish goes through. Each write runs as the
16
- key's person with `overrideAccess: false`, refuses a document somebody has
17
- open, checks the blocks it adds against the picker and the page against the
18
- composition rules, and records itself in the audit log with the caller's
19
- `_meta`.
20
- */
21
- export const CONTENT_WRITE_TOOLS = {
22
- createDraft: {
23
- name: 'create_draft',
24
- description: 'Creates a new draft of a content type from the fields `describe_content_type` lists. Never published: the result is a draft with an admin link and a preview link, and going live is publish, schedule_publish or request_approval. A slug is made from the title when none is given, and one already taken (the trash included) is refused with a free alternative. Blocks must be ones the field accepts, and the layout must pass the composition rules.',
25
- },
26
- updateDraft: {
27
- name: 'update_draft',
28
- description: 'Changes fields of a document\'s draft, leaving the rest as they are. A group is merged (setting meta.title keeps meta.description); an array or a blocks field is replaced whole. Refused while somebody has the document open in the admin. The published version is untouched until it is published again.',
29
- },
30
- };
31
- export const CONTENT_WRITE_TOOL_DESCRIPTORS = Object.values(CONTENT_WRITE_TOOLS);
32
- const metaNote = 'Why, for the audit log: userPrompt (what was asked), reasoning, changesSummary.';
33
- const createInput = withMeta({
34
- collection: z.string().describe('The content type\'s slug, e.g. "pages".'),
35
- data: z
36
- .record(z.string(), z.unknown())
37
- .describe('The fields to set, by name, as describe_content_type lists them.'),
38
- }).describe(metaNote);
39
- const updateInput = withMeta({
40
- collection: z.string().describe('The content type\'s slug, e.g. "pages".'),
41
- id: z.union([z.string(), z.number()]).describe('The document id.'),
42
- patch: z
43
- .record(z.string(), z.unknown())
44
- .describe('Only the fields to change. A group is merged; an array or blocks field is replaced.'),
45
- }).describe(metaNote);
46
- /**
47
- * The checks every write makes on the fields it carries: the allow-list, the
48
- * blocks each blocks field may hold, and the composition of each blocks field
49
- * as it will be saved.
50
- */
51
- async function checkWrite(deps, ctx, collection, data, current) {
52
- const options = deps.collections[collection];
53
- const refused = refusedFields(data, options.fields);
54
- if (refused.length > 0) {
55
- return { error: `Cannot set ${refused.map((r) => r.field).join(', ')}.`, refused };
56
- }
57
- const config = deps.payload.collections[collection].config;
58
- const fields = topLevelFields(config.fields);
59
- const req = await requestAs(deps.payload, ctx);
60
- const registry = blockRegistry(deps.payload);
61
- /*
62
- A draft save skips validation, so a rich-text field handed a Markdown string
63
- would store the string, and every renderer that expects an editor state would
64
- fail on the page. Until a site gives the tools a converter, only an editor
65
- state is accepted.
66
- */
67
- for (const field of fields) {
68
- if (field.type !== 'richText' || !(field.name in data))
69
- continue;
70
- const value = data[field.name];
71
- if (value !== null && !isEditorState(value)) {
72
- return {
73
- error: `${field.name} is rich text and takes an editor state ({ root: … }), as get_document returns it. Markdown and HTML are not accepted yet.`,
74
- field: field.name,
75
- };
76
- }
77
- }
78
- for (const field of blockFields(fields, data)) {
79
- const rows = data[field.name];
80
- const currentRows = Array.isArray(current[field.name]) ? current[field.name] : [];
81
- const disallowed = await disallowedBlocks(field, rows, currentRows, registry, req);
82
- if (disallowed.length > 0) {
83
- return {
84
- error: `${field.name} does not accept ${disallowed.join(', ')}. describe_content_type lists the blocks it does.`,
85
- field: field.name,
86
- disallowed,
87
- };
88
- }
89
- const issues = await compositionErrors(deps.payload, rows);
90
- if (issues && issues.length > 0) {
91
- return {
92
- error: `${field.name} breaks ${issues.length} composition rule${issues.length === 1 ? '' : 's'}. Nothing was saved.`,
93
- field: field.name,
94
- issues,
95
- };
96
- }
97
- }
98
- return undefined;
99
- }
100
- function isEditorState(value) {
101
- const root = value?.root;
102
- return Boolean(root) && typeof root === 'object' && Array.isArray(root.children);
103
- }
104
- /** The top-level blocks fields `data` sets, with an array as their value. */
105
- function blockFields(fields, data) {
106
- return fields.filter((field) => field.type === 'blocks' && Array.isArray(data[field.name]));
107
- }
108
- /** Payload's refusal of a save, as something an agent can act on. */
109
- function saveRefusal(error) {
110
- if (error instanceof ValidationError) {
111
- return {
112
- error: error.message,
113
- fields: (error.data?.errors ?? []).map((e) => ({ field: e.path, message: e.message })),
114
- };
115
- }
116
- const status = error?.status;
117
- if (status === 403 || status === 423) {
118
- return { error: error.message };
119
- }
120
- return undefined;
121
- }
122
- async function slugRefusal(payload, collection, slug) {
123
- const answer = await checkSlug(payload, collection, slug);
124
- if (answer.available)
125
- return undefined;
126
- if (!('takenBy' in answer)) {
127
- return { error: `"${slug}" cannot be a slug: ${answer.reason ?? 'nothing is left of it'}.` };
128
- }
129
- const { takenBy } = answer;
130
- return {
131
- error: `The slug "${answer.slug}" is taken by "${takenBy.title}"${takenBy.trashed ? ', which is in the trash' : ''}.`,
132
- takenBy,
133
- ...(answer.suggestion ? { suggestion: answer.suggestion } : {}),
134
- };
135
- }
136
- function record(deps, ctx, event) {
137
- if (!deps.audit)
138
- return Promise.resolve();
139
- return deps.audit({
140
- actor: {
141
- type: 'user',
142
- userId: ctx.user ? String(ctx.user.id) : undefined,
143
- userName: ctx.user?.name ?? ctx.user?.email,
144
- apiKeyName: ctx.apiKeyName,
145
- sessionId: ctx.sessionId,
146
- },
147
- action: event.action,
148
- mcpServer: 'content',
149
- mcpTool: event.tool,
150
- targetCollection: event.collection,
151
- targetId: String(event.id),
152
- targetTitle: event.title,
153
- prompt: event.meta?.userPrompt,
154
- reasoning: event.meta?.reasoning,
155
- changesSummary: event.meta?.changesSummary ?? `Set ${event.changed.join(', ')}.`,
156
- });
157
- }
158
- function titleIn(payload, collection, doc) {
159
- const value = doc[titleFieldOf(payload, collection)];
160
- return typeof value === 'string' ? value : undefined;
161
- }
162
- /* ------------------------------------------------------------------------ */
163
- export function createCreateDraftTool(deps) {
164
- const canUse = deps.canUse ?? defaultCanUse;
165
- return {
166
- ...CONTENT_WRITE_TOOLS.createDraft,
167
- inputSchema: createInput,
168
- requiredScope: 'content.write',
169
- handler: async (input, ctx) => {
170
- const refused = refusal(ctx, canUse);
171
- if (refused)
172
- return refused;
173
- const options = deps.collections[input.collection];
174
- const config = deps.payload.collections[input.collection]?.config;
175
- if (!options || !config)
176
- return unknownCollection(deps, input.collection);
177
- const data = { ...input.data };
178
- const checked = await checkWrite(deps, ctx, input.collection, data, {});
179
- if (checked)
180
- return checked;
181
- if (hasSlugField(config.fields) && options.fields.includes('slug')) {
182
- const fromTitle = titleIn(deps.payload, input.collection, data);
183
- const slug = typeof data['slug'] === 'string' && data['slug'].trim() !== ''
184
- ? data['slug']
185
- : fromTitle
186
- ? slugify(fromTitle)
187
- : '';
188
- if (!slug)
189
- return { error: 'A new document needs a title or a slug.' };
190
- const taken = await slugRefusal(deps.payload, input.collection, slug);
191
- if (taken)
192
- return taken;
193
- data['slug'] = slugify(slug);
194
- }
195
- const req = await requestAs(deps.payload, ctx);
196
- let doc;
197
- try {
198
- doc = (await deps.payload.create({
199
- collection: input.collection,
200
- data: data,
201
- draft: true,
202
- depth: 0,
203
- overrideAccess: false,
204
- user: userOf(ctx),
205
- req,
206
- }));
207
- }
208
- catch (error) {
209
- const answer = saveRefusal(error);
210
- if (answer)
211
- return answer;
212
- throw error;
213
- }
214
- const id = doc['id'];
215
- await record(deps, ctx, {
216
- action: 'content.create',
217
- tool: CONTENT_WRITE_TOOLS.createDraft.name,
218
- collection: input.collection,
219
- id,
220
- title: titleIn(deps.payload, input.collection, doc),
221
- changed: Object.keys(data),
222
- meta: input._meta,
223
- });
224
- return {
225
- collection: input.collection,
226
- id,
227
- status: 'draft',
228
- ...(typeof doc['slug'] === 'string' ? { slug: doc['slug'] } : {}),
229
- adminUrl: adminUrl(deps.payload, input.collection, id),
230
- previewUrl: await previewUrl(deps.payload, input.collection, doc, req),
231
- next: 'Run get_publish_status before offering to publish.',
232
- };
233
- },
234
- };
235
- }
236
- export function createUpdateDraftTool(deps) {
237
- const canUse = deps.canUse ?? defaultCanUse;
238
- return {
239
- ...CONTENT_WRITE_TOOLS.updateDraft,
240
- inputSchema: updateInput,
241
- requiredScope: 'content.write',
242
- handler: async (input, ctx) => {
243
- const refused = refusal(ctx, canUse);
244
- if (refused)
245
- return refused;
246
- const options = deps.collections[input.collection];
247
- const config = deps.payload.collections[input.collection]?.config;
248
- if (!options || !config)
249
- return unknownCollection(deps, input.collection);
250
- if (Object.keys(input.patch).length === 0)
251
- return { error: 'The patch sets nothing.' };
252
- const allowlisted = refusedFields(input.patch, options.fields);
253
- if (allowlisted.length > 0) {
254
- return {
255
- error: `Cannot set ${allowlisted.map((r) => r.field).join(', ')}.`,
256
- refused: allowlisted,
257
- };
258
- }
259
- const lock = await lockHolder(deps.payload, input.collection, input.id, ctx.user?.id);
260
- if (lock)
261
- return lockRefusal(input.collection, input.id, lock);
262
- const req = await requestAs(deps.payload, ctx);
263
- const current = (await deps.payload.findByID({
264
- collection: input.collection,
265
- id: input.id,
266
- depth: 0,
267
- draft: true,
268
- overrideAccess: false,
269
- user: userOf(ctx),
270
- disableErrors: true,
271
- req,
272
- }));
273
- if (!current) {
274
- return { error: `No ${input.collection} document ${input.id} that you can read.` };
275
- }
276
- const data = mergePatch(current, input.patch, writableFields(config.fields, options.fields));
277
- const checked = await checkWrite(deps, ctx, input.collection, data, current);
278
- if (checked)
279
- return checked;
280
- if (typeof data['slug'] === 'string' && slugify(data['slug']) !== current['slug']) {
281
- const taken = await slugRefusal(deps.payload, input.collection, data['slug']);
282
- if (taken)
283
- return taken;
284
- data['slug'] = slugify(data['slug']);
285
- }
286
- let doc;
287
- try {
288
- doc = (await deps.payload.update({
289
- collection: input.collection,
290
- id: input.id,
291
- data: data,
292
- draft: true,
293
- depth: 0,
294
- overrideAccess: false,
295
- overrideLock: false,
296
- user: userOf(ctx),
297
- req,
298
- }));
299
- }
300
- catch (error) {
301
- const answer = saveRefusal(error);
302
- if (answer)
303
- return answer;
304
- throw error;
305
- }
306
- await record(deps, ctx, {
307
- action: 'content.update',
308
- tool: CONTENT_WRITE_TOOLS.updateDraft.name,
309
- collection: input.collection,
310
- id: input.id,
311
- title: titleIn(deps.payload, input.collection, doc),
312
- changed: Object.keys(input.patch),
313
- meta: input._meta,
314
- });
315
- return {
316
- collection: input.collection,
317
- id: doc['id'],
318
- status: typeof doc['_status'] === 'string' ? doc['_status'] : 'draft',
319
- changed: Object.keys(input.patch),
320
- adminUrl: adminUrl(deps.payload, input.collection, doc['id']),
321
- previewUrl: await previewUrl(deps.payload, input.collection, doc, req),
322
- };
323
- },
324
- };
325
- }
326
- export function createContentWriteTools(deps) {
327
- return [createCreateDraftTool(deps), createUpdateDraftTool(deps)];
328
- }
329
- //# sourceMappingURL=write.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/content/write.ts"],"names":[],"mappings":"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"}