@boltclaw/referrals 0.0.0-stage → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +500 -3
  3. package/dist/api-types.d.ts +245 -0
  4. package/dist/api-types.js +2 -0
  5. package/dist/api-types.js.map +1 -0
  6. package/dist/assistant-tools.d.ts +40 -0
  7. package/dist/assistant-tools.js +120 -0
  8. package/dist/assistant-tools.js.map +1 -0
  9. package/dist/assistant.d.ts +62 -0
  10. package/dist/assistant.js +305 -0
  11. package/dist/assistant.js.map +1 -0
  12. package/dist/case.d.ts +2 -0
  13. package/dist/case.js +30 -0
  14. package/dist/case.js.map +1 -0
  15. package/dist/client.d.ts +22 -0
  16. package/dist/client.js +80 -0
  17. package/dist/client.js.map +1 -0
  18. package/dist/element.d.ts +4 -0
  19. package/dist/element.js +204 -0
  20. package/dist/element.js.map +1 -0
  21. package/dist/errors.d.ts +19 -0
  22. package/dist/errors.js +62 -0
  23. package/dist/errors.js.map +1 -0
  24. package/dist/generated/api.d.ts +6477 -0
  25. package/dist/generated/api.js +891 -0
  26. package/dist/generated/api.js.map +1 -0
  27. package/dist/index.d.ts +18 -0
  28. package/dist/index.js +10 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/loader.d.ts +118 -0
  31. package/dist/loader.js +524 -0
  32. package/dist/loader.js.map +1 -0
  33. package/dist/middleware.d.ts +100 -0
  34. package/dist/middleware.js +378 -0
  35. package/dist/middleware.js.map +1 -0
  36. package/dist/origin.d.ts +3 -0
  37. package/dist/origin.js +22 -0
  38. package/dist/origin.js.map +1 -0
  39. package/dist/react.d.ts +69 -0
  40. package/dist/react.js +328 -0
  41. package/dist/react.js.map +1 -0
  42. package/dist/server-index.d.ts +17 -0
  43. package/dist/server-index.js +9 -0
  44. package/dist/server-index.js.map +1 -0
  45. package/dist/server.d.ts +106 -0
  46. package/dist/server.js +511 -0
  47. package/dist/server.js.map +1 -0
  48. package/dist/typed-code.d.ts +78 -0
  49. package/dist/typed-code.js +234 -0
  50. package/dist/typed-code.js.map +1 -0
  51. package/dist/types.d.ts +254 -0
  52. package/dist/types.js +61 -0
  53. package/dist/types.js.map +1 -0
  54. package/dist/webhooks.d.ts +20 -0
  55. package/dist/webhooks.js +90 -0
  56. package/dist/webhooks.js.map +1 -0
  57. package/package.json +97 -6
