@plotday/twister 0.22.0 → 0.26.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/LICENSE +1 -1
- package/README.md +35 -6
- package/bin/commands/deploy.js +234 -2
- package/bin/commands/deploy.js.map +1 -1
- package/bin/commands/generate.js +11 -2
- package/bin/commands/generate.js.map +1 -1
- package/bin/commands/login.js +19 -3
- package/bin/commands/login.js.map +1 -1
- package/bin/commands/priority-create.js +7 -2
- package/bin/commands/priority-create.js.map +1 -1
- package/bin/commands/priority-list.js +6 -1
- package/bin/commands/priority-list.js.map +1 -1
- package/bin/commands/twist-logs.js +12 -3
- package/bin/commands/twist-logs.js.map +1 -1
- package/bin/templates/AGENTS.template.md +109 -20
- package/bin/utils/bundle.js +40 -0
- package/bin/utils/bundle.js.map +1 -1
- package/bin/utils/network-error.js +149 -0
- package/bin/utils/network-error.js.map +1 -0
- package/cli/templates/AGENTS.template.md +109 -20
- package/dist/common/calendar.d.ts +10 -2
- package/dist/common/calendar.d.ts.map +1 -1
- package/dist/common/projects.d.ts +123 -0
- package/dist/common/projects.d.ts.map +1 -0
- package/dist/common/projects.js +2 -0
- package/dist/common/projects.js.map +1 -0
- package/dist/docs/assets/hierarchy.js +1 -1
- package/dist/docs/assets/highlight.css +4 -4
- package/dist/docs/assets/navigation.js +1 -1
- package/dist/docs/assets/search.js +1 -1
- package/dist/docs/classes/tool.Tool.html +5 -5
- package/dist/docs/classes/tools_ai.AI.html +3 -3
- package/dist/docs/classes/tools_callbacks.Callbacks.html +4 -4
- package/dist/docs/classes/tools_integrations.Integrations.html +1 -1
- package/dist/docs/classes/tools_network.Network.html +4 -4
- package/dist/docs/classes/tools_plot.Plot.html +28 -14
- package/dist/docs/classes/tools_store.Store.html +1 -1
- package/dist/docs/classes/tools_tasks.Tasks.html +2 -2
- package/dist/docs/classes/tools_twists.Twists.html +4 -4
- package/dist/docs/classes/twist.Twist.html +1 -1
- package/dist/docs/documents/Building_Custom_Tools.html +6 -6
- package/dist/docs/documents/Built-in_Tools.html +24 -17
- package/dist/docs/documents/Core_Concepts.html +42 -9
- package/dist/docs/documents/Getting_Started.html +10 -3
- package/dist/docs/documents/Runtime_Environment.html +7 -7
- package/dist/docs/enums/plot.ActivityLinkType.html +5 -5
- package/dist/docs/enums/plot.ActivityType.html +4 -4
- package/dist/docs/enums/plot.ActorType.html +4 -4
- package/dist/docs/enums/plot.ConferencingProvider.html +6 -6
- package/dist/docs/enums/tag.Tag.html +3 -4
- package/dist/docs/enums/tools_plot.ActivityAccess.html +3 -3
- package/dist/docs/enums/tools_plot.ContactAccess.html +3 -3
- package/dist/docs/enums/tools_plot.PriorityAccess.html +3 -3
- package/dist/docs/hierarchy.html +1 -1
- package/dist/docs/interfaces/common_calendar.CalendarTool.html +13 -7
- package/dist/docs/interfaces/tools_ai.AIResponse.html +2 -2
- package/dist/docs/interfaces/tools_twists.TwistSource.html +1 -1
- package/dist/docs/modules/index.html +1 -1
- package/dist/docs/modules/plot.html +1 -1
- package/dist/docs/types/plot.Activity.html +28 -7
- package/dist/docs/types/plot.ActivityCommon.html +10 -8
- package/dist/docs/types/plot.ActivityLink.html +1 -1
- package/dist/docs/types/plot.ActivityMeta.html +24 -6
- package/dist/docs/types/plot.ActivityUpdate.html +2 -2
- package/dist/docs/types/plot.ActivityWithNotes.html +1 -1
- package/dist/docs/types/plot.Actor.html +5 -5
- package/dist/docs/types/plot.ActorId.html +8 -3
- package/dist/docs/types/plot.ContentType.html +1 -0
- package/dist/docs/types/plot.NewActivity.html +18 -3
- package/dist/docs/types/plot.NewActivityWithNotes.html +1 -1
- package/dist/docs/types/plot.NewContact.html +4 -4
- package/dist/docs/types/plot.NewNote.html +9 -3
- package/dist/docs/types/plot.NewPriority.html +1 -1
- package/dist/docs/types/plot.Note.html +3 -3
- package/dist/docs/types/plot.NoteUpdate.html +4 -4
- package/dist/docs/types/plot.PickPriorityConfig.html +3 -3
- package/dist/docs/types/plot.Priority.html +3 -3
- package/dist/docs/types/plot.Tags.html +1 -0
- package/dist/docs/types/tools_ai.DataContent.html +1 -1
- package/dist/docs/types/tools_network.WebhookRequest.html +5 -3
- package/dist/docs/types/tools_plot.NoteIntentHandler.html +4 -4
- package/dist/llm-docs/common/calendar.d.ts +2 -2
- package/dist/llm-docs/common/calendar.d.ts.map +1 -1
- package/dist/llm-docs/common/calendar.js +2 -2
- package/dist/llm-docs/common/calendar.js.map +1 -1
- package/dist/llm-docs/common/messaging.d.ts +1 -1
- package/dist/llm-docs/common/messaging.js +1 -1
- package/dist/llm-docs/common/projects.d.ts +9 -0
- package/dist/llm-docs/common/projects.d.ts.map +1 -0
- package/dist/llm-docs/common/projects.js +8 -0
- package/dist/llm-docs/common/projects.js.map +1 -0
- package/dist/llm-docs/index.d.ts +1 -1
- package/dist/llm-docs/index.js +17 -17
- package/dist/llm-docs/index.js.map +1 -1
- package/dist/llm-docs/plot.d.ts +2 -2
- package/dist/llm-docs/plot.d.ts.map +1 -1
- package/dist/llm-docs/plot.js +2 -2
- package/dist/llm-docs/plot.js.map +1 -1
- package/dist/llm-docs/tag.d.ts +2 -2
- package/dist/llm-docs/tag.d.ts.map +1 -1
- package/dist/llm-docs/tag.js +2 -2
- package/dist/llm-docs/tag.js.map +1 -1
- package/dist/llm-docs/tool.d.ts +2 -2
- package/dist/llm-docs/tool.d.ts.map +1 -1
- package/dist/llm-docs/tool.js +2 -2
- package/dist/llm-docs/tool.js.map +1 -1
- package/dist/llm-docs/tools/ai.d.ts +2 -2
- package/dist/llm-docs/tools/ai.d.ts.map +1 -1
- package/dist/llm-docs/tools/ai.js +2 -2
- package/dist/llm-docs/tools/ai.js.map +1 -1
- package/dist/llm-docs/tools/callbacks.d.ts +2 -2
- package/dist/llm-docs/tools/callbacks.d.ts.map +1 -1
- package/dist/llm-docs/tools/callbacks.js +2 -2
- package/dist/llm-docs/tools/callbacks.js.map +1 -1
- package/dist/llm-docs/tools/integrations.d.ts +1 -1
- package/dist/llm-docs/tools/integrations.js +1 -1
- package/dist/llm-docs/tools/network.d.ts +2 -2
- package/dist/llm-docs/tools/network.d.ts.map +1 -1
- package/dist/llm-docs/tools/network.js +2 -2
- package/dist/llm-docs/tools/network.js.map +1 -1
- package/dist/llm-docs/tools/plot.d.ts +2 -2
- package/dist/llm-docs/tools/plot.d.ts.map +1 -1
- package/dist/llm-docs/tools/plot.js +2 -2
- package/dist/llm-docs/tools/plot.js.map +1 -1
- package/dist/llm-docs/tools/store.d.ts +1 -1
- package/dist/llm-docs/tools/store.js +1 -1
- package/dist/llm-docs/tools/tasks.d.ts +1 -1
- package/dist/llm-docs/tools/tasks.js +1 -1
- package/dist/llm-docs/tools/twists.d.ts +2 -2
- package/dist/llm-docs/tools/twists.d.ts.map +1 -1
- package/dist/llm-docs/tools/twists.js +2 -2
- package/dist/llm-docs/tools/twists.js.map +1 -1
- package/dist/llm-docs/twist-guide-template.d.ts +1 -1
- package/dist/llm-docs/twist-guide-template.d.ts.map +1 -1
- package/dist/llm-docs/twist-guide-template.js +1 -1
- package/dist/llm-docs/twist-guide-template.js.map +1 -1
- package/dist/llm-docs/twist.d.ts +1 -1
- package/dist/llm-docs/twist.js +1 -1
- package/dist/plot.d.ts +203 -35
- package/dist/plot.d.ts.map +1 -1
- package/dist/plot.js.map +1 -1
- package/dist/tag.d.ts +2 -3
- package/dist/tag.d.ts.map +1 -1
- package/dist/tag.js +2 -3
- package/dist/tag.js.map +1 -1
- package/dist/tool.d.ts +2 -2
- package/dist/tool.d.ts.map +1 -1
- package/dist/tool.js +1 -1
- package/dist/tool.js.map +1 -1
- package/dist/tools/ai.d.ts +2 -2
- package/dist/tools/ai.d.ts.map +1 -1
- package/dist/tools/callbacks.d.ts +1 -1
- package/dist/tools/callbacks.d.ts.map +1 -1
- package/dist/tools/network.d.ts +2 -0
- package/dist/tools/network.d.ts.map +1 -1
- package/dist/tools/network.js.map +1 -1
- package/dist/tools/plot.d.ts +36 -4
- package/dist/tools/plot.d.ts.map +1 -1
- package/dist/tools/plot.js.map +1 -1
- package/dist/tools/twists.d.ts +2 -2
- package/dist/twist-guide.d.ts +1 -1
- package/dist/twist-guide.d.ts.map +1 -1
- package/package.json +52 -2
- package/tsconfig.base.json +1 -0
- package/dist/docs/types/plot.NoteType.html +0 -1
- package/dist/llm-docs/creator-docs.d.ts +0 -9
- package/dist/llm-docs/creator-docs.d.ts.map +0 -1
- package/dist/llm-docs/creator-docs.js +0 -8
- package/dist/llm-docs/creator-docs.js.map +0 -1
|
@@ -36,9 +36,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.twistLogsCommand = twistLogsCommand;
|
|
37
37
|
const fs = __importStar(require("fs"));
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
|
+
const network_error_1 = require("../utils/network-error");
|
|
39
40
|
const out = __importStar(require("../utils/output"));
|
|
40
|
-
const token_1 = require("../utils/token");
|
|
41
41
|
const sse_1 = require("../utils/sse");
|
|
42
|
+
const token_1 = require("../utils/token");
|
|
42
43
|
/**
|
|
43
44
|
* Stream twist logs in real-time
|
|
44
45
|
*/
|
|
@@ -106,8 +107,12 @@ async function twistLogsCommand(options) {
|
|
|
106
107
|
},
|
|
107
108
|
});
|
|
108
109
|
if (!response.ok) {
|
|
110
|
+
if (response.status === 401) {
|
|
111
|
+
out.error("Authentication failed", "Your login token is invalid or has expired. Please run 'plot login' to authenticate.");
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
109
114
|
const errorText = await response.text();
|
|
110
|
-
out.error(
|
|
115
|
+
out.error("Failed to connect", errorText);
|
|
111
116
|
process.exit(1);
|
|
112
117
|
}
|
|
113
118
|
// Handle SSE stream with custom log formatting
|
|
@@ -180,7 +185,11 @@ async function twistLogsCommand(options) {
|
|
|
180
185
|
});
|
|
181
186
|
}
|
|
182
187
|
catch (error) {
|
|
183
|
-
|
|
188
|
+
const errorInfo = (0, network_error_1.handleNetworkError)(error);
|
|
189
|
+
out.error("Connection failed", errorInfo.message);
|
|
190
|
+
if (errorInfo.details) {
|
|
191
|
+
console.error(out.colors.dim(errorInfo.details));
|
|
192
|
+
}
|
|
184
193
|
process.exit(1);
|
|
185
194
|
}
|
|
186
195
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"twist-logs.js","sourceRoot":"","sources":["../../cli/commands/twist-logs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"twist-logs.js","sourceRoot":"","sources":["../../cli/commands/twist-logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,14 +17,39 @@ Plot Twists are TypeScript classes that extend the `Twist` base class. Twists in
|
|
|
17
17
|
- **Store intermediate state**: Use the Store tool to persist state between batches
|
|
18
18
|
- **Examples**: Syncing large datasets, processing many API calls, or performing batch operations
|
|
19
19
|
|
|
20
|
-
##
|
|
20
|
+
## Understanding Activities and Notes
|
|
21
|
+
|
|
22
|
+
**CRITICAL CONCEPT**: An **Activity** represents something done or to be done (a task, event, or conversation), while **Notes** represent the updates and details on that activity.
|
|
23
|
+
|
|
24
|
+
**Think of an Activity as a thread** on a messaging platform, and **Notes as the messages in that thread**.
|
|
25
|
+
|
|
26
|
+
### Key Guidelines
|
|
27
|
+
|
|
28
|
+
1. **Always create Activities with an initial Note** - The title is just a summary; detailed content goes in Notes
|
|
29
|
+
2. **Add Notes to existing Activities for updates** - Don't create a new Activity for each related message
|
|
30
|
+
3. **Use `source` field for deduplication** - Enables safe, idempotent sync from external systems
|
|
31
|
+
4. **Most Activities should be `ActivityType.Note`** - Use `Action` only for tasks with `doneAt`, use `Event` only for items with `start`/`end`
|
|
32
|
+
|
|
33
|
+
### Decision Tree
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
New event/task/conversation?
|
|
37
|
+
├─ Yes → Create new Activity with initial Note
|
|
38
|
+
│ Include `source` field for deduplication
|
|
39
|
+
│
|
|
40
|
+
└─ No (update/reply/comment) → Check for existing Activity
|
|
41
|
+
├─ Found → Add Note to existing Activity
|
|
42
|
+
└─ Not found → Create new Activity with initial Note
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Twist Structure Pattern
|
|
21
46
|
|
|
22
47
|
```typescript
|
|
23
48
|
import {
|
|
24
49
|
type Activity,
|
|
25
|
-
twist,
|
|
26
50
|
type Priority,
|
|
27
51
|
type ToolBuilder,
|
|
52
|
+
twist,
|
|
28
53
|
} from "@plotday/twister";
|
|
29
54
|
import { Plot } from "@plotday/twister/tools/plot";
|
|
30
55
|
|
|
@@ -118,9 +143,14 @@ async activate(_priority: Pick<Priority, "id">) {
|
|
|
118
143
|
);
|
|
119
144
|
|
|
120
145
|
await this.tools.plot.createActivity({
|
|
121
|
-
type: ActivityType.
|
|
146
|
+
type: ActivityType.Note,
|
|
122
147
|
title: "Connect your account",
|
|
123
|
-
|
|
148
|
+
notes: [
|
|
149
|
+
{
|
|
150
|
+
content: "Click the link below to connect your account and start syncing.",
|
|
151
|
+
links: [authLink],
|
|
152
|
+
},
|
|
153
|
+
],
|
|
124
154
|
});
|
|
125
155
|
}
|
|
126
156
|
```
|
|
@@ -129,8 +159,13 @@ async activate(_priority: Pick<Priority, "id">) {
|
|
|
129
159
|
|
|
130
160
|
```typescript
|
|
131
161
|
const activity = await this.tools.plot.createActivity({
|
|
132
|
-
type: ActivityType.
|
|
162
|
+
type: ActivityType.Note,
|
|
133
163
|
title: "Setup",
|
|
164
|
+
notes: [
|
|
165
|
+
{
|
|
166
|
+
content: "Your twist is being set up. Configuration steps will appear here.",
|
|
167
|
+
},
|
|
168
|
+
],
|
|
134
169
|
});
|
|
135
170
|
|
|
136
171
|
await this.set("setup_activity_id", activity.id);
|
|
@@ -180,11 +215,16 @@ const callbackLink: ActivityLink = {
|
|
|
180
215
|
token: token,
|
|
181
216
|
};
|
|
182
217
|
|
|
183
|
-
// Add to activity
|
|
218
|
+
// Add to activity note
|
|
184
219
|
await this.tools.plot.createActivity({
|
|
185
|
-
type: ActivityType.
|
|
220
|
+
type: ActivityType.Note,
|
|
186
221
|
title: "Task with links",
|
|
187
|
-
|
|
222
|
+
notes: [
|
|
223
|
+
{
|
|
224
|
+
content: "Click the links below to take action.",
|
|
225
|
+
links: [urlLink, callbackLink],
|
|
226
|
+
},
|
|
227
|
+
],
|
|
188
228
|
});
|
|
189
229
|
```
|
|
190
230
|
|
|
@@ -202,9 +242,14 @@ async activate(_priority: Pick<Priority, "id">) {
|
|
|
202
242
|
|
|
203
243
|
// Create activity with auth link
|
|
204
244
|
const activity = await this.tools.plot.createActivity({
|
|
205
|
-
type: ActivityType.
|
|
245
|
+
type: ActivityType.Note,
|
|
206
246
|
title: "Connect Google account",
|
|
207
|
-
|
|
247
|
+
notes: [
|
|
248
|
+
{
|
|
249
|
+
content: "Click below to connect your Google account and start syncing.",
|
|
250
|
+
links: [authLink],
|
|
251
|
+
},
|
|
252
|
+
],
|
|
208
253
|
});
|
|
209
254
|
|
|
210
255
|
// Store for later use
|
|
@@ -222,7 +267,7 @@ async onAuthComplete(authResult: { authToken: string }, provider: string) {
|
|
|
222
267
|
|
|
223
268
|
## Sync Pattern
|
|
224
269
|
|
|
225
|
-
Pattern for syncing external data
|
|
270
|
+
Pattern for syncing external data - demonstrates adding Notes to existing Activities:
|
|
226
271
|
|
|
227
272
|
```typescript
|
|
228
273
|
async startSync(calendarId: string): Promise<void> {
|
|
@@ -236,9 +281,30 @@ async startSync(calendarId: string): Promise<void> {
|
|
|
236
281
|
);
|
|
237
282
|
}
|
|
238
283
|
|
|
239
|
-
async handleEvent(
|
|
240
|
-
|
|
241
|
-
|
|
284
|
+
async handleEvent(
|
|
285
|
+
incomingActivity: NewActivityWithNotes,
|
|
286
|
+
calendarId: string
|
|
287
|
+
): Promise<void> {
|
|
288
|
+
// Check if this activity already exists (using source for deduplication)
|
|
289
|
+
if (incomingActivity.source) {
|
|
290
|
+
const existing = await this.tools.plot.getActivityBySource(
|
|
291
|
+
incomingActivity.source
|
|
292
|
+
);
|
|
293
|
+
|
|
294
|
+
if (existing) {
|
|
295
|
+
// Add update as a Note to existing Activity (add message to thread)
|
|
296
|
+
if (incomingActivity.notes?.[0]?.content) {
|
|
297
|
+
await this.tools.plot.createNote({
|
|
298
|
+
activity: { id: existing.id },
|
|
299
|
+
content: incomingActivity.notes[0].content,
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
// Create new Activity with initial Note (new thread with first message)
|
|
307
|
+
await this.tools.plot.createActivity(incomingActivity);
|
|
242
308
|
}
|
|
243
309
|
|
|
244
310
|
async stopSync(calendarId: string): Promise<void> {
|
|
@@ -278,7 +344,12 @@ private async createCalendarSelectionActivity(
|
|
|
278
344
|
await this.tools.plot.createActivity({
|
|
279
345
|
type: ActivityType.Note,
|
|
280
346
|
title: "Which calendars would you like to connect?",
|
|
281
|
-
|
|
347
|
+
notes: [
|
|
348
|
+
{
|
|
349
|
+
content: "Select the calendars you want to sync:",
|
|
350
|
+
links,
|
|
351
|
+
},
|
|
352
|
+
],
|
|
282
353
|
});
|
|
283
354
|
}
|
|
284
355
|
|
|
@@ -334,9 +405,14 @@ async syncBatch(args: any, resourceId: string): Promise<void> {
|
|
|
334
405
|
// Process one batch (keep under time limit)
|
|
335
406
|
const result = await this.fetchBatch(state.nextPageToken);
|
|
336
407
|
|
|
337
|
-
// Process results
|
|
408
|
+
// Process results (create activities with Notes)
|
|
338
409
|
for (const item of result.items) {
|
|
339
|
-
await this.tools.plot.createActivity(
|
|
410
|
+
await this.tools.plot.createActivity({
|
|
411
|
+
type: ActivityType.Note,
|
|
412
|
+
title: item.title,
|
|
413
|
+
source: `external:${item.id}`, // For deduplication
|
|
414
|
+
notes: [{ content: item.description }],
|
|
415
|
+
});
|
|
340
416
|
}
|
|
341
417
|
|
|
342
418
|
if (result.nextPageToken) {
|
|
@@ -357,7 +433,12 @@ async syncBatch(args: any, resourceId: string): Promise<void> {
|
|
|
357
433
|
// Optionally notify user of completion
|
|
358
434
|
await this.tools.plot.createActivity({
|
|
359
435
|
type: ActivityType.Note,
|
|
360
|
-
|
|
436
|
+
title: "Sync complete",
|
|
437
|
+
notes: [
|
|
438
|
+
{
|
|
439
|
+
content: `Successfully processed ${state.itemsProcessed + result.items.length} items.`,
|
|
440
|
+
},
|
|
441
|
+
],
|
|
361
442
|
});
|
|
362
443
|
}
|
|
363
444
|
}
|
|
@@ -375,7 +456,12 @@ try {
|
|
|
375
456
|
|
|
376
457
|
await this.tools.plot.createActivity({
|
|
377
458
|
type: ActivityType.Note,
|
|
378
|
-
|
|
459
|
+
title: "Operation failed",
|
|
460
|
+
notes: [
|
|
461
|
+
{
|
|
462
|
+
content: `Failed to complete operation: ${error.message}`,
|
|
463
|
+
},
|
|
464
|
+
],
|
|
379
465
|
});
|
|
380
466
|
}
|
|
381
467
|
```
|
|
@@ -384,7 +470,10 @@ try {
|
|
|
384
470
|
|
|
385
471
|
- **Don't use instance variables for state** - Anything stored in memory is lost after function execution. Always use the Store tool for data that needs to persist.
|
|
386
472
|
- **Processing self-created activities** - Other users may change an Activity created by the twist, resulting in an \`activity\` call. Be sure to check the \`changes === null\` and/or \`activity.author.id !== this.id\` to avoid re-processing.
|
|
387
|
-
-
|
|
473
|
+
- **Always create Activities with Notes** - See "Understanding Activities and Notes" section above for the thread/message pattern and decision tree.
|
|
474
|
+
- **Use correct Activity types** - Most should be `ActivityType.Note`. Only use `Action` for tasks with `doneAt`, and `Event` for items with `start`/`end`.
|
|
475
|
+
- **Use `source` field for deduplication** - Always include `source` when syncing external data to enable safe, idempotent operations.
|
|
476
|
+
- **Add Notes to existing Activities** - Check for existing Activities with `getActivityBySource()` before creating new ones. Think thread replies, not new threads.
|
|
388
477
|
- Tools are declared in the `build` method and accessed via `this.tools.toolName` in twist methods.
|
|
389
478
|
- **Don't forget runtime limits** - Each execution has ~10 seconds. Break long operations into batches with the Tasks tool. Process enough items per batch to be efficient, but few enough to stay under time limits.
|
|
390
479
|
- **Always use Callbacks tool for persistent references** - Direct function references don't survive worker restarts.
|
package/bin/utils/bundle.js
CHANGED
|
@@ -76,6 +76,46 @@ async function bundleTwist(twistPath, options = {}) {
|
|
|
76
76
|
sourcemap,
|
|
77
77
|
minify,
|
|
78
78
|
logLevel: "silent",
|
|
79
|
+
conditions: ["@plotday/source"],
|
|
80
|
+
// Mark Node.js built-ins as external - they'll be provided by Cloudflare Workers' nodejs_compat
|
|
81
|
+
external: [
|
|
82
|
+
"node:*",
|
|
83
|
+
"buffer",
|
|
84
|
+
"events",
|
|
85
|
+
"stream",
|
|
86
|
+
"util",
|
|
87
|
+
"http",
|
|
88
|
+
"https",
|
|
89
|
+
"url",
|
|
90
|
+
"zlib",
|
|
91
|
+
"crypto",
|
|
92
|
+
"path",
|
|
93
|
+
"fs",
|
|
94
|
+
"os",
|
|
95
|
+
"net",
|
|
96
|
+
"tls",
|
|
97
|
+
"dns",
|
|
98
|
+
"dgram",
|
|
99
|
+
"child_process",
|
|
100
|
+
"cluster",
|
|
101
|
+
"readline",
|
|
102
|
+
"repl",
|
|
103
|
+
"tty",
|
|
104
|
+
"vm",
|
|
105
|
+
"querystring",
|
|
106
|
+
"string_decoder",
|
|
107
|
+
"punycode",
|
|
108
|
+
"process",
|
|
109
|
+
"assert",
|
|
110
|
+
"constants",
|
|
111
|
+
"module",
|
|
112
|
+
"perf_hooks",
|
|
113
|
+
"worker_threads",
|
|
114
|
+
"async_hooks",
|
|
115
|
+
"timers",
|
|
116
|
+
"inspector",
|
|
117
|
+
"v8",
|
|
118
|
+
],
|
|
79
119
|
});
|
|
80
120
|
// Check for errors
|
|
81
121
|
if (result.errors.length > 0) {
|
package/bin/utils/bundle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../cli/utils/bundle.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,
|
|
1
|
+
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../cli/utils/bundle.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,kCA+GC;AAzID,iDAAmC;AACnC,uCAAyB;AACzB,2CAA6B;AAa7B;;;;;;;;;;GAUG;AACI,KAAK,UAAU,WAAW,CAC/B,SAAiB,EACjB,UAAyB,EAAE;IAE3B,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAErD,6BAA6B;IAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,wBAAwB;IACxB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAC3D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,yEAAyE,CAC1E,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/C,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,sBAAsB;IACtB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC;QACjC,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;QACxC,SAAS;QACT,MAAM;QACN,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE,CAAC,iBAAiB,CAAC;QAC/B,gGAAgG;QAChG,QAAQ,EAAE;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,MAAM;YACN,MAAM;YACN,OAAO;YACP,KAAK;YACL,MAAM;YACN,QAAQ;YACR,MAAM;YACN,IAAI;YACJ,IAAI;YACJ,KAAK;YACL,KAAK;YACL,KAAK;YACL,OAAO;YACP,eAAe;YACf,SAAS;YACT,UAAU;YACV,MAAM;YACN,KAAK;YACL,IAAI;YACJ,aAAa;YACb,gBAAgB;YAChB,UAAU;YACV,SAAS;YACT,QAAQ;YACR,WAAW;YACX,QAAQ;YACR,YAAY;YACZ,gBAAgB;YAChB,aAAa;YACb,QAAQ;YACR,WAAW;YACX,IAAI;SACL;KACF,CAAC,CAAC;IAEH,mBAAmB;IACnB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM;aAChC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;aACzE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,8BAA8B,aAAa,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,mBAAmB;IACnB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAClC,CAAC,IAAI,EAAE,EAAE,CACP,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,CAAC,IAAI,EAAE,CACjE,CAAC;IAEF,wBAAwB;IACxB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAElD,kCAAkC;IAClC,IAAI,gBAAoC,CAAC;IACzC,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC1D,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,gBAAgB,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI;QACJ,SAAS,EAAE,gBAAgB;QAC3B,QAAQ;KACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Network error handling utility for Twister CLI
|
|
4
|
+
* Converts technical fetch/network errors into user-friendly messages
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.handleNetworkError = handleNetworkError;
|
|
8
|
+
exports.formatNetworkError = formatNetworkError;
|
|
9
|
+
/**
|
|
10
|
+
* Checks if an error is a network-related error
|
|
11
|
+
*/
|
|
12
|
+
function isNetworkError(error) {
|
|
13
|
+
if (error && typeof error === "object") {
|
|
14
|
+
const err = error;
|
|
15
|
+
// Check for common network error codes
|
|
16
|
+
if (err.code) {
|
|
17
|
+
return [
|
|
18
|
+
"ECONNREFUSED",
|
|
19
|
+
"ENOTFOUND",
|
|
20
|
+
"ETIMEDOUT",
|
|
21
|
+
"ECONNRESET",
|
|
22
|
+
"ENETUNREACH",
|
|
23
|
+
"EAI_AGAIN",
|
|
24
|
+
].includes(err.code);
|
|
25
|
+
}
|
|
26
|
+
// Check for fetch failed errors
|
|
27
|
+
if (err.cause && typeof err.cause === "object") {
|
|
28
|
+
const cause = err.cause;
|
|
29
|
+
return cause.code && typeof cause.code === "string";
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Extracts the error code from a network error
|
|
36
|
+
*/
|
|
37
|
+
function getErrorCode(error) {
|
|
38
|
+
if (error && typeof error === "object") {
|
|
39
|
+
const err = error;
|
|
40
|
+
if (err.code)
|
|
41
|
+
return err.code;
|
|
42
|
+
if (err.cause && typeof err.cause === "object") {
|
|
43
|
+
return err.cause.code;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Handles network errors and returns user-friendly error information
|
|
50
|
+
*/
|
|
51
|
+
function handleNetworkError(error, context) {
|
|
52
|
+
// Handle HTTP Response errors (non-2xx responses)
|
|
53
|
+
if (error && typeof error === "object" && "status" in error) {
|
|
54
|
+
const status = error.status;
|
|
55
|
+
if (typeof status === "number") {
|
|
56
|
+
switch (true) {
|
|
57
|
+
case status === 401 || status === 403:
|
|
58
|
+
return {
|
|
59
|
+
message: "Authentication failed. Please log in again.",
|
|
60
|
+
shouldRetry: false,
|
|
61
|
+
};
|
|
62
|
+
case status === 404:
|
|
63
|
+
return {
|
|
64
|
+
message: "API endpoint not found. You may need to update your CLI.",
|
|
65
|
+
shouldRetry: false,
|
|
66
|
+
};
|
|
67
|
+
case status === 429:
|
|
68
|
+
return {
|
|
69
|
+
message: "Too many requests. Please wait a moment and try again.",
|
|
70
|
+
shouldRetry: true,
|
|
71
|
+
};
|
|
72
|
+
case status >= 500:
|
|
73
|
+
return {
|
|
74
|
+
message: "Plot API is experiencing issues. Please try again later.",
|
|
75
|
+
shouldRetry: true,
|
|
76
|
+
};
|
|
77
|
+
default:
|
|
78
|
+
return {
|
|
79
|
+
message: `Request failed with status ${status}. Please try again later.`,
|
|
80
|
+
shouldRetry: true,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Handle network connectivity errors
|
|
86
|
+
if (isNetworkError(error)) {
|
|
87
|
+
const code = getErrorCode(error);
|
|
88
|
+
switch (code) {
|
|
89
|
+
case "ECONNREFUSED":
|
|
90
|
+
return {
|
|
91
|
+
message: "Cannot connect to Plot API. Please check your internet connection or try again later.",
|
|
92
|
+
details: context,
|
|
93
|
+
shouldRetry: true,
|
|
94
|
+
};
|
|
95
|
+
case "ENOTFOUND":
|
|
96
|
+
return {
|
|
97
|
+
message: "Cannot reach Plot API. Please check your internet connection.",
|
|
98
|
+
details: context,
|
|
99
|
+
shouldRetry: true,
|
|
100
|
+
};
|
|
101
|
+
case "ETIMEDOUT":
|
|
102
|
+
case "ECONNRESET":
|
|
103
|
+
return {
|
|
104
|
+
message: "Connection to Plot API timed out. Please try again later.",
|
|
105
|
+
details: context,
|
|
106
|
+
shouldRetry: true,
|
|
107
|
+
};
|
|
108
|
+
case "ENETUNREACH":
|
|
109
|
+
case "EAI_AGAIN":
|
|
110
|
+
return {
|
|
111
|
+
message: "Network unreachable. Please check your internet connection.",
|
|
112
|
+
details: context,
|
|
113
|
+
shouldRetry: true,
|
|
114
|
+
};
|
|
115
|
+
default:
|
|
116
|
+
return {
|
|
117
|
+
message: "Network error occurred. Please check your internet connection or try again later.",
|
|
118
|
+
details: context,
|
|
119
|
+
shouldRetry: true,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Handle timeout errors from AbortController
|
|
124
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
125
|
+
return {
|
|
126
|
+
message: "Request timed out. Please try again later.",
|
|
127
|
+
details: context,
|
|
128
|
+
shouldRetry: true,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
// Handle generic errors
|
|
132
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
133
|
+
return {
|
|
134
|
+
message: "An unexpected error occurred. Please try again later.",
|
|
135
|
+
details: errorMessage,
|
|
136
|
+
shouldRetry: true,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Formats a network error for display to the user
|
|
141
|
+
*/
|
|
142
|
+
function formatNetworkError(error, context) {
|
|
143
|
+
const result = handleNetworkError(error, context);
|
|
144
|
+
if (result.details) {
|
|
145
|
+
return `${result.message}\n${result.details}`;
|
|
146
|
+
}
|
|
147
|
+
return result.message;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=network-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-error.js","sourceRoot":"","sources":["../../cli/utils/network-error.ts"],"names":[],"mappings":"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"}
|