@agentuity/cli 0.0.110 → 0.0.112

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 (258) hide show
  1. package/bin/cli.ts +4 -0
  2. package/dist/agents-docs.d.ts +5 -4
  3. package/dist/agents-docs.d.ts.map +1 -1
  4. package/dist/agents-docs.js +28 -8
  5. package/dist/agents-docs.js.map +1 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +19 -4
  8. package/dist/cli.js.map +1 -1
  9. package/dist/cmd/auth/apikey.d.ts +2 -0
  10. package/dist/cmd/auth/apikey.d.ts.map +1 -0
  11. package/dist/cmd/auth/apikey.js +31 -0
  12. package/dist/cmd/auth/apikey.js.map +1 -0
  13. package/dist/cmd/auth/index.d.ts.map +1 -1
  14. package/dist/cmd/auth/index.js +9 -1
  15. package/dist/cmd/auth/index.js.map +1 -1
  16. package/dist/cmd/build/ast.d.ts.map +1 -1
  17. package/dist/cmd/build/ast.js +103 -2
  18. package/dist/cmd/build/ast.js.map +1 -1
  19. package/dist/cmd/build/entry-generator.d.ts +2 -1
  20. package/dist/cmd/build/entry-generator.d.ts.map +1 -1
  21. package/dist/cmd/build/entry-generator.js +152 -9
  22. package/dist/cmd/build/entry-generator.js.map +1 -1
  23. package/dist/cmd/build/vite/agent-discovery.d.ts +1 -1
  24. package/dist/cmd/build/vite/agent-discovery.d.ts.map +1 -1
  25. package/dist/cmd/build/vite/agent-discovery.js +7 -6
  26. package/dist/cmd/build/vite/agent-discovery.js.map +1 -1
  27. package/dist/cmd/build/vite/index.d.ts.map +1 -1
  28. package/dist/cmd/build/vite/index.js +3 -2
  29. package/dist/cmd/build/vite/index.js.map +1 -1
  30. package/dist/cmd/build/vite/metadata-generator.js +1 -1
  31. package/dist/cmd/build/vite/metadata-generator.js.map +1 -1
  32. package/dist/cmd/build/vite/registry-generator.d.ts +1 -1
  33. package/dist/cmd/build/vite/registry-generator.d.ts.map +1 -1
  34. package/dist/cmd/build/vite/registry-generator.js +115 -23
  35. package/dist/cmd/build/vite/registry-generator.js.map +1 -1
  36. package/dist/cmd/build/vite/route-discovery.d.ts +6 -0
  37. package/dist/cmd/build/vite/route-discovery.d.ts.map +1 -1
  38. package/dist/cmd/build/vite/route-discovery.js +19 -0
  39. package/dist/cmd/build/vite/route-discovery.js.map +1 -1
  40. package/dist/cmd/build/vite/vite-builder.d.ts.map +1 -1
  41. package/dist/cmd/build/vite/vite-builder.js +3 -2
  42. package/dist/cmd/build/vite/vite-builder.js.map +1 -1
  43. package/dist/cmd/cloud/deploy-fork.d.ts +32 -0
  44. package/dist/cmd/cloud/deploy-fork.d.ts.map +1 -0
  45. package/dist/cmd/cloud/deploy-fork.js +258 -0
  46. package/dist/cmd/cloud/deploy-fork.js.map +1 -0
  47. package/dist/cmd/cloud/deploy.d.ts.map +1 -1
  48. package/dist/cmd/cloud/deploy.js +125 -4
  49. package/dist/cmd/cloud/deploy.js.map +1 -1
  50. package/dist/cmd/cloud/sandbox/create.d.ts.map +1 -1
  51. package/dist/cmd/cloud/sandbox/create.js +18 -0
  52. package/dist/cmd/cloud/sandbox/create.js.map +1 -1
  53. package/dist/cmd/cloud/sandbox/delete.d.ts.map +1 -1
  54. package/dist/cmd/cloud/sandbox/delete.js +2 -6
  55. package/dist/cmd/cloud/sandbox/delete.js.map +1 -1
  56. package/dist/cmd/cloud/sandbox/download.d.ts +3 -0
  57. package/dist/cmd/cloud/sandbox/download.d.ts.map +1 -0
  58. package/dist/cmd/cloud/sandbox/download.js +89 -0
  59. package/dist/cmd/cloud/sandbox/download.js.map +1 -0
  60. package/dist/cmd/cloud/sandbox/env.d.ts +3 -0
  61. package/dist/cmd/cloud/sandbox/env.d.ts.map +1 -0
  62. package/dist/cmd/cloud/sandbox/env.js +90 -0
  63. package/dist/cmd/cloud/sandbox/env.js.map +1 -0
  64. package/dist/cmd/cloud/sandbox/get.d.ts.map +1 -1
  65. package/dist/cmd/cloud/sandbox/get.js +24 -0
  66. package/dist/cmd/cloud/sandbox/get.js.map +1 -1
  67. package/dist/cmd/cloud/sandbox/index.d.ts.map +1 -1
  68. package/dist/cmd/cloud/sandbox/index.js +14 -0
  69. package/dist/cmd/cloud/sandbox/index.js.map +1 -1
  70. package/dist/cmd/cloud/sandbox/ls.d.ts +3 -0
  71. package/dist/cmd/cloud/sandbox/ls.d.ts.map +1 -0
  72. package/dist/cmd/cloud/sandbox/ls.js +119 -0
  73. package/dist/cmd/cloud/sandbox/ls.js.map +1 -0
  74. package/dist/cmd/cloud/sandbox/mkdir.d.ts +3 -0
  75. package/dist/cmd/cloud/sandbox/mkdir.d.ts.map +1 -0
  76. package/dist/cmd/cloud/sandbox/mkdir.js +59 -0
  77. package/dist/cmd/cloud/sandbox/mkdir.js.map +1 -0
  78. package/dist/cmd/cloud/sandbox/rm.d.ts +3 -0
  79. package/dist/cmd/cloud/sandbox/rm.d.ts.map +1 -0
  80. package/dist/cmd/cloud/sandbox/rm.js +45 -0
  81. package/dist/cmd/cloud/sandbox/rm.js.map +1 -0
  82. package/dist/cmd/cloud/sandbox/rmdir.d.ts +3 -0
  83. package/dist/cmd/cloud/sandbox/rmdir.d.ts.map +1 -0
  84. package/dist/cmd/cloud/sandbox/rmdir.js +59 -0
  85. package/dist/cmd/cloud/sandbox/rmdir.js.map +1 -0
  86. package/dist/cmd/cloud/sandbox/snapshot/create.d.ts.map +1 -1
  87. package/dist/cmd/cloud/sandbox/snapshot/create.js +0 -2
  88. package/dist/cmd/cloud/sandbox/snapshot/create.js.map +1 -1
  89. package/dist/cmd/cloud/sandbox/snapshot/get.d.ts.map +1 -1
  90. package/dist/cmd/cloud/sandbox/snapshot/get.js +0 -2
  91. package/dist/cmd/cloud/sandbox/snapshot/get.js.map +1 -1
  92. package/dist/cmd/cloud/sandbox/snapshot/list.d.ts.map +1 -1
  93. package/dist/cmd/cloud/sandbox/snapshot/list.js +0 -3
  94. package/dist/cmd/cloud/sandbox/snapshot/list.js.map +1 -1
  95. package/dist/cmd/cloud/sandbox/upload.d.ts +3 -0
  96. package/dist/cmd/cloud/sandbox/upload.d.ts.map +1 -0
  97. package/dist/cmd/cloud/sandbox/upload.js +77 -0
  98. package/dist/cmd/cloud/sandbox/upload.js.map +1 -0
  99. package/dist/cmd/cloud/ssh.d.ts.map +1 -1
  100. package/dist/cmd/cloud/ssh.js +9 -3
  101. package/dist/cmd/cloud/ssh.js.map +1 -1
  102. package/dist/cmd/dev/index.d.ts.map +1 -1
  103. package/dist/cmd/dev/index.js +34 -19
  104. package/dist/cmd/dev/index.js.map +1 -1
  105. package/dist/cmd/dev/sync.d.ts.map +1 -1
  106. package/dist/cmd/dev/sync.js +8 -14
  107. package/dist/cmd/dev/sync.js.map +1 -1
  108. package/dist/cmd/git/account/add.d.ts +17 -0
  109. package/dist/cmd/git/account/add.d.ts.map +1 -0
  110. package/dist/cmd/git/account/add.js +244 -0
  111. package/dist/cmd/git/account/add.js.map +1 -0
  112. package/dist/cmd/git/account/index.d.ts +3 -0
  113. package/dist/cmd/git/account/index.d.ts.map +1 -0
  114. package/dist/cmd/git/account/index.js +11 -0
  115. package/dist/cmd/git/account/index.js.map +1 -0
  116. package/dist/cmd/git/account/list.d.ts +2 -0
  117. package/dist/cmd/git/account/list.d.ts.map +1 -0
  118. package/dist/cmd/git/account/list.js +111 -0
  119. package/dist/cmd/git/account/list.js.map +1 -0
  120. package/dist/cmd/git/account/remove.d.ts +2 -0
  121. package/dist/cmd/git/account/remove.d.ts.map +1 -0
  122. package/dist/cmd/git/account/remove.js +171 -0
  123. package/dist/cmd/git/account/remove.js.map +1 -0
  124. package/dist/cmd/git/index.d.ts +3 -0
  125. package/dist/cmd/git/index.d.ts.map +1 -0
  126. package/dist/cmd/git/index.js +19 -0
  127. package/dist/cmd/git/index.js.map +1 -0
  128. package/dist/cmd/git/link.d.ts +32 -0
  129. package/dist/cmd/git/link.d.ts.map +1 -0
  130. package/dist/cmd/git/link.js +357 -0
  131. package/dist/cmd/git/link.js.map +1 -0
  132. package/dist/cmd/git/list.d.ts +2 -0
  133. package/dist/cmd/git/list.d.ts.map +1 -0
  134. package/dist/cmd/git/list.js +137 -0
  135. package/dist/cmd/git/list.js.map +1 -0
  136. package/dist/cmd/git/status.d.ts +2 -0
  137. package/dist/cmd/git/status.d.ts.map +1 -0
  138. package/dist/cmd/git/status.js +119 -0
  139. package/dist/cmd/git/status.js.map +1 -0
  140. package/dist/cmd/git/unlink.d.ts +2 -0
  141. package/dist/cmd/git/unlink.d.ts.map +1 -0
  142. package/dist/cmd/git/unlink.js +98 -0
  143. package/dist/cmd/git/unlink.js.map +1 -0
  144. package/dist/cmd/index.d.ts.map +1 -1
  145. package/dist/cmd/index.js +2 -0
  146. package/dist/cmd/index.js.map +1 -1
  147. package/dist/cmd/integration/api.d.ts +61 -0
  148. package/dist/cmd/integration/api.d.ts.map +1 -0
  149. package/dist/cmd/integration/api.js +176 -0
  150. package/dist/cmd/integration/api.js.map +1 -0
  151. package/dist/cmd/integration/github/connect.d.ts +2 -0
  152. package/dist/cmd/integration/github/connect.d.ts.map +1 -0
  153. package/dist/cmd/integration/github/connect.js +197 -0
  154. package/dist/cmd/integration/github/connect.js.map +1 -0
  155. package/dist/cmd/integration/github/disconnect.d.ts +2 -0
  156. package/dist/cmd/integration/github/disconnect.d.ts.map +1 -0
  157. package/dist/cmd/integration/github/disconnect.js +121 -0
  158. package/dist/cmd/integration/github/disconnect.js.map +1 -0
  159. package/dist/cmd/integration/github/index.d.ts +2 -0
  160. package/dist/cmd/integration/github/index.d.ts.map +1 -0
  161. package/dist/cmd/integration/github/index.js +21 -0
  162. package/dist/cmd/integration/github/index.js.map +1 -0
  163. package/dist/cmd/integration/index.d.ts +2 -0
  164. package/dist/cmd/integration/index.d.ts.map +1 -0
  165. package/dist/cmd/integration/index.js +16 -0
  166. package/dist/cmd/integration/index.js.map +1 -0
  167. package/dist/config.d.ts +2 -0
  168. package/dist/config.d.ts.map +1 -1
  169. package/dist/config.js +25 -1
  170. package/dist/config.js.map +1 -1
  171. package/dist/errors.d.ts +2 -1
  172. package/dist/errors.d.ts.map +1 -1
  173. package/dist/errors.js +5 -0
  174. package/dist/errors.js.map +1 -1
  175. package/dist/log-collector.d.ts +30 -0
  176. package/dist/log-collector.d.ts.map +1 -0
  177. package/dist/log-collector.js +74 -0
  178. package/dist/log-collector.js.map +1 -0
  179. package/dist/output.d.ts.map +1 -1
  180. package/dist/output.js +2 -1
  181. package/dist/output.js.map +1 -1
  182. package/dist/steps.d.ts.map +1 -1
  183. package/dist/steps.js +48 -3
  184. package/dist/steps.js.map +1 -1
  185. package/dist/tui/box.d.ts.map +1 -1
  186. package/dist/tui/box.js +1 -6
  187. package/dist/tui/box.js.map +1 -1
  188. package/dist/tui/symbols.d.ts.map +1 -1
  189. package/dist/tui/symbols.js +4 -0
  190. package/dist/tui/symbols.js.map +1 -1
  191. package/dist/tui.d.ts +21 -12
  192. package/dist/tui.d.ts.map +1 -1
  193. package/dist/tui.js +74 -25
  194. package/dist/tui.js.map +1 -1
  195. package/dist/types.d.ts +73 -1
  196. package/dist/types.d.ts.map +1 -1
  197. package/dist/types.js +4 -0
  198. package/dist/types.js.map +1 -1
  199. package/dist/typescript-errors.d.ts.map +1 -1
  200. package/dist/typescript-errors.js +2 -2
  201. package/dist/typescript-errors.js.map +1 -1
  202. package/package.json +6 -6
  203. package/src/agents-docs.ts +42 -8
  204. package/src/cli.ts +20 -4
  205. package/src/cmd/auth/apikey.ts +36 -0
  206. package/src/cmd/auth/index.ts +9 -1
  207. package/src/cmd/build/ast.ts +120 -2
  208. package/src/cmd/build/entry-generator.ts +157 -10
  209. package/src/cmd/build/vite/agent-discovery.ts +8 -5
  210. package/src/cmd/build/vite/index.ts +3 -2
  211. package/src/cmd/build/vite/metadata-generator.ts +1 -1
  212. package/src/cmd/build/vite/registry-generator.ts +125 -24
  213. package/src/cmd/build/vite/route-discovery.ts +20 -0
  214. package/src/cmd/build/vite/vite-builder.ts +3 -2
  215. package/src/cmd/cloud/deploy-fork.ts +296 -0
  216. package/src/cmd/cloud/deploy.ts +148 -4
  217. package/src/cmd/cloud/sandbox/create.ts +22 -0
  218. package/src/cmd/cloud/sandbox/delete.ts +2 -6
  219. package/src/cmd/cloud/sandbox/download.ts +96 -0
  220. package/src/cmd/cloud/sandbox/env.ts +104 -0
  221. package/src/cmd/cloud/sandbox/get.ts +22 -0
  222. package/src/cmd/cloud/sandbox/index.ts +14 -0
  223. package/src/cmd/cloud/sandbox/ls.ts +126 -0
  224. package/src/cmd/cloud/sandbox/mkdir.ts +65 -0
  225. package/src/cmd/cloud/sandbox/rm.ts +51 -0
  226. package/src/cmd/cloud/sandbox/rmdir.ts +65 -0
  227. package/src/cmd/cloud/sandbox/snapshot/create.ts +0 -2
  228. package/src/cmd/cloud/sandbox/snapshot/get.ts +0 -2
  229. package/src/cmd/cloud/sandbox/snapshot/list.ts +0 -3
  230. package/src/cmd/cloud/sandbox/upload.ts +83 -0
  231. package/src/cmd/cloud/ssh.ts +13 -3
  232. package/src/cmd/dev/index.ts +49 -31
  233. package/src/cmd/dev/sync.ts +26 -30
  234. package/src/cmd/git/account/add.ts +317 -0
  235. package/src/cmd/git/account/index.ts +12 -0
  236. package/src/cmd/git/account/list.ts +139 -0
  237. package/src/cmd/git/account/remove.ts +212 -0
  238. package/src/cmd/git/index.ts +20 -0
  239. package/src/cmd/git/link.ts +468 -0
  240. package/src/cmd/git/list.ts +161 -0
  241. package/src/cmd/git/status.ts +144 -0
  242. package/src/cmd/git/unlink.ts +117 -0
  243. package/src/cmd/index.ts +2 -0
  244. package/src/cmd/integration/api.ts +379 -0
  245. package/src/cmd/integration/github/connect.ts +242 -0
  246. package/src/cmd/integration/github/disconnect.ts +149 -0
  247. package/src/cmd/integration/github/index.ts +21 -0
  248. package/src/cmd/integration/index.ts +16 -0
  249. package/src/config.ts +35 -1
  250. package/src/errors.ts +7 -0
  251. package/src/log-collector.ts +77 -0
  252. package/src/output.ts +2 -1
  253. package/src/steps.ts +52 -4
  254. package/src/tui/box.ts +1 -7
  255. package/src/tui/symbols.ts +5 -0
  256. package/src/tui.ts +77 -25
  257. package/src/types.ts +89 -0
  258. package/src/typescript-errors.ts +2 -1
