@agentuity/cli 0.0.101 → 0.0.102

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 (210) hide show
  1. package/AGENTS.md +19 -188
  2. package/bin/cli.ts +13 -6
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +41 -12
  5. package/dist/cli.js.map +1 -1
  6. package/dist/cmd/ai/index.d.ts.map +1 -1
  7. package/dist/cmd/ai/index.js +6 -1
  8. package/dist/cmd/ai/index.js.map +1 -1
  9. package/dist/cmd/ai/prompt/agent.d.ts +7 -0
  10. package/dist/cmd/ai/prompt/agent.d.ts.map +1 -1
  11. package/dist/cmd/ai/prompt/agent.js +12 -323
  12. package/dist/cmd/ai/prompt/agent.js.map +1 -1
  13. package/dist/cmd/ai/prompt/api.d.ts +7 -0
  14. package/dist/cmd/ai/prompt/api.d.ts.map +1 -1
  15. package/dist/cmd/ai/prompt/api.js +12 -260
  16. package/dist/cmd/ai/prompt/api.js.map +1 -1
  17. package/dist/cmd/ai/prompt/version.d.ts +35 -0
  18. package/dist/cmd/ai/prompt/version.d.ts.map +1 -0
  19. package/dist/cmd/ai/prompt/version.js +55 -0
  20. package/dist/cmd/ai/prompt/version.js.map +1 -0
  21. package/dist/cmd/ai/prompt/web.d.ts +7 -0
  22. package/dist/cmd/ai/prompt/web.d.ts.map +1 -1
  23. package/dist/cmd/ai/prompt/web.js +12 -283
  24. package/dist/cmd/ai/prompt/web.js.map +1 -1
  25. package/dist/cmd/ai/skills/generate.d.ts +3 -0
  26. package/dist/cmd/ai/skills/generate.d.ts.map +1 -0
  27. package/dist/cmd/ai/skills/generate.js +65 -0
  28. package/dist/cmd/ai/skills/generate.js.map +1 -0
  29. package/dist/cmd/ai/skills/generator.d.ts +4 -0
  30. package/dist/cmd/ai/skills/generator.d.ts.map +1 -0
  31. package/dist/cmd/ai/skills/generator.js +402 -0
  32. package/dist/cmd/ai/skills/generator.js.map +1 -0
  33. package/dist/cmd/ai/skills/index.d.ts +4 -0
  34. package/dist/cmd/ai/skills/index.d.ts.map +1 -0
  35. package/dist/cmd/ai/skills/index.js +21 -0
  36. package/dist/cmd/ai/skills/index.js.map +1 -0
  37. package/dist/cmd/auth/signup.d.ts.map +1 -1
  38. package/dist/cmd/auth/signup.js +1 -0
  39. package/dist/cmd/auth/signup.js.map +1 -1
  40. package/dist/cmd/build/entry-generator.d.ts.map +1 -1
  41. package/dist/cmd/build/entry-generator.js +40 -5
  42. package/dist/cmd/build/entry-generator.js.map +1 -1
  43. package/dist/cmd/build/vite/bun-dev-server.d.ts +7 -1
  44. package/dist/cmd/build/vite/bun-dev-server.d.ts.map +1 -1
  45. package/dist/cmd/build/vite/bun-dev-server.js +52 -26
  46. package/dist/cmd/build/vite/bun-dev-server.js.map +1 -1
  47. package/dist/cmd/build/vite/metadata-generator.d.ts.map +1 -1
  48. package/dist/cmd/build/vite/metadata-generator.js +58 -7
  49. package/dist/cmd/build/vite/metadata-generator.js.map +1 -1
  50. package/dist/cmd/build/vite/prompt-generator.d.ts +23 -0
  51. package/dist/cmd/build/vite/prompt-generator.d.ts.map +1 -0
  52. package/dist/cmd/build/vite/prompt-generator.js +123 -0
  53. package/dist/cmd/build/vite/prompt-generator.js.map +1 -0
  54. package/dist/cmd/build/vite/registry-generator.d.ts.map +1 -1
  55. package/dist/cmd/build/vite/registry-generator.js +28 -11
  56. package/dist/cmd/build/vite/registry-generator.js.map +1 -1
  57. package/dist/cmd/build/vite/server-bundler.d.ts +4 -0
  58. package/dist/cmd/build/vite/server-bundler.d.ts.map +1 -1
  59. package/dist/cmd/build/vite/server-bundler.js +45 -16
  60. package/dist/cmd/build/vite/server-bundler.js.map +1 -1
  61. package/dist/cmd/build/vite/vite-asset-server-config.d.ts.map +1 -1
  62. package/dist/cmd/build/vite/vite-asset-server-config.js +4 -0
  63. package/dist/cmd/build/vite/vite-asset-server-config.js.map +1 -1
  64. package/dist/cmd/build/vite/vite-builder.d.ts.map +1 -1
  65. package/dist/cmd/build/vite/vite-builder.js +99 -87
  66. package/dist/cmd/build/vite/vite-builder.js.map +1 -1
  67. package/dist/cmd/cloud/deploy.d.ts.map +1 -1
  68. package/dist/cmd/cloud/deploy.js +78 -27
  69. package/dist/cmd/cloud/deploy.js.map +1 -1
  70. package/dist/cmd/cloud/keyvalue/create-namespace.d.ts.map +1 -1
  71. package/dist/cmd/cloud/keyvalue/create-namespace.js +3 -1
  72. package/dist/cmd/cloud/keyvalue/create-namespace.js.map +1 -1
  73. package/dist/cmd/cloud/keyvalue/delete-namespace.d.ts.map +1 -1
  74. package/dist/cmd/cloud/keyvalue/delete-namespace.js +3 -1
  75. package/dist/cmd/cloud/keyvalue/delete-namespace.js.map +1 -1
  76. package/dist/cmd/cloud/keyvalue/delete.d.ts.map +1 -1
  77. package/dist/cmd/cloud/keyvalue/delete.js +3 -1
  78. package/dist/cmd/cloud/keyvalue/delete.js.map +1 -1
  79. package/dist/cmd/cloud/keyvalue/set.d.ts.map +1 -1
  80. package/dist/cmd/cloud/keyvalue/set.js +4 -2
  81. package/dist/cmd/cloud/keyvalue/set.js.map +1 -1
  82. package/dist/cmd/cloud/stream/get.d.ts.map +1 -1
  83. package/dist/cmd/cloud/stream/get.js +2 -13
  84. package/dist/cmd/cloud/stream/get.js.map +1 -1
  85. package/dist/cmd/cloud/vector/delete-namespace.d.ts +3 -0
  86. package/dist/cmd/cloud/vector/delete-namespace.d.ts.map +1 -0
  87. package/dist/cmd/cloud/vector/delete-namespace.js +77 -0
  88. package/dist/cmd/cloud/vector/delete-namespace.js.map +1 -0
  89. package/dist/cmd/cloud/vector/index.d.ts.map +1 -1
  90. package/dist/cmd/cloud/vector/index.js +21 -4
  91. package/dist/cmd/cloud/vector/index.js.map +1 -1
  92. package/dist/cmd/cloud/vector/list-namespaces.d.ts +3 -0
  93. package/dist/cmd/cloud/vector/list-namespaces.d.ts.map +1 -0
  94. package/dist/cmd/cloud/vector/list-namespaces.js +42 -0
  95. package/dist/cmd/cloud/vector/list-namespaces.js.map +1 -0
  96. package/dist/cmd/cloud/vector/stats.d.ts +3 -0
  97. package/dist/cmd/cloud/vector/stats.d.ts.map +1 -0
  98. package/dist/cmd/cloud/vector/stats.js +142 -0
  99. package/dist/cmd/cloud/vector/stats.js.map +1 -0
  100. package/dist/cmd/cloud/vector/upsert.d.ts +3 -0
  101. package/dist/cmd/cloud/vector/upsert.d.ts.map +1 -0
  102. package/dist/cmd/cloud/vector/upsert.js +192 -0
  103. package/dist/cmd/cloud/vector/upsert.js.map +1 -0
  104. package/dist/cmd/dev/file-watcher.d.ts.map +1 -1
  105. package/dist/cmd/dev/file-watcher.js +90 -31
  106. package/dist/cmd/dev/file-watcher.js.map +1 -1
  107. package/dist/cmd/dev/index.d.ts.map +1 -1
  108. package/dist/cmd/dev/index.js +213 -57
  109. package/dist/cmd/dev/index.js.map +1 -1
  110. package/dist/cmd/dev/skills.d.ts +10 -0
  111. package/dist/cmd/dev/skills.d.ts.map +1 -0
  112. package/dist/cmd/dev/skills.js +57 -0
  113. package/dist/cmd/dev/skills.js.map +1 -0
  114. package/dist/cmd/dev/sync.js +7 -7
  115. package/dist/cmd/dev/sync.js.map +1 -1
  116. package/dist/cmd/index.d.ts.map +1 -1
  117. package/dist/cmd/index.js +1 -0
  118. package/dist/cmd/index.js.map +1 -1
  119. package/dist/cmd/project/create.d.ts.map +1 -1
  120. package/dist/cmd/project/create.js +3 -0
  121. package/dist/cmd/project/create.js.map +1 -1
  122. package/dist/cmd/project/template-flow.d.ts +1 -0
  123. package/dist/cmd/project/template-flow.d.ts.map +1 -1
  124. package/dist/cmd/project/template-flow.js +30 -5
  125. package/dist/cmd/project/template-flow.js.map +1 -1
  126. package/dist/cmd/setup/index.d.ts.map +1 -1
  127. package/dist/cmd/setup/index.js +1 -0
  128. package/dist/cmd/setup/index.js.map +1 -1
  129. package/dist/cmd/upgrade/index.d.ts +15 -0
  130. package/dist/cmd/upgrade/index.d.ts.map +1 -1
  131. package/dist/cmd/upgrade/index.js +59 -4
  132. package/dist/cmd/upgrade/index.js.map +1 -1
  133. package/dist/domain.d.ts +45 -0
  134. package/dist/domain.d.ts.map +1 -0
  135. package/dist/domain.js +200 -0
  136. package/dist/domain.js.map +1 -0
  137. package/dist/schema-generator.d.ts +2 -0
  138. package/dist/schema-generator.d.ts.map +1 -1
  139. package/dist/schema-generator.js +18 -0
  140. package/dist/schema-generator.js.map +1 -1
  141. package/dist/steps.d.ts +1 -1
  142. package/dist/steps.d.ts.map +1 -1
  143. package/dist/steps.js +16 -5
  144. package/dist/steps.js.map +1 -1
  145. package/dist/tui/prompt.d.ts +1 -2
  146. package/dist/tui/prompt.d.ts.map +1 -1
  147. package/dist/tui/prompt.js +8 -4
  148. package/dist/tui/prompt.js.map +1 -1
  149. package/dist/tui.d.ts +16 -0
  150. package/dist/tui.d.ts.map +1 -1
  151. package/dist/tui.js +23 -2
  152. package/dist/tui.js.map +1 -1
  153. package/dist/types.d.ts +9 -2
  154. package/dist/types.d.ts.map +1 -1
  155. package/dist/types.js +3 -3
  156. package/dist/types.js.map +1 -1
  157. package/package.json +4 -4
  158. package/src/cli.ts +47 -12
  159. package/src/cmd/ai/index.ts +6 -1
  160. package/src/cmd/ai/prompt/agent.md +306 -0
  161. package/src/cmd/ai/prompt/agent.ts +12 -322
  162. package/src/cmd/ai/prompt/api.md +360 -0
  163. package/src/cmd/ai/prompt/api.ts +13 -260
  164. package/src/cmd/ai/prompt/version.ts +61 -0
  165. package/src/cmd/ai/prompt/web.md +509 -0
  166. package/src/cmd/ai/prompt/web.ts +12 -282
  167. package/src/cmd/ai/skills/generate.ts +75 -0
  168. package/src/cmd/ai/skills/generator.ts +519 -0
  169. package/src/cmd/ai/skills/index.ts +23 -0
  170. package/src/cmd/auth/signup.ts +1 -0
  171. package/src/cmd/build/entry-generator.ts +43 -7
  172. package/src/cmd/build/vite/bun-dev-server.ts +57 -27
  173. package/src/cmd/build/vite/metadata-generator.ts +73 -7
  174. package/src/cmd/build/vite/prompt-generator.ts +169 -0
  175. package/src/cmd/build/vite/registry-generator.ts +33 -10
  176. package/src/cmd/build/vite/server-bundler.ts +53 -22
  177. package/src/cmd/build/vite/vite-asset-server-config.ts +5 -0
  178. package/src/cmd/build/vite/vite-builder.ts +107 -87
  179. package/src/cmd/cloud/deploy.ts +99 -31
  180. package/src/cmd/cloud/keyvalue/create-namespace.ts +3 -1
  181. package/src/cmd/cloud/keyvalue/delete-namespace.ts +3 -1
  182. package/src/cmd/cloud/keyvalue/delete.ts +3 -1
  183. package/src/cmd/cloud/keyvalue/set.ts +4 -2
  184. package/src/cmd/cloud/stream/get.ts +2 -9
  185. package/src/cmd/cloud/vector/delete-namespace.ts +89 -0
  186. package/src/cmd/cloud/vector/index.ts +21 -4
  187. package/src/cmd/cloud/vector/list-namespaces.ts +46 -0
  188. package/src/cmd/cloud/vector/stats.ts +160 -0
  189. package/src/cmd/cloud/vector/upsert.ts +216 -0
  190. package/src/cmd/dev/file-watcher.ts +101 -32
  191. package/src/cmd/dev/index.ts +304 -111
  192. package/src/cmd/dev/skills.ts +82 -0
  193. package/src/cmd/dev/sync.ts +7 -7
  194. package/src/cmd/index.ts +1 -0
  195. package/src/cmd/project/create.ts +3 -0
  196. package/src/cmd/project/template-flow.ts +37 -5
  197. package/src/cmd/setup/index.ts +1 -0
  198. package/src/cmd/upgrade/index.ts +68 -4
  199. package/src/domain.ts +273 -0
  200. package/src/schema-generator.ts +23 -0
  201. package/src/steps.ts +16 -5
  202. package/src/tui/prompt.ts +11 -5
  203. package/src/tui.ts +21 -2
  204. package/src/types/md.d.ts +8 -0
  205. package/src/types.ts +12 -3
  206. package/dist/cmd/cloud/domain.d.ts +0 -17
  207. package/dist/cmd/cloud/domain.d.ts.map +0 -1
  208. package/dist/cmd/cloud/domain.js +0 -79
  209. package/dist/cmd/cloud/domain.js.map +0 -1
  210. package/src/cmd/cloud/domain.ts +0 -100
