@lacneu/wix-openclaw 0.0.1

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 (59) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/LICENSE +21 -0
  3. package/README.md +483 -0
  4. package/dist/config.d.ts +19 -0
  5. package/dist/config.js +60 -0
  6. package/dist/config.js.map +1 -0
  7. package/dist/hooks/approval.d.ts +29 -0
  8. package/dist/hooks/approval.js +65 -0
  9. package/dist/hooks/approval.js.map +1 -0
  10. package/dist/index.d.ts +18 -0
  11. package/dist/index.js +97 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/tools/_factory.d.ts +40 -0
  14. package/dist/tools/_factory.js +69 -0
  15. package/dist/tools/_factory.js.map +1 -0
  16. package/dist/tools/blog.d.ts +140 -0
  17. package/dist/tools/blog.js +191 -0
  18. package/dist/tools/blog.js.map +1 -0
  19. package/dist/tools/bookings.d.ts +116 -0
  20. package/dist/tools/bookings.js +97 -0
  21. package/dist/tools/bookings.js.map +1 -0
  22. package/dist/tools/contacts.d.ts +216 -0
  23. package/dist/tools/contacts.js +128 -0
  24. package/dist/tools/contacts.js.map +1 -0
  25. package/dist/tools/data.d.ts +114 -0
  26. package/dist/tools/data.js +129 -0
  27. package/dist/tools/data.js.map +1 -0
  28. package/dist/tools/design.d.ts +32 -0
  29. package/dist/tools/design.js +165 -0
  30. package/dist/tools/design.js.map +1 -0
  31. package/dist/tools/events.d.ts +66 -0
  32. package/dist/tools/events.js +70 -0
  33. package/dist/tools/events.js.map +1 -0
  34. package/dist/tools/faq.d.ts +98 -0
  35. package/dist/tools/faq.js +90 -0
  36. package/dist/tools/faq.js.map +1 -0
  37. package/dist/tools/forms.d.ts +46 -0
  38. package/dist/tools/forms.js +63 -0
  39. package/dist/tools/forms.js.map +1 -0
  40. package/dist/tools/media.d.ts +50 -0
  41. package/dist/tools/media.js +75 -0
  42. package/dist/tools/media.js.map +1 -0
  43. package/dist/tools/multilingual.d.ts +38 -0
  44. package/dist/tools/multilingual.js +48 -0
  45. package/dist/tools/multilingual.js.map +1 -0
  46. package/dist/tools/reviews.d.ts +62 -0
  47. package/dist/tools/reviews.js +72 -0
  48. package/dist/tools/reviews.js.map +1 -0
  49. package/dist/tools/site.d.ts +36 -0
  50. package/dist/tools/site.js +94 -0
  51. package/dist/tools/site.js.map +1 -0
  52. package/dist/types.d.ts +58 -0
  53. package/dist/types.js +7 -0
  54. package/dist/types.js.map +1 -0
  55. package/dist/wix-client.d.ts +66 -0
  56. package/dist/wix-client.js +194 -0
  57. package/dist/wix-client.js.map +1 -0
  58. package/openclaw.plugin.json +95 -0
  59. package/package.json +72 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blog.js","sourceRoot":"","sources":["../../src/tools/blog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ import type { WixClient } from "../wix-client.js";
