@channelfactory/cliend 0.1.0

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 (233) hide show
  1. package/dist/bin/cliend.d.ts +3 -0
  2. package/dist/bin/cliend.d.ts.map +1 -0
  3. package/dist/bin/cliend.js +7 -0
  4. package/dist/bin/cliend.js.map +1 -0
  5. package/dist/src/auth/auth-manager.d.ts +16 -0
  6. package/dist/src/auth/auth-manager.d.ts.map +1 -0
  7. package/dist/src/auth/auth-manager.js +135 -0
  8. package/dist/src/auth/auth-manager.js.map +1 -0
  9. package/dist/src/auth/credentials-store.d.ts +12 -0
  10. package/dist/src/auth/credentials-store.d.ts.map +1 -0
  11. package/dist/src/auth/credentials-store.js +95 -0
  12. package/dist/src/auth/credentials-store.js.map +1 -0
  13. package/dist/src/auth/local-server.d.ts +14 -0
  14. package/dist/src/auth/local-server.d.ts.map +1 -0
  15. package/dist/src/auth/local-server.js +49 -0
  16. package/dist/src/auth/local-server.js.map +1 -0
  17. package/dist/src/config/config-manager.d.ts +11 -0
  18. package/dist/src/config/config-manager.d.ts.map +1 -0
  19. package/dist/src/config/config-manager.js +102 -0
  20. package/dist/src/config/config-manager.js.map +1 -0
  21. package/dist/src/config/config.schema.d.ts +276 -0
  22. package/dist/src/config/config.schema.d.ts.map +1 -0
  23. package/dist/src/config/config.schema.js +46 -0
  24. package/dist/src/config/config.schema.js.map +1 -0
  25. package/dist/src/config/defaults.d.ts +3 -0
  26. package/dist/src/config/defaults.d.ts.map +1 -0
  27. package/dist/src/config/defaults.js +46 -0
  28. package/dist/src/config/defaults.js.map +1 -0
  29. package/dist/src/core/context-builder.d.ts +6 -0
  30. package/dist/src/core/context-builder.d.ts.map +1 -0
  31. package/dist/src/core/context-builder.js +55 -0
  32. package/dist/src/core/context-builder.js.map +1 -0
  33. package/dist/src/core/fan-out-executor.d.ts +16 -0
  34. package/dist/src/core/fan-out-executor.d.ts.map +1 -0
  35. package/dist/src/core/fan-out-executor.js +55 -0
  36. package/dist/src/core/fan-out-executor.js.map +1 -0
  37. package/dist/src/core/judge.d.ts +15 -0
  38. package/dist/src/core/judge.d.ts.map +1 -0
  39. package/dist/src/core/judge.js +133 -0
  40. package/dist/src/core/judge.js.map +1 -0
  41. package/dist/src/core/orchestrator.d.ts +19 -0
  42. package/dist/src/core/orchestrator.d.ts.map +1 -0
  43. package/dist/src/core/orchestrator.js +76 -0
  44. package/dist/src/core/orchestrator.js.map +1 -0
  45. package/dist/src/errors/auth-error.d.ts +16 -0
  46. package/dist/src/errors/auth-error.d.ts.map +1 -0
  47. package/dist/src/errors/auth-error.js +30 -0
  48. package/dist/src/errors/auth-error.js.map +1 -0
  49. package/dist/src/errors/base-error.d.ts +13 -0
  50. package/dist/src/errors/base-error.d.ts.map +1 -0
  51. package/dist/src/errors/base-error.js +13 -0
  52. package/dist/src/errors/base-error.js.map +1 -0
  53. package/dist/src/errors/error-handler.d.ts +7 -0
  54. package/dist/src/errors/error-handler.d.ts.map +1 -0
  55. package/dist/src/errors/error-handler.js +20 -0
  56. package/dist/src/errors/error-handler.js.map +1 -0
  57. package/dist/src/errors/integration-error.d.ts +20 -0
  58. package/dist/src/errors/integration-error.d.ts.map +1 -0
  59. package/dist/src/errors/integration-error.js +29 -0
  60. package/dist/src/errors/integration-error.js.map +1 -0
  61. package/dist/src/errors/provider-error.d.ts +23 -0
  62. package/dist/src/errors/provider-error.d.ts.map +1 -0
  63. package/dist/src/errors/provider-error.js +49 -0
  64. package/dist/src/errors/provider-error.js.map +1 -0
  65. package/dist/src/index.d.ts +2 -0
  66. package/dist/src/index.d.ts.map +1 -0
  67. package/dist/src/index.js +20 -0
  68. package/dist/src/index.js.map +1 -0
  69. package/dist/src/integrations/atlassian/jira-client.d.ts +16 -0
  70. package/dist/src/integrations/atlassian/jira-client.d.ts.map +1 -0
  71. package/dist/src/integrations/atlassian/jira-client.js +100 -0
  72. package/dist/src/integrations/atlassian/jira-client.js.map +1 -0
  73. package/dist/src/integrations/atlassian/oauth.d.ts +2 -0
  74. package/dist/src/integrations/atlassian/oauth.d.ts.map +1 -0
  75. package/dist/src/integrations/atlassian/oauth.js +3 -0
  76. package/dist/src/integrations/atlassian/oauth.js.map +1 -0
  77. package/dist/src/integrations/atlassian/rovo-client.d.ts +13 -0
  78. package/dist/src/integrations/atlassian/rovo-client.d.ts.map +1 -0
  79. package/dist/src/integrations/atlassian/rovo-client.js +17 -0
  80. package/dist/src/integrations/atlassian/rovo-client.js.map +1 -0
  81. package/dist/src/integrations/atlassian/token-store.d.ts +2 -0
  82. package/dist/src/integrations/atlassian/token-store.d.ts.map +1 -0
  83. package/dist/src/integrations/atlassian/token-store.js +3 -0
  84. package/dist/src/integrations/atlassian/token-store.js.map +1 -0
  85. package/dist/src/integrations/bitbucket/bitbucket-client.d.ts +23 -0
  86. package/dist/src/integrations/bitbucket/bitbucket-client.d.ts.map +1 -0
  87. package/dist/src/integrations/bitbucket/bitbucket-client.js +58 -0
  88. package/dist/src/integrations/bitbucket/bitbucket-client.js.map +1 -0
  89. package/dist/src/integrations/bitbucket/obsidian-reader.d.ts +21 -0
  90. package/dist/src/integrations/bitbucket/obsidian-reader.d.ts.map +1 -0
  91. package/dist/src/integrations/bitbucket/obsidian-reader.js +85 -0
  92. package/dist/src/integrations/bitbucket/obsidian-reader.js.map +1 -0
  93. package/dist/src/providers/chatgpt.provider.d.ts +17 -0
  94. package/dist/src/providers/chatgpt.provider.d.ts.map +1 -0
  95. package/dist/src/providers/chatgpt.provider.js +66 -0
  96. package/dist/src/providers/chatgpt.provider.js.map +1 -0
  97. package/dist/src/providers/claude.provider.d.ts +17 -0
  98. package/dist/src/providers/claude.provider.d.ts.map +1 -0
  99. package/dist/src/providers/claude.provider.js +70 -0
  100. package/dist/src/providers/claude.provider.js.map +1 -0
  101. package/dist/src/providers/codex.provider.d.ts +17 -0
  102. package/dist/src/providers/codex.provider.d.ts.map +1 -0
  103. package/dist/src/providers/codex.provider.js +64 -0
  104. package/dist/src/providers/codex.provider.js.map +1 -0
  105. package/dist/src/providers/provider-registry.d.ts +10 -0
  106. package/dist/src/providers/provider-registry.d.ts.map +1 -0
  107. package/dist/src/providers/provider-registry.js +29 -0
  108. package/dist/src/providers/provider-registry.js.map +1 -0
  109. package/dist/src/providers/provider.interface.d.ts +10 -0
  110. package/dist/src/providers/provider.interface.d.ts.map +1 -0
  111. package/dist/src/providers/provider.interface.js +2 -0
  112. package/dist/src/providers/provider.interface.js.map +1 -0
  113. package/dist/src/repl/command-registry.d.ts +25 -0
  114. package/dist/src/repl/command-registry.d.ts.map +1 -0
  115. package/dist/src/repl/command-registry.js +19 -0
  116. package/dist/src/repl/command-registry.js.map +1 -0
  117. package/dist/src/repl/commands/auth.d.ts +3 -0
  118. package/dist/src/repl/commands/auth.d.ts.map +1 -0
  119. package/dist/src/repl/commands/auth.js +17 -0
  120. package/dist/src/repl/commands/auth.js.map +1 -0
  121. package/dist/src/repl/commands/config.d.ts +3 -0
  122. package/dist/src/repl/commands/config.d.ts.map +1 -0
  123. package/dist/src/repl/commands/config.js +39 -0
  124. package/dist/src/repl/commands/config.js.map +1 -0
  125. package/dist/src/repl/commands/help.d.ts +3 -0
  126. package/dist/src/repl/commands/help.d.ts.map +1 -0
  127. package/dist/src/repl/commands/help.js +33 -0
  128. package/dist/src/repl/commands/help.js.map +1 -0
  129. package/dist/src/repl/commands/memory.d.ts +3 -0
  130. package/dist/src/repl/commands/memory.d.ts.map +1 -0
  131. package/dist/src/repl/commands/memory.js +30 -0
  132. package/dist/src/repl/commands/memory.js.map +1 -0
  133. package/dist/src/repl/commands/obsidian.d.ts +3 -0
  134. package/dist/src/repl/commands/obsidian.d.ts.map +1 -0
  135. package/dist/src/repl/commands/obsidian.js +30 -0
  136. package/dist/src/repl/commands/obsidian.js.map +1 -0
  137. package/dist/src/repl/commands/sessions.d.ts +5 -0
  138. package/dist/src/repl/commands/sessions.d.ts.map +1 -0
  139. package/dist/src/repl/commands/sessions.js +77 -0
  140. package/dist/src/repl/commands/sessions.js.map +1 -0
  141. package/dist/src/repl/commands/status.d.ts +3 -0
  142. package/dist/src/repl/commands/status.d.ts.map +1 -0
  143. package/dist/src/repl/commands/status.js +32 -0
  144. package/dist/src/repl/commands/status.js.map +1 -0
  145. package/dist/src/repl/commands/ticket.d.ts +3 -0
  146. package/dist/src/repl/commands/ticket.d.ts.map +1 -0
  147. package/dist/src/repl/commands/ticket.js +38 -0
  148. package/dist/src/repl/commands/ticket.js.map +1 -0
  149. package/dist/src/repl/input-parser.d.ts +13 -0
  150. package/dist/src/repl/input-parser.d.ts.map +1 -0
  151. package/dist/src/repl/input-parser.js +25 -0
  152. package/dist/src/repl/input-parser.js.map +1 -0
  153. package/dist/src/repl/repl.d.ts +34 -0
  154. package/dist/src/repl/repl.d.ts.map +1 -0
  155. package/dist/src/repl/repl.js +180 -0
  156. package/dist/src/repl/repl.js.map +1 -0
  157. package/dist/src/session/history.d.ts +8 -0
  158. package/dist/src/session/history.d.ts.map +1 -0
  159. package/dist/src/session/history.js +26 -0
  160. package/dist/src/session/history.js.map +1 -0
  161. package/dist/src/session/memory-manager.d.ts +20 -0
  162. package/dist/src/session/memory-manager.d.ts.map +1 -0
  163. package/dist/src/session/memory-manager.js +65 -0
  164. package/dist/src/session/memory-manager.js.map +1 -0
  165. package/dist/src/session/session-manager.d.ts +15 -0
  166. package/dist/src/session/session-manager.d.ts.map +1 -0
  167. package/dist/src/session/session-manager.js +139 -0
  168. package/dist/src/session/session-manager.js.map +1 -0
  169. package/dist/src/session/session.d.ts +31 -0
  170. package/dist/src/session/session.d.ts.map +1 -0
  171. package/dist/src/session/session.js +49 -0
  172. package/dist/src/session/session.js.map +1 -0
  173. package/dist/src/types/ai-response.d.ts +40 -0
  174. package/dist/src/types/ai-response.d.ts.map +1 -0
  175. package/dist/src/types/ai-response.js +2 -0
  176. package/dist/src/types/ai-response.js.map +1 -0
  177. package/dist/src/types/config.d.ts +51 -0
  178. package/dist/src/types/config.d.ts.map +1 -0
  179. package/dist/src/types/config.js +2 -0
  180. package/dist/src/types/config.js.map +1 -0
  181. package/dist/src/types/context.d.ts +18 -0
  182. package/dist/src/types/context.d.ts.map +1 -0
  183. package/dist/src/types/context.js +2 -0
  184. package/dist/src/types/context.js.map +1 -0
  185. package/dist/src/types/message.d.ts +13 -0
  186. package/dist/src/types/message.d.ts.map +1 -0
  187. package/dist/src/types/message.js +2 -0
  188. package/dist/src/types/message.js.map +1 -0
  189. package/dist/src/types/session.d.ts +30 -0
  190. package/dist/src/types/session.d.ts.map +1 -0
  191. package/dist/src/types/session.js +2 -0
  192. package/dist/src/types/session.js.map +1 -0
  193. package/dist/src/types/ticket.d.ts +18 -0
  194. package/dist/src/types/ticket.d.ts.map +1 -0
  195. package/dist/src/types/ticket.js +2 -0
  196. package/dist/src/types/ticket.js.map +1 -0
  197. package/dist/src/ui/logger.d.ts +3 -0
  198. package/dist/src/ui/logger.d.ts.map +1 -0
  199. package/dist/src/ui/logger.js +10 -0
  200. package/dist/src/ui/logger.js.map +1 -0
  201. package/dist/src/ui/output-formatter.d.ts +4 -0
  202. package/dist/src/ui/output-formatter.d.ts.map +1 -0
  203. package/dist/src/ui/output-formatter.js +52 -0
  204. package/dist/src/ui/output-formatter.js.map +1 -0
  205. package/dist/src/ui/prompt-line.d.ts +2 -0
  206. package/dist/src/ui/prompt-line.d.ts.map +1 -0
  207. package/dist/src/ui/prompt-line.js +4 -0
  208. package/dist/src/ui/prompt-line.js.map +1 -0
  209. package/dist/src/ui/spinner.d.ts +3 -0
  210. package/dist/src/ui/spinner.d.ts.map +1 -0
  211. package/dist/src/ui/spinner.js +5 -0
  212. package/dist/src/ui/spinner.js.map +1 -0
  213. package/dist/src/ui/welcome.d.ts +2 -0
  214. package/dist/src/ui/welcome.d.ts.map +1 -0
  215. package/dist/src/ui/welcome.js +14 -0
  216. package/dist/src/ui/welcome.js.map +1 -0
  217. package/dist/src/utils/crypto.d.ts +2 -0
  218. package/dist/src/utils/crypto.d.ts.map +1 -0
  219. package/dist/src/utils/crypto.js +3 -0
  220. package/dist/src/utils/crypto.js.map +1 -0
  221. package/dist/src/utils/http-client.d.ts +8 -0
  222. package/dist/src/utils/http-client.d.ts.map +1 -0
  223. package/dist/src/utils/http-client.js +36 -0
  224. package/dist/src/utils/http-client.js.map +1 -0
  225. package/dist/src/utils/retry.d.ts +7 -0
  226. package/dist/src/utils/retry.d.ts.map +1 -0
  227. package/dist/src/utils/retry.js +23 -0
  228. package/dist/src/utils/retry.js.map +1 -0
  229. package/dist/src/utils/validation.d.ts +9 -0
  230. package/dist/src/utils/validation.d.ts.map +1 -0
  231. package/dist/src/utils/validation.js +19 -0
  232. package/dist/src/utils/validation.js.map +1 -0
  233. package/package.json +65 -0
