@keystrokehq/keystroke 0.0.50 → 0.0.51

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 (63) hide show
  1. package/dist/action.cjs +1 -1
  2. package/dist/action.d.cts +2 -2
  3. package/dist/action.d.mts +2 -2
  4. package/dist/action.mjs +1 -1
  5. package/dist/agent.cjs +3 -3
  6. package/dist/agent.d.cts +3 -3
  7. package/dist/agent.d.mts +3 -3
  8. package/dist/agent.mjs +3 -3
  9. package/dist/config.d.cts +1 -1
  10. package/dist/config.d.mts +1 -1
  11. package/dist/credentials.cjs +1 -1
  12. package/dist/credentials.d.cts +1 -1
  13. package/dist/credentials.d.mts +1 -1
  14. package/dist/credentials.mjs +1 -1
  15. package/dist/{dist-CDXleBv_.cjs → dist-BI2zfNX7.cjs} +552 -7
  16. package/dist/dist-BI2zfNX7.cjs.map +1 -0
  17. package/dist/{dist-K3f_Uqb2.mjs → dist-BqkD0-YR.mjs} +3 -3
  18. package/dist/{dist-K3f_Uqb2.mjs.map → dist-BqkD0-YR.mjs.map} +1 -1
  19. package/dist/{dist-CnoekdhF.mjs → dist-C-ypbryp.mjs} +3 -3
  20. package/dist/{dist-CnoekdhF.mjs.map → dist-C-ypbryp.mjs.map} +1 -1
  21. package/dist/{dist-D3ZYp8vx.mjs → dist-DjygQb0m.mjs} +552 -7
  22. package/dist/dist-DjygQb0m.mjs.map +1 -0
  23. package/dist/{dist-C5-XNBIu.cjs → dist-DlgA_osF.cjs} +3 -3
  24. package/dist/{dist-C5-XNBIu.cjs.map → dist-DlgA_osF.cjs.map} +1 -1
  25. package/dist/{dist-BSIw7z3H.cjs → dist-XpP23zfG.cjs} +3 -3
  26. package/dist/{dist-BSIw7z3H.cjs.map → dist-XpP23zfG.cjs.map} +1 -1
  27. package/dist/{index-Bv6wUQQq.d.cts → index-BeEymXir.d.cts} +3 -3
  28. package/dist/index-BeEymXir.d.cts.map +1 -0
  29. package/dist/{index-Bv6wUQQq.d.mts → index-BeEymXir.d.mts} +3 -3
  30. package/dist/index-BeEymXir.d.mts.map +1 -0
  31. package/dist/{index-DFtUfWsz.d.mts → index-BspW44XX.d.mts} +2 -2
  32. package/dist/{index-B6B1jKGS.d.cts.map → index-BspW44XX.d.mts.map} +1 -1
  33. package/dist/{index-B6B1jKGS.d.cts → index-BwRlj7pv.d.cts} +2 -2
  34. package/dist/{index-DFtUfWsz.d.mts.map → index-BwRlj7pv.d.cts.map} +1 -1
  35. package/dist/{index-BZxFr9HO.d.cts → index-BzsZvKGT.d.mts} +2 -2
  36. package/dist/{index-BZxFr9HO.d.cts.map → index-BzsZvKGT.d.mts.map} +1 -1
  37. package/dist/{index-EM1DHFHj.d.mts → index-CtyQ1EEq.d.cts} +2 -2
  38. package/dist/{index-EM1DHFHj.d.mts.map → index-CtyQ1EEq.d.cts.map} +1 -1
  39. package/dist/{index-BsrdmWmN.d.mts → index-CvXJv3hY.d.mts} +2 -2
  40. package/dist/{index-BL9S9k2t.d.cts.map → index-CvXJv3hY.d.mts.map} +1 -1
  41. package/dist/{index-BL9S9k2t.d.cts → index-avLUReqf.d.cts} +2 -2
  42. package/dist/{index-BsrdmWmN.d.mts.map → index-avLUReqf.d.cts.map} +1 -1
  43. package/dist/{mistral-DP_vuGSg.cjs → mistral-BNA9P0aK.cjs} +2 -2
  44. package/dist/{mistral-DP_vuGSg.cjs.map → mistral-BNA9P0aK.cjs.map} +1 -1
  45. package/dist/{mistral-nX_EdAQA.mjs → mistral-_ZarQt8X.mjs} +2 -2
  46. package/dist/{mistral-nX_EdAQA.mjs.map → mistral-_ZarQt8X.mjs.map} +1 -1
  47. package/dist/{sse-ChkYIHuj.cjs → sse-BCRLZvq0.cjs} +2 -2
  48. package/dist/{sse-ChkYIHuj.cjs.map → sse-BCRLZvq0.cjs.map} +1 -1
  49. package/dist/{sse-CNr-B_rp.mjs → sse-CrM2YYD2.mjs} +2 -2
  50. package/dist/{sse-CNr-B_rp.mjs.map → sse-CrM2YYD2.mjs.map} +1 -1
  51. package/dist/trigger.cjs +1 -1
  52. package/dist/trigger.d.cts +2 -2
  53. package/dist/trigger.d.mts +2 -2
  54. package/dist/trigger.mjs +1 -1
  55. package/dist/workflow.cjs +1 -1
  56. package/dist/workflow.d.cts +1 -1
  57. package/dist/workflow.d.mts +1 -1
  58. package/dist/workflow.mjs +1 -1
  59. package/package.json +27 -27
  60. package/dist/dist-CDXleBv_.cjs.map +0 -1
  61. package/dist/dist-D3ZYp8vx.mjs.map +0 -1
  62. package/dist/index-Bv6wUQQq.d.cts.map +0 -1
  63. package/dist/index-Bv6wUQQq.d.mts.map +0 -1