package/src/tui.ts CHANGED
@@ -52,7 +52,7 @@ export type {
52
52
  } from './tui/prompt';
53
53
 
54
54
  // Icons
55
- const ICONS = {
55
+ export const ICONS = {
56
56
  success: '✓',
57
57
  error: '✗',
58
58
  warning: '⚠',
@@ -831,7 +831,7 @@ function endsWithReset(str: string): boolean {
831
831
  * Handles explicit newlines and word wrapping
832
832
  * Preserves ANSI color codes across wrapped lines
833
833
  */
834
- function wrapText(text: string, maxWidth: number): string[] {
834
+ export function wrapText(text: string, maxWidth: number): string[] {
835
835
  const allLines: string[] = [];
836
836
 
837
837
  // First split by explicit newlines
@@ -1812,3 +1812,22 @@ export function table<T extends Record<string, unknown>>(
1812
1812
  console.log(output);
1813
1813
  }
1814
1814
  }
1815
+
1816
+ export function formatBytes(bytes: number): string {
1817
+ if (bytes === 0) return '0 B';
1818
+ if (bytes < 1024) return `${bytes} B`;
1819
+ if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(2)} KB`;
1820
+ if (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(2)} MB`;
1821
+ return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GB`;
1822
+ }
1823
+
1824
+ export function clearLastLines(n: number, s?: (v: string) => void) {
1825
+ const x = s ?? ((v: string) => process.stdout.write(v));
1826
+ for (let i = 0; i < n; i++) {
1827
+ x('\x1b[2K'); // clear line
1828
+ x('\x1b[0G'); // cursor to col 0
1829
+ if (i < n - 1) {
1830
+ x('\x1b[1A'); // move up
1831
+ }
1832
+ }
1833
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * TypeScript module declaration for importing .md files as strings.
3
+ * Bun automatically handles text file imports via its bundler.
4
+ */
5
+ declare module '*.md' {
6
+ const content: string;
7
+ export default content;
8
+ }
package/src/types.ts CHANGED
@@ -1,10 +1,13 @@
1
1
  import type { Logger } from '@agentuity/core';
2
- import { Deployment, BuildMetadataSchema as ServerBuildMetadataSchema } from '@agentuity/server';
2
+ import {
3
+ DeploymentConfig,
4
+ BuildMetadataSchema as ServerBuildMetadataSchema,
5
+ } from '@agentuity/server';
3
6
  import type * as z from 'zod';
4
7
  import { z as zod } from 'zod';
5
8
  import type { APIClient } from './api';
6
9
 
7
- export { Deployment };
10
+ export { DeploymentConfig };
8
11
 
9
12
  export type { Logger };
10
13
 
@@ -369,6 +372,7 @@ export function createSubcommand<
369
372
  prerequisites?: string[];
370
373
  pagination?: PaginationInfo;
371
374
  tags?: string[];
375
+ skipSkill?: boolean;
372
376
  webUrl?: WebUrl<R, O, A, Op>;
373
377
  schema?: A extends z.ZodType
374
378
  ? Op extends z.ZodType
@@ -413,6 +417,7 @@ export function createCommand<
413
417
  prerequisites?: string[];
414
418
  pagination?: PaginationInfo;
415
419
  tags?: string[];
420
+ skipSkill?: boolean;
416
421
  webUrl?: WebUrl<R, O, A, Op>;
417
422
  schema?: A extends z.ZodType
418
423
  ? Op extends z.ZodType
@@ -445,6 +450,7 @@ type CommandDefBase =
445
450
  banner?: boolean;
446
451
  executable?: boolean;
447
452
  skipUpgradeCheck?: boolean;
453
+ skipSkill?: boolean;
448
454
  examples?: CommandExample[];
449
455
  idempotent?: boolean;
450
456
  prerequisites?: string[];
@@ -462,6 +468,7 @@ type CommandDefBase =
462
468
  banner?: boolean;
463
469
  executable?: boolean;
464
470
  skipUpgradeCheck?: boolean;
471
+ skipSkill?: boolean;
465
472
  examples?: CommandExample[];
466
473
  idempotent?: boolean;
467
474
  prerequisites?: string[];
@@ -480,6 +487,7 @@ type SubcommandDefBase =
480
487
  aliases?: string[];
481
488
  toplevel?: boolean;
482
489
  banner?: boolean;
490
+ skipSkill?: boolean;
483
491
  examples?: CommandExample[];
484
492
  idempotent?: boolean;
485
493
  prerequisites?: string[];
@@ -496,6 +504,7 @@ type SubcommandDefBase =
496
504
  aliases?: string[];
497
505
  toplevel?: boolean;
498
506
  banner?: boolean;
507
+ skipSkill?: boolean;
499
508
  examples?: CommandExample[];
500
509
  idempotent?: boolean;
501
510
  prerequisites?: string[];
@@ -542,7 +551,7 @@ export const ProjectSchema = zod.object({
542
551
  projectId: zod.string().describe('the project id'),
543
552
  orgId: zod.string().describe('the organization id'),
544
553
  region: zod.string().describe('the region identifier that the project is deployed into'),
545
- deployment: Deployment.optional().describe('the deployment configuration'),
554
+ deployment: DeploymentConfig.optional().describe('the deployment configuration'),
546
555
  });
547
556
 
548
557
  export const BuildMetadataSchema = ServerBuildMetadataSchema;
@@ -1,17 +0,0 @@
1
- import type { Config } from '../../types';
2
- export interface DNSResult {
3
- domain: string;
4
- success: boolean;
5
- message?: string;
6
- }
7
- /**
8
- * This function will check for each of the custom domains and make sure they are correctly
9
- * configured in DNS
10
- *
11
- * @param projectId the project id
12
- * @param config Config
13
- * @param domains array of domains to check
14
- * @returns
15
- */
16
- export declare function checkCustomDomainForDNS(projectId: string, domains: string[], config?: Config | null): Promise<DNSResult[]>;
17
- //# sourceMappingURL=domain.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../src/cmd/cloud/domain.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,WAAW,SAAS;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AASD;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC5C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GACpB,OAAO,CAAC,SAAS,EAAE,CAAC,CAqEtB"}
@@ -1,79 +0,0 @@
1
- import * as dns from 'node:dns';
2
- import { StructuredError } from '@agentuity/core';
3
- const timeoutMs = 5000;
4
- const DNSTimeoutError = StructuredError('DNSTimeoutError', `DNS lookup timed out after ${timeoutMs}ms`);
5
- /**
6
- * This function will check for each of the custom domains and make sure they are correctly
7
- * configured in DNS
8
- *
9
- * @param projectId the project id
10
- * @param config Config
11
- * @param domains array of domains to check
12
- * @returns
13
- */
14
- export async function checkCustomDomainForDNS(projectId, domains, config) {
15
- const suffix = config?.overrides?.api_url?.includes('agentuity.io')
16
- ? 'agentuity.io'
17
- : 'agentuity.cloud';
18
- // FIXME: update to add the region into this
19
- const id = Bun.hash.xxHash64(projectId).toString(16);
20
- const proxy = `p${id}.${suffix}`;
21
- return Promise.all(domains.map(async (domain) => {
22
- try {
23
- let timeoutId;
24
- const timeoutPromise = new Promise((_, reject) => {
25
- timeoutId = setTimeout(() => {
26
- reject(new DNSTimeoutError());
27
- }, timeoutMs);
28
- });
29
- const result = await Promise.race([
30
- dns.promises.resolveCname(domain),
31
- timeoutPromise,
32
- ]).finally(() => {
33
- if (timeoutId)
34
- clearTimeout(timeoutId);
35
- });
36
- if (result.length) {
37
- if (result[0] === proxy) {
38
- return {
39
- domain,
40
- success: true,
41
- };
42
- }
43
- return {
44
- domain,
45
- success: false,
46
- message: `DNS record for ${domain} must have a CNAME record with the value: ${proxy}`,
47
- };
48
- }
49
- }
50
- catch (ex) {
51
- const _ex = ex;
52
- if (_ex.message?.includes('timed out')) {
53
- return {
54
- domain,
55
- success: false,
56
- message: `DNS lookup for ${domain} timed out after 5 seconds. Please check your DNS configuration.`,
57
- };
58
- }
59
- if (_ex.code !== 'ENOTFOUND') {
60
- const errMsg = ex instanceof Error
61
- ? ex.message
62
- : typeof ex === 'string'
63
- ? ex
64
- : JSON.stringify(ex);
65
- return {
66
- domain,
67
- success: false,
68
- message: `DNS returned an error resolving ${domain}: ${errMsg}`,
69
- };
70
- }
71
- }
72
- return {
73
- domain,
74
- success: false,
75
- message: `To enable the custom domain ${domain}, create a CNAME DNS record with the value: ${proxy} and a TTL of 600`,
76
- };
77
- }));
78
- }
79
- //# sourceMappingURL=domain.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"domain.js","sourceRoot":"","sources":["../../../src/cmd/cloud/domain.ts"],"names":[],"mappings":"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"}
@@ -1,100 +0,0 @@
1
- import * as dns from 'node:dns';
2
- import type { Config } from '../../types';
3
- import { StructuredError } from '@agentuity/core';
4
-
5
- export interface DNSResult {
6
- domain: string;
7
- success: boolean;
8
- message?: string;
9
- }
10
-
11
- const timeoutMs = 5000;
12
-
13
- const DNSTimeoutError = StructuredError(
14
- 'DNSTimeoutError',
15
- `DNS lookup timed out after ${timeoutMs}ms`
16
- );
17
-
18
- /**
19
- * This function will check for each of the custom domains and make sure they are correctly
20
- * configured in DNS
21
- *
22
- * @param projectId the project id
23
- * @param config Config
24
- * @param domains array of domains to check
25
- * @returns
26
- */
27
- export async function checkCustomDomainForDNS(
28
- projectId: string,
29
- domains: string[],
30
- config?: Config | null
31
- ): Promise<DNSResult[]> {
32
- const suffix = config?.overrides?.api_url?.includes('agentuity.io')
33
- ? 'agentuity.io'
34
- : 'agentuity.cloud';
35
- // FIXME: update to add the region into this
36
- const id = Bun.hash.xxHash64(projectId).toString(16);
37
- const proxy = `p${id}.${suffix}`;
38
-
39
- return Promise.all(
40
- domains.map(async (domain) => {
41
- try {
42
- let timeoutId: Timer | undefined;
43
-
44
- const timeoutPromise = new Promise<never>((_, reject) => {
45
- timeoutId = setTimeout(() => {
46
- reject(new DNSTimeoutError());
47
- }, timeoutMs);
48
- });
49
-
50
- const result = await Promise.race([
51
- dns.promises.resolveCname(domain),
52
- timeoutPromise,
53
- ]).finally(() => {
54
- if (timeoutId) clearTimeout(timeoutId);
55
- });
56
-
57
- if (result.length) {
58
- if (result[0] === proxy) {
59
- return {
60
- domain,
61
- success: true,
62
- };
63
- }
64
- return {
65
- domain,
66
- success: false,
67
- message: `DNS record for ${domain} must have a CNAME record with the value: ${proxy}`,
68
- };
69
- }
70
- } catch (ex) {
71
- const _ex = ex as { code: string; message?: string };
72
- if (_ex.message?.includes('timed out')) {
73
- return {
74
- domain,
75
- success: false,
76
- message: `DNS lookup for ${domain} timed out after 5 seconds. Please check your DNS configuration.`,
77
- };
78
- }
79
- if (_ex.code !== 'ENOTFOUND') {
80
- const errMsg =
81
- ex instanceof Error
82
- ? ex.message
83
- : typeof ex === 'string'
84
- ? ex
85
- : JSON.stringify(ex);
86
- return {
87
- domain,
88
- success: false,
89
- message: `DNS returned an error resolving ${domain}: ${errMsg}`,
90
- };
91
- }
92
- }
93
- return {
94
- domain,
95
- success: false,
96
- message: `To enable the custom domain ${domain}, create a CNAME DNS record with the value: ${proxy} and a TTL of 600`,
97
- };
98
- })
99
- );
100
- }