@lacneu/wix-openclaw 0.1.0 → 0.2.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.
Files changed (40) hide show
  1. package/CHANGELOG.md +76 -0
  2. package/README.md +161 -74
  3. package/dist/tools/_query.d.ts +117 -0
  4. package/dist/tools/_query.js +240 -0
  5. package/dist/tools/_query.js.map +1 -0
  6. package/dist/tools/blog.d.ts +92 -0
  7. package/dist/tools/blog.js +122 -20
  8. package/dist/tools/blog.js.map +1 -1
  9. package/dist/tools/bookings.d.ts +18 -22
  10. package/dist/tools/bookings.js +28 -19
  11. package/dist/tools/bookings.js.map +1 -1
  12. package/dist/tools/contacts.d.ts +20 -2
  13. package/dist/tools/contacts.js +27 -16
  14. package/dist/tools/contacts.js.map +1 -1
  15. package/dist/tools/data.d.ts +14 -2
  16. package/dist/tools/data.js +22 -35
  17. package/dist/tools/data.js.map +1 -1
  18. package/dist/tools/events.d.ts +44 -4
  19. package/dist/tools/events.js +29 -28
  20. package/dist/tools/events.js.map +1 -1
  21. package/dist/tools/faq.d.ts +12 -0
  22. package/dist/tools/faq.js +15 -9
  23. package/dist/tools/faq.js.map +1 -1
  24. package/dist/tools/forms.d.ts +24 -4
  25. package/dist/tools/forms.js +38 -25
  26. package/dist/tools/forms.js.map +1 -1
  27. package/dist/tools/media.d.ts +4 -0
  28. package/dist/tools/media.js +32 -23
  29. package/dist/tools/media.js.map +1 -1
  30. package/dist/tools/multilingual.d.ts +21 -1
  31. package/dist/tools/multilingual.js +16 -18
  32. package/dist/tools/multilingual.js.map +1 -1
  33. package/dist/tools/reviews.d.ts +22 -2
  34. package/dist/tools/reviews.js +18 -16
  35. package/dist/tools/reviews.js.map +1 -1
  36. package/dist/tools/site.d.ts +20 -0
  37. package/dist/tools/site.js +17 -25
  38. package/dist/tools/site.js.map +1 -1
  39. package/openclaw.plugin.json +1 -1
  40. package/package.json +4 -2
@@ -4,14 +4,22 @@
4
4
  // Without it, calls return HTTP 428 `WIX_EVENTS_APP_NOT_INSTALLED`.
5
5
  // Endpoint paths pattern-validated against the public docs; untested
6
6
  // live (app not installed on the smoke-test site).
7
+ //
8
+ // Both query endpoints are POST `/query` and accept the standard Wix
9
+ // query envelope.
7
10
  import { Type } from "@sinclair/typebox";
8
11
  import { defineWixTool } from "./_factory.js";
12
+ import { WixQueryBodyEnvelopeSchema, buildQueryBody, } from "./_query.js";
9
13
  const SiteIdParam = Type.Optional(Type.String());