@@ -0,0 +1,204 @@
1
+ import { closePanel, mountNotice, mountPanel, NOTICE_EVENT_TYPES, openPanel, PANEL_EVENT_TYPES, } from "./loader.js";
2
+ export const ELEMENT_NAME = "boltclaw-referrals";
3
+ function themeOf(value) {
4
+ return value === "light" || value === "dark" || value === "auto" ? value : undefined;
5
+ }
6
+ export function defineReferralsElement() {
7
+ if (typeof customElements === "undefined" || typeof HTMLElement === "undefined")
8
+ return false;
9
+ if (customElements.get(ELEMENT_NAME))
10
+ return true;
11
+ class BoltClawReferralsElement extends HTMLElement {
12
+ static get observedAttributes() {
13
+ return ["token", "embed-key", "mode", "origin", "theme", "open", "locale", "tokens"];
14
+ }
15
+ #state = null;
16
+ connectedCallback() {
17
+ this.#sync();
18
+ }
19
+ disconnectedCallback() {
20
+ this.#teardown();
21
+ }
22
+ attributeChangedCallback(name) {
23
+ if (!this.isConnected)
24
+ return;
25
+ if (name === "theme" && this.#state) {
26
+ const theme = themeOf(this.getAttribute("theme")) ?? "auto";
27
+ this.#state.handle.setTheme(theme);
28
+ return;
29
+ }
30
+ if (name === "tokens" && this.#state) {
31
+ applyTokens(this, this.#state.handle);
32
+ return;
33
+ }
34
+ if (name === "locale" && this.#state) {
35
+ const locale = this.getAttribute("locale");
36
+ if (locale && locale !== this.#state.locale) {
37
+ try {
38
+ this.#state.handle.setLocale(locale);
39
+ this.#state.locale = locale;
40
+ return;
41
+ }
42
+ catch {
43
+ }
44
+ }
45
+ }
46
+ if (name === "token" && this.#state) {
47
+ const token = this.getAttribute("token") ?? "";
48
+ if (token !== this.#state.token) {
49
+ try {
50
+ this.#state.handle.update({ token });
51
+ this.#state.token = token;
52
+ return;
53
+ }
54
+ catch {
55
+ }
56
+ }
57
+ }
58
+ this.#sync();
59
+ }
60
+ #teardown() {
61
+ const state = this.#state;
62
+ this.#state = null;
63
+ if (!state)
64
+ return;
65
+ if (this.getAttribute("mode") === "modal")
66
+ closePanel();
67
+ else
68
+ state.handle.unmount();
69
+ }
70
+ #sync() {
71
+ const token = this.getAttribute("token");
72
+ const embedKey = this.getAttribute("embed-key");
73
+ const modal = this.getAttribute("mode") === "modal";
74
+ const wanted = token && embedKey && (!modal || this.hasAttribute("open"));
75
+ const key = [embedKey, this.getAttribute("mode"), this.getAttribute("origin"), this.hasAttribute("open")].join("|");
76
+ if (this.#state && wanted && this.#state.key === key) {
77
+ if (token !== this.#state.token) {
78
+ this.#state.handle.update({ token });
79
+ this.#state.token = token;
80
+ }
81
+ return;
82
+ }
83
+ this.#teardown();
84
+ if (!wanted)
85
+ return;
86
+ const options = { token, embedKey };
87
+ if (this.getAttribute("mode") === "thank-you")
88
+ options.mode = "thank-you";
89
+ const origin = this.getAttribute("origin");
90
+ if (origin)
91
+ options.origin = origin;
92
+ const theme = themeOf(this.getAttribute("theme"));
93
+ if (theme)
94
+ options.theme = theme;
95
+ const locale = this.getAttribute("locale");
96
+ if (locale)
97
+ options.locale = locale;
98
+ let handle;
99
+ try {
100
+ handle = modal ? openPanel(options) : mountPanel(this, options);
101
+ }
102
+ catch (error) {
103
+ this.dispatchEvent(new CustomEvent("error", { detail: { code: "invalid_options", message: error.message }, bubbles: true, composed: true }));
104
+ return;
105
+ }
106
+ for (const type of PANEL_EVENT_TYPES) {
107
+ handle.on(type, (payload) => {
108
+ this.dispatchEvent(new CustomEvent(type, { detail: payload, bubbles: true, composed: true }));
109
+ if (type === "closed" && modal) {
110
+ this.#state = null;
111
+ this.removeAttribute("open");
112
+ }
113
+ });
114
+ }
115
+ if (this.hasAttribute("tokens"))
116
+ applyTokens(this, handle);
117
+ this.#state = { handle, key, token, locale: locale || null };
118
+ }
119
+ }
120
+ customElements.define(ELEMENT_NAME, BoltClawReferralsElement);
121
+ return true;
122
+ }
123
+ function applyTokens(element, handle) {
124
+ const raw = element.getAttribute("tokens");
125
+ if (!raw)
126
+ return;
127
+ try {
128
+ handle.setTokens(JSON.parse(raw));
129
+ }
130
+ catch (error) {
131
+ element.dispatchEvent(new CustomEvent("error", { detail: { code: "invalid_tokens", message: error.message }, bubbles: true, composed: true }));
132
+ }
133
+ }
134
+ export const NOTICE_ELEMENT_NAME = "boltclaw-referral-notice";
135
+ export function defineNoticeElement() {
136
+ if (typeof customElements === "undefined" || typeof HTMLElement === "undefined")
137
+ return false;
138
+ if (customElements.get(NOTICE_ELEMENT_NAME))
139
+ return true;
140
+ class BoltClawReferralNoticeElement extends HTMLElement {
141
+ static get observedAttributes() {
142
+ return ["token", "embed-key", "href", "origin", "theme", "locale", "tokens", "navigate"];
143
+ }
144
+ #handle = null;
145
+ connectedCallback() {
146
+ this.#mount();
147
+ }
148
+ disconnectedCallback() {
149
+ this.#handle?.unmount();
150
+ this.#handle = null;
151
+ }
152
+ attributeChangedCallback(name) {
153
+ if (!this.isConnected)
154
+ return;
155
+ if (name === "theme" && this.#handle) {
156
+ this.#handle.setTheme(themeOf(this.getAttribute("theme")) ?? "auto");
157
+ return;
158
+ }
159
+ if (name === "tokens" && this.#handle) {
160
+ applyTokens(this, this.#handle);
161
+ return;
162
+ }
163
+ this.#mount();
164
+ }
165
+ #mount() {
166
+ this.#handle?.unmount();
167
+ this.#handle = null;
168
+ const token = this.getAttribute("token");
169
+ const embedKey = this.getAttribute("embed-key");
170
+ const href = this.getAttribute("href");
171
+ if (!token || !embedKey || !href)
172
+ return;
173
+ const options = { token, embedKey, href, navigate: this.getAttribute("navigate") !== "false" };
174
+ const origin = this.getAttribute("origin");
175
+ if (origin)
176
+ options.origin = origin;
177
+ const theme = themeOf(this.getAttribute("theme"));
178
+ if (theme)
179
+ options.theme = theme;
180
+ const locale = this.getAttribute("locale");
181
+ if (locale)
182
+ options.locale = locale;
183
+ let handle;
184
+ try {
185
+ handle = mountNotice(this, options);
186
+ }
187
+ catch (error) {
188
+ this.dispatchEvent(new CustomEvent("error", { detail: { code: "invalid_options", message: error.message }, bubbles: true, composed: true }));
189
+ return;
190
+ }
191
+ for (const type of NOTICE_EVENT_TYPES) {
192
+ handle.on(type, (payload) => this.dispatchEvent(new CustomEvent(type, { detail: payload, bubbles: true, composed: true })));
193
+ }
194
+ if (this.hasAttribute("tokens"))
195
+ applyTokens(this, handle);
196
+ this.#handle = handle;
197
+ }
198
+ }
199
+ customElements.define(NOTICE_ELEMENT_NAME, BoltClawReferralNoticeElement);
200
+ return true;
201
+ }
202
+ defineReferralsElement();
203
+ defineNoticeElement();
204
+ //# sourceMappingURL=element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element.js","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export declare const APPROVALS_URL = "https://boltclaw.ai/dashboard/approvals";
2
+ export interface ReferralsApiErrorInit {
3
+ status: number;
4
+ code: string;
5
+ message: string;
6
+ requestId?: string | undefined;
7
+ approvalId?: string | undefined;
8
+ }
9
+ export declare class ReferralsApiError extends Error {
10
+ readonly status: number;
11
+ readonly code: string;
12
+ readonly requestId: string | undefined;
13
+ readonly approvalId: string | undefined;
14
+ readonly approvalUrl: string | undefined;
15
+ constructor(init: ReferralsApiErrorInit);
16
+ get isExpired(): boolean;
17
+ }
18
+ export declare function isExpired(error: unknown): boolean;
19
+ export declare function errorFromBody(status: number, body: unknown, redact?: (text: string) => string): ReferralsApiError;
package/dist/errors.js ADDED
@@ -0,0 +1,62 @@
1
+ const UUID_SHAPE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
2
+ export const APPROVALS_URL = "https://boltclaw.ai/dashboard/approvals";
3
+ export class ReferralsApiError extends Error {
4
+ status;
5
+ code;
6
+ requestId;
7
+ approvalId;
8
+ approvalUrl;
9
+ constructor(init) {
10
+ super(init.message);
11
+ this.name = "ReferralsApiError";
12
+ this.status = init.status;
13
+ this.code = init.code;
14
+ this.requestId = init.requestId;
15
+ if (init.approvalId !== undefined && UUID_SHAPE.test(init.approvalId)) {
16
+ this.approvalId = init.approvalId.toLowerCase();
17
+ this.approvalUrl = `${APPROVALS_URL}/${encodeURIComponent(this.approvalId)}`;
18
+ }
19
+ }
20
+ get isExpired() {
21
+ return this.code === "token_expired";
22
+ }
23
+ }
24
+ export function isExpired(error) {
25
+ return error instanceof ReferralsApiError && error.isExpired;
26
+ }
27
+ function isObject(value) {
28
+ return typeof value === "object" && value !== null && !Array.isArray(value);
29
+ }
30
+ export function errorFromBody(status, body, redact = (t) => t) {
31
+ let code = "http_error";
32
+ let message = "The request failed with status " + status + ".";
33
+ let requestId;
34
+ let approvalId;
35
+ if (isObject(body)) {
36
+ const error = body.error;
37
+ if (isObject(error)) {
38
+ if (typeof error.code === "string")
39
+ code = error.code;
40
+ if (typeof error.message === "string")
41
+ message = error.message;
42
+ }
43
+ else {
44
+ if (typeof body.code === "string")
45
+ code = body.code;
46
+ if (typeof error === "string")
47
+ message = error;
48
+ }
49
+ if (typeof body.request_id === "string")
50
+ requestId = body.request_id;
51
+ if (isObject(body.approval) && typeof body.approval.id === "string")
52
+ approvalId = body.approval.id;
53
+ }
54
+ return new ReferralsApiError({
55
+ status,
56
+ code: redact(code).slice(0, 80),
57
+ message: redact(message).slice(0, 500),
58
+ requestId: requestId === undefined ? undefined : redact(requestId).slice(0, 100),
59
+ approvalId,
60
+ });
61
+ }
62
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}