2
+ export declare function buildBookingsTools(client: WixClient): ({
3
+ name: string;
4
+ description: string;
5
+ label: string;
6
+ parameters: import("@sinclair/typebox").TObject<{
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
+ }>>;
12
+ }>;
13
+ execute: (toolCallId: string, params: {
14
+ siteId?: string | undefined;
15
+ paging?: {
16
+ limit?: number | undefined;
17
+ offset?: number | undefined;
18
+ } | undefined;
19
+ }, signal?: AbortSignal) => Promise<import("@mariozechner/pi-agent-core").AgentToolResult<{
20
+ status: "ok" | "failed";
21
+ data?: unknown;
22
+ error?: string;
23
+ }>>;
24
+ } | {
25
+ name: string;
26
+ description: string;
27
+ label: string;
28
+ parameters: import("@sinclair/typebox").TObject<{
29
+ siteId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
30
+ filter: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
31
+ paging: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
32
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
33
+ offset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
34
+ }>>;
35
+ }>;
36
+ execute: (toolCallId: string, params: {
37
+ filter?: unknown;
38
+ siteId?: string | undefined;
39
+ paging?: {
40
+ limit?: number | undefined;
41
+ offset?: number | undefined;
42
+ } | undefined;
43
+ }, signal?: AbortSignal) => Promise<import("@mariozechner/pi-agent-core").AgentToolResult<{
44
+ status: "ok" | "failed";
45
+ data?: unknown;
46
+ error?: string;
47
+ }>>;
48
+ } | {
49
+ name: string;
50
+ description: string;
51
+ label: string;
52
+ parameters: import("@sinclair/typebox").TObject<{
53
+ siteId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
54
+ bookingId: import("@sinclair/typebox").TString;
55
+ }>;
56
+ execute: (toolCallId: string, params: {
57
+ siteId?: string | undefined;
58
+ bookingId: string;
59
+ }, signal?: AbortSignal) => Promise<import("@mariozechner/pi-agent-core").AgentToolResult<{
60
+ status: "ok" | "failed";
61
+ data?: unknown;
62
+ error?: string;
63
+ }>>;
64
+ } | {
65
+ name: string;
66
+ description: string;
67
+ label: string;
68
+ parameters: import("@sinclair/typebox").TObject<{
69
+ siteId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
70
+ booking: import("@sinclair/typebox").TUnknown;
71
+ }>;
72
+ execute: (toolCallId: string, params: {
73
+ siteId?: string | undefined;
74
+ booking: unknown;
75
+ }, signal?: AbortSignal) => Promise<import("@mariozechner/pi-agent-core").AgentToolResult<{
76
+ status: "ok" | "failed";
77
+ data?: unknown;
78
+ error?: string;
79
+ }>>;
80
+ } | {
81
+ name: string;
82
+ description: string;
83
+ label: string;
84
+ parameters: import("@sinclair/typebox").TObject<{
85
+ siteId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
86
+ bookingId: import("@sinclair/typebox").TString;
87
+ slot: import("@sinclair/typebox").TUnknown;
88
+ }>;
89
+ execute: (toolCallId: string, params: {
90
+ siteId?: string | undefined;
91
+ bookingId: string;
92
+ slot: unknown;
93
+ }, signal?: AbortSignal) => Promise<import("@mariozechner/pi-agent-core").AgentToolResult<{
94
+ status: "ok" | "failed";
95
+ data?: unknown;
96
+ error?: string;
97
+ }>>;
98
+ } | {
99
+ name: string;
100
+ description: string;
101
+ label: string;
102
+ parameters: import("@sinclair/typebox").TObject<{
103
+ siteId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
104
+ bookingId: import("@sinclair/typebox").TString;
105
+ notifyParticipants: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
106
+ }>;
107
+ execute: (toolCallId: string, params: {
108
+ siteId?: string | undefined;
109
+ notifyParticipants?: boolean | undefined;
110
+ bookingId: string;
111
+ }, signal?: AbortSignal) => Promise<import("@mariozechner/pi-agent-core").AgentToolResult<{
112
+ status: "ok" | "failed";
113
+ data?: unknown;
114
+ error?: string;
115
+ }>>;
116
+ })[];
@@ -0,0 +1,97 @@
1
+ // Wix Bookings (`/bookings/v2/...`) tools.
2
+ //
3
+ // Query endpoints (services, bookings) validated live. Write endpoints
4
+ // (create / reschedule / cancel) pattern-validated against the public
5
+ // docs but untested live to avoid touching real coaching sessions.
6
+ import { Type } from "@sinclair/typebox";
7
+ import { defineWixTool } from "./_factory.js";
8
+ const SiteIdParam = Type.Optional(Type.String());
9
+ export function buildBookingsTools(client) {
10
+ return [
11
+ defineWixTool({
12
+ name: "wix_bookings_services_list",
13
+ description: "List bookable services offered by the site.",
14
+ parameters: Type.Object({
15
+ siteId: SiteIdParam,
16
+ paging: Type.Optional(Type.Object({
17
+ limit: Type.Optional(Type.Number({ minimum: 1, maximum: 100 })),
18
+ offset: Type.Optional(Type.Number({ minimum: 0 })),
19
+ })),
20
+ }),
21
+ run: (params) => client.request("POST", "/bookings/v2/services/query", {
22
+ siteId: params.siteId,
23
+ body: { query: { paging: params.paging } },
24
+ }),
25
+ }, client),
26
+ defineWixTool({
27
+ name: "wix_bookings_query_bookings",
28
+ description: "Query bookings (existing reservations). Filter by service, status, time range, contact id, etc.",
29
+ parameters: Type.Object({
30
+ siteId: SiteIdParam,
31
+ filter: Type.Optional(Type.Unknown()),
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", "/bookings/v2/bookings/query", {
38
+ siteId: params.siteId,
39
+ body: { query: { filter: params.filter, paging: params.paging } },
40
+ }),
41
+ }, client),
42
+ defineWixTool({
43
+ name: "wix_bookings_get_booking",
44
+ description: "Fetch a single booking by id.",
45
+ parameters: Type.Object({
46
+ siteId: SiteIdParam,
47
+ bookingId: Type.String(),
48
+ }),
49
+ run: (params) => client.request("GET", `/bookings/v2/bookings/${encodeURIComponent(params.bookingId)}`, { siteId: params.siteId }),
50
+ }, client),
51
+ defineWixTool({
52
+ name: "wix_bookings_create",
53
+ description: "Create a new booking. The agent must provide service id, slot, and contact details.",
54
+ parameters: Type.Object({
55
+ siteId: SiteIdParam,
56
+ booking: Type.Unknown({
57
+ description: "Full booking payload as accepted by Wix Bookings v2 (booked entity, contact details, payment selection).",
58
+ }),
59
+ }),
60
+ run: (params) => client.request("POST", "/bookings/v2/bookings", {
61
+ siteId: params.siteId,
62
+ body: { booking: params.booking },
63
+ }),
64
+ }, client),
65
+ defineWixTool({
66
+ name: "wix_bookings_reschedule",
67
+ description: "Move a booking to a different slot. APPROVAL GATED.",
68
+ parameters: Type.Object({
69
+ siteId: SiteIdParam,
70
+ bookingId: Type.String(),
71
+ slot: Type.Unknown({
72
+ description: "New slot specification (start/end + resource ids)",
73
+ }),
74
+ }),
75
+ run: (params) => client.request("POST", `/bookings/v2/bookings/${encodeURIComponent(params.bookingId)}/reschedule`, {
76
+ siteId: params.siteId,
77
+ body: { slot: params.slot },
78
+ }),
79
+ }, client),
80
+ defineWixTool({
81
+ name: "wix_bookings_cancel",
82
+ description: "Cancel a booking. APPROVAL GATED.",
83
+ parameters: Type.Object({
84
+ siteId: SiteIdParam,
85
+ bookingId: Type.String(),
86
+ notifyParticipants: Type.Optional(Type.Boolean()),
87
+ }),
88
+ run: (params) => client.request("POST", `/bookings/v2/bookings/${encodeURIComponent(params.bookingId)}/cancel`, {
89
+ siteId: params.siteId,
90
+ body: {
91
+ notifyParticipants: params.notifyParticipants,
92
+ },
93
+ }),
94
+ }, client),
95
+ ];
96
+ }
97
+ //# sourceMappingURL=bookings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bookings.js","sourceRoot":"","sources":["../../src/tools/bookings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,216 @@
1
+ import type { WixClient } from "../wix-client.js";
2
+ export declare function buildContactsTools(client: WixClient): ({
3
+ name: string;
4
+ description: string;
5
+ label: string;
6
+ parameters: import("@sinclair/typebox").TObject<{
7
+ siteId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
8
+ filter: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
9
+ search: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
10
+ paging: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
11
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
12
+ offset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
13
+ }>>;
14
+ }>;
15
+ execute: (toolCallId: string, params: {
16
+ filter?: unknown;
17
+ siteId?: string | undefined;
18
+ paging?: {
19
+ limit?: number | undefined;
20
+ offset?: number | undefined;
21
+ } | undefined;
22
+ search?: string | undefined;
23
+ }, signal?: AbortSignal) => Promise<import("@mariozechner/pi-agent-core").AgentToolResult<{
24
+ status: "ok" | "failed";
25
+ data?: unknown;
26
+ error?: string;
27
+ }>>;
28
+ } | {
29
+ name: string;
30
+ description: string;
31
+ label: string;
32
+ parameters: import("@sinclair/typebox").TObject<{
33
+ siteId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
34
+ contactId: import("@sinclair/typebox").TString;
35
+ }>;
36
+ execute: (toolCallId: string, params: {
37
+ siteId?: string | undefined;
38
+ contactId: string;
39
+ }, signal?: AbortSignal) => Promise<import("@mariozechner/pi-agent-core").AgentToolResult<{
40
+ status: "ok" | "failed";
41
+ data?: unknown;
42
+ error?: string;
43
+ }>>;
44
+ } | {
45
+ name: string;
46
+ description: string;
47
+ label: string;
48
+ parameters: import("@sinclair/typebox").TObject<{
49
+ siteId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
50
+ info: import("@sinclair/typebox").TObject<{
51
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
52
+ first: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
53
+ last: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
54
+ }>>;
55
+ emails: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
56
+ items: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
57
+ email: import("@sinclair/typebox").TString;
58
+ primary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
59
+ tag: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"MAIN">, import("@sinclair/typebox").TLiteral<"HOME">, import("@sinclair/typebox").TLiteral<"WORK">, import("@sinclair/typebox").TLiteral<"UNTAGGED">]>>;
60
+ }>>;
61
+ }>>;
62
+ phones: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
63
+ items: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
64
+ phone: import("@sinclair/typebox").TString;
65
+ primary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
66
+ tag: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"MAIN">, import("@sinclair/typebox").TLiteral<"HOME">, import("@sinclair/typebox").TLiteral<"MOBILE">, import("@sinclair/typebox").TLiteral<"WORK">, import("@sinclair/typebox").TLiteral<"FAX">, import("@sinclair/typebox").TLiteral<"UNTAGGED">]>>;
67
+ countryCode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
68
+ }>>;
69
+ }>>;
70
+ addresses: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
71
+ company: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
72
+ jobTitle: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
73
+ birthdate: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
74
+ locale: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
75
+ labelKeys: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
76
+ items: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
77
+ }>>;
78
+ extendedFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
79
+ }>;
80
+ }>;
81
+ execute: (toolCallId: string, params: {
82
+ siteId?: string | undefined;
83
+ info: {
84
+ name?: {
85
+ first?: string | undefined;
86
+ last?: string | undefined;
87
+ } | undefined;
88
+ emails?: {
89
+ items: {
90
+ primary?: boolean | undefined;
91
+ tag?: "MAIN" | "HOME" | "WORK" | "UNTAGGED" | undefined;
92
+ email: string;
93
+ }[];
94
+ } | undefined;
95
+ phones?: {
96
+ items: {
97
+ primary?: boolean | undefined;
98
+ tag?: "MAIN" | "HOME" | "WORK" | "UNTAGGED" | "MOBILE" | "FAX" | undefined;
99
+ countryCode?: string | undefined;
100
+ phone: string;
101
+ }[];
102
+ } | undefined;
103
+ addresses?: unknown;
104
+ company?: string | undefined;
105
+ jobTitle?: string | undefined;
106
+ birthdate?: string | undefined;
107
+ locale?: string | undefined;
108
+ labelKeys?: {
109
+ items: string[];
110
+ } | undefined;
111
+ extendedFields?: unknown;
112
+ };
113
+ }, signal?: AbortSignal) => Promise<import("@mariozechner/pi-agent-core").AgentToolResult<{
114
+ status: "ok" | "failed";
115
+ data?: unknown;
116
+ error?: string;
117
+ }>>;
118
+ } | {
119
+ name: string;
120
+ description: string;
121
+ label: string;
122
+ parameters: import("@sinclair/typebox").TObject<{
123
+ siteId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
124
+ contactId: import("@sinclair/typebox").TString;
125
+ info: import("@sinclair/typebox").TObject<{
126
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
127
+ first: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
128
+ last: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
129
+ }>>;
130
+ emails: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
131
+ items: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
132
+ email: import("@sinclair/typebox").TString;
133
+ primary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
134
+ tag: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"MAIN">, import("@sinclair/typebox").TLiteral<"HOME">, import("@sinclair/typebox").TLiteral<"WORK">, import("@sinclair/typebox").TLiteral<"UNTAGGED">]>>;
135
+ }>>;
136
+ }>>;
137
+ phones: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
138
+ items: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
139
+ phone: import("@sinclair/typebox").TString;
140
+ primary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
141
+ tag: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"MAIN">, import("@sinclair/typebox").TLiteral<"HOME">, import("@sinclair/typebox").TLiteral<"MOBILE">, import("@sinclair/typebox").TLiteral<"WORK">, import("@sinclair/typebox").TLiteral<"FAX">, import("@sinclair/typebox").TLiteral<"UNTAGGED">]>>;
142
+ countryCode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
143
+ }>>;
144
+ }>>;
145
+ addresses: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
146
+ company: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
147
+ jobTitle: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
148
+ birthdate: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
149
+ locale: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
150
+ labelKeys: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
151
+ items: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
152
+ }>>;
153
+ extendedFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
154
+ }>;
155
+ revision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
156
+ fieldMask: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
157
+ }>;
158
+ execute: (toolCallId: string, params: {
159
+ siteId?: string | undefined;
160
+ fieldMask?: string[] | undefined;
161
+ revision?: number | undefined;
162
+ info: {
163
+ name?: {
164
+ first?: string | undefined;
165
+ last?: string | undefined;
166
+ } | undefined;
167
+ emails?: {
168
+ items: {
169
+ primary?: boolean | undefined;
170
+ tag?: "MAIN" | "HOME" | "WORK" | "UNTAGGED" | undefined;
171
+ email: string;
172
+ }[];
173
+ } | undefined;
174
+ phones?: {
175
+ items: {
176
+ primary?: boolean | undefined;
177
+ tag?: "MAIN" | "HOME" | "WORK" | "UNTAGGED" | "MOBILE" | "FAX" | undefined;
178
+ countryCode?: string | undefined;
179
+ phone: string;
180
+ }[];
181
+ } | undefined;
182
+ addresses?: unknown;
183
+ company?: string | undefined;
184
+ jobTitle?: string | undefined;
185
+ birthdate?: string | undefined;
186
+ locale?: string | undefined;
187
+ labelKeys?: {
188
+ items: string[];
189
+ } | undefined;
190
+ extendedFields?: unknown;
191
+ };
192
+ contactId: string;
193
+ }, signal?: AbortSignal) => Promise<import("@mariozechner/pi-agent-core").AgentToolResult<{
194
+ status: "ok" | "failed";
195
+ data?: unknown;
196
+ error?: string;
197
+ }>>;
198
+ } | {
199
+ name: string;
200
+ description: string;
201
+ label: string;
202
+ parameters: import("@sinclair/typebox").TObject<{
203
+ siteId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
204
+ contactId: import("@sinclair/typebox").TString;
205
+ labelKeys: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
206
+ }>;
207
+ execute: (toolCallId: string, params: {
208
+ siteId?: string | undefined;
209
+ labelKeys: string[];
210
+ contactId: string;
211
+ }, signal?: AbortSignal) => Promise<import("@mariozechner/pi-agent-core").AgentToolResult<{
212
+ status: "ok" | "failed";
213
+ data?: unknown;
214
+ error?: string;
215
+ }>>;
216
+ })[];
@@ -0,0 +1,128 @@
1
+ // Wix Contacts (`/contacts/v4/...`) tools.
2
+ import { Type } from "@sinclair/typebox";
3
+ import { defineWixTool } from "./_factory.js";
4
+ const SiteIdParam = Type.Optional(Type.String());
5
+ const ContactInfoSchema = Type.Object({
6
+ name: Type.Optional(Type.Object({
7
+ first: Type.Optional(Type.String()),
8
+ last: Type.Optional(Type.String()),
9
+ })),
10
+ emails: Type.Optional(Type.Object({
11
+ items: Type.Array(Type.Object({
12
+ email: Type.String(),
13
+ primary: Type.Optional(Type.Boolean()),
14
+ tag: Type.Optional(Type.Union([Type.Literal("MAIN"), Type.Literal("HOME"), Type.Literal("WORK"), Type.Literal("UNTAGGED")])),
15
+ })),
16
+ })),
17
+ phones: Type.Optional(Type.Object({
18
+ items: Type.Array(Type.Object({
19
+ phone: Type.String(),
20
+ primary: Type.Optional(Type.Boolean()),
21
+ tag: Type.Optional(Type.Union([Type.Literal("MAIN"), Type.Literal("HOME"), Type.Literal("MOBILE"), Type.Literal("WORK"), Type.Literal("FAX"), Type.Literal("UNTAGGED")])),
22
+ countryCode: Type.Optional(Type.String()),
23
+ })),
24
+ })),
25
+ addresses: Type.Optional(Type.Unknown()),
26
+ company: Type.Optional(Type.String()),
27
+ jobTitle: Type.Optional(Type.String()),
28
+ birthdate: Type.Optional(Type.String()),
29
+ locale: Type.Optional(Type.String()),
30
+ labelKeys: Type.Optional(Type.Object({ items: Type.Array(Type.String()) })),
31
+ extendedFields: Type.Optional(Type.Unknown()),
32
+ });
33
+ export function buildContactsTools(client) {
34
+ return [
35
+ defineWixTool({
36
+ name: "wix_contacts_query",
37
+ description: "Search contacts. `filter` follows Wix query syntax — e.g. {\"info.emails.email\": {\"$contains\": \"acme\"}}.",
38
+ parameters: Type.Object({
39
+ siteId: SiteIdParam,
40
+ filter: Type.Optional(Type.Unknown()),
41
+ search: Type.Optional(Type.String({
42
+ description: "Free-text search across name, email, phone",
43
+ })),
44
+ paging: Type.Optional(Type.Object({
45
+ limit: Type.Optional(Type.Number({ minimum: 1, maximum: 1000 })),
46
+ offset: Type.Optional(Type.Number({ minimum: 0 })),
47
+ })),
48
+ }),
49
+ run: (params) => client.request("POST", "/contacts/v4/contacts/query", {
50
+ siteId: params.siteId,
51
+ body: {
52
+ query: {
53
+ filter: params.filter,
54
+ search: params.search ? { expression: params.search } : undefined,
55
+ paging: params.paging,
56
+ },
57
+ },
58
+ }),
59
+ }, client),
60
+ defineWixTool({
61
+ name: "wix_contacts_get",
62
+ description: "Fetch a single contact by id.",
63
+ parameters: Type.Object({
64
+ siteId: SiteIdParam,
65
+ contactId: Type.String(),
66
+ }),
67
+ run: (params) => client.request("GET", `/contacts/v4/contacts/${encodeURIComponent(params.contactId)}`, { siteId: params.siteId }),
68
+ }, client),
69
+ defineWixTool({
70
+ name: "wix_contacts_create",
71
+ description: "Create a new contact. At least one email or phone is required by Wix.",
72
+ parameters: Type.Object({
73
+ siteId: SiteIdParam,
74
+ info: ContactInfoSchema,
75
+ }),
76
+ run: (params) => client.request("POST", "/contacts/v4/contacts", {
77
+ siteId: params.siteId,
78
+ body: { info: params.info },
79
+ }),
80
+ }, client),
81
+ defineWixTool({
82
+ name: "wix_contacts_update",
83
+ description: "Update an existing contact. Use `fieldMask` to scope the update; without a mask Wix may overwrite unchanged fields.",
84
+ parameters: Type.Object({
85
+ siteId: SiteIdParam,
86
+ contactId: Type.String(),
87
+ info: ContactInfoSchema,
88
+ revision: Type.Optional(Type.Number({
89
+ description: "Optimistic-lock revision number. Wix returns this on get/query — pass it back to avoid overwriting concurrent edits.",
90
+ })),
91
+ fieldMask: Type.Optional(Type.Array(Type.String())),
92
+ }),
93
+ run: (params) => client.request("PATCH", `/contacts/v4/contacts/${encodeURIComponent(params.contactId)}`, {
94
+ siteId: params.siteId,
95
+ body: {
96
+ info: params.info,
97
+ revision: params.revision,
98
+ ...(params.fieldMask
99
+ ? { fieldMask: { paths: params.fieldMask } }
100
+ : {}),
101
+ },
102
+ }),
103
+ }, client),
104
+ defineWixTool({
105
+ name: "wix_contacts_label_add",
106
+ description: "Add labels (tags) to a contact.",
107
+ parameters: Type.Object({
108
+ siteId: SiteIdParam,
109
+ contactId: Type.String(),
110
+ labelKeys: Type.Array(Type.String()),
111
+ }),
112
+ run: (params) => client.request("POST", `/contacts/v4/contacts/${encodeURIComponent(params.contactId)}/labels`, {
113
+ siteId: params.siteId,
114
+ body: { labelKeys: params.labelKeys },
115
+ }),
116
+ }, client),
117
+ defineWixTool({
118
+ name: "wix_contacts_delete",
119
+ description: "Delete a contact. APPROVAL GATED. Irreversible.",
120
+ parameters: Type.Object({
121
+ siteId: SiteIdParam,
122
+ contactId: Type.String(),
123
+ }),
124
+ run: (params) => client.request("DELETE", `/contacts/v4/contacts/${encodeURIComponent(params.contactId)}`, { siteId: params.siteId }),
125
+ }, client),
126
+ ];
127
+ }
128
+ //# sourceMappingURL=contacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../src/tools/contacts.ts"],"names":[],"mappings":"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"}