@agentteams/cli 0.1.22

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 (200) hide show
  1. package/.agentteams/config.json +8 -0
  2. package/.agentteams/convention.md +100 -0
  3. package/.agentteams/platform/co-action-guide.md +144 -0
  4. package/.agentteams/platform/completion-report-guide.md +146 -0
  5. package/.agentteams/platform/convention-authoring-guide.md +112 -0
  6. package/.agentteams/platform/convention-ud-guide.md +59 -0
  7. package/.agentteams/platform/plan-guide.md +180 -0
  8. package/.agentteams/platform/plan-template.md +201 -0
  9. package/.agentteams/platform/post-mortem-guide.md +92 -0
  10. package/CODE_OF_CONDUCT.md +36 -0
  11. package/CONTRIBUTING.md +39 -0
  12. package/LICENSE +201 -0
  13. package/README.md +405 -0
  14. package/SECURITY.md +27 -0
  15. package/dist/api/coaction.d.ts +17 -0
  16. package/dist/api/coaction.d.ts.map +1 -0
  17. package/dist/api/coaction.js +102 -0
  18. package/dist/api/coaction.js.map +1 -0
  19. package/dist/api/comment.d.ts +13 -0
  20. package/dist/api/comment.d.ts.map +1 -0
  21. package/dist/api/comment.js +33 -0
  22. package/dist/api/comment.js.map +1 -0
  23. package/dist/api/feedback.d.ts +7 -0
  24. package/dist/api/feedback.d.ts.map +1 -0
  25. package/dist/api/feedback.js +6 -0
  26. package/dist/api/feedback.js.map +1 -0
  27. package/dist/api/linear.d.ts +5 -0
  28. package/dist/api/linear.d.ts.map +1 -0
  29. package/dist/api/linear.js +27 -0
  30. package/dist/api/linear.js.map +1 -0
  31. package/dist/api/member.d.ts +16 -0
  32. package/dist/api/member.d.ts.map +1 -0
  33. package/dist/api/member.js +6 -0
  34. package/dist/api/member.js.map +1 -0
  35. package/dist/api/plan.d.ts +51 -0
  36. package/dist/api/plan.d.ts.map +1 -0
  37. package/dist/api/plan.js +80 -0
  38. package/dist/api/plan.js.map +1 -0
  39. package/dist/api/postmortem.d.ts +6 -0
  40. package/dist/api/postmortem.d.ts.map +1 -0
  41. package/dist/api/postmortem.js +33 -0
  42. package/dist/api/postmortem.js.map +1 -0
  43. package/dist/api/report.d.ts +6 -0
  44. package/dist/api/report.d.ts.map +1 -0
  45. package/dist/api/report.js +33 -0
  46. package/dist/api/report.js.map +1 -0
  47. package/dist/api/search.d.ts +2 -0
  48. package/dist/api/search.d.ts.map +1 -0
  49. package/dist/api/search.js +20 -0
  50. package/dist/api/search.js.map +1 -0
  51. package/dist/api/status.d.ts +12 -0
  52. package/dist/api/status.d.ts.map +1 -0
  53. package/dist/api/status.js +33 -0
  54. package/dist/api/status.js.map +1 -0
  55. package/dist/commands/agentConfig.d.ts +4 -0
  56. package/dist/commands/agentConfig.d.ts.map +1 -0
  57. package/dist/commands/agentConfig.js +41 -0
  58. package/dist/commands/agentConfig.js.map +1 -0
  59. package/dist/commands/agentConfigCommand.d.ts +2 -0
  60. package/dist/commands/agentConfigCommand.d.ts.map +1 -0
  61. package/dist/commands/agentConfigCommand.js +20 -0
  62. package/dist/commands/agentConfigCommand.js.map +1 -0
  63. package/dist/commands/coaction.d.ts +2 -0
  64. package/dist/commands/coaction.d.ts.map +1 -0
  65. package/dist/commands/coaction.js +405 -0
  66. package/dist/commands/coaction.js.map +1 -0
  67. package/dist/commands/comment.d.ts +2 -0
  68. package/dist/commands/comment.d.ts.map +1 -0
  69. package/dist/commands/comment.js +63 -0
  70. package/dist/commands/comment.js.map +1 -0
  71. package/dist/commands/config.d.ts +2 -0
  72. package/dist/commands/config.d.ts.map +1 -0
  73. package/dist/commands/config.js +30 -0
  74. package/dist/commands/config.js.map +1 -0
  75. package/dist/commands/convention.d.ts +35 -0
  76. package/dist/commands/convention.d.ts.map +1 -0
  77. package/dist/commands/convention.js +680 -0
  78. package/dist/commands/convention.js.map +1 -0
  79. package/dist/commands/conventionRouter.d.ts +3 -0
  80. package/dist/commands/conventionRouter.d.ts.map +1 -0
  81. package/dist/commands/conventionRouter.js +46 -0
  82. package/dist/commands/conventionRouter.js.map +1 -0
  83. package/dist/commands/dependency.d.ts +4 -0
  84. package/dist/commands/dependency.d.ts.map +1 -0
  85. package/dist/commands/dependency.js +41 -0
  86. package/dist/commands/dependency.js.map +1 -0
  87. package/dist/commands/dependencyCommand.d.ts +2 -0
  88. package/dist/commands/dependencyCommand.d.ts.map +1 -0
  89. package/dist/commands/dependencyCommand.js +27 -0
  90. package/dist/commands/dependencyCommand.js.map +1 -0
  91. package/dist/commands/feedback.d.ts +2 -0
  92. package/dist/commands/feedback.d.ts.map +1 -0
  93. package/dist/commands/feedback.js +38 -0
  94. package/dist/commands/feedback.js.map +1 -0
  95. package/dist/commands/index.d.ts +2 -0
  96. package/dist/commands/index.d.ts.map +1 -0
  97. package/dist/commands/index.js +128 -0
  98. package/dist/commands/index.js.map +1 -0
  99. package/dist/commands/init.d.ts +22 -0
  100. package/dist/commands/init.d.ts.map +1 -0
  101. package/dist/commands/init.js +293 -0
  102. package/dist/commands/init.js.map +1 -0
  103. package/dist/commands/linear.d.ts +2 -0
  104. package/dist/commands/linear.d.ts.map +1 -0
  105. package/dist/commands/linear.js +41 -0
  106. package/dist/commands/linear.js.map +1 -0
  107. package/dist/commands/plan.d.ts +12 -0
  108. package/dist/commands/plan.d.ts.map +1 -0
  109. package/dist/commands/plan.js +626 -0
  110. package/dist/commands/plan.js.map +1 -0
  111. package/dist/commands/postmortem.d.ts +2 -0
  112. package/dist/commands/postmortem.d.ts.map +1 -0
  113. package/dist/commands/postmortem.js +157 -0
  114. package/dist/commands/postmortem.js.map +1 -0
  115. package/dist/commands/report.d.ts +2 -0
  116. package/dist/commands/report.d.ts.map +1 -0
  117. package/dist/commands/report.js +213 -0
  118. package/dist/commands/report.js.map +1 -0
  119. package/dist/commands/search.d.ts +2 -0
  120. package/dist/commands/search.d.ts.map +1 -0
  121. package/dist/commands/search.js +29 -0
  122. package/dist/commands/search.js.map +1 -0
  123. package/dist/commands/status.d.ts +2 -0
  124. package/dist/commands/status.d.ts.map +1 -0
  125. package/dist/commands/status.js +60 -0
  126. package/dist/commands/status.js.map +1 -0
  127. package/dist/index.d.ts +3 -0
  128. package/dist/index.d.ts.map +1 -0
  129. package/dist/index.js +750 -0
  130. package/dist/index.js.map +1 -0
  131. package/dist/types/index.d.ts +237 -0
  132. package/dist/types/index.d.ts.map +1 -0
  133. package/dist/types/index.js +6 -0
  134. package/dist/types/index.js.map +1 -0
  135. package/dist/utils/atomicWrite.d.ts +2 -0
  136. package/dist/utils/atomicWrite.d.ts.map +1 -0
  137. package/dist/utils/atomicWrite.js +7 -0
  138. package/dist/utils/atomicWrite.js.map +1 -0
  139. package/dist/utils/authServer.d.ts +18 -0
  140. package/dist/utils/authServer.d.ts.map +1 -0
  141. package/dist/utils/authServer.js +215 -0
  142. package/dist/utils/authServer.js.map +1 -0
  143. package/dist/utils/config.d.ts +31 -0
  144. package/dist/utils/config.d.ts.map +1 -0
  145. package/dist/utils/config.js +113 -0
  146. package/dist/utils/config.js.map +1 -0
  147. package/dist/utils/env.d.ts +7 -0
  148. package/dist/utils/env.d.ts.map +1 -0
  149. package/dist/utils/env.js +19 -0
  150. package/dist/utils/env.js.map +1 -0
  151. package/dist/utils/errors.d.ts +6 -0
  152. package/dist/utils/errors.d.ts.map +1 -0
  153. package/dist/utils/errors.js +112 -0
  154. package/dist/utils/errors.js.map +1 -0
  155. package/dist/utils/formatter.d.ts +2 -0
  156. package/dist/utils/formatter.d.ts.map +1 -0
  157. package/dist/utils/formatter.js +55 -0
  158. package/dist/utils/formatter.js.map +1 -0
  159. package/dist/utils/git.d.ts +21 -0
  160. package/dist/utils/git.d.ts.map +1 -0
  161. package/dist/utils/git.js +44 -0
  162. package/dist/utils/git.js.map +1 -0
  163. package/dist/utils/httpClient.d.ts +3 -0
  164. package/dist/utils/httpClient.d.ts.map +1 -0
  165. package/dist/utils/httpClient.js +45 -0
  166. package/dist/utils/httpClient.js.map +1 -0
  167. package/dist/utils/httpHeaders.d.ts +3 -0
  168. package/dist/utils/httpHeaders.d.ts.map +1 -0
  169. package/dist/utils/httpHeaders.js +11 -0
  170. package/dist/utils/httpHeaders.js.map +1 -0
  171. package/dist/utils/initOutput.d.ts +3 -0
  172. package/dist/utils/initOutput.d.ts.map +1 -0
  173. package/dist/utils/initOutput.js +45 -0
  174. package/dist/utils/initOutput.js.map +1 -0
  175. package/dist/utils/legacyCompat.d.ts +3 -0
  176. package/dist/utils/legacyCompat.d.ts.map +1 -0
  177. package/dist/utils/legacyCompat.js +20 -0
  178. package/dist/utils/legacyCompat.js.map +1 -0
  179. package/dist/utils/outputPolicy.d.ts +12 -0
  180. package/dist/utils/outputPolicy.d.ts.map +1 -0
  181. package/dist/utils/outputPolicy.js +171 -0
  182. package/dist/utils/outputPolicy.js.map +1 -0
  183. package/dist/utils/parsers.d.ts +14 -0
  184. package/dist/utils/parsers.d.ts.map +1 -0
  185. package/dist/utils/parsers.js +78 -0
  186. package/dist/utils/parsers.js.map +1 -0
  187. package/dist/utils/planFormat.d.ts +17 -0
  188. package/dist/utils/planFormat.d.ts.map +1 -0
  189. package/dist/utils/planFormat.js +81 -0
  190. package/dist/utils/planFormat.js.map +1 -0
  191. package/dist/utils/spinner.d.ts +6 -0
  192. package/dist/utils/spinner.d.ts.map +1 -0
  193. package/dist/utils/spinner.js +34 -0
  194. package/dist/utils/spinner.js.map +1 -0
  195. package/dist/utils/updateCheck.d.ts +19 -0
  196. package/dist/utils/updateCheck.d.ts.map +1 -0
  197. package/dist/utils/updateCheck.js +103 -0
  198. package/dist/utils/updateCheck.js.map +1 -0
  199. package/package.json +55 -0
  200. package/rlarua-agentteams-cli-0.1.8.tgz +0 -0