10
14
  export function buildEventsTools(client) {
11
15
  return [
12
16
  defineWixTool({
13
17
  name: "wix_events_list",
14
- description: "List events (Wix Events).",
18
+ description: "List events (Wix Events). Pass `status` for the common case " +
19
+ "or `filter` for arbitrary operators (e.g. " +
20
+ '{"$or":[{"status":{"$eq":"UPCOMING"}},{"status":{"$eq":"STARTED"}}], ' +
21
+ '"dateAndTimeSettings.startDate":{"$gt":"2026-01-01T00:00:00Z"}}). ' +
22
+ "Accepts the standard Wix query envelope.",
15
23
  parameters: Type.Object({
16
24
  siteId: SiteIdParam,
17
25
  status: Type.Optional(Type.Union([
@@ -20,20 +28,16 @@ export function buildEventsTools(client) {
20
28
  Type.Literal("ENDED"),
21
29
  Type.Literal("CANCELED"),
22
30
  ])),
23
- paging: Type.Optional(Type.Object({
24
- limit: Type.Optional(Type.Number({ minimum: 1, maximum: 100 })),
25
- offset: Type.Optional(Type.Number({ minimum: 0 })),
26
- })),
27
- }),
28
- run: (params) => client.request("POST", "/events/v3/events/query", {
29
- siteId: params.siteId,
30
- body: {
31
- query: {
32
- filter: params.status ? { status: params.status } : undefined,
33
- paging: params.paging,
34
- },
35
- },
31
+ ...WixQueryBodyEnvelopeSchema.properties,
36
32
  }),
33
+ run: (params) => {
34
+ const { siteId, status, ...envelope } = params;
35
+ const extra = status ? { status: { $eq: status } } : undefined;
36
+ return client.request("POST", "/events/v3/events/query", {
37
+ siteId,
38
+ body: buildQueryBody(envelope, extra),
39
+ });
40
+ },
37
41
  }, client),
38
42
  defineWixTool({
39
43
  name: "wix_events_get",
@@ -46,24 +50,21 @@ export function buildEventsTools(client) {
46
50
  }, client),
47
51
  defineWixTool({
48
52
  name: "wix_events_list_guests",
49
- description: "List guests / RSVPs / orders for an event.",
53
+ description: "List guests / RSVPs / orders for an event. Required: " +
54
+ "`eventId` shortcut (pinned into the filter). Pass extra " +
55
+ "`filter` operators for finer queries.",
50
56
  parameters: Type.Object({
51
57
  siteId: SiteIdParam,
52
58
  eventId: Type.String(),
53
- paging: Type.Optional(Type.Object({
54
- limit: Type.Optional(Type.Number({ minimum: 1, maximum: 100 })),
55
- offset: Type.Optional(Type.Number({ minimum: 0 })),
56
- })),
57
- }),
58
- run: (params) => client.request("POST", "/events/v3/event-guests/query", {
59
- siteId: params.siteId,
60
- body: {
61
- query: {
62
- filter: { eventId: params.eventId },
63
- paging: params.paging,
64
- },
65
- },
59
+ ...WixQueryBodyEnvelopeSchema.properties,
66
60
  }),
61
+ run: (params) => {
62
+ const { siteId, eventId, ...envelope } = params;
63
+ return client.request("POST", "/events/v3/event-guests/query", {
64
+ siteId,
65
+ body: buildQueryBody(envelope, { eventId: { $eq: eventId } }),
66
+ });
67
+ },
67
68
  }, client),
68
69
  ];
69
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,19 @@ export declare function buildFaqTools(client: WixClient): ({
5
5
  label: string;
6
6
  parameters: import("@sinclair/typebox").TObject<{
7
7
  siteId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
8
+ paging: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
9
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
10
+ offset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
11
+ cursor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
12
+ }>>;
8
13
  }>;
9
14
  execute: (toolCallId: string, params: {
10
15
  siteId?: string | undefined;
16
+ paging?: {
17
+ limit?: number | undefined;
18
+ offset?: number | undefined;
19
+ cursor?: string | undefined;
20
+ } | undefined;
11
21
  }, signal?: AbortSignal) => Promise<import("@mariozechner/pi-agent-core").AgentToolResult<{
12
22
  status: "ok" | "failed";
13
23
  data?: unknown;
@@ -23,6 +33,7 @@ export declare function buildFaqTools(client: WixClient): ({
23
33
  paging: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
24
34
  limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
25
35
  offset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
36
+ cursor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
26
37
  }>>;
27
38
  }>;
28
39
  execute: (toolCallId: string, params: {
@@ -30,6 +41,7 @@ export declare function buildFaqTools(client: WixClient): ({
30
41
  paging?: {
31
42
  limit?: number | undefined;
32
43
  offset?: number | undefined;
44
+ cursor?: string | undefined;
33
45
  } | undefined;
34
46
  categoryId?: string | undefined;
35
47
  }, signal?: AbortSignal) => Promise<import("@mariozechner/pi-agent-core").AgentToolResult<{
package/dist/tools/faq.js CHANGED
@@ -6,17 +6,27 @@
6
6
  // installed on the smoke-test site). For older sites that store FAQ
7
7
  // data in a CMS collection (`FAQ` / `FAQCategories`), fall back to
8
8
  // `wix_data_*` tools.
9
+ //
10
+ // Both list endpoints are flat GETs — they expose paging plus a
11
+ // per-endpoint named filter (`categoryId` on questions). They do NOT
12
+ // accept the MongoDB-style operator passthrough used by POST /query
13
+ // endpoints.
9
14
  import { Type } from "@sinclair/typebox";
10
15
  import { defineWixTool } from "./_factory.js";
16
+ import { WixGetPagingEnvelopeSchema, buildGetPagingQuery, compactQuery, } from "./_query.js";
11
17
  const SiteIdParam = Type.Optional(Type.String());
12
18
  export function buildFaqTools(client) {
13
19
  return [
14
20
  defineWixTool({
15
21
  name: "wix_faq_list_categories",
16
22
  description: "List FAQ categories.",
17
- parameters: Type.Object({ siteId: SiteIdParam }),
23
+ parameters: Type.Object({
24
+ siteId: SiteIdParam,
25
+ paging: Type.Optional(WixGetPagingEnvelopeSchema),
26
+ }),
18
27
  run: (params) => client.request("GET", "/faq/v1/categories", {
19
28
  siteId: params.siteId,
29
+ query: compactQuery(buildGetPagingQuery(params.paging)),
20
30
  }),
21
31
  }, client),
22
32
  defineWixTool({
@@ -25,18 +35,14 @@ export function buildFaqTools(client) {
25
35
  parameters: Type.Object({
26
36
  siteId: SiteIdParam,
27
37
  categoryId: Type.Optional(Type.String()),
28
- paging: Type.Optional(Type.Object({
29
- limit: Type.Optional(Type.Number({ minimum: 1, maximum: 100 })),
30
- offset: Type.Optional(Type.Number({ minimum: 0 })),
31
- })),
38
+ paging: Type.Optional(WixGetPagingEnvelopeSchema),
32
39
  }),
33
40
  run: (params) => client.request("GET", "/faq/v1/questions", {
34
41
  siteId: params.siteId,
35
- query: {
42
+ query: compactQuery({
36
43
  categoryId: params.categoryId,
37
- "paging.limit": params.paging?.limit,
38
- "paging.offset": params.paging?.offset,
39
- },
44
+ ...buildGetPagingQuery(params.paging),
45
+ }),
40
46
  }),
41
47
  }, client),
42
48
  defineWixTool({
@@ -1 +1 @@
1
- {"version":3,"file":"faq.js","sourceRoot":"","sources":["../../src/tools/faq.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"faq.js","sourceRoot":"","sources":["../../src/tools/faq.ts"],"names":[],"mappings":"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"}
@@ -4,21 +4,41 @@ export declare function buildFormsTools(client: WixClient): ({
4
4
  description: string;
5
5
  label: string;
6
6
  parameters: import("@sinclair/typebox").TObject<{
7
- siteId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
8
- namespace: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
9
- formId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
10
- status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"PENDING">, import("@sinclair/typebox").TLiteral<"CONFIRMED">, import("@sinclair/typebox").TLiteral<"PAYMENT_WAITING">, import("@sinclair/typebox").TLiteral<"PAYMENT_CANCELED">]>>;
7
+ filter: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
8
+ sort: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
9
+ fieldName: import("@sinclair/typebox").TString;
10
+ order: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"ASC">, import("@sinclair/typebox").TLiteral<"DESC">]>>;
11
+ }>>>;
11
12
  paging: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
12
13
  limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
13
14
  offset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
14
15
  }>>;
16
+ cursorPaging: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
17
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
18
+ cursor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
19
+ }>>;
20
+ fields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
21
+ siteId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
22
+ namespace: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
23
+ formId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
24
+ status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"PENDING">, import("@sinclair/typebox").TLiteral<"CONFIRMED">, import("@sinclair/typebox").TLiteral<"PAYMENT_WAITING">, import("@sinclair/typebox").TLiteral<"PAYMENT_CANCELED">]>>;
15
25
  }>;
16
26
  execute: (toolCallId: string, params: {
27
+ sort?: {
28
+ order?: "ASC" | "DESC" | undefined;
29
+ fieldName: string;
30
+ }[] | undefined;
31
+ filter?: unknown;
17
32
  siteId?: string | undefined;
18
33
  paging?: {
19
34
  limit?: number | undefined;
20
35
  offset?: number | undefined;
21
36
  } | undefined;
37
+ cursorPaging?: {
38
+ limit?: number | undefined;
39
+ cursor?: string | undefined;
40
+ } | undefined;
41
+ fields?: string[] | undefined;
22
42
  status?: "PENDING" | "CONFIRMED" | "PAYMENT_WAITING" | "PAYMENT_CANCELED" | undefined;
23
43
  namespace?: string | undefined;
24
44
  formId?: string | undefined;
@@ -1,27 +1,41 @@
1
1
  // Wix Forms submissions tools.
2
2
  //
3
- // Submissions live under `/form-submissions/v4/...` and the listing
4
- // endpoint is `query-submissions-by-namespace` — Wix REQUIRES a namespace
5
- // filter, otherwise the call fails with a validation error. The default
6
- // namespace for native Wix forms is `wix.form_app.form` (a.k.a.
7
- // `wix_forms`); apps can register their own namespaces.
3
+ // Submissions live under `/form-submission-service/v4/...` and the
4
+ // listing endpoint is `query-submissions-by-namespace` — Wix REQUIRES
5
+ // a namespace filter, otherwise the call fails with a validation
6
+ // error. The default namespace for native Wix forms is
7
+ // `wix.form_app.form` (a.k.a. `wix_forms`); apps can register their
8
+ // own namespaces.
9
+ //
10
+ // We expose the standard query envelope (filter / sort / paging /
11
+ // cursorPaging / fields) and ALWAYS pin `namespace` into the filter so
12
+ // the call is well-formed even if the agent omits it. The `namespace`
13
+ // shortcut is merged with the passthrough filter via `mergeFilter`,
14
+ // preserving every other operator the agent passes.
8
15
  //
9
16
  // Verified against:
10
17
  // - https://dev.wix.com/docs/rest/crm/forms/form-submissions/query-submissions-by-namespace
11
18
  import { Type } from "@sinclair/typebox";
12
19
  import { defineWixTool } from "./_factory.js";
20
+ import { WixQueryBodyEnvelopeSchema, buildQueryBody, } from "./_query.js";
13
21
  const SiteIdParam = Type.Optional(Type.String());
22
+ const DEFAULT_NAMESPACE = "wix.form_app.form";
14
23
  export function buildFormsTools(client) {
15
24
  return [
16
25
  defineWixTool({
17
26
  name: "wix_forms_list_submissions",
18
- description: "List form submissions (leads/contacts captured by site forms). Supports filtering by form id and time range.",
27
+ description: "List form submissions (leads / contacts captured by site forms). " +
28
+ 'Wix requires a `namespace` filter — defaults to "wix.form_app.form" ' +
29
+ '(native Wix Forms). Pass `filter` for additional constraints, e.g. ' +
30
+ '{"formId": {"$eq": "..."}, "status": {"$in": ["CONFIRMED"]}, ' +
31
+ '"submissions.submitter.contactId": {"$eq": "..."}}.',
19
32
  parameters: Type.Object({
20
33
  siteId: SiteIdParam,
21
34
  namespace: Type.Optional(Type.String({
22
- default: "wix.form_app.form",
23
35
  description: "Namespace of the app that owns the submissions. Defaults to native Wix Forms (`wix.form_app.form`). REQUIRED by Wix on the filter.",
24
36
  })),
37
+ // Ergonomic shortcuts kept for backwards compatibility with v0.1
38
+ // agents — internally merged into the filter passthrough.
25
39
  formId: Type.Optional(Type.String()),
26
40
  status: Type.Optional(Type.Union([
27
41
  Type.Literal("PENDING"),
@@ -29,25 +43,24 @@ export function buildFormsTools(client) {
29
43
  Type.Literal("PAYMENT_WAITING"),
30
44
  Type.Literal("PAYMENT_CANCELED"),
31
45
  ])),
32
- paging: Type.Optional(Type.Object({
33
- limit: Type.Optional(Type.Number({ minimum: 1, maximum: 100 })),
34
- offset: Type.Optional(Type.Number({ minimum: 0 })),
35
- })),
36
- }),
37
- run: (params) => client.request("POST", "/form-submission-service/v4/submissions/namespace/query", {
38
- siteId: params.siteId,
39
- body: {
40
- query: {
41
- filter: {
42
- namespace: { $eq: params.namespace ?? "wix.form_app.form" },
43
- ...(params.formId ? { formId: { $eq: params.formId } } : {}),
44
- ...(params.status ? { status: { $eq: params.status } } : {}),
45
- },
46
- limit: params.paging?.limit,
47
- offset: params.paging?.offset,
48
- },
49
- },
46
+ ...WixQueryBodyEnvelopeSchema.properties,
50
47
  }),
48
+ run: (params) => {
49
+ const { siteId, namespace, formId, status, ...envelope } = params;
50
+ // Pin namespace + optional shortcuts into the filter — they
51
+ // compose with the user's passthrough via `mergeFilter`.
52
+ const extra = {
53
+ namespace: { $eq: namespace ?? DEFAULT_NAMESPACE },
54
+ };
55
+ if (formId)
56
+ extra.formId = { $eq: formId };
57
+ if (status)
58
+ extra.status = { $eq: status };
59
+ return client.request("POST", "/form-submission-service/v4/submissions/namespace/query", {
60
+ siteId,
61
+ body: buildQueryBody(envelope, extra),
62
+ });
63
+ },
51
64
  }, client),
52
65
  defineWixTool({
53
66
  name: "wix_forms_get_submission",
@@ -1 +1 @@
1
- {"version":3,"file":"forms.js","sourceRoot":"","sources":["../../src/tools/forms.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forms.js","sourceRoot":"","sources":["../../src/tools/forms.ts"],"names":[],"mappings":"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"}
@@ -30,8 +30,10 @@ export declare function buildMediaTools(client: WixClient): ({
30
30
  parameters: import("@sinclair/typebox").TObject<{
31
31
  siteId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
32
32
  parentFolderId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
33
+ mediaTypes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"IMAGE">, import("@sinclair/typebox").TLiteral<"VIDEO">, import("@sinclair/typebox").TLiteral<"AUDIO">, import("@sinclair/typebox").TLiteral<"DOCUMENT">, import("@sinclair/typebox").TLiteral<"ARCHIVE">]>>>;
33
34
  paging: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
34
35
  limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
36
+ offset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
35
37
  cursor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
36
38
  }>>;
37
39
  }>;
@@ -39,9 +41,11 @@ export declare function buildMediaTools(client: WixClient): ({
39
41
  siteId?: string | undefined;
40
42
  paging?: {
41
43
  limit?: number | undefined;
44
+ offset?: number | undefined;
42
45
  cursor?: string | undefined;
43
46
  } | undefined;
44
47
  parentFolderId?: string | undefined;
48
+ mediaTypes?: ("IMAGE" | "VIDEO" | "AUDIO" | "DOCUMENT" | "ARCHIVE")[] | undefined;
45
49
  }, signal?: AbortSignal) => Promise<import("@mariozechner/pi-agent-core").AgentToolResult<{
46
50
  status: "ok" | "failed";
47
51
  data?: unknown;
@@ -1,30 +1,31 @@
1
1
  // Wix Site Media (`/site-media/v1/...`) tools.
2
2
  //
3
- // The Wix Site Media upload flow is a 3-step dance:
4
- // 1. POST /site-media/v1/files/generate-upload-url returns `uploadUrl`
5
- // 2. PUT or POST <uploadUrl> with the binary content → returns file metadata
6
- // 3. The returned `id` (or `displayName`) can then be referenced from a
7
- // blog post's `media.imageId` or any other place expecting a Wix
8
- // MEDIA_IMAGE.
3
+ // `wix_media_list` is a flat GET with cursor-based paging plus named
4
+ // filter params (`parentFolderId`, `mediaTypes`). It does NOT accept
5
+ // the MongoDB-style operator passthrough used by POST /query
6
+ // endpoints.
9
7
  //
10
- // `wix_media_upload` here exposes step 1 only the agent passes the URL
11
- // of an already-hosted image (e.g. an OpenClaw-generated image stored in
12
- // `media:` storage), and we let Wix import it directly. This avoids
8
+ // `wix_media_upload` exposes the import-by-URL flow. The agent passes
9
+ // the URL of an already-hosted image (e.g. an OpenClaw-generated image
10
+ // stored in `media:` storage), and Wix imports it directly. Avoids
13
11
  // streaming binary blobs through the LLM tool channel.
14
- //
15
- // `wix_media_list` validated live. `wix_media_upload` body shape comes
16
- // from public docs — confirm against the live API before relying on it
17
- // to chain into rich-content blog posts.
18
12
  import { Type } from "@sinclair/typebox";
19
13
  import { defineWixTool } from "./_factory.js";
14
+ import { WixGetPagingEnvelopeSchema, buildGetPagingQuery, compactQuery, } from "./_query.js";
20
15
  const SiteIdParam = Type.Optional(Type.String());
16
+ // Encode array params as comma-separated values (Wix convention for
17
+ // multi-value GET params).
18
+ function csv(values) {
19
+ if (!values || values.length === 0)
20
+ return undefined;
21
+ return values.join(",");
22
+ }
21
23
  export function buildMediaTools(client) {
22
24
  return [
23
25
  defineWixTool({
24
26
  name: "wix_media_upload",
25
27
  description: "Import an image into the Wix Site Media library by URL. Returns the file metadata including `id`, which can be passed to wix_blog_create_draft as `coverMedia.imageId` or embedded into Ricos rich content. Prefer this to streaming binary content.",
26
28
  // The import-by-URL flow uses POST /site-media/v1/files/import.
27
- // Confirm response shape against your account before chaining it.
28
29
  parameters: Type.Object({
29
30
  siteId: SiteIdParam,
30
31
  url: Type.String({
@@ -52,22 +53,30 @@ export function buildMediaTools(client) {
52
53
  }, client),
53
54
  defineWixTool({
54
55
  name: "wix_media_list",
55
- description: "List files in the Wix Site Media library.",
56
+ description: "List files in the Wix Site Media library. Supports cursor " +
57
+ "paging (the response carries `nextCursor` — pass it back as " +
58
+ "`paging.cursor` to walk the next page). Filter by " +
59
+ "`parentFolderId` and `mediaTypes` (IMAGE, VIDEO, AUDIO, " +
60
+ "DOCUMENT, ARCHIVE).",
56
61
  parameters: Type.Object({
57
62
  siteId: SiteIdParam,
58
63
  parentFolderId: Type.Optional(Type.String()),
59
- paging: Type.Optional(Type.Object({
60
- limit: Type.Optional(Type.Number({ minimum: 1, maximum: 100 })),
61
- cursor: Type.Optional(Type.String()),
62
- })),
64
+ mediaTypes: Type.Optional(Type.Array(Type.Union([
65
+ Type.Literal("IMAGE"),
66
+ Type.Literal("VIDEO"),
67
+ Type.Literal("AUDIO"),
68
+ Type.Literal("DOCUMENT"),
69
+ Type.Literal("ARCHIVE"),
70
+ ]))),
71
+ paging: Type.Optional(WixGetPagingEnvelopeSchema),
63
72
  }),
64
73
  run: (params) => client.request("GET", "/site-media/v1/files", {
65
74
  siteId: params.siteId,
66
- query: {
75
+ query: compactQuery({
67
76
  parentFolderId: params.parentFolderId,
68
- "paging.limit": params.paging?.limit,
69
- "paging.cursor": params.paging?.cursor,
70
- },
77
+ mediaTypes: csv(params.mediaTypes),
78
+ ...buildGetPagingQuery(params.paging),
79
+ }),
71
80
  }),
72
81
  }, client),
73
82
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/tools/media.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/tools/media.ts"],"names":[],"mappings":"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"}
@@ -4,18 +4,38 @@ export declare function buildMultilingualTools(client: WixClient): ({
4
4
  description: string;
5
5
  label: string;
6
6
  parameters: import("@sinclair/typebox").TObject<{
7
- siteId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
7
+ filter: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
8
+ sort: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
9
+ fieldName: import("@sinclair/typebox").TString;
10
+ order: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"ASC">, import("@sinclair/typebox").TLiteral<"DESC">]>>;
11
+ }>>>;
8
12
  paging: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
9
13
  limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
10
14
  offset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
11
15
  }>>;
16
+ cursorPaging: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
17
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
18
+ cursor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
19
+ }>>;
20
+ fields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
21
+ siteId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
12
22
  }>;
13
23
  execute: (toolCallId: string, params: {
24
+ sort?: {
25
+ order?: "ASC" | "DESC" | undefined;
26
+ fieldName: string;
27
+ }[] | undefined;
28
+ filter?: unknown;
14
29
  siteId?: string | undefined;
15
30
  paging?: {
16
31
  limit?: number | undefined;
17
32
  offset?: number | undefined;
18
33
  } | undefined;
34
+ cursorPaging?: {
35
+ limit?: number | undefined;
36
+ cursor?: string | undefined;
37
+ } | undefined;
38
+ fields?: string[] | undefined;
19
39
  }, signal?: AbortSignal) => Promise<import("@mariozechner/pi-agent-core").AgentToolResult<{
20
40
  status: "ok" | "failed";
21
41
  data?: unknown;
@@ -2,40 +2,38 @@
2
2
  //
3
3
  // Wix splits multilingual into two product surfaces:
4
4
  // - Locales API (`/locales/v2/...`) for languages configured on a site
5
- // - Translation Schema API (`/multilingual/translation/v3/...`) for
5
+ // - Translation Schema API (`/translation-schema/v1/...`) for
6
6
  // per-app translation entries
7
7
  //
8
- // The Locales API is the right place to read which languages a site
9
- // supports. Per-key translation reading lives in the Translation Schema
10
- // API and requires a `schemaKey` + `entityId` rather than a flat key —
11
- // hence the parameter shift on `wix_multilingual_get_translation`.
8
+ // `wix_multilingual_list_languages` is POST `/query` and accepts the
9
+ // standard Wix query envelope.
10
+ // `wix_multilingual_list_schemas` is a flat GET (no body filter).
12
11
  //
13
12
  // Verified against:
14
13
  // - https://dev.wix.com/docs/rest/business-management/multilingual/locales/locales/introduction
15
14
  // - https://dev.wix.com/docs/rest/business-management/multilingual/translation/translation-schema/introduction
16
15
  import { Type } from "@sinclair/typebox";
17
16
  import { defineWixTool } from "./_factory.js";
17
+ import { WixQueryBodyEnvelopeSchema, buildQueryBody, } from "./_query.js";
18
18
  const SiteIdParam = Type.Optional(Type.String());
19
19
  export function buildMultilingualTools(client) {
20
20
  return [
21
21
  defineWixTool({
22
22
  name: "wix_multilingual_list_languages",
23
- description: "Query configured locales on the site (language code, country, primary flag, status). Returns up to 200 locales.",
23
+ description: "Query configured locales on the site (language code, country, " +
24
+ "primary flag, status). Accepts the standard Wix query envelope" +
25
+ "(filter / sort / paging / cursorPaging / fields).",
24
26
  parameters: Type.Object({
25
27
  siteId: SiteIdParam,
26
- paging: Type.Optional(Type.Object({
27
- limit: Type.Optional(Type.Number({ minimum: 1, maximum: 200 })),
28
- offset: Type.Optional(Type.Number({ minimum: 0 })),
29
- })),
30
- }),
31
- run: (params) => client.request("POST", "/locales/v2/locale/query", {
32
- siteId: params.siteId,
33
- body: {
34
- query: {
35
- paging: params.paging,
36
- },
37
- },
28
+ ...WixQueryBodyEnvelopeSchema.properties,
38
29
  }),
30
+ run: (params) => {
31
+ const { siteId, ...envelope } = params;
32
+ return client.request("POST", "/locales/v2/locale/query", {
33
+ siteId,
34
+ body: buildQueryBody(envelope),
35
+ });
36
+ },
39
37
  }, client),
40
38
  defineWixTool({
41
39
  name: "wix_multilingual_list_schemas",
@@ -1 +1 @@
1
- {"version":3,"file":"multilingual.js","sourceRoot":"","sources":["../../src/tools/multilingual.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,EAAE;AACF,qDAAqD;AACrD,yEAAyE;AACzE,sEAAsE;AACtE,kCAAkC;AAClC,EAAE;AACF,oEAAoE;AACpE,wEAAwE;AACxE,uEAAuE;AACvE,mEAAmE;AACnE,EAAE;AACF,oBAAoB;AACpB,kGAAkG;AAClG,iHAAiH;AAEjH,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG9C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAEjD,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,OAAO;QACL,aAAa,CACX;YACE,IAAI,EAAE,iCAAiC;YACvC,WAAW,EACT,iHAAiH;YACnH,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;gBACtB,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,IAAI,CAAC,QAAQ,CACnB,IAAI,CAAC,MAAM,CAAC;oBACV,KAAK,EAAE,IAAI,CAAC,QAAQ,CAClB,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAC1C;oBACD,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;iBACnD,CAAC,CACH;aACF,CAAC;YACF,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CACd,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,0BAA0B,EAAE;gBACjD,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE;oBACJ,KAAK,EAAE;wBACL,MAAM,EAAE,MAAM,CAAC,MAAM;qBACtB;iBACF;aACF,CAAC;SACL,EACD,MAAM,CACP;QAED,aAAa,CACX;YACE,IAAI,EAAE,+BAA+B;YACrC,WAAW,EACT,4FAA4F;YAC9F,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;YAChD,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CACd,MAAM,CAAC,OAAO,CACZ,KAAK,EACL,qCAAqC,EACrC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAC1B;SACJ,EACD,MAAM,CACP;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"multilingual.js","sourceRoot":"","sources":["../../src/tools/multilingual.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,EAAE;AACF,qDAAqD;AACrD,yEAAyE;AACzE,gEAAgE;AAChE,kCAAkC;AAClC,EAAE;AACF,qEAAqE;AACrE,+BAA+B;AAC/B,kEAAkE;AAClE,EAAE;AACF,oBAAoB;AACpB,kGAAkG;AAClG,iHAAiH;AAEjH,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,0BAA0B,EAC1B,cAAc,GACf,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAEjD,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,OAAO;QACL,aAAa,CACX;YACE,IAAI,EAAE,iCAAiC;YACvC,WAAW,EACT,gEAAgE;gBAChE,gEAAgE;gBAChE,mDAAmD;YACrD,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;gBACtB,MAAM,EAAE,WAAW;gBACnB,GAAG,0BAA0B,CAAC,UAAU;aACzC,CAAC;YACF,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE;gBACd,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC;gBACvC,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,0BAA0B,EAAE;oBACxD,MAAM;oBACN,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC;iBAC/B,CAAC,CAAC;YACL,CAAC;SACF,EACD,MAAM,CACP;QAED,aAAa,CACX;YACE,IAAI,EAAE,+BAA+B;YACrC,WAAW,EACT,4FAA4F;YAC9F,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;YAChD,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CACd,MAAM,CAAC,OAAO,CACZ,KAAK,EACL,qCAAqC,EACrC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAC1B;SACJ,EACD,MAAM,CACP;KACF,CAAC;AACJ,CAAC"}