@@ -0,0 +1,49 @@
1
+ import { History } from './history.js';
2
+ export class SessionInstance {
3
+ id;
4
+ meta;
5
+ context;
6
+ history;
7
+ memory;
8
+ historyLog;
9
+ memoryManager;
10
+ constructor(options) {
11
+ this.id = options.id;
12
+ this.meta = options.meta;
13
+ this.historyLog = new History(options.historyPath);
14
+ this.memoryManager = options.memoryManager;
15
+ this.memoryManager.setSessionPath(options.sessionDir);
16
+ this.history = options.existingHistory ?? [];
17
+ this.context = options.existingContext ?? {
18
+ ticket: null,
19
+ docs: [],
20
+ projectMemory: '',
21
+ globalMemory: '',
22
+ };
23
+ this.memory = options.existingMemory ?? '';
24
+ }
25
+ async addMessage(message) {
26
+ this.history.push(message);
27
+ await this.historyLog.append(message);
28
+ }
29
+ setTicket(ticket) {
30
+ this.context.ticket = ticket;
31
+ this.meta.ticketId = ticket.key;
32
+ }
33
+ setDocs(docs) {
34
+ this.context.docs = docs;
35
+ }
36
+ async loadMemory() {
37
+ const { global: globalMem, project, session } = await this.memoryManager.loadAll();
38
+ this.context.globalMemory = globalMem;
39
+ this.context.projectMemory = project;
40
+ this.memory = session;
41
+ }
42
+ async saveMemory() {
43
+ await this.memoryManager.saveSession(this.memory);
44
+ }
45
+ get hasContext() {
46
+ return this.context.ticket !== null || this.context.docs.length > 0;
47
+ }
48
+ }
49
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/session/session.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,MAAM,OAAO,eAAe;IACV,EAAE,CAAS;IACX,IAAI,CAAc;IAC3B,OAAO,CAAiB;IACxB,OAAO,CAAwB;IAC/B,MAAM,CAAS;IAEL,UAAU,CAAU;IACpB,aAAa,CAAgB;IAE9C,YAAY,OASX;QACC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEtD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,eAAe,IAAI;YACxC,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,EAAE;YACR,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,EAAE;SACjB,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAA4B;QAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,SAAS,CAAC,MAAkB;QAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,IAAwB;QAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QACnF,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACtE,CAAC;CACF"}
@@ -0,0 +1,40 @@
1
+ export interface AIProviderResponse {
2
+ providerName: string;
3
+ success: boolean;
4
+ output?: CodeOutput;
5
+ error?: string;
6
+ latencyMs: number;
7
+ tokenUsage?: TokenUsage;
8
+ }
9
+ export interface CodeOutput {
10
+ code: string;
11
+ explanation: string;
12
+ language?: string;
13
+ files?: GeneratedFile[];
14
+ }
15
+ export interface GeneratedFile {
16
+ path: string;
17
+ content: string;
18
+ language: string;
19
+ }
20
+ export interface TokenUsage {
21
+ inputTokens: number;
22
+ outputTokens: number;
23
+ }
24
+ export interface JudgeScore {
25
+ providerName: string;
26
+ readability: number;
27
+ performance: number;
28
+ standards: number;
29
+ completeness: number;
30
+ security: number;
31
+ totalScore: number;
32
+ reasoning: string;
33
+ }
34
+ export interface JudgeResult {
35
+ scores: JudgeScore[];
36
+ winner: string;
37
+ winningOutput: CodeOutput;
38
+ summary: string;
39
+ }
40
+ //# sourceMappingURL=ai-response.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-response.d.ts","sourceRoot":"","sources":["../../../src/types/ai-response.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,UAAU,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ai-response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-response.js","sourceRoot":"","sources":["../../../src/types/ai-response.ts"],"names":[],"mappings":""}
@@ -0,0 +1,51 @@
1
+ export interface AppConfig {
2
+ atlassian: AtlassianConfig;
3
+ bitbucket: BitbucketConfig;
4
+ providers: ProvidersConfig;
5
+ judge: JudgeConfig;
6
+ logging: LoggingConfig;
7
+ }
8
+ export interface AtlassianConfig {
9
+ clientId: string;
10
+ clientSecret: string;
11
+ callbackUrl: string;
12
+ cloudId?: string;
13
+ }
14
+ export interface BitbucketConfig {
15
+ workspace: string;
16
+ repoSlug: string;
17
+ obsidianPath: string;
18
+ branch: string;
19
+ }
20
+ export interface ProvidersConfig {
21
+ claude: ProviderConfig;
22
+ codex: ProviderConfig;
23
+ chatgpt: ProviderConfig;
24
+ }
25
+ export interface ProviderConfig {
26
+ enabled: boolean;
27
+ apiKey: string;
28
+ model?: string;
29
+ timeoutMs: number;
30
+ }
31
+ export interface JudgeConfig {
32
+ model: string;
33
+ weights: JudgeWeights;
34
+ }
35
+ export interface JudgeWeights {
36
+ readability: number;
37
+ performance: number;
38
+ standards: number;
39
+ completeness: number;
40
+ security: number;
41
+ }
42
+ export interface LoggingConfig {
43
+ level: 'debug' | 'info' | 'warn' | 'error';
44
+ }
45
+ export interface AuthTokens {
46
+ accessToken: string;
47
+ refreshToken: string;
48
+ expiresAt: number;
49
+ scope: string;
50
+ }
51
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/types/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,eAAe,CAAC;IAC3B,SAAS,EAAE,eAAe,CAAC;IAC3B,SAAS,EAAE,eAAe,CAAC;IAC3B,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAC5C;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/types/config.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import type { JiraTicket } from './ticket.js';
2
+ export interface ObsidianDocument {
3
+ path: string;
4
+ title: string;
5
+ content: string;
6
+ frontmatter: Record<string, unknown>;
7
+ relevanceScore: number;
8
+ }
9
+ export interface AssembledContext {
10
+ userMessage: string;
11
+ ticket: JiraTicket | null;
12
+ documents: ObsidianDocument[];
13
+ projectMemory: string;
14
+ globalMemory: string;
15
+ sessionMemory: string;
16
+ prompt: string;
17
+ }
18
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/types/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/types/context.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import type { JudgeResult } from './ai-response.js';
2
+ export type MessageRole = 'user' | 'assistant' | 'system';
3
+ export interface ConversationMessage {
4
+ role: MessageRole;
5
+ content: string;
6
+ timestamp: string;
7
+ metadata?: MessageMetadata;
8
+ }
9
+ export interface MessageMetadata {
10
+ providerScores?: JudgeResult;
11
+ contextSnapshot?: string;
12
+ }
13
+ //# sourceMappingURL=message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/types/message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/types/message.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ import type { ConversationMessage } from './message.js';
2
+ import type { JiraTicket } from './ticket.js';
3
+ import type { ObsidianDocument } from './context.js';
4
+ export interface Session {
5
+ id: string;
6
+ meta: SessionMeta;
7
+ context: SessionContext;
8
+ history: ConversationMessage[];
9
+ memory: string;
10
+ }
11
+ export interface SessionMeta {
12
+ name: string;
13
+ ticketId?: string;
14
+ createdAt: string;
15
+ updatedAt: string;
16
+ directory: string;
17
+ }
18
+ export interface SessionContext {
19
+ ticket: JiraTicket | null;
20
+ docs: ObsidianDocument[];
21
+ projectMemory: string;
22
+ globalMemory: string;
23
+ }
24
+ export interface SessionListItem {
25
+ id: string;
26
+ name: string;
27
+ ticketId?: string;
28
+ updatedAt: string;
29
+ }
30
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/types/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/types/session.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ export interface JiraTicket {
2
+ key: string;
3
+ summary: string;
4
+ description: string;
5
+ status: string;
6
+ type: string;
7
+ priority: string;
8
+ assignee?: string;
9
+ labels: string[];
10
+ acceptanceCriteria?: string;
11
+ projectKey: string;
12
+ }
13
+ export interface TicketContext {
14
+ ticket: JiraTicket;
15
+ alignment: 'strong' | 'weak' | 'none';
16
+ alignmentReason: string;
17
+ }
18
+ //# sourceMappingURL=ticket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticket.d.ts","sourceRoot":"","sources":["../../../src/types/ticket.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC;CACzB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ticket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticket.js","sourceRoot":"","sources":["../../../src/types/ticket.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import pino from 'pino';
2
+ export declare function createLogger(level?: string): pino.Logger;
3
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/ui/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAQxD"}
@@ -0,0 +1,10 @@
1
+ import pino from 'pino';
2
+ export function createLogger(level) {
3
+ return pino({
4
+ level: level ?? process.env.CLIEND_LOG_LEVEL ?? 'warn',
5
+ transport: process.env.NODE_ENV !== 'production'
6
+ ? { target: 'pino-pretty', options: { colorize: true, translateTime: 'SYS:HH:MM:ss' } }
7
+ : undefined,
8
+ });
9
+ }
10
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/ui/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,IAAI,CAAC;QACV,KAAK,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,MAAM;QACtD,SAAS,EACP,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;YACnC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE;YACvF,CAAC,CAAC,SAAS;KAChB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { JudgeScore, CodeOutput } from '../types/ai-response.js';
2
+ export declare function renderScoreTable(scores: JudgeScore[]): void;
3
+ export declare function renderWinnerCode(winner: string, output: CodeOutput): void;
4
+ //# sourceMappingURL=output-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-formatter.d.ts","sourceRoot":"","sources":["../../../src/ui/output-formatter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEtE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAgC3D;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAqBzE"}
@@ -0,0 +1,52 @@
1
+ import chalk from 'chalk';
2
+ import Table from 'cli-table3';
3
+ export function renderScoreTable(scores) {
4
+ const table = new Table({
5
+ head: [
6
+ chalk.bold('Provider'),
7
+ chalk.bold('Read'),
8
+ chalk.bold('Perf'),
9
+ chalk.bold('Stds'),
10
+ chalk.bold('Comp'),
11
+ chalk.bold('Sec'),
12
+ chalk.bold('TOTAL'),
13
+ ],
14
+ style: { head: [], border: [] },
15
+ colAligns: ['left', 'center', 'center', 'center', 'center', 'center', 'center'],
16
+ });
17
+ for (const score of scores) {
18
+ const isWinner = score === scores[0]; // scores are pre-sorted, first is winner
19
+ const fmt = isWinner ? chalk.green.bold : chalk.white;
20
+ table.push([
21
+ fmt(score.providerName),
22
+ fmt(String(score.readability)),
23
+ fmt(String(score.performance)),
24
+ fmt(String(score.standards)),
25
+ fmt(String(score.completeness)),
26
+ fmt(String(score.security)),
27
+ fmt(String(score.totalScore)),
28
+ ]);
29
+ }
30
+ console.log(table.toString());
31
+ console.log('');
32
+ }
33
+ export function renderWinnerCode(winner, output) {
34
+ console.log(chalk.green.bold(` Winner: ${winner}`) + (output.explanation ? chalk.dim(` — ${output.explanation}`) : ''));
35
+ console.log('');
36
+ if (output.code) {
37
+ // Simple syntax-highlighted output (code block)
38
+ console.log(chalk.dim(' ───────────────────────────────────────'));
39
+ for (const line of output.code.split('\n')) {
40
+ console.log(` ${line}`);
41
+ }
42
+ console.log(chalk.dim(' ───────────────────────────────────────'));
43
+ }
44
+ if (output.files && output.files.length > 0) {
45
+ console.log(chalk.bold('\n Generated files:'));
46
+ for (const file of output.files) {
47
+ console.log(chalk.cyan(` ${file.path}`) + chalk.dim(` (${file.language})`));
48
+ }
49
+ }
50
+ console.log('');
51
+ }
52
+ //# sourceMappingURL=output-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-formatter.js","sourceRoot":"","sources":["../../../src/ui/output-formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { createInterface } from 'node:readline';
2
+ //# sourceMappingURL=prompt-line.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-line.d.ts","sourceRoot":"","sources":["../../../src/ui/prompt-line.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,4 @@
1
+ // Re-export readline-based prompt from the REPL module.
2
+ // This file exists as a future extension point for custom prompt rendering.
3
+ export { createInterface } from 'node:readline';
4
+ //# sourceMappingURL=prompt-line.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-line.js","sourceRoot":"","sources":["../../../src/ui/prompt-line.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,4EAA4E;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Ora } from 'ora';
2
+ export declare function createSpinner(text: string): Ora;
3
+ //# sourceMappingURL=spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../../src/ui/spinner.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAEpC,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAE/C"}
@@ -0,0 +1,5 @@
1
+ import ora from 'ora';
2
+ export function createSpinner(text) {
3
+ return ora({ text, spinner: 'dots', color: 'cyan' });
4
+ }
5
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../../src/ui/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,GAAiB,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AACvD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function showWelcome(projectDir: string): void;
2
+ //# sourceMappingURL=welcome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../../src/ui/welcome.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAWpD"}
@@ -0,0 +1,14 @@
1
+ import chalk from 'chalk';
2
+ import { basename } from 'node:path';
3
+ export function showWelcome(projectDir) {
4
+ const version = '0.1.0';
5
+ const project = basename(projectDir);
6
+ console.log('');
7
+ console.log(chalk.cyan(' ╭──────────────────────────────────────────╮'));
8
+ console.log(chalk.cyan(' │') + chalk.bold(` cliend v${version} — AI Development Agent `) + chalk.cyan('│'));
9
+ console.log(chalk.cyan(' │') + chalk.dim(` Project: ${project.padEnd(30)}`) + chalk.cyan('│'));
10
+ console.log(chalk.cyan(' │') + chalk.dim(' Type /help for commands ') + chalk.cyan('│'));
11
+ console.log(chalk.cyan(' ╰──────────────────────────────────────────╯'));
12
+ console.log('');
13
+ }
14
+ //# sourceMappingURL=welcome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../../src/ui/welcome.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,UAAU,WAAW,CAAC,UAAkB;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC;IACxB,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IAErC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,OAAO,4BAA4B,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACjG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3G,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { CredentialsStore } from '../auth/credentials-store.js';
2
+ //# sourceMappingURL=crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/utils/crypto.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Re-exports from credentials-store — crypto utilities are centralized there.
2
+ export { CredentialsStore } from '../auth/credentials-store.js';
3
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../src/utils/crypto.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type RetryOptions } from './retry.js';
2
+ export interface HttpClientOptions {
3
+ timeoutMs?: number;
4
+ retry?: RetryOptions;
5
+ }
6
+ export declare function httpGet(url: string, headers?: Record<string, string>, options?: HttpClientOptions): Promise<Response>;
7
+ export declare function httpPost(url: string, body: unknown, headers?: Record<string, string>, options?: HttpClientOptions): Promise<Response>;
8
+ //# sourceMappingURL=http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/utils/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,wBAAsB,OAAO,CAC3B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,QAAQ,CAAC,CAgBnB;AAED,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,QAAQ,CAAC,CAkBnB"}
@@ -0,0 +1,36 @@
1
+ import { withRetry } from './retry.js';
2
+ export async function httpGet(url, headers, options = {}) {
3
+ const { timeoutMs = 30_000 } = options;
4
+ return withRetry(async () => {
5
+ const controller = new AbortController();
6
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
7
+ try {
8
+ return await fetch(url, {
9
+ headers,
10
+ signal: controller.signal,
11
+ });
12
+ }
13
+ finally {
14
+ clearTimeout(timer);
15
+ }
16
+ }, options.retry);
17
+ }
18
+ export async function httpPost(url, body, headers, options = {}) {
19
+ const { timeoutMs = 30_000 } = options;
20
+ return withRetry(async () => {
21
+ const controller = new AbortController();
22
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
23
+ try {
24
+ return await fetch(url, {
25
+ method: 'POST',
26
+ headers: { 'Content-Type': 'application/json', ...headers },
27
+ body: JSON.stringify(body),
28
+ signal: controller.signal,
29
+ });
30
+ }
31
+ finally {
32
+ clearTimeout(timer);
33
+ }
34
+ }, options.retry);
35
+ }
36
+ //# sourceMappingURL=http-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/utils/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,YAAY,CAAC;AAO1D,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,GAAW,EACX,OAAgC,EAChC,UAA6B,EAAE;IAE/B,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;IAEvC,OAAO,SAAS,CAAC,KAAK,IAAI,EAAE;QAC1B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;QAE9D,IAAI,CAAC;YACH,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE;gBACtB,OAAO;gBACP,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,GAAW,EACX,IAAa,EACb,OAAgC,EAChC,UAA6B,EAAE;IAE/B,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;IAEvC,OAAO,SAAS,CAAC,KAAK,IAAI,EAAE;QAC1B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;QAE9D,IAAI,CAAC;YACH,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE;gBACtB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,OAAO,EAAE;gBAC3D,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC1B,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export interface RetryOptions {
2
+ maxAttempts?: number;
3
+ baseDelayMs?: number;
4
+ maxDelayMs?: number;
5
+ }
6
+ export declare function withRetry<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
7
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../src/utils/retry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,SAAS,CAAC,CAAC,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,CAAC,CAAC,CAqBZ"}
@@ -0,0 +1,23 @@
1
+ export async function withRetry(fn, options = {}) {
2
+ const { maxAttempts = 3, baseDelayMs = 1000, maxDelayMs = 10_000 } = options;
3
+ let lastError;
4
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
5
+ try {
6
+ return await fn();
7
+ }
8
+ catch (error) {
9
+ lastError = error instanceof Error ? error : new Error(String(error));
10
+ if (attempt === maxAttempts)
11
+ break;
12
+ // Exponential backoff with jitter
13
+ const delay = Math.min(baseDelayMs * Math.pow(2, attempt - 1), maxDelayMs);
14
+ const jitter = delay * 0.2 * Math.random();
15
+ await sleep(delay + jitter);
16
+ }
17
+ }
18
+ throw lastError;
19
+ }
20
+ function sleep(ms) {
21
+ return new Promise((resolve) => setTimeout(resolve, ms));
22
+ }
23
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/utils/retry.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,EAAoB,EACpB,UAAwB,EAAE;IAE1B,MAAM,EAAE,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,EAAE,UAAU,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;IAE7E,IAAI,SAA4B,CAAC;IAEjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAEtE,IAAI,OAAO,KAAK,WAAW;gBAAE,MAAM;YAEnC,kCAAkC;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YAC3E,MAAM,MAAM,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3C,MAAM,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Validate that a string looks like a Jira ticket key (e.g., PROJ-123).
3
+ */
4
+ export declare function isValidTicketKey(key: string): boolean;
5
+ /**
6
+ * Validate a URL string.
7
+ */
8
+ export declare function isValidUrl(str: string): boolean;
9
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO/C"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Validate that a string looks like a Jira ticket key (e.g., PROJ-123).
3
+ */
4
+ export function isValidTicketKey(key) {
5
+ return /^[A-Z][A-Z0-9]+-\d+$/.test(key);
6
+ }
7
+ /**
8
+ * Validate a URL string.
9
+ */
10
+ export function isValidUrl(str) {
11
+ try {
12
+ new URL(str);
13
+ return true;
14
+ }
15
+ catch {
16
+ return false;
17
+ }
18
+ }
19
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,OAAO,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}