@@ -1,16 +1,560 @@
1
1
  let zod = require("zod");
2
2
  let node_async_hooks = require("node:async_hooks");
3
3
  //#region ../shared/dist/index.mjs
4
- /** URL segment reserved for global (non-org) routes — cannot be used as an org slug. */
5
- const RESERVED_ORGANIZATION_SLUGS = new Set([
6
- "api",
4
+ /** Auth, session, and account-entry URL segments. */
5
+ const AUTH_ACCOUNT_SLUGS = [
6
+ "2fa",
7
+ "accept-invite",
8
+ "auth",
9
+ "authorize",
10
+ "callback",
11
+ "callbacks",
12
+ "confirm-email",
13
+ "confirmation",
14
+ "connect",
7
15
  "device",
16
+ "email-verification",
17
+ "forgot-password",
18
+ "invite",
19
+ "invites",
8
20
  "login",
21
+ "logout",
22
+ "magic-link",
23
+ "mfa",
24
+ "oauth",
9
25
  "onboarding",
26
+ "password",
27
+ "recovery",
28
+ "register",
29
+ "reset-password",
30
+ "saml",
31
+ "session",
32
+ "sessions",
33
+ "sign-in",
34
+ "sign-up",
35
+ "signin",
36
+ "signout",
37
+ "signup",
38
+ "sso",
39
+ "token",
40
+ "tokens",
41
+ "unlink",
42
+ "verify",
43
+ "verify-email"
44
+ ];
45
+ /** Org, workspace, billing, and account-management URL segments. */
46
+ const ORG_ACCOUNT_SLUGS = [
47
+ "account",
48
+ "accounts",
49
+ "billing",
50
+ "console",
51
+ "invoice",
52
+ "invoices",
53
+ "member",
54
+ "members",
55
+ "me",
56
+ "org",
10
57
  "organization",
11
- "signup"
58
+ "organizations",
59
+ "orgs",
60
+ "payment",
61
+ "payments",
62
+ "plan",
63
+ "plans",
64
+ "portal",
65
+ "preferences",
66
+ "profile",
67
+ "settings",
68
+ "subscription",
69
+ "subscriptions",
70
+ "team",
71
+ "teams",
72
+ "upgrade",
73
+ "usage",
74
+ "user",
75
+ "users",
76
+ "workspace",
77
+ "workspaces"
78
+ ];
79
+ /** Product surfaces, resource types, and in-app navigation segments. */
80
+ const PRODUCT_SLUGS = [
81
+ "action",
82
+ "actions",
83
+ "activity",
84
+ "agent",
85
+ "agents",
86
+ "analytics",
87
+ "app",
88
+ "apps",
89
+ "artifact",
90
+ "artifacts",
91
+ "assistant",
92
+ "assistants",
93
+ "audit",
94
+ "audit-log",
95
+ "automation",
96
+ "automations",
97
+ "branch",
98
+ "branches",
99
+ "canvas",
100
+ "chat",
101
+ "chats",
102
+ "connection",
103
+ "connections",
104
+ "create",
105
+ "credential",
106
+ "credentials",
107
+ "dashboard",
108
+ "deployment",
109
+ "deployments",
110
+ "examples",
111
+ "execute",
112
+ "execution",
113
+ "executions",
114
+ "explore",
115
+ "get-started",
116
+ "history",
117
+ "inbox",
118
+ "inspector",
119
+ "integration",
120
+ "integrations",
121
+ "library",
122
+ "logs",
123
+ "marketplace",
124
+ "mcp",
125
+ "mcps",
126
+ "new",
127
+ "notifications",
128
+ "observe",
129
+ "plugin",
130
+ "plugins",
131
+ "primitive",
132
+ "primitives",
133
+ "project",
134
+ "projects",
135
+ "recents",
136
+ "registry",
137
+ "reports",
138
+ "run",
139
+ "runs",
140
+ "runtime",
141
+ "runtimes",
142
+ "sandbox",
143
+ "sandboxes",
144
+ "search",
145
+ "skill",
146
+ "skills",
147
+ "templates",
148
+ "thread",
149
+ "threads",
150
+ "trigger",
151
+ "triggers",
152
+ "version",
153
+ "versions",
154
+ "workflow",
155
+ "workflows"
156
+ ];
157
+ /** Marketing, docs, company, and go-to-market URL segments. */
158
+ const MARKETING_SITE_SLUGS = [
159
+ "about",
160
+ "affiliates",
161
+ "ai",
162
+ "announcements",
163
+ "anthropic",
164
+ "blog",
165
+ "book-demo",
166
+ "brand",
167
+ "campaigns",
168
+ "career",
169
+ "careers",
170
+ "case-studies",
171
+ "casestudies",
172
+ "changelog",
173
+ "chatgpt",
174
+ "chrome-extension",
175
+ "claude",
176
+ "codex",
177
+ "community",
178
+ "company",
179
+ "compare",
180
+ "contact",
181
+ "contribute",
182
+ "creators",
183
+ "customers",
184
+ "demo",
185
+ "demos",
186
+ "discord",
187
+ "docs",
188
+ "documentation",
189
+ "download",
190
+ "downloads",
191
+ "dust",
192
+ "emerging-talent",
193
+ "engineering-blog",
194
+ "enterprise",
195
+ "events",
196
+ "experts",
197
+ "extension",
198
+ "faq",
199
+ "faqs",
200
+ "features",
201
+ "forum",
202
+ "glean",
203
+ "grok",
204
+ "guide",
205
+ "guides",
206
+ "gumloop",
207
+ "handbook",
208
+ "help",
209
+ "help-center",
210
+ "home",
211
+ "how-it-works",
212
+ "howitworks",
213
+ "inspo",
214
+ "intern",
215
+ "investors",
216
+ "jobs",
217
+ "keystroke",
218
+ "legal",
219
+ "lindy",
220
+ "llm",
221
+ "llms",
222
+ "love",
223
+ "make",
224
+ "manifesto",
225
+ "media",
226
+ "merch",
227
+ "mission",
228
+ "mobile",
229
+ "models",
230
+ "n8n",
231
+ "news",
232
+ "newsroom",
233
+ "open",
234
+ "open-claw",
235
+ "open-source",
236
+ "openai",
237
+ "our-story",
238
+ "overview",
239
+ "partners",
240
+ "pi",
241
+ "pipedream",
242
+ "platform",
243
+ "press",
244
+ "press-kit",
245
+ "pricing",
246
+ "privacy",
247
+ "product",
248
+ "products",
249
+ "provider",
250
+ "providers",
251
+ "quick-start",
252
+ "quickstart",
253
+ "refer",
254
+ "relay",
255
+ "relay-app",
256
+ "reporting",
257
+ "request-demo",
258
+ "resources",
259
+ "roadmap",
260
+ "schedule-demo",
261
+ "security",
262
+ "solutions",
263
+ "stack-ai",
264
+ "stackai",
265
+ "startup",
266
+ "startups",
267
+ "status",
268
+ "stories",
269
+ "story",
270
+ "students",
271
+ "support",
272
+ "swag",
273
+ "switch",
274
+ "talent",
275
+ "terms",
276
+ "testimonials",
277
+ "thesis",
278
+ "tines",
279
+ "trust",
280
+ "tutorials",
281
+ "university",
282
+ "use-case",
283
+ "use-cases",
284
+ "usecases",
285
+ "versus",
286
+ "vellum",
287
+ "vs",
288
+ "webinars",
289
+ "workato",
290
+ "xai",
291
+ "yc",
292
+ "zapier"
293
+ ];
294
+ /** Integrations, competitors, and partner brand slugs (marketing / integration pages). */
295
+ const INTEGRATION_BRAND_SLUGS = [
296
+ "airtable",
297
+ "asana",
298
+ "aws",
299
+ "azure",
300
+ "bun",
301
+ "confluence",
302
+ "copilot",
303
+ "cursor",
304
+ "databricks",
305
+ "figma",
306
+ "firebase",
307
+ "fly",
308
+ "gcp",
309
+ "gemini",
310
+ "github",
311
+ "gitlab",
312
+ "gmail",
313
+ "heroku",
314
+ "hubspot",
315
+ "huggingface",
316
+ "jira",
317
+ "linear",
318
+ "mailchimp",
319
+ "meta",
320
+ "mistral",
321
+ "mixmax",
322
+ "monday",
323
+ "netlify",
324
+ "neon",
325
+ "notion",
326
+ "npm",
327
+ "outlook",
328
+ "outreach",
329
+ "perplexity",
330
+ "planetscale",
331
+ "pnpm",
332
+ "postmark",
333
+ "ramp",
334
+ "railway",
335
+ "render",
336
+ "resend",
337
+ "salesforce",
338
+ "segment",
339
+ "sendgrid",
340
+ "shopify",
341
+ "slack",
342
+ "snowflake",
343
+ "stripe",
344
+ "supabase",
345
+ "terraform",
346
+ "trello",
347
+ "turso",
348
+ "twilio",
349
+ "typeform",
350
+ "vercel",
351
+ "vscode",
352
+ "windsurf",
353
+ "yarn"
354
+ ];
355
+ /** Company, team, and department landing-page segments. */
356
+ const COMPANY_TEAM_SLUGS = [
357
+ "engineers",
358
+ "engineering",
359
+ "executives",
360
+ "hc",
361
+ "intern",
362
+ "it",
363
+ "leadership",
364
+ "marketing",
365
+ "ops",
366
+ "revops",
367
+ "sales",
368
+ "services",
369
+ "tech"
370
+ ];
371
+ /** Legal, trust, compliance, and policy URL segments. */
372
+ const LEGAL_TRUST_SLUGS = [
373
+ "accessibility",
374
+ "agreement",
375
+ "a11y",
376
+ "bug-bounty",
377
+ "compliance",
378
+ "cookie-policy",
379
+ "cookies",
380
+ "disclose",
381
+ "dpa",
382
+ "eula",
383
+ "gdpr",
384
+ "hipaa",
385
+ "iso",
386
+ "msa",
387
+ "pci",
388
+ "responsible-disclosure",
389
+ "sla",
390
+ "soc2",
391
+ "tos",
392
+ "trust-center",
393
+ "trustcenter",
394
+ "vulnerability"
395
+ ];
396
+ /** Developer, API, CLI, and technical URL segments. */
397
+ const DEVELOPER_TECH_SLUGS = [
398
+ "api",
399
+ "api-docs",
400
+ "cli",
401
+ "code",
402
+ "config",
403
+ "developer",
404
+ "developer-tools",
405
+ "developers",
406
+ "dev-tools",
407
+ "devtools",
408
+ "dev",
409
+ "dev-states",
410
+ "graphql",
411
+ "graphql-playground",
412
+ "mcp-server",
413
+ "mcp-servers",
414
+ "openapi",
415
+ "sdk",
416
+ "swagger"
417
+ ];
418
+ /** Infra, ops, static assets, and system URL segments. */
419
+ const INFRA_SYSTEM_SLUGS = [
420
+ "acme-challenge",
421
+ "admin",
422
+ "apple-app-site-association",
423
+ "assets",
424
+ "batch",
425
+ "cache",
426
+ "cdn",
427
+ "cron",
428
+ "debug",
429
+ "error",
430
+ "errors",
431
+ "favicon",
432
+ "feed",
433
+ "files",
434
+ "health",
435
+ "healthcheck",
436
+ "healthz",
437
+ "hooks",
438
+ "internal",
439
+ "item",
440
+ "manifest",
441
+ "metrics",
442
+ "null",
443
+ "ping",
444
+ "prod",
445
+ "public",
446
+ "redirect",
447
+ "robots",
448
+ "rpc",
449
+ "rss",
450
+ "sharer",
451
+ "sitemap",
452
+ "staging",
453
+ "static",
454
+ "storage",
455
+ "test",
456
+ "undefined",
457
+ "universal",
458
+ "webhooks",
459
+ "well-known",
460
+ "www"
461
+ ];
462
+ /** Reserved slugs that are valid org names in theory but blocked for routing safety. */
463
+ const ROUTING_SAFETY_SLUGS = [
464
+ "alpha",
465
+ "anonymous",
466
+ "archive",
467
+ "archived",
468
+ "beta",
469
+ "clone",
470
+ "copy",
471
+ "default",
472
+ "deleted",
473
+ "demo-org",
474
+ "draft",
475
+ "drafts",
476
+ "duplicate",
477
+ "early-access",
478
+ "embed",
479
+ "embedded",
480
+ "export",
481
+ "fork",
482
+ "free",
483
+ "guest",
484
+ "import",
485
+ "index",
486
+ "list",
487
+ "manage",
488
+ "moderator",
489
+ "newsletter",
490
+ "owner",
491
+ "preview",
492
+ "previews",
493
+ "private",
494
+ "pro",
495
+ "public-api",
496
+ "publish",
497
+ "published",
498
+ "queue",
499
+ "remove",
500
+ "root",
501
+ "sample",
502
+ "samples",
503
+ "selection",
504
+ "share",
505
+ "shared",
506
+ "sponsor",
507
+ "sponsors",
508
+ "sponsorship",
509
+ "subscribe",
510
+ "super",
511
+ "superuser",
512
+ "system",
513
+ "sys",
514
+ "test-org",
515
+ "trash",
516
+ "unpublish",
517
+ "unsubscribe",
518
+ "upload",
519
+ "uploads",
520
+ "waitlist",
521
+ "widget",
522
+ "widgets",
523
+ "worker",
524
+ "workers"
525
+ ];
526
+ /**
527
+ * URL segments reserved for global (non-org) routes — cannot be used as an org slug.
528
+ * Prefer adding new entries to the category arrays above; the Set is the enforcement surface.
529
+ */
530
+ const RESERVED_ORGANIZATION_SLUGS = new Set([
531
+ ...AUTH_ACCOUNT_SLUGS,
532
+ ...ORG_ACCOUNT_SLUGS,
533
+ ...PRODUCT_SLUGS,
534
+ ...MARKETING_SITE_SLUGS,
535
+ ...INTEGRATION_BRAND_SLUGS,
536
+ ...COMPANY_TEAM_SLUGS,
537
+ ...LEGAL_TRUST_SLUGS,
538
+ ...DEVELOPER_TECH_SLUGS,
539
+ ...INFRA_SYSTEM_SLUGS,
540
+ ...ROUTING_SAFETY_SLUGS
12
541
  ]);
13
- const OrganizationSlugSchema = zod.z.string().trim().toLowerCase().min(2, "Slug must be at least 2 characters").max(64, "Slug must be at most 64 characters").regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/, "Use lowercase letters, numbers, and dashes only").refine((slug) => !RESERVED_ORGANIZATION_SLUGS.has(slug), "This slug is reserved");
542
+ /**
543
+ * Base slug format: lowercase, 2-64 chars, alphanumeric + dashes.
544
+ *
545
+ * IMPORTANT: this is the schema for *reading* slugs (persisted rows, API
546
+ * responses). It intentionally does NOT enforce the reserved-name list — an org
547
+ * created before a name became reserved must still parse on read. Use
548
+ * `ClaimableOrganizationSlugSchema` to validate slugs a user is trying to claim.
549
+ */
550
+ const OrganizationSlugSchema = zod.z.string().trim().toLowerCase().min(2, "Slug must be at least 2 characters").max(64, "Slug must be at most 64 characters").regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/, "Use lowercase letters, numbers, and dashes only");
551
+ /**
552
+ * Slug validation for *claiming* a slug (organization create/rename). Adds the
553
+ * reserved-name check on top of the base format. Never use this to parse
554
+ * existing org data, or pre-existing orgs whose slug later became reserved would
555
+ * fail to load.
556
+ */
557
+ const ClaimableOrganizationSlugSchema = OrganizationSlugSchema.refine((slug) => !RESERVED_ORGANIZATION_SLUGS.has(slug), "This slug is reserved");
14
558
  /** How a credential instance is stored (`credential_instances.auth_kind`). */