@@ -0,0 +1,119 @@
1
+ import { createSubcommand } from '../../types';
2
+ import * as tui from '../../tui';
3
+ import { getCommand } from '../../command-prefix';
4
+ import { ErrorCode } from '../../errors';
5
+ import { getProjectGithubStatus, getGithubIntegrationStatus } from '../integration/api';
6
+ import { z } from 'zod';
7
+ const StatusResponseSchema = z.object({
8
+ orgId: z.string().describe('Organization ID'),
9
+ connected: z.boolean().describe('Whether GitHub is connected to the org'),
10
+ integrations: z
11
+ .array(z.object({
12
+ id: z.string(),
13
+ githubAccountName: z.string(),
14
+ githubAccountType: z.enum(['user', 'org']),
15
+ }))
16
+ .describe('Connected GitHub accounts'),
17
+ projectId: z.string().describe('Project ID'),
18
+ linked: z.boolean().describe('Whether the project is linked to a repo'),
19
+ repoFullName: z.string().optional().describe('Full repository name'),
20
+ branch: z.string().optional().describe('Branch'),
21
+ directory: z.string().optional().describe('Directory'),
22
+ autoDeploy: z.boolean().optional().describe('Auto-deploy enabled'),
23
+ previewDeploy: z.boolean().optional().describe('Preview deploys enabled'),
24
+ });
25
+ export const statusSubcommand = createSubcommand({
26
+ name: 'status',
27
+ description: 'Show GitHub connection status for current project',
28
+ tags: ['read-only'],
29
+ idempotent: true,
30
+ requires: { auth: true, apiClient: true, project: true },
31
+ schema: {
32
+ response: StatusResponseSchema,
33
+ },
34
+ examples: [
35
+ {
36
+ command: getCommand('git status'),
37
+ description: 'Show GitHub status for current project',
38
+ },
39
+ {
40
+ command: getCommand('--json git status'),
41
+ description: 'Get status in JSON format',
42
+ },
43
+ ],
44
+ async handler(ctx) {
45
+ const { logger, apiClient, project, options } = ctx;
46
+ try {
47
+ // Get org-level GitHub status
48
+ const orgStatus = await tui.spinner({
49
+ message: 'Checking GitHub connection...',
50
+ clearOnSuccess: true,
51
+ callback: () => getGithubIntegrationStatus(apiClient, project.orgId),
52
+ });
53
+ // Get project-level link status
54
+ const projectStatus = await tui.spinner({
55
+ message: 'Checking project status...',
56
+ clearOnSuccess: true,
57
+ callback: () => getProjectGithubStatus(apiClient, project.projectId),
58
+ });
59
+ const result = {
60
+ orgId: project.orgId,
61
+ connected: orgStatus.connected,
62
+ integrations: orgStatus.integrations.map((i) => ({
63
+ id: i.id,
64
+ githubAccountName: i.githubAccountName,
65
+ githubAccountType: i.githubAccountType,
66
+ })),
67
+ projectId: project.projectId,
68
+ linked: projectStatus.linked,
69
+ repoFullName: projectStatus.repoFullName,
70
+ branch: projectStatus.branch,
71
+ directory: projectStatus.directory,
72
+ autoDeploy: projectStatus.autoDeploy,
73
+ previewDeploy: projectStatus.previewDeploy,
74
+ };
75
+ if (options.json) {
76
+ return result;
77
+ }
78
+ tui.newline();
79
+ console.log(tui.bold('GitHub Status'));
80
+ tui.newline();
81
+ // Organization status
82
+ console.log(`${tui.bold('Organization:')} ${project.orgId}`);
83
+ if (orgStatus.connected && orgStatus.integrations.length > 0) {
84
+ console.log(` ${tui.colorSuccess('✓')} ${orgStatus.integrations.length} GitHub account${orgStatus.integrations.length > 1 ? 's' : ''} connected`);
85
+ for (const integration of orgStatus.integrations) {
86
+ const typeLabel = integration.githubAccountType === 'org' ? 'org' : 'user';
87
+ console.log(` - ${integration.githubAccountName} ${tui.muted(`(${typeLabel})`)}`);
88
+ }
89
+ }
90
+ else {
91
+ console.log(` ${tui.colorError('✗')} No GitHub accounts connected`);
92
+ console.log(tui.muted(` Run ${tui.bold('agentuity git account add')} to connect one`));
93
+ }
94
+ tui.newline();
95
+ // Project status
96
+ console.log(`${tui.bold('Project:')} ${project.projectId}`);
97
+ if (projectStatus.linked) {
98
+ console.log(` ${tui.colorSuccess('✓')} Linked to ${tui.bold(projectStatus.repoFullName ?? '<unknown repository>')}`);
99
+ console.log(` Branch: ${projectStatus.branch}`);
100
+ if (projectStatus.directory) {
101
+ console.log(` Directory: ${projectStatus.directory}`);
102
+ }
103
+ console.log(` Auto-deploy: ${projectStatus.autoDeploy ? tui.colorSuccess('enabled') : tui.muted('disabled')}`);
104
+ console.log(` Preview deploys: ${projectStatus.previewDeploy ? tui.colorSuccess('enabled') : tui.muted('disabled')}`);
105
+ }
106
+ else {
107
+ console.log(` ${tui.muted('○')} Not linked to a repository`);
108
+ console.log(tui.muted(` Run ${tui.bold('agentuity git link')} to link one`));
109
+ }
110
+ tui.newline();
111
+ return result;
112
+ }
113
+ catch (error) {
114
+ logger.trace(error);
115
+ return logger.fatal('Failed to get GitHub status: %s', error, ErrorCode.INTEGRATION_FAILED);
116
+ }
117
+ },
118
+ });
119
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cmd/git/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const unlinkSubcommand: import("../..").SubcommandDefinition;
2
+ //# sourceMappingURL=unlink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unlink.d.ts","sourceRoot":"","sources":["../../../src/cmd/git/unlink.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,gBAAgB,sCAoG3B,CAAC"}
@@ -0,0 +1,98 @@
1
+ import { createSubcommand } from '../../types';
2
+ import * as tui from '../../tui';
3
+ import { getCommand } from '../../command-prefix';
4
+ import { ErrorCode } from '../../errors';
5
+ import { getProjectGithubStatus, unlinkProjectFromRepo } from '../integration/api';
6
+ import { z } from 'zod';
7
+ const UnlinkOptionsSchema = z.object({
8
+ confirm: z.boolean().optional().describe('Skip confirmation prompt'),
9
+ });
10
+ const UnlinkResponseSchema = z.object({
11
+ unlinked: z.boolean().describe('Whether the project was unlinked'),
12
+ repoFullName: z.string().optional().describe('Repository that was unlinked'),
13
+ });
14
+ export const unlinkSubcommand = createSubcommand({
15
+ name: 'unlink',
16
+ description: 'Unlink a project from its GitHub repository',
17
+ tags: ['mutating', 'destructive'],
18
+ idempotent: false,
19
+ requires: { auth: true, apiClient: true, project: true },
20
+ schema: {
21
+ options: UnlinkOptionsSchema,
22
+ response: UnlinkResponseSchema,
23
+ },
24
+ examples: [
25
+ {
26
+ command: getCommand('git unlink'),
27
+ description: 'Unlink current project from GitHub',
28
+ },
29
+ {
30
+ command: getCommand('git unlink --confirm'),
31
+ description: 'Unlink without confirmation prompt',
32
+ },
33
+ {
34
+ command: getCommand('--json git unlink --confirm'),
35
+ description: 'Unlink and return JSON result',
36
+ },
37
+ ],
38
+ async handler(ctx) {
39
+ const { logger, apiClient, project, opts, options } = ctx;
40
+ try {
41
+ // Check current status
42
+ const status = await tui.spinner({
43
+ message: 'Checking current status...',
44
+ clearOnSuccess: true,
45
+ callback: () => getProjectGithubStatus(apiClient, project.projectId),
46
+ });
47
+ if (!status.linked) {
48
+ if (!options.json) {
49
+ tui.newline();
50
+ tui.info('This project is not linked to a GitHub repository.');
51
+ }
52
+ return { unlinked: false };
53
+ }
54
+ if (!opts.confirm) {
55
+ tui.newline();
56
+ console.log(`Currently linked to: ${tui.bold(status.repoFullName ?? 'Unknown')}`);
57
+ console.log(` Branch: ${status.branch ?? 'default'}`);
58
+ if (status.directory) {
59
+ console.log(` Directory: ${status.directory}`);
60
+ }
61
+ console.log(` Auto-deploy: ${status.autoDeploy ? 'enabled' : 'disabled'}`);
62
+ console.log(` Preview deploys: ${status.previewDeploy ? 'enabled' : 'disabled'}`);
63
+ tui.newline();
64
+ const confirmed = await tui.confirm(`Are you sure you want to unlink from ${tui.bold(status.repoFullName ?? 'this repository')}?`);
65
+ if (!confirmed) {
66
+ tui.info('Cancelled');
67
+ return { unlinked: false };
68
+ }
69
+ }
70
+ await tui.spinner({
71
+ message: 'Unlinking repository...',
72
+ clearOnSuccess: true,
73
+ callback: () => unlinkProjectFromRepo(apiClient, project.projectId),
74
+ });
75
+ if (!options.json) {
76
+ tui.newline();
77
+ tui.success(`Unlinked from ${tui.bold(status.repoFullName ?? 'repository')}`);
78
+ tui.newline();
79
+ console.log('Automatic deployments have been disabled for this project.');
80
+ }
81
+ return { unlinked: true, repoFullName: status.repoFullName };
82
+ }
83
+ catch (error) {
84
+ // Handle user cancellation
85
+ const isCancel = error === '' ||
86
+ (error instanceof Error &&
87
+ (error.message === '' || error.message === 'User cancelled'));
88
+ if (isCancel) {
89
+ tui.newline();
90
+ tui.info('Cancelled');
91
+ return { unlinked: false };
92
+ }
93
+ logger.trace(error);
94
+ return logger.fatal('Failed to unlink repository: %s', error, ErrorCode.INTEGRATION_FAILED);
95
+ }
96
+ },
97
+ });
98
+ //# sourceMappingURL=unlink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unlink.js","sourceRoot":"","sources":["../../../src/cmd/git/unlink.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cmd/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAIlD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA0DrE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cmd/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAIlD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA4DrE"}
package/dist/cmd/index.js CHANGED
@@ -7,7 +7,9 @@ export async function discoverCommands() {
7
7
  import('./build').then((m) => m.command),
8
8
  import('./cloud').then((m) => m.command),
9
9
  import('./dev').then((m) => m.command),
10
+ import('./git').then((m) => m.gitCommand),
10
11
  import('./help').then((m) => m.command),
12
+ import('./integration').then((m) => m.command),
11
13
  import('./profile').then((m) => m.command),
12
14
  import('./project').then((m) => m.command),
13
15
  import('./repl').then((m) => m.command),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cmd/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cmd/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import type { APIClient } from '../../api';
2
+ export interface GithubIntegration {
3
+ id: string;
4
+ githubAccountName: string;
5
+ githubAccountType: 'user' | 'org';
6
+ connectedBy: string;
7
+ connectedAt: string;
8
+ }
9
+ export interface GithubIntegrationStartResult {
10
+ shortId: string;
11
+ }
12
+ export interface GithubIntegrationStatusResult {
13
+ connected: boolean;
14
+ integrations: GithubIntegration[];
15
+ }
16
+ export declare function startGithubIntegration(apiClient: APIClient, orgId: string): Promise<GithubIntegrationStartResult>;
17
+ export declare function getGithubIntegrationStatus(apiClient: APIClient, orgId: string): Promise<GithubIntegrationStatusResult>;
18
+ export interface GithubDisconnectResult {
19
+ disconnected: boolean;
20
+ }
21
+ export declare function disconnectGithubIntegration(apiClient: APIClient, orgId: string, integrationId: string): Promise<GithubDisconnectResult>;
22
+ export interface ExistingGithubIntegration {
23
+ id: string;
24
+ integrationId: string | null;
25
+ orgId: string;
26
+ orgName: string;
27
+ githubAccountName: string;
28
+ }
29
+ export declare function getExistingGithubIntegrations(apiClient: APIClient, excludeOrgId?: string): Promise<ExistingGithubIntegration[]>;
30
+ export declare function copyGithubIntegration(apiClient: APIClient, fromOrgId: string, toOrgId: string): Promise<boolean>;
31
+ export declare function pollForGithubIntegration(apiClient: APIClient, orgId: string, initialCount: number, timeoutMs?: number): Promise<GithubIntegrationStatusResult>;
32
+ export interface GithubRepo {
33
+ id: number;
34
+ name: string;
35
+ fullName: string;
36
+ private: boolean;
37
+ defaultBranch: string;
38
+ integrationId: string;
39
+ }
40
+ export declare function listGithubRepos(apiClient: APIClient, orgId: string, integrationId?: string): Promise<GithubRepo[]>;
41
+ export interface LinkProjectOptions {
42
+ projectId: string;
43
+ repoFullName: string;
44
+ branch: string;
45
+ autoDeploy: boolean;
46
+ previewDeploy: boolean;
47
+ directory?: string;
48
+ integrationId?: string;
49
+ }
50
+ export declare function linkProjectToRepo(apiClient: APIClient, options: LinkProjectOptions): Promise<boolean>;
51
+ export declare function unlinkProjectFromRepo(apiClient: APIClient, projectId: string): Promise<boolean>;
52
+ export interface ProjectGithubStatus {
53
+ linked: boolean;
54
+ repoFullName?: string;
55
+ branch?: string;
56
+ autoDeploy?: boolean;
57
+ previewDeploy?: boolean;
58
+ directory?: string;
59
+ }
60
+ export declare function getProjectGithubStatus(apiClient: APIClient, projectId: string): Promise<ProjectGithubStatus>;
61
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/cmd/integration/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,176 @@
1
+ import { z } from 'zod';
2
+ import { APIResponseSchema } from '@agentuity/server';
3
+ import { StructuredError } from '@agentuity/core';
4
+ const GithubStartDataSchema = z.object({
5
+ shortId: z.string(),
6
+ });
7
+ const GithubIntegrationSchema = z.object({
8
+ id: z.string(),
9
+ githubAccountName: z.string(),
10
+ githubAccountType: z.enum(['user', 'org']),
11
+ connectedBy: z.string(),
12
+ connectedAt: z.string(),
13
+ });
14
+ const GithubStatusDataSchema = z.object({
15
+ connected: z.boolean(),
16
+ integrations: z.array(GithubIntegrationSchema).optional(),
17
+ });
18
+ const GithubIntegrationStartError = StructuredError('GithubIntegrationStartError', 'Error starting GitHub integration flow');
19
+ export async function startGithubIntegration(apiClient, orgId) {
20
+ const resp = await apiClient.get(`/cli/github/start?orgId=${encodeURIComponent(orgId)}`, APIResponseSchema(GithubStartDataSchema));
21
+ if (!resp.success) {
22
+ throw new GithubIntegrationStartError();
23
+ }
24
+ if (!resp.data) {
25
+ throw new GithubIntegrationStartError();
26
+ }
27
+ return { shortId: resp.data.shortId };
28
+ }
29
+ const GithubIntegrationStatusError = StructuredError('GithubIntegrationStatusError', 'Error checking GitHub integration status');
30
+ export async function getGithubIntegrationStatus(apiClient, orgId) {
31
+ const resp = await apiClient.get(`/cli/github/status?orgId=${encodeURIComponent(orgId)}`, APIResponseSchema(GithubStatusDataSchema));
32
+ if (!resp.success) {
33
+ throw new GithubIntegrationStatusError();
34
+ }
35
+ if (!resp.data) {
36
+ throw new GithubIntegrationStatusError();
37
+ }
38
+ return {
39
+ connected: resp.data.connected,
40
+ integrations: resp.data.integrations ?? [],
41
+ };
42
+ }
43
+ const GithubDisconnectDataSchema = z.object({
44
+ disconnected: z.boolean(),
45
+ });
46
+ const GithubDisconnectError = StructuredError('GithubDisconnectError', 'Error disconnecting GitHub integration');
47
+ export async function disconnectGithubIntegration(apiClient, orgId, integrationId) {
48
+ const resp = await apiClient.delete(`/cli/github/disconnect?orgId=${encodeURIComponent(orgId)}&integrationId=${encodeURIComponent(integrationId)}`, APIResponseSchema(GithubDisconnectDataSchema));
49
+ if (!resp.success) {
50
+ throw new GithubDisconnectError();
51
+ }
52
+ if (!resp.data) {
53
+ throw new GithubDisconnectError();
54
+ }
55
+ return { disconnected: resp.data.disconnected };
56
+ }
57
+ // Existing integrations
58
+ const GithubExistingIntegrationSchema = z.object({
59
+ id: z.string(),
60
+ integrationId: z.string().nullable(),
61
+ orgId: z.string(),
62
+ orgName: z.string(),
63
+ githubAccountName: z.string(),
64
+ });
65
+ const GithubExistingDataSchema = z.object({
66
+ integrations: z.array(GithubExistingIntegrationSchema),
67
+ });
68
+ const GithubExistingError = StructuredError('GithubExistingError', 'Error fetching existing GitHub integrations');
69
+ export async function getExistingGithubIntegrations(apiClient, excludeOrgId) {
70
+ const query = excludeOrgId ? `?excludeOrgId=${encodeURIComponent(excludeOrgId)}` : '';
71
+ const resp = await apiClient.get(`/cli/github/existing${query}`, APIResponseSchema(GithubExistingDataSchema));
72
+ if (!resp.success || !resp.data) {
73
+ throw new GithubExistingError();
74
+ }
75
+ return resp.data.integrations;
76
+ }
77
+ // Copy integration
78
+ const GithubCopyDataSchema = z.object({
79
+ copied: z.boolean(),
80
+ });
81
+ const GithubCopyError = StructuredError('GithubCopyError', 'Error copying GitHub integration');
82
+ export async function copyGithubIntegration(apiClient, fromOrgId, toOrgId) {
83
+ const resp = await apiClient.post('/cli/github/copy', { fromOrgId, toOrgId }, APIResponseSchema(GithubCopyDataSchema));
84
+ if (!resp.success || !resp.data) {
85
+ throw new GithubCopyError();
86
+ }
87
+ return resp.data.copied;
88
+ }
89
+ // Polling
90
+ const PollForGithubIntegrationError = StructuredError('PollForGithubIntegrationError');
91
+ const PollForGithubIntegrationTimeout = StructuredError('PollForGithubIntegrationTimeout', 'Timed out waiting for GitHub integration. Aborting.');
92
+ export async function pollForGithubIntegration(apiClient, orgId, initialCount, timeoutMs = 600000 // 10 minutes
93
+ ) {
94
+ const started = Date.now();
95
+ let delay = 2000; // Start with 2 seconds
96
+ const maxDelay = 10000; // Cap at 10 seconds
97
+ while (Date.now() - started < timeoutMs) {
98
+ const resp = await apiClient.get(`/cli/github/status?orgId=${encodeURIComponent(orgId)}`, APIResponseSchema(GithubStatusDataSchema));
99
+ if (!resp.success || !resp.data) {
100
+ throw new PollForGithubIntegrationError();
101
+ }
102
+ const currentCount = resp.data.integrations?.length ?? 0;
103
+ if (currentCount > initialCount) {
104
+ return {
105
+ connected: true,
106
+ integrations: resp.data.integrations ?? [],
107
+ };
108
+ }
109
+ await Bun.sleep(delay);
110
+ delay = Math.min(delay * 1.5, maxDelay);
111
+ }
112
+ throw new PollForGithubIntegrationTimeout();
113
+ }
114
+ // Project linking
115
+ const GithubRepoSchema = z.object({
116
+ id: z.number(),
117
+ name: z.string(),
118
+ fullName: z.string(),
119
+ private: z.boolean(),
120
+ defaultBranch: z.string(),
121
+ integrationId: z.string(),
122
+ });
123
+ const GithubReposDataSchema = z.object({
124
+ repos: z.array(GithubRepoSchema),
125
+ });
126
+ const GithubReposError = StructuredError('GithubReposError', 'Error fetching GitHub repositories');
127
+ export async function listGithubRepos(apiClient, orgId, integrationId) {
128
+ let url = `/cli/github/repos?orgId=${encodeURIComponent(orgId)}`;
129
+ if (integrationId) {
130
+ url += `&integrationId=${encodeURIComponent(integrationId)}`;
131
+ }
132
+ const resp = await apiClient.get(url, APIResponseSchema(GithubReposDataSchema));
133
+ if (!resp.success || !resp.data) {
134
+ throw new GithubReposError();
135
+ }
136
+ return resp.data.repos;
137
+ }
138
+ const ProjectLinkDataSchema = z.object({
139
+ linked: z.boolean(),
140
+ });
141
+ const ProjectLinkError = StructuredError('ProjectLinkError', 'Error linking project to repository');
142
+ export async function linkProjectToRepo(apiClient, options) {
143
+ const resp = await apiClient.post('/cli/github/link', options, APIResponseSchema(ProjectLinkDataSchema));
144
+ if (!resp.success || !resp.data) {
145
+ throw new ProjectLinkError();
146
+ }
147
+ return resp.data.linked;
148
+ }
149
+ const ProjectUnlinkDataSchema = z.object({
150
+ unlinked: z.boolean(),
151
+ });
152
+ const ProjectUnlinkError = StructuredError('ProjectUnlinkError', 'Error unlinking project from repository');
153
+ export async function unlinkProjectFromRepo(apiClient, projectId) {
154
+ const resp = await apiClient.delete(`/cli/github/unlink?projectId=${encodeURIComponent(projectId)}`, APIResponseSchema(ProjectUnlinkDataSchema));
155
+ if (!resp.success || !resp.data) {
156
+ throw new ProjectUnlinkError();
157
+ }
158
+ return resp.data.unlinked;
159
+ }
160
+ const ProjectGithubStatusSchema = z.object({
161
+ linked: z.boolean(),
162
+ repoFullName: z.string().optional(),
163
+ branch: z.string().optional(),
164
+ autoDeploy: z.boolean().optional(),
165
+ previewDeploy: z.boolean().optional(),
166
+ directory: z.string().optional(),
167
+ });
168
+ const ProjectGithubStatusError = StructuredError('ProjectGithubStatusError', 'Error fetching project GitHub status');
169
+ export async function getProjectGithubStatus(apiClient, projectId) {
170
+ const resp = await apiClient.get(`/cli/github/project-status?projectId=${encodeURIComponent(projectId)}`, APIResponseSchema(ProjectGithubStatusSchema));
171
+ if (!resp.success || !resp.data) {
172
+ throw new ProjectGithubStatusError();
173
+ }
174
+ return resp.data;
175
+ }
176
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/cmd/integration/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const connectSubcommand: import("../../..").SubcommandDefinition;
2
+ //# sourceMappingURL=connect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../../src/cmd/integration/github/connect.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,iBAAiB,yCAkO5B,CAAC"}