@weave-apps/sdk 0.1.18 → 0.1.19
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/dist/WeaveDOMAPI.d.ts +28 -1
- package/dist/WeaveDOMAPI.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/SidekickAPIClient.d.ts +0 -231
- package/dist/SidekickAPIClient.d.ts.map +0 -1
- package/dist/SidekickAPIClient.js +0 -274
- package/dist/SidekickBaseApp.d.ts +0 -177
- package/dist/SidekickBaseApp.d.ts.map +0 -1
- package/dist/SidekickBaseApp.js +0 -228
- package/dist/SidekickDOMAPI.d.ts +0 -433
- package/dist/SidekickDOMAPI.d.ts.map +0 -1
- package/dist/SidekickDOMAPI.js +0 -620
package/dist/WeaveDOMAPI.d.ts
CHANGED
|
@@ -74,14 +74,39 @@ export type FormClickCallback = (data: {
|
|
|
74
74
|
type: string;
|
|
75
75
|
};
|
|
76
76
|
}) => void;
|
|
77
|
+
/**
|
|
78
|
+
* Workflow action from content script
|
|
79
|
+
*/
|
|
80
|
+
export interface WorkflowActionPayload {
|
|
81
|
+
type: string;
|
|
82
|
+
name: string;
|
|
83
|
+
timestamp: number;
|
|
84
|
+
selector: string;
|
|
85
|
+
value?: string;
|
|
86
|
+
elementInfo: {
|
|
87
|
+
tagName: string;
|
|
88
|
+
id?: string;
|
|
89
|
+
className?: string;
|
|
90
|
+
text?: string;
|
|
91
|
+
attributes?: Record<string, string>;
|
|
92
|
+
};
|
|
93
|
+
}
|
|
77
94
|
/**
|
|
78
95
|
* Workflow saved event callback
|
|
79
96
|
*/
|
|
80
97
|
export type WorkflowSavedCallback = (workflow: {
|
|
81
98
|
name: string;
|
|
82
99
|
startUrl: string;
|
|
83
|
-
actions:
|
|
100
|
+
actions: WorkflowActionPayload[];
|
|
84
101
|
}) => void;
|
|
102
|
+
/**
|
|
103
|
+
* Data mapping for trigger-to-workflow data injection
|
|
104
|
+
*/
|
|
105
|
+
export interface TriggerDataMapping {
|
|
106
|
+
triggerFieldLabel: string;
|
|
107
|
+
workflowActionIndex: number;
|
|
108
|
+
workflowActionSelector?: string;
|
|
109
|
+
}
|
|
85
110
|
/**
|
|
86
111
|
* Trigger saved event callback
|
|
87
112
|
*/
|
|
@@ -90,6 +115,8 @@ export type TriggerSavedCallback = (trigger: {
|
|
|
90
115
|
url: string;
|
|
91
116
|
events: any[];
|
|
92
117
|
dataCapture: any;
|
|
118
|
+
linkedWorkflowId?: string;
|
|
119
|
+
dataMappings?: TriggerDataMapping[];
|
|
93
120
|
}) => void;
|
|
94
121
|
/**
|
|
95
122
|
* Element click event callback (for injected elements)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WeaveDOMAPI.d.ts","sourceRoot":"","sources":["../src/WeaveDOMAPI.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0DH;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,CAAC;AAErF;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACrE;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE;IACrC,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH,KAAK,IAAI,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"WeaveDOMAPI.d.ts","sourceRoot":"","sources":["../src/WeaveDOMAPI.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sidekick API Client
|
|
3
|
-
*
|
|
4
|
-
* Client-side API for iframe apps to interact with the Sidekick backend
|
|
5
|
-
* through a secure proxy in the sidebar.
|
|
6
|
-
*
|
|
7
|
-
* Apps can call AI services and manage their own app data.
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* AI Chat Request
|
|
11
|
-
*/
|
|
12
|
-
export interface AIChatRequest {
|
|
13
|
-
/** User's input prompt */
|
|
14
|
-
prompt: string;
|
|
15
|
-
/** Optional context for the AI */
|
|
16
|
-
context?: string;
|
|
17
|
-
/** Optional flag to disable JSON extraction */
|
|
18
|
-
disableJsonExtraction?: boolean;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* AI Chat Response
|
|
22
|
-
*/
|
|
23
|
-
export interface AIChatResponse {
|
|
24
|
-
/** AI chat response content */
|
|
25
|
-
response: string;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* App Data structure
|
|
29
|
-
*/
|
|
30
|
-
export interface AppData {
|
|
31
|
-
_id: string;
|
|
32
|
-
/** Reference to the app component this data belongs to */
|
|
33
|
-
appId: string;
|
|
34
|
-
/** Company that owns this app data */
|
|
35
|
-
companyId: string;
|
|
36
|
-
/** User that owns this specific app data instance */
|
|
37
|
-
userId: string;
|
|
38
|
-
/** Key for organizing data within an app namespace */
|
|
39
|
-
dataKey: string;
|
|
40
|
-
/** Unstructured data - apps determine the content structure */
|
|
41
|
-
data: Record<string, any>;
|
|
42
|
-
createdAt: Date;
|
|
43
|
-
updatedAt: Date;
|
|
44
|
-
createdBy: string;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Create App Data Request
|
|
48
|
-
*/
|
|
49
|
-
export interface CreateAppDataRequest {
|
|
50
|
-
/** Key for organizing data within an app namespace */
|
|
51
|
-
dataKey: string;
|
|
52
|
-
/** Unstructured data - apps determine the content structure */
|
|
53
|
-
data: Record<string, any>;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Update App Data Request
|
|
57
|
-
*/
|
|
58
|
-
export interface UpdateAppDataRequest {
|
|
59
|
-
/** Key for organizing data within an app namespace */
|
|
60
|
-
dataKey: string;
|
|
61
|
-
/** Unstructured data - apps determine the content structure */
|
|
62
|
-
data: Record<string, any>;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Pagination metadata
|
|
66
|
-
*/
|
|
67
|
-
export interface PaginationMeta {
|
|
68
|
-
/** Current offset */
|
|
69
|
-
offset: number;
|
|
70
|
-
/** Number of items per page */
|
|
71
|
-
limit: number;
|
|
72
|
-
/** Total number of items available */
|
|
73
|
-
totalResultCount: number;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Paginated response wrapper
|
|
77
|
-
*/
|
|
78
|
-
export interface PaginatedResponse<T> {
|
|
79
|
-
/** Array of data items */
|
|
80
|
-
data: T[];
|
|
81
|
-
/** Pagination metadata */
|
|
82
|
-
meta: PaginationMeta;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Sidekick API Client
|
|
86
|
-
* Provides methods for iframe apps to interact with Sidekick backend
|
|
87
|
-
*/
|
|
88
|
-
export declare class SidekickAPIClient {
|
|
89
|
-
private pendingRequests;
|
|
90
|
-
private messageListener;
|
|
91
|
-
private requestCounter;
|
|
92
|
-
private timeout;
|
|
93
|
-
private appId;
|
|
94
|
-
constructor();
|
|
95
|
-
/**
|
|
96
|
-
* Set the app ID for this client
|
|
97
|
-
* Called automatically by SidekickBaseApp
|
|
98
|
-
*/
|
|
99
|
-
setAppId(appId: string): void;
|
|
100
|
-
/**
|
|
101
|
-
* Initialize the API client and start listening for responses
|
|
102
|
-
*/
|
|
103
|
-
private initialize;
|
|
104
|
-
/**
|
|
105
|
-
* Cleanup
|
|
106
|
-
*/
|
|
107
|
-
destroy(): void;
|
|
108
|
-
/**
|
|
109
|
-
* Handle response from sidebar
|
|
110
|
-
*/
|
|
111
|
-
private handleResponse;
|
|
112
|
-
/**
|
|
113
|
-
* Send request to sidebar
|
|
114
|
-
*/
|
|
115
|
-
private sendRequest;
|
|
116
|
-
/**
|
|
117
|
-
* Send a chat message to the AI service
|
|
118
|
-
*
|
|
119
|
-
* Note: App ID is automatically injected by the APIBridge.
|
|
120
|
-
* You only need to provide the prompt and optional context.
|
|
121
|
-
*
|
|
122
|
-
* @example
|
|
123
|
-
* ```javascript
|
|
124
|
-
* const response = await sidekickAPI.ai.chat({
|
|
125
|
-
* prompt: 'What is the capital of France?',
|
|
126
|
-
* context: 'User is learning geography'
|
|
127
|
-
* });
|
|
128
|
-
* ```
|
|
129
|
-
*/
|
|
130
|
-
ai: {
|
|
131
|
-
chat: (request: AIChatRequest) => Promise<AIChatResponse>;
|
|
132
|
-
};
|
|
133
|
-
/**
|
|
134
|
-
* App Data operations - CRUD for app-specific data storage
|
|
135
|
-
*/
|
|
136
|
-
appData: {
|
|
137
|
-
/**
|
|
138
|
-
* Get all app data for the current company (paginated)
|
|
139
|
-
*
|
|
140
|
-
* Returns a paginated response with data and metadata.
|
|
141
|
-
* Default limit is 25 items. For apps with large datasets (500-5000+ rows),
|
|
142
|
-
* use pagination to avoid performance issues.
|
|
143
|
-
*
|
|
144
|
-
* @example
|
|
145
|
-
* ```javascript
|
|
146
|
-
* // Get first page (default: 25 items)
|
|
147
|
-
* const response = await sidekickAPI.appData.getAll();
|
|
148
|
-
*
|
|
149
|
-
* // Access the array of items
|
|
150
|
-
* const items = response.data;
|
|
151
|
-
* items.forEach(item => {
|
|
152
|
-
* });
|
|
153
|
-
* ```
|
|
154
|
-
*/
|
|
155
|
-
getAll: () => Promise<PaginatedResponse<AppData>>;
|
|
156
|
-
/**
|
|
157
|
-
* Create new app data
|
|
158
|
-
*
|
|
159
|
-
* Note: App ID is automatically injected by the APIBridge.
|
|
160
|
-
*
|
|
161
|
-
* @example
|
|
162
|
-
* ```javascript
|
|
163
|
-
* const newData = await sidekickAPI.appData.create({
|
|
164
|
-
* dataKey: 'user-preferences',
|
|
165
|
-
* data: { theme: 'dark', language: 'en' }
|
|
166
|
-
* });
|
|
167
|
-
* ```
|
|
168
|
-
*/
|
|
169
|
-
create: (request: CreateAppDataRequest) => Promise<AppData>;
|
|
170
|
-
/**
|
|
171
|
-
* Get specific app data by ID
|
|
172
|
-
*
|
|
173
|
-
* @example
|
|
174
|
-
* ```javascript
|
|
175
|
-
* const data = await sidekickAPI.appData.get('data-id-123');
|
|
176
|
-
* ```
|
|
177
|
-
*/
|
|
178
|
-
get: (appDataId: string) => Promise<AppData>;
|
|
179
|
-
/**
|
|
180
|
-
* Update existing app data
|
|
181
|
-
*
|
|
182
|
-
* @example
|
|
183
|
-
* ```javascript
|
|
184
|
-
* const updated = await sidekickAPI.appData.update('data-id-123', {
|
|
185
|
-
* data: { theme: 'light' }
|
|
186
|
-
* });
|
|
187
|
-
* ```
|
|
188
|
-
*/
|
|
189
|
-
update: (appDataId: string, request: UpdateAppDataRequest) => Promise<AppData>;
|
|
190
|
-
/**
|
|
191
|
-
* Delete app data
|
|
192
|
-
*
|
|
193
|
-
* @example
|
|
194
|
-
* ```javascript
|
|
195
|
-
* await sidekickAPI.appData.delete('data-id-123');
|
|
196
|
-
* ```
|
|
197
|
-
*/
|
|
198
|
-
delete: (appDataId: string) => Promise<void>;
|
|
199
|
-
};
|
|
200
|
-
/**
|
|
201
|
-
* Utility functions for common operations
|
|
202
|
-
*
|
|
203
|
-
* Note: These utilities are loaded from the sidebar-loader at runtime.
|
|
204
|
-
* They are available through the window object and don't need to be bundled with apps.
|
|
205
|
-
*/
|
|
206
|
-
utils: {
|
|
207
|
-
/**
|
|
208
|
-
* Convert HTML to Markdown
|
|
209
|
-
*
|
|
210
|
-
* @example
|
|
211
|
-
* ```javascript
|
|
212
|
-
* const markdown = sidekickAPI.utils.htmlToMarkdown('<h1>Hello</h1>');
|
|
213
|
-
* console.log(markdown); // # Hello
|
|
214
|
-
* ```
|
|
215
|
-
*/
|
|
216
|
-
htmlToMarkdown: (html: string) => string;
|
|
217
|
-
/**
|
|
218
|
-
* Convert Markdown to HTML (sanitized)
|
|
219
|
-
*
|
|
220
|
-
* @example
|
|
221
|
-
* ```javascript
|
|
222
|
-
* const html = sidekickAPI.utils.markdownToHtml('# Hello');
|
|
223
|
-
* console.log(html); // <h1>Hello</h1>
|
|
224
|
-
* ```
|
|
225
|
-
*/
|
|
226
|
-
markdownToHtml: (markdown: string) => string;
|
|
227
|
-
};
|
|
228
|
-
}
|
|
229
|
-
declare const sidekickAPI: SidekickAPIClient;
|
|
230
|
-
export default sidekickAPI;
|
|
231
|
-
//# sourceMappingURL=SidekickAPIClient.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SidekickAPIClient.d.ts","sourceRoot":"","sources":["../src/SidekickAPIClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sidekick API Client
|
|
3
|
-
*
|
|
4
|
-
* Client-side API for iframe apps to interact with the Sidekick backend
|
|
5
|
-
* through a secure proxy in the sidebar.
|
|
6
|
-
*
|
|
7
|
-
* Apps can call AI services and manage their own app data.
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* API operation types
|
|
11
|
-
*/
|
|
12
|
-
var APIOperation;
|
|
13
|
-
(function (APIOperation) {
|
|
14
|
-
// AI Service
|
|
15
|
-
APIOperation["AI_CHAT"] = "AI_CHAT";
|
|
16
|
-
// App Data Service
|
|
17
|
-
APIOperation["APP_DATA_GET_ALL"] = "APP_DATA_GET_ALL";
|
|
18
|
-
APIOperation["APP_DATA_CREATE"] = "APP_DATA_CREATE";
|
|
19
|
-
APIOperation["APP_DATA_GET"] = "APP_DATA_GET";
|
|
20
|
-
APIOperation["APP_DATA_UPDATE"] = "APP_DATA_UPDATE";
|
|
21
|
-
APIOperation["APP_DATA_DELETE"] = "APP_DATA_DELETE";
|
|
22
|
-
})(APIOperation || (APIOperation = {}));
|
|
23
|
-
/**
|
|
24
|
-
* Sidekick API Client
|
|
25
|
-
* Provides methods for iframe apps to interact with Sidekick backend
|
|
26
|
-
*/
|
|
27
|
-
export class SidekickAPIClient {
|
|
28
|
-
constructor() {
|
|
29
|
-
this.pendingRequests = new Map();
|
|
30
|
-
this.messageListener = null;
|
|
31
|
-
this.requestCounter = 0;
|
|
32
|
-
this.timeout = 180000; // 3 minute timeout for API calls (AI can take time on large forms)
|
|
33
|
-
this.appId = null; // App ID set by the app
|
|
34
|
-
// ============================================================================
|
|
35
|
-
// AI Service
|
|
36
|
-
// ============================================================================
|
|
37
|
-
/**
|
|
38
|
-
* Send a chat message to the AI service
|
|
39
|
-
*
|
|
40
|
-
* Note: App ID is automatically injected by the APIBridge.
|
|
41
|
-
* You only need to provide the prompt and optional context.
|
|
42
|
-
*
|
|
43
|
-
* @example
|
|
44
|
-
* ```javascript
|
|
45
|
-
* const response = await sidekickAPI.ai.chat({
|
|
46
|
-
* prompt: 'What is the capital of France?',
|
|
47
|
-
* context: 'User is learning geography'
|
|
48
|
-
* });
|
|
49
|
-
* ```
|
|
50
|
-
*/
|
|
51
|
-
this.ai = {
|
|
52
|
-
chat: async (request) => {
|
|
53
|
-
return this.sendRequest(APIOperation.AI_CHAT, request);
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
// ============================================================================
|
|
57
|
-
// App Data Service
|
|
58
|
-
// ============================================================================
|
|
59
|
-
/**
|
|
60
|
-
* App Data operations - CRUD for app-specific data storage
|
|
61
|
-
*/
|
|
62
|
-
this.appData = {
|
|
63
|
-
/**
|
|
64
|
-
* Get all app data for the current company (paginated)
|
|
65
|
-
*
|
|
66
|
-
* Returns a paginated response with data and metadata.
|
|
67
|
-
* Default limit is 25 items. For apps with large datasets (500-5000+ rows),
|
|
68
|
-
* use pagination to avoid performance issues.
|
|
69
|
-
*
|
|
70
|
-
* @example
|
|
71
|
-
* ```javascript
|
|
72
|
-
* // Get first page (default: 25 items)
|
|
73
|
-
* const response = await sidekickAPI.appData.getAll();
|
|
74
|
-
*
|
|
75
|
-
* // Access the array of items
|
|
76
|
-
* const items = response.data;
|
|
77
|
-
* items.forEach(item => {
|
|
78
|
-
* });
|
|
79
|
-
* ```
|
|
80
|
-
*/
|
|
81
|
-
getAll: async () => {
|
|
82
|
-
return this.sendRequest(APIOperation.APP_DATA_GET_ALL, {});
|
|
83
|
-
},
|
|
84
|
-
/**
|
|
85
|
-
* Create new app data
|
|
86
|
-
*
|
|
87
|
-
* Note: App ID is automatically injected by the APIBridge.
|
|
88
|
-
*
|
|
89
|
-
* @example
|
|
90
|
-
* ```javascript
|
|
91
|
-
* const newData = await sidekickAPI.appData.create({
|
|
92
|
-
* dataKey: 'user-preferences',
|
|
93
|
-
* data: { theme: 'dark', language: 'en' }
|
|
94
|
-
* });
|
|
95
|
-
* ```
|
|
96
|
-
*/
|
|
97
|
-
create: async (request) => {
|
|
98
|
-
return this.sendRequest(APIOperation.APP_DATA_CREATE, request);
|
|
99
|
-
},
|
|
100
|
-
/**
|
|
101
|
-
* Get specific app data by ID
|
|
102
|
-
*
|
|
103
|
-
* @example
|
|
104
|
-
* ```javascript
|
|
105
|
-
* const data = await sidekickAPI.appData.get('data-id-123');
|
|
106
|
-
* ```
|
|
107
|
-
*/
|
|
108
|
-
get: async (appDataId) => {
|
|
109
|
-
return this.sendRequest(APIOperation.APP_DATA_GET, { appDataId });
|
|
110
|
-
},
|
|
111
|
-
/**
|
|
112
|
-
* Update existing app data
|
|
113
|
-
*
|
|
114
|
-
* @example
|
|
115
|
-
* ```javascript
|
|
116
|
-
* const updated = await sidekickAPI.appData.update('data-id-123', {
|
|
117
|
-
* data: { theme: 'light' }
|
|
118
|
-
* });
|
|
119
|
-
* ```
|
|
120
|
-
*/
|
|
121
|
-
update: async (appDataId, request) => {
|
|
122
|
-
return this.sendRequest(APIOperation.APP_DATA_UPDATE, {
|
|
123
|
-
appDataId,
|
|
124
|
-
...request
|
|
125
|
-
});
|
|
126
|
-
},
|
|
127
|
-
/**
|
|
128
|
-
* Delete app data
|
|
129
|
-
*
|
|
130
|
-
* @example
|
|
131
|
-
* ```javascript
|
|
132
|
-
* await sidekickAPI.appData.delete('data-id-123');
|
|
133
|
-
* ```
|
|
134
|
-
*/
|
|
135
|
-
delete: async (appDataId) => {
|
|
136
|
-
return this.sendRequest(APIOperation.APP_DATA_DELETE, { appDataId });
|
|
137
|
-
}
|
|
138
|
-
};
|
|
139
|
-
/**
|
|
140
|
-
* Utility functions for common operations
|
|
141
|
-
*
|
|
142
|
-
* Note: These utilities are loaded from the sidebar-loader at runtime.
|
|
143
|
-
* They are available through the window object and don't need to be bundled with apps.
|
|
144
|
-
*/
|
|
145
|
-
this.utils = {
|
|
146
|
-
/**
|
|
147
|
-
* Convert HTML to Markdown
|
|
148
|
-
*
|
|
149
|
-
* @example
|
|
150
|
-
* ```javascript
|
|
151
|
-
* const markdown = sidekickAPI.utils.htmlToMarkdown('<h1>Hello</h1>');
|
|
152
|
-
* console.log(markdown); // # Hello
|
|
153
|
-
* ```
|
|
154
|
-
*/
|
|
155
|
-
htmlToMarkdown: (html) => {
|
|
156
|
-
// Access the utility from window object (loaded by sidebar-loader)
|
|
157
|
-
if (typeof window !== 'undefined' && window.__sidekickUtils?.htmlToMarkdown) {
|
|
158
|
-
return window.__sidekickUtils.htmlToMarkdown(html);
|
|
159
|
-
}
|
|
160
|
-
throw new Error('htmlToMarkdown utility not available. Ensure sidebar-loader is loaded.');
|
|
161
|
-
},
|
|
162
|
-
/**
|
|
163
|
-
* Convert Markdown to HTML (sanitized)
|
|
164
|
-
*
|
|
165
|
-
* @example
|
|
166
|
-
* ```javascript
|
|
167
|
-
* const html = sidekickAPI.utils.markdownToHtml('# Hello');
|
|
168
|
-
* console.log(html); // <h1>Hello</h1>
|
|
169
|
-
* ```
|
|
170
|
-
*/
|
|
171
|
-
markdownToHtml: (markdown) => {
|
|
172
|
-
// Access the utility from window object (loaded by sidebar-loader)
|
|
173
|
-
if (typeof window !== 'undefined' && window.__sidekickUtils?.markdownToHtml) {
|
|
174
|
-
return window.__sidekickUtils.markdownToHtml(markdown);
|
|
175
|
-
}
|
|
176
|
-
throw new Error('markdownToHtml utility not available. Ensure sidebar-loader is loaded.');
|
|
177
|
-
}
|
|
178
|
-
};
|
|
179
|
-
this.initialize();
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Set the app ID for this client
|
|
183
|
-
* Called automatically by SidekickBaseApp
|
|
184
|
-
*/
|
|
185
|
-
setAppId(appId) {
|
|
186
|
-
this.appId = appId;
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Initialize the API client and start listening for responses
|
|
190
|
-
*/
|
|
191
|
-
initialize() {
|
|
192
|
-
this.messageListener = (event) => {
|
|
193
|
-
this.handleResponse(event);
|
|
194
|
-
};
|
|
195
|
-
window.addEventListener('message', this.messageListener);
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Cleanup
|
|
199
|
-
*/
|
|
200
|
-
destroy() {
|
|
201
|
-
if (this.messageListener) {
|
|
202
|
-
window.removeEventListener('message', this.messageListener);
|
|
203
|
-
this.messageListener = null;
|
|
204
|
-
}
|
|
205
|
-
this.pendingRequests.clear();
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Handle response from sidebar
|
|
209
|
-
*/
|
|
210
|
-
handleResponse(event) {
|
|
211
|
-
const data = event.data;
|
|
212
|
-
if (data?.type !== 'SIDEKICK_API_RESPONSE') {
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
const response = data;
|
|
216
|
-
const pending = this.pendingRequests.get(response.id);
|
|
217
|
-
if (!pending) {
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
this.pendingRequests.delete(response.id);
|
|
221
|
-
if (response.success) {
|
|
222
|
-
pending.resolve(response.data);
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
pending.reject(new Error(response.error || 'Unknown error'));
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
/**
|
|
229
|
-
* Send request to sidebar
|
|
230
|
-
*/
|
|
231
|
-
sendRequest(operation, payload) {
|
|
232
|
-
return new Promise((resolve, reject) => {
|
|
233
|
-
const id = `api-request-${++this.requestCounter}`;
|
|
234
|
-
const request = {
|
|
235
|
-
type: 'SIDEKICK_API_REQUEST',
|
|
236
|
-
id,
|
|
237
|
-
operation,
|
|
238
|
-
payload,
|
|
239
|
-
appId: this.appId || undefined, // Include app ID if set
|
|
240
|
-
};
|
|
241
|
-
// Store pending request
|
|
242
|
-
this.pendingRequests.set(id, { resolve, reject });
|
|
243
|
-
// Set timeout
|
|
244
|
-
const timeoutId = setTimeout(() => {
|
|
245
|
-
this.pendingRequests.delete(id);
|
|
246
|
-
reject(new Error(`Request timeout: ${operation}`));
|
|
247
|
-
}, this.timeout);
|
|
248
|
-
// Clear timeout on resolve/reject
|
|
249
|
-
const originalResolve = resolve;
|
|
250
|
-
const originalReject = reject;
|
|
251
|
-
this.pendingRequests.set(id, {
|
|
252
|
-
resolve: (value) => {
|
|
253
|
-
clearTimeout(timeoutId);
|
|
254
|
-
originalResolve(value);
|
|
255
|
-
},
|
|
256
|
-
reject: (error) => {
|
|
257
|
-
clearTimeout(timeoutId);
|
|
258
|
-
originalReject(error);
|
|
259
|
-
},
|
|
260
|
-
});
|
|
261
|
-
// Send to current window (sidebar APIBridge will intercept)
|
|
262
|
-
// Apps run in the sidebar's window, not in a separate iframe
|
|
263
|
-
window.postMessage(request, '*');
|
|
264
|
-
APIOperation;
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
// Create singleton instance
|
|
269
|
-
const sidekickAPI = new SidekickAPIClient();
|
|
270
|
-
// Export for global usage
|
|
271
|
-
if (typeof window !== 'undefined') {
|
|
272
|
-
window.sidekickAPI = sidekickAPI;
|
|
273
|
-
}
|
|
274
|
-
export default sidekickAPI;
|