15
559
  const CredentialAuthKindSchema = zod.z.enum(["api_key", "oauth_managed"]);
16
560
  /** Where a credential instance is stored (`credential_instances.scope_type`). */
@@ -518,9 +1062,10 @@ zod.z.object({ organizations: zod.z.array(UserOrganizationSchema) });
518
1062
  zod.z.object({ organizationId: zod.z.string().min(1) });
519
1063
  zod.z.object({
520
1064
  name: zod.z.string().trim().min(1),
1065
+ /** Format-only at the wire boundary; reserved-name checks run in platform-database. */
521
1066
  slug: OrganizationSlugSchema.optional()
522
1067
  });
523
- zod.z.object({ slug: OrganizationSlugSchema });
1068
+ zod.z.object({ slug: ClaimableOrganizationSlugSchema });
524
1069
  zod.z.object({ organization: UserOrganizationSchema });
525
1070
  zod.z.object({ projects: zod.z.array(ProjectSchema) });
526
1071
  zod.z.object({ name: zod.z.string().trim().min(1) });
@@ -854,4 +1399,4 @@ Object.defineProperty(exports, "toCredentialRequirement", {
854
1399
  }
855
1400
  });
856
1401
 
857
- //# sourceMappingURL=dist-CDXleBv_.cjs.map
1402
+ //# sourceMappingURL=dist-BI2zfNX7.cjs.map