@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.
- package/CHANGELOG.md +76 -0
- package/README.md +161 -74
- package/dist/tools/_query.d.ts +117 -0
- package/dist/tools/_query.js +240 -0
- package/dist/tools/_query.js.map +1 -0
- package/dist/tools/blog.d.ts +92 -0
- package/dist/tools/blog.js +122 -20
- package/dist/tools/blog.js.map +1 -1
- package/dist/tools/bookings.d.ts +18 -22
- package/dist/tools/bookings.js +28 -19
- package/dist/tools/bookings.js.map +1 -1
- package/dist/tools/contacts.d.ts +20 -2
- package/dist/tools/contacts.js +27 -16
- package/dist/tools/contacts.js.map +1 -1
- package/dist/tools/data.d.ts +14 -2
- package/dist/tools/data.js +22 -35
- package/dist/tools/data.js.map +1 -1
- package/dist/tools/events.d.ts +44 -4
- package/dist/tools/events.js +29 -28
- package/dist/tools/events.js.map +1 -1
- package/dist/tools/faq.d.ts +12 -0
- package/dist/tools/faq.js +15 -9
- package/dist/tools/faq.js.map +1 -1
- package/dist/tools/forms.d.ts +24 -4
- package/dist/tools/forms.js +38 -25
- package/dist/tools/forms.js.map +1 -1
- package/dist/tools/media.d.ts +4 -0
- package/dist/tools/media.js +32 -23
- package/dist/tools/media.js.map +1 -1
- package/dist/tools/multilingual.d.ts +21 -1
- package/dist/tools/multilingual.js +16 -18
- package/dist/tools/multilingual.js.map +1 -1
- package/dist/tools/reviews.d.ts +22 -2
- package/dist/tools/reviews.js +18 -16
- package/dist/tools/reviews.js.map +1 -1
- package/dist/tools/site.d.ts +20 -0
- package/dist/tools/site.js +17 -25
- package/dist/tools/site.js.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +4 -2
package/dist/tools/events.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
}
|
package/dist/tools/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,EAAE;AACF,kEAAkE;AAClE,oEAAoE;AACpE,qEAAqE;AACrE,mDAAmD;
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/faq.d.ts
CHANGED
|
@@ -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({
|
|
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(
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
},
|
|
44
|
+
...buildGetPagingQuery(params.paging),
|
|
45
|
+
}),
|
|
40
46
|
}),
|
|
41
47
|
}, client),
|
|
42
48
|
defineWixTool({
|
package/dist/tools/faq.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faq.js","sourceRoot":"","sources":["../../src/tools/faq.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,EAAE;AACF,uEAAuE;AACvE,mEAAmE;AACnE,oEAAoE;AACpE,oEAAoE;AACpE,mEAAmE;AACnE,sBAAsB;
|
|
1
|
+
{"version":3,"file":"faq.js","sourceRoot":"","sources":["../../src/tools/faq.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/forms.d.ts
CHANGED
|
@@ -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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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;
|
package/dist/tools/forms.js
CHANGED
|
@@ -1,27 +1,41 @@
|
|
|
1
1
|
// Wix Forms submissions tools.
|
|
2
2
|
//
|
|
3
|
-
// Submissions live under `/form-
|
|
4
|
-
// endpoint is `query-submissions-by-namespace` — Wix REQUIRES
|
|
5
|
-
// filter, otherwise the call fails with a validation
|
|
6
|
-
// namespace for native Wix forms is
|
|
7
|
-
// `wix_forms`); apps can register their
|
|
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).
|
|
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
|
-
|
|
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",
|
package/dist/tools/forms.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forms.js","sourceRoot":"","sources":["../../src/tools/forms.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,EAAE;AACF,oEAAoE;AACpE,
|
|
1
|
+
{"version":3,"file":"forms.js","sourceRoot":"","sources":["../../src/tools/forms.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/media.d.ts
CHANGED
|
@@ -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;
|
package/dist/tools/media.js
CHANGED
|
@@ -1,30 +1,31 @@
|
|
|
1
1
|
// Wix Site Media (`/site-media/v1/...`) tools.
|
|
2
2
|
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
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`
|
|
11
|
-
// of an already-hosted image (e.g. an OpenClaw-generated image
|
|
12
|
-
// `media:` storage), and
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
69
|
-
|
|
70
|
-
},
|
|
77
|
+
mediaTypes: csv(params.mediaTypes),
|
|
78
|
+
...buildGetPagingQuery(params.paging),
|
|
79
|
+
}),
|
|
71
80
|
}),
|
|
72
81
|
}, client),
|
|
73
82
|
];
|
package/dist/tools/media.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/tools/media.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/tools/media.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,EAAE;AACF,qEAAqE;AACrE,qEAAqE;AACrE,6DAA6D;AAC7D,aAAa;AACb,EAAE;AACF,sEAAsE;AACtE,uEAAuE;AACvE,mEAAmE;AACnE,uDAAuD;AAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAEjD,oEAAoE;AACpE,2BAA2B;AAC3B,SAAS,GAAG,CAAC,MAA4B;IACvC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACrD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,OAAO;QACL,aAAa,CACX;YACE,IAAI,EAAE,kBAAkB;YACxB,WAAW,EACT,sPAAsP;YACxP,gEAAgE;YAChE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;gBACtB,MAAM,EAAE,WAAW;gBACnB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC;oBACf,WAAW,EAAE,+CAA+C;iBAC7D,CAAC;gBACF,WAAW,EAAE,IAAI,CAAC,QAAQ,CACxB,IAAI,CAAC,MAAM,CAAC;oBACV,WAAW,EAAE,4CAA4C;iBAC1D,CAAC,CACH;gBACD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CACrB,IAAI,CAAC,MAAM,CAAC;oBACV,WAAW,EACT,uEAAuE;iBAC1E,CAAC,CACH;gBACD,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC5C,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;aACjD,CAAC;YACF,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CACd,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,6BAA6B,EAAE;gBACpD,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE;oBACJ,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,cAAc,EAAE,MAAM,CAAC,cAAc;oBACrC,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB;aACF,CAAC;SACL,EACD,MAAM,CACP;QAED,aAAa,CACX;YACE,IAAI,EAAE,gBAAgB;YACtB,WAAW,EACT,4DAA4D;gBAC5D,8DAA8D;gBAC9D,oDAAoD;gBACpD,0DAA0D;gBAC1D,qBAAqB;YACvB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;gBACtB,MAAM,EAAE,WAAW;gBACnB,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC5C,UAAU,EAAE,IAAI,CAAC,QAAQ,CACvB,IAAI,CAAC,KAAK,CACR,IAAI,CAAC,KAAK,CAAC;oBACT,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;oBACrB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;oBACrB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;oBACrB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;oBACxB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;iBACxB,CAAC,CACH,CACF;gBACD,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC;aAClD,CAAC;YACF,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CACd,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,sBAAsB,EAAE;gBAC5C,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,YAAY,CAAC;oBAClB,cAAc,EAAE,MAAM,CAAC,cAAc;oBACrC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;oBAClC,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC;iBACtC,CAAC;aACH,CAAC;SACL,EACD,MAAM,CACP;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -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
|
-
|
|
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 (`/
|
|
5
|
+
// - Translation Schema API (`/translation-schema/v1/...`) for
|
|
6
6
|
// per-app translation entries
|
|
7
7
|
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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"}
|