@@ -0,0 +1,171 @@
1
+ const summaryDefaultActions = {
2
+ plan: new Set(['create', 'update', 'start', 'finish']),
3
+ report: new Set(['create', 'update']),
4
+ postmortem: new Set(['create', 'update']),
5
+ coaction: new Set(['create', 'update']),
6
+ linear: new Set(['comment-create']),
7
+ };
8
+ const nextActionHints = {
9
+ plan: {
10
+ create: 'Next: agentteams plan start --id <id>',
11
+ finish: 'Next: agentteams report create --plan-id <id>',
12
+ },
13
+ };
14
+ export function shouldPrintSummary(context) {
15
+ if (context.verbose)
16
+ return false;
17
+ if (typeof context.outputFile === 'string' && context.outputFile.trim().length > 0) {
18
+ return true;
19
+ }
20
+ if (!context.resource || !context.action)
21
+ return false;
22
+ if (context.format === 'json' && context.formatExplicit) {
23
+ return false;
24
+ }
25
+ const actions = summaryDefaultActions[context.resource];
26
+ if (!actions)
27
+ return false;
28
+ return actions.has(context.action);
29
+ }
30
+ export function createSummaryLines(result, context) {
31
+ const lines = [];
32
+ const message = extractString(result, 'message');
33
+ if (message) {
34
+ lines.push(message);
35
+ }
36
+ else {
37
+ const resource = context.resource ?? 'command';
38
+ const action = context.action ?? 'run';
39
+ lines.push(`Success: ${resource} ${action}`);
40
+ }
41
+ const id = extractString(result, 'id');
42
+ const title = extractString(result, 'title');
43
+ const count = extractCount(result);
44
+ if (id && title) {
45
+ lines.push(`id: ${id}, title: ${title}`);
46
+ }
47
+ else if (id) {
48
+ lines.push(`id: ${id}`);
49
+ }
50
+ else if (title) {
51
+ lines.push(`title: ${title}`);
52
+ }
53
+ else if (typeof count === 'number') {
54
+ lines.push(`count: ${count}`);
55
+ }
56
+ const webUrl = extractString(result, 'webUrl');
57
+ if (webUrl) {
58
+ lines.push(`webUrl: ${webUrl}`);
59
+ }
60
+ const planWebUrl = extractTopLevelString(result, 'planWebUrl');
61
+ if (planWebUrl) {
62
+ lines.push(`planWebUrl: ${planWebUrl}`);
63
+ }
64
+ const hint = resolveNextActionHint(id, result, context);
65
+ if (hint) {
66
+ lines.push(hint);
67
+ }
68
+ return lines;
69
+ }
70
+ function resolveNextActionHint(id, result, context) {
71
+ if (!context.resource || !context.action)
72
+ return undefined;
73
+ // plan finish: completionReport가 이미 생성된 경우 힌트 표시 안 함
74
+ if (context.resource === 'plan' && context.action === 'finish') {
75
+ const cr = extractCompletionReportFromResult(result);
76
+ if (cr !== null && cr !== undefined)
77
+ return undefined;
78
+ }
79
+ const actionMap = nextActionHints[context.resource];
80
+ function extractCompletionReportFromResult(result) {
81
+ if (!result || typeof result !== 'object')
82
+ return undefined;
83
+ const data = result.data;
84
+ if (!data || typeof data !== 'object' || Array.isArray(data))
85
+ return undefined;
86
+ const dataObj = data;
87
+ if (!('completionReport' in dataObj))
88
+ return undefined;
89
+ const cr = dataObj.completionReport;
90
+ if (cr === null)
91
+ return null;
92
+ if (typeof cr === 'object' && !Array.isArray(cr))
93
+ return cr;
94
+ return undefined;
95
+ }
96
+ if (!actionMap)
97
+ return undefined;
98
+ const template = actionMap[context.action];
99
+ if (!template)
100
+ return undefined;
101
+ const resolvedId = id ?? extractDeepId(result);
102
+ if (!resolvedId)
103
+ return undefined;
104
+ return template.replace('<id>', resolvedId);
105
+ }
106
+ function extractDeepId(result) {
107
+ if (!result || typeof result !== 'object')
108
+ return undefined;
109
+ const obj = result;
110
+ const data = obj.data;
111
+ if (!data || typeof data !== 'object' || Array.isArray(data))
112
+ return undefined;
113
+ const dataObj = data;
114
+ for (const value of Object.values(dataObj)) {
115
+ if (value && typeof value === 'object' && !Array.isArray(value)) {
116
+ const nested = value;
117
+ const nestedData = nested.data;
118
+ if (nestedData && typeof nestedData === 'object' && !Array.isArray(nestedData)) {
119
+ const id = nestedData.id;
120
+ if (typeof id === 'string' && id.length > 0)
121
+ return id;
122
+ }
123
+ }
124
+ }
125
+ return undefined;
126
+ }
127
+ function extractTopLevelString(result, key) {
128
+ if (!result || typeof result !== 'object')
129
+ return undefined;
130
+ const value = result[key];
131
+ if (typeof value === 'string' && value.length > 0)
132
+ return value;
133
+ return undefined;
134
+ }
135
+ function extractCandidate(result) {
136
+ if (!result || typeof result !== 'object')
137
+ return undefined;
138
+ const obj = result;
139
+ const data = obj.data;
140
+ if (data && typeof data === 'object' && !Array.isArray(data)) {
141
+ return data;
142
+ }
143
+ return obj;
144
+ }
145
+ function extractString(result, key) {
146
+ const candidate = extractCandidate(result);
147
+ if (!candidate)
148
+ return undefined;
149
+ const value = candidate[key];
150
+ if (typeof value === 'string' && value.length > 0) {
151
+ return value;
152
+ }
153
+ return undefined;
154
+ }
155
+ function extractCount(result) {
156
+ if (!result || typeof result !== 'object')
157
+ return undefined;
158
+ const obj = result;
159
+ if (Array.isArray(obj.data)) {
160
+ return obj.data.length;
161
+ }
162
+ const candidate = extractCandidate(result);
163
+ if (!candidate)
164
+ return undefined;
165
+ const nestedData = candidate.data;
166
+ if (Array.isArray(nestedData)) {
167
+ return nestedData.length;
168
+ }
169
+ return undefined;
170
+ }
171
+ //# sourceMappingURL=outputPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputPolicy.js","sourceRoot":"","sources":["../../src/utils/outputPolicy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export declare function splitCsv(value: string): string[];
2
+ export declare function toNonEmptyString(value: unknown): string | undefined;
3
+ export declare function toNonNegativeInteger(value: unknown): number | undefined;
4
+ export declare function toPositiveInteger(value: unknown): number | undefined;
5
+ export declare function interpretEscapes(content: string): string;
6
+ export declare function stripFrontmatter(content: string): string;
7
+ export declare function ensureUrlProtocol(url: string): string;
8
+ export declare function toSafeFileName(input: string): string;
9
+ /**
10
+ * 업로드에 사용된 파일이 .agentteams/cli/temp/ 경로에 있을 경우 삭제합니다.
11
+ * convention 파일 등 실제 소스 파일은 삭제하지 않습니다.
12
+ */
13
+ export declare function deleteIfTempFile(fileInput: string): void;
14
+ //# sourceMappingURL=parsers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../src/utils/parsers.ts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAchD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAOnE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAUvE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAWpE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAIxD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAUxD"}
@@ -0,0 +1,78 @@
1
+ import { existsSync, unlinkSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ export function splitCsv(value) {
4
+ if (typeof value !== 'string') {
5
+ return [];
6
+ }
7
+ const trimmed = value.trim();
8
+ if (trimmed.length === 0) {
9
+ return [];
10
+ }
11
+ return trimmed
12
+ .split(',')
13
+ .map((item) => item.trim())
14
+ .filter((item) => item.length > 0);
15
+ }
16
+ export function toNonEmptyString(value) {
17
+ if (typeof value !== 'string') {
18
+ return undefined;
19
+ }
20
+ const trimmed = value.trim();
21
+ return trimmed.length > 0 ? trimmed : undefined;
22
+ }
23
+ export function toNonNegativeInteger(value) {
24
+ if (typeof value === 'number' && Number.isInteger(value) && value >= 0) {
25
+ return value;
26
+ }
27
+ if (typeof value === 'string' && /^\d+$/.test(value)) {
28
+ return Number.parseInt(value, 10);
29
+ }
30
+ return undefined;
31
+ }
32
+ export function toPositiveInteger(value) {
33
+ if (typeof value === 'number' && Number.isInteger(value) && value > 0) {
34
+ return value;
35
+ }
36
+ if (typeof value === 'string' && /^\d+$/.test(value)) {
37
+ const parsed = Number.parseInt(value, 10);
38
+ return parsed > 0 ? parsed : undefined;
39
+ }
40
+ return undefined;
41
+ }
42
+ export function interpretEscapes(content) {
43
+ return content
44
+ .replace(/\\r\\n/g, '\r\n')
45
+ .replace(/\\n/g, '\n');
46
+ }
47
+ export function stripFrontmatter(content) {
48
+ return content.replace(/^---[\r\n][\s\S]*?[\r\n]---[\r\n]?/, '').trimStart();
49
+ }
50
+ export function ensureUrlProtocol(url) {
51
+ if (/^https?:\/\//i.test(url))
52
+ return url;
53
+ return `https://${url}`;
54
+ }
55
+ export function toSafeFileName(input) {
56
+ return input
57
+ .toLowerCase()
58
+ .replace(/[^a-z0-9]+/g, '-')
59
+ .replace(/^-+|-+$/g, '')
60
+ .slice(0, 60);
61
+ }
62
+ /**
63
+ * 업로드에 사용된 파일이 .agentteams/cli/temp/ 경로에 있을 경우 삭제합니다.
64
+ * convention 파일 등 실제 소스 파일은 삭제하지 않습니다.
65
+ */
66
+ export function deleteIfTempFile(fileInput) {
67
+ const resolved = resolve(fileInput);
68
+ const normalized = resolved.replace(/\\/g, '/');
69
+ if (normalized.includes('/.agentteams/cli/temp/') && existsSync(resolved)) {
70
+ try {
71
+ unlinkSync(resolved);
72
+ }
73
+ catch {
74
+ // 삭제 실패는 무시 (읽기 전용 파일시스템 등 예외 상황)
75
+ }
76
+ }
77
+ }
78
+ //# sourceMappingURL=parsers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../src/utils/parsers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export declare function normalizeDependencies(raw: unknown): {
2
+ blocking: any[];
3
+ dependents: any[];
4
+ };
5
+ export declare function mergePlanWithDependencies(rawPlanResponse: unknown, dependencies: {
6
+ blocking: any[];
7
+ dependents: any[];
8
+ }): {
9
+ data: Record<string, unknown>;
10
+ };
11
+ export declare function formatPlanWithDependenciesText(planData: Record<string, unknown>, dependencies: {
12
+ blocking: any[];
13
+ dependents: any[];
14
+ }): string;
15
+ export declare function appendLineIfExists(lines: string[], key: string, value: unknown): void;
16
+ export declare function renderDependencyLine(label: 'BLOCKING' | 'DEPENDENT', plan: unknown): string;
17
+ //# sourceMappingURL=planFormat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planFormat.d.ts","sourceRoot":"","sources":["../../src/utils/planFormat.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAAC,UAAU,EAAE,GAAG,EAAE,CAAA;CAAE,CAc1F;AAED,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,OAAO,EACxB,YAAY,EAAE;IAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAAC,UAAU,EAAE,GAAG,EAAE,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAsBnC;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,YAAY,EAAE;IAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAAC,UAAU,EAAE,GAAG,EAAE,CAAA;CAAE,GACnD,MAAM,CAkCR;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAWrF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAW3F"}
@@ -0,0 +1,81 @@
1
+ export function normalizeDependencies(raw) {
2
+ if (!raw || typeof raw !== 'object') {
3
+ return { blocking: [], dependents: [] };
4
+ }
5
+ const root = raw;
6
+ const data = (root.data && typeof root.data === 'object' && !Array.isArray(root.data))
7
+ ? root.data
8
+ : root;
9
+ const blocking = Array.isArray(data.blocking) ? data.blocking : [];
10
+ const dependents = Array.isArray(data.dependents) ? data.dependents : [];
11
+ return { blocking, dependents };
12
+ }
13
+ export function mergePlanWithDependencies(rawPlanResponse, dependencies) {
14
+ const fallback = {
15
+ dependencies,
16
+ };
17
+ if (!rawPlanResponse || typeof rawPlanResponse !== 'object') {
18
+ return { data: fallback };
19
+ }
20
+ const root = rawPlanResponse;
21
+ const rawData = root.data;
22
+ const planData = rawData && typeof rawData === 'object' && !Array.isArray(rawData)
23
+ ? { ...rawData }
24
+ : {};
25
+ planData.dependencies = dependencies;
26
+ return {
27
+ ...root,
28
+ data: planData,
29
+ };
30
+ }
31
+ export function formatPlanWithDependenciesText(planData, dependencies) {
32
+ const lines = [];
33
+ appendLineIfExists(lines, 'id', planData.id);
34
+ appendLineIfExists(lines, 'title', planData.title);
35
+ appendLineIfExists(lines, 'status', planData.status);
36
+ appendLineIfExists(lines, 'type', planData.type);
37
+ appendLineIfExists(lines, 'priority', planData.priority);
38
+ appendLineIfExists(lines, 'updatedAt', planData.updatedAt);
39
+ appendLineIfExists(lines, 'createdAt', planData.createdAt);
40
+ const ignoredKeys = new Set(['id', 'title', 'status', 'type', 'priority', 'updatedAt', 'createdAt', 'dependencies']);
41
+ for (const [key, value] of Object.entries(planData)) {
42
+ if (ignoredKeys.has(key) || value === null || value === undefined) {
43
+ continue;
44
+ }
45
+ lines.push(`${key}: ${String(value)}`);
46
+ }
47
+ lines.push('---');
48
+ lines.push('## Dependencies');
49
+ const rendered = [
50
+ ...dependencies.blocking.map((plan) => renderDependencyLine('BLOCKING', plan)),
51
+ ...dependencies.dependents.map((plan) => renderDependencyLine('DEPENDENT', plan)),
52
+ ];
53
+ if (rendered.length === 0) {
54
+ lines.push('No dependencies.');
55
+ }
56
+ else {
57
+ lines.push(...rendered);
58
+ }
59
+ return lines.join('\n');
60
+ }
61
+ export function appendLineIfExists(lines, key, value) {
62
+ if (value === null || value === undefined) {
63
+ return;
64
+ }
65
+ const normalized = String(value).trim();
66
+ if (normalized.length === 0) {
67
+ return;
68
+ }
69
+ lines.push(`${key}: ${normalized}`);
70
+ }
71
+ export function renderDependencyLine(label, plan) {
72
+ if (!plan || typeof plan !== 'object') {
73
+ return `- [${label}] unknown`;
74
+ }
75
+ const target = plan;
76
+ const id = typeof target.id === 'string' && target.id.length > 0 ? target.id : 'unknown-id';
77
+ const title = typeof target.title === 'string' && target.title.length > 0 ? target.title : '(no title)';
78
+ const status = typeof target.status === 'string' && target.status.length > 0 ? target.status : 'UNKNOWN';
79
+ return `- [${label}] ${id}: ${title} (${status})`;
80
+ }
81
+ //# sourceMappingURL=planFormat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planFormat.js","sourceRoot":"","sources":["../../src/utils/planFormat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type Ora } from 'ora';
2
+ export declare function withSpinner<T>(text: string, fn: () => Promise<T>, successText?: string): Promise<T>;
3
+ export declare function createSpinner(text: string): Ora | null;
4
+ export declare function formatFileInfo(filePath: string, content: string): string;
5
+ export declare function printFileInfo(filePath: string, content: string): void;
6
+ //# sourceMappingURL=spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/utils/spinner.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAKpC,wBAAsB,WAAW,CAAC,CAAC,EACjC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,CAAC,CAYZ;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAGtD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKxE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGrE"}
@@ -0,0 +1,34 @@
1
+ import ora from 'ora';
2
+ import chalk from 'chalk';
3
+ const isInteractive = process.stderr.isTTY === true;
4
+ export async function withSpinner(text, fn, successText) {
5
+ if (!isInteractive)
6
+ return fn();
7
+ const spinner = ora({ text, stream: process.stderr }).start();
8
+ try {
9
+ const result = await fn();
10
+ spinner.succeed(successText);
11
+ return result;
12
+ }
13
+ catch (error) {
14
+ spinner.fail();
15
+ throw error;
16
+ }
17
+ }
18
+ export function createSpinner(text) {
19
+ if (!isInteractive)
20
+ return null;
21
+ return ora({ text, stream: process.stderr }).start();
22
+ }
23
+ export function formatFileInfo(filePath, content) {
24
+ const bytes = Buffer.byteLength(content, 'utf-8');
25
+ const lines = content.split('\n').length;
26
+ const size = bytes < 1024 ? `${bytes} B` : `${(bytes / 1024).toFixed(1)} KB`;
27
+ return `${chalk.cyan(filePath)} ${chalk.dim(`(${size}, ${lines} lines)`)}`;
28
+ }
29
+ export function printFileInfo(filePath, content) {
30
+ if (!isInteractive)
31
+ return;
32
+ process.stderr.write(` ${formatFileInfo(filePath, content)}\n`);
33
+ }
34
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/utils/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,GAAiB,MAAM,KAAK,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,EAAoB,EACpB,WAAoB;IAEpB,IAAI,CAAC,aAAa;QAAE,OAAO,EAAE,EAAE,CAAC;IAEhC,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;QAC1B,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC7B,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAgB,EAAE,OAAe;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACzC,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7E,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,OAAe;IAC7D,IAAI,CAAC,aAAa;QAAE,OAAO;IAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC"}
@@ -0,0 +1,19 @@
1
+ interface CacheData {
2
+ lastCheck: number;
3
+ latestVersion: string;
4
+ }
5
+ export declare function readCache(): CacheData | null;
6
+ export declare function writeCache(data: CacheData): void;
7
+ export declare function compareVersions(current: string, latest: string): boolean;
8
+ /**
9
+ * Start an async update check. Call early, collect the message later.
10
+ * Never throws, never blocks CLI execution.
11
+ *
12
+ * 우선순위:
13
+ * 1. API 응답 헤더(X-CLI-Latest-Version)로 갱신된 캐시 확인
14
+ * 2. 캐시 만료 시 npm registry fallback
15
+ */
16
+ export declare function startUpdateCheck(currentVersion: string): Promise<string | null>;
17
+ export declare function formatUpdateMessage(current: string, latest: string): string;
18
+ export {};
19
+ //# sourceMappingURL=updateCheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateCheck.d.ts","sourceRoot":"","sources":["../../src/utils/updateCheck.ts"],"names":[],"mappings":"AASA,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAMD,wBAAgB,SAAS,IAAI,SAAS,GAAG,IAAI,CAQ5C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAShD;AAuBD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CASxE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuB/E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAW3E"}
@@ -0,0 +1,103 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import chalk from 'chalk';
5
+ const PACKAGE_NAME = '@agentteams/cli';
6
+ const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours
7
+ const FETCH_TIMEOUT_MS = 3000;
8
+ function getCachePath() {
9
+ return join(homedir(), '.agentteams', 'update-check.json');
10
+ }
11
+ export function readCache() {
12
+ try {
13
+ const cachePath = getCachePath();
14
+ if (!existsSync(cachePath))
15
+ return null;
16
+ return JSON.parse(readFileSync(cachePath, 'utf-8'));
17
+ }
18
+ catch {
19
+ return null;
20
+ }
21
+ }
22
+ export function writeCache(data) {
23
+ try {
24
+ const cachePath = getCachePath();
25
+ const dir = join(homedir(), '.agentteams');
26
+ if (!existsSync(dir))
27
+ mkdirSync(dir, { recursive: true });
28
+ writeFileSync(cachePath, JSON.stringify(data), 'utf-8');
29
+ }
30
+ catch {
31
+ // ignore write failures silently
32
+ }
33
+ }
34
+ /** Fallback: npm registry에서 최신 버전 조회 (API 헤더가 없는 경우에만 사용) */
35
+ async function fetchLatestVersion() {
36
+ try {
37
+ const controller = new AbortController();
38
+ const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
39
+ const response = await fetch(`https://registry.npmjs.org/${PACKAGE_NAME}/latest`, { signal: controller.signal });
40
+ clearTimeout(timeout);
41
+ if (!response.ok)
42
+ return null;
43
+ const data = (await response.json());
44
+ return data.version ?? null;
45
+ }
46
+ catch {
47
+ return null;
48
+ }
49
+ }
50
+ export function compareVersions(current, latest) {
51
+ const parse = (v) => v.replace(/^v/, '').split('.').map(Number);
52
+ const c = parse(current);
53
+ const l = parse(latest);
54
+ for (let i = 0; i < 3; i++) {
55
+ if ((l[i] ?? 0) > (c[i] ?? 0))
56
+ return true;
57
+ if ((l[i] ?? 0) < (c[i] ?? 0))
58
+ return false;
59
+ }
60
+ return false;
61
+ }
62
+ /**
63
+ * Start an async update check. Call early, collect the message later.
64
+ * Never throws, never blocks CLI execution.
65
+ *
66
+ * 우선순위:
67
+ * 1. API 응답 헤더(X-CLI-Latest-Version)로 갱신된 캐시 확인
68
+ * 2. 캐시 만료 시 npm registry fallback
69
+ */
70
+ export function startUpdateCheck(currentVersion) {
71
+ return (async () => {
72
+ // 1. 캐시 확인 (httpClient가 API 헤더로 이미 갱신했을 수 있음)
73
+ const cache = readCache();
74
+ if (cache && Date.now() - cache.lastCheck < CHECK_INTERVAL_MS) {
75
+ if (compareVersions(currentVersion, cache.latestVersion)) {
76
+ return formatUpdateMessage(currentVersion, cache.latestVersion);
77
+ }
78
+ return null;
79
+ }
80
+ // 2. 캐시 없거나 만료 → npm registry fallback
81
+ const latestVersion = await fetchLatestVersion();
82
+ if (!latestVersion)
83
+ return null;
84
+ writeCache({ lastCheck: Date.now(), latestVersion });
85
+ if (compareVersions(currentVersion, latestVersion)) {
86
+ return formatUpdateMessage(currentVersion, latestVersion);
87
+ }
88
+ return null;
89
+ })().catch(() => null);
90
+ }
91
+ export function formatUpdateMessage(current, latest) {
92
+ return [
93
+ '',
94
+ chalk.yellow('╭─────────────────────────────────────────────────────────────╮'),
95
+ chalk.yellow('│') + chalk.bold.yellow(' ACTION REQUIRED: CLI update available') + chalk.yellow(' │'),
96
+ chalk.yellow('│') + ` ${current} → ${chalk.green(latest)}` + ' '.repeat(Math.max(0, 48 - current.length - latest.length)) + chalk.yellow('│'),
97
+ chalk.yellow('│') + chalk.cyan(` Run: npm install -g ${PACKAGE_NAME}`) + ' '.repeat(Math.max(0, 22 - PACKAGE_NAME.length + 25)) + chalk.yellow('│'),
98
+ chalk.yellow('│') + ' Update to get the latest conventions and features.' + ' '.repeat(8) + chalk.yellow('│'),
99
+ chalk.yellow('╰─────────────────────────────────────────────────────────────╯'),
100
+ '',
101
+ ].join('\n');
102
+ }
103
+ //# sourceMappingURL=updateCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateCheck.js","sourceRoot":"","sources":["../../src/utils/updateCheck.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@agentteams/cli",
3
+ "version": "0.1.22",
4
+ "description": "CLI tool for AgentTeams API",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "agentteams": "dist/index.js"
9
+ },
10
+ "publishConfig": {
11
+ "access": "public"
12
+ },
13
+ "scripts": {
14
+ "build": "tsc",
15
+ "typecheck": "tsc --noEmit",
16
+ "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
17
+ "test:watch": "node --experimental-vm-modules node_modules/jest/bin/jest.js --watch",
18
+ "prepublishOnly": "npm run build"
19
+ },
20
+ "keywords": [
21
+ "cli",
22
+ "agentteams",
23
+ "api"
24
+ ],
25
+ "author": "",
26
+ "license": "Apache-2.0",
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "https://github.com/rlarua/AgentTeams-cli.git"
30
+ },
31
+ "bugs": {
32
+ "url": "https://github.com/rlarua/AgentTeams-cli/issues"
33
+ },
34
+ "homepage": "https://agentteams.run",
35
+ "engines": {
36
+ "node": ">=18"
37
+ },
38
+ "dependencies": {
39
+ "@clack/prompts": "^1.1.0",
40
+ "axios": "^1.7.9",
41
+ "chalk": "^5.6.2",
42
+ "commander": "^12.1.0",
43
+ "diff": "^8.0.2",
44
+ "gray-matter": "^4.0.3",
45
+ "open": "^10.1.0",
46
+ "ora": "^9.3.0"
47
+ },
48
+ "devDependencies": {
49
+ "@types/jest": "^29.5.14",
50
+ "@types/node": "^22.10.5",
51
+ "jest": "^29.7.0",
52
+ "ts-jest": "^29.2.5",
53
+ "typescript": "^5.7.3"
54
+ }
55
+ }
Binary file