@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
  import { z } from "zod";
2
2
  import { AsyncLocalStorage } from "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 = 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 = 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 = z.enum(["api_key", "oauth_managed"]);
16
560
  /** Where a credential instance is stored (`credential_instances.scope_type`). */
@@ -518,9 +1062,10 @@ z.object({ organizations: z.array(UserOrganizationSchema) });
518
1062
  z.object({ organizationId: z.string().min(1) });
519
1063
  z.object({
520
1064
  name: 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
- z.object({ slug: OrganizationSlugSchema });
1068
+ z.object({ slug: ClaimableOrganizationSlugSchema });
524
1069
  z.object({ organization: UserOrganizationSchema });
525
1070
  z.object({ projects: z.array(ProjectSchema) });
526
1071
  z.object({ name: z.string().trim().min(1) });
@@ -729,4 +1274,4 @@ function resolveActionTool(action, options) {
729
1274
  //#endregion
730
1275
  export { credentialInputSchema as _, getActionCredentialRequirements as a, normalizeCredentialList as b, isStepInvocation as c, runOutsideActionExecution as d, runWithinActionExecution as f, credential as g, DEFAULT_CREDENTIAL_RESOLUTION_CHAIN as h, executeAction as i, registerWorkflowRunGetter as l, CREDENTIAL_SCOPE_LEVEL_TO_SCOPE_TYPE as m, createStepInvocation as n, getWorkflowRunHandle as o, CREDENTIAL_SCOPE_LEVELS as p, defineAction as r, isAction as s, actionCoreSchema as t, resolveActionTool as u, defineCredential as v, toCredentialRequirement as x, isCredentialInput as y };
731
1276
 
732
- //# sourceMappingURL=dist-D3ZYp8vx.mjs.map
1277
+ //# sourceMappingURL=dist-DjygQb0m.mjs.map