@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,276 @@
1
+ import { z } from 'zod';
2
+ export declare const appConfigSchema: z.ZodObject<{
3
+ atlassian: z.ZodObject<{
4
+ clientId: z.ZodDefault<z.ZodString>;
5
+ clientSecret: z.ZodDefault<z.ZodString>;
6
+ callbackUrl: z.ZodDefault<z.ZodString>;
7
+ cloudId: z.ZodOptional<z.ZodString>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ clientId: string;
10
+ callbackUrl: string;
11
+ clientSecret: string;
12
+ cloudId?: string | undefined;
13
+ }, {
14
+ clientId?: string | undefined;
15
+ callbackUrl?: string | undefined;
16
+ clientSecret?: string | undefined;
17
+ cloudId?: string | undefined;
18
+ }>;
19
+ bitbucket: z.ZodObject<{
20
+ workspace: z.ZodDefault<z.ZodString>;
21
+ repoSlug: z.ZodDefault<z.ZodString>;
22
+ obsidianPath: z.ZodDefault<z.ZodString>;
23
+ branch: z.ZodDefault<z.ZodString>;
24
+ }, "strip", z.ZodTypeAny, {
25
+ workspace: string;
26
+ repoSlug: string;
27
+ branch: string;
28
+ obsidianPath: string;
29
+ }, {
30
+ workspace?: string | undefined;
31
+ repoSlug?: string | undefined;
32
+ branch?: string | undefined;
33
+ obsidianPath?: string | undefined;
34
+ }>;
35
+ providers: z.ZodObject<{
36
+ claude: z.ZodObject<{
37
+ enabled: z.ZodDefault<z.ZodBoolean>;
38
+ apiKey: z.ZodDefault<z.ZodString>;
39
+ model: z.ZodOptional<z.ZodString>;
40
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
41
+ }, "strip", z.ZodTypeAny, {
42
+ enabled: boolean;
43
+ apiKey: string;
44
+ timeoutMs: number;
45
+ model?: string | undefined;
46
+ }, {
47
+ model?: string | undefined;
48
+ enabled?: boolean | undefined;
49
+ apiKey?: string | undefined;
50
+ timeoutMs?: number | undefined;
51
+ }>;
52
+ codex: z.ZodObject<{
53
+ enabled: z.ZodDefault<z.ZodBoolean>;
54
+ apiKey: z.ZodDefault<z.ZodString>;
55
+ model: z.ZodOptional<z.ZodString>;
56
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
57
+ }, "strip", z.ZodTypeAny, {
58
+ enabled: boolean;
59
+ apiKey: string;
60
+ timeoutMs: number;
61
+ model?: string | undefined;
62
+ }, {
63
+ model?: string | undefined;
64
+ enabled?: boolean | undefined;
65
+ apiKey?: string | undefined;
66
+ timeoutMs?: number | undefined;
67
+ }>;
68
+ chatgpt: z.ZodObject<{
69
+ enabled: z.ZodDefault<z.ZodBoolean>;
70
+ apiKey: z.ZodDefault<z.ZodString>;
71
+ model: z.ZodOptional<z.ZodString>;
72
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
73
+ }, "strip", z.ZodTypeAny, {
74
+ enabled: boolean;
75
+ apiKey: string;
76
+ timeoutMs: number;
77
+ model?: string | undefined;
78
+ }, {
79
+ model?: string | undefined;
80
+ enabled?: boolean | undefined;
81
+ apiKey?: string | undefined;
82
+ timeoutMs?: number | undefined;
83
+ }>;
84
+ }, "strip", z.ZodTypeAny, {
85
+ claude: {
86
+ enabled: boolean;
87
+ apiKey: string;
88
+ timeoutMs: number;
89
+ model?: string | undefined;
90
+ };
91
+ codex: {
92
+ enabled: boolean;
93
+ apiKey: string;
94
+ timeoutMs: number;
95
+ model?: string | undefined;
96
+ };
97
+ chatgpt: {
98
+ enabled: boolean;
99
+ apiKey: string;
100
+ timeoutMs: number;
101
+ model?: string | undefined;
102
+ };
103
+ }, {
104
+ claude: {
105
+ model?: string | undefined;
106
+ enabled?: boolean | undefined;
107
+ apiKey?: string | undefined;
108
+ timeoutMs?: number | undefined;
109
+ };
110
+ codex: {
111
+ model?: string | undefined;
112
+ enabled?: boolean | undefined;
113
+ apiKey?: string | undefined;
114
+ timeoutMs?: number | undefined;
115
+ };
116
+ chatgpt: {
117
+ model?: string | undefined;
118
+ enabled?: boolean | undefined;
119
+ apiKey?: string | undefined;
120
+ timeoutMs?: number | undefined;
121
+ };
122
+ }>;
123
+ judge: z.ZodObject<{
124
+ model: z.ZodDefault<z.ZodString>;
125
+ weights: z.ZodEffects<z.ZodObject<{
126
+ readability: z.ZodDefault<z.ZodNumber>;
127
+ performance: z.ZodDefault<z.ZodNumber>;
128
+ standards: z.ZodDefault<z.ZodNumber>;
129
+ completeness: z.ZodDefault<z.ZodNumber>;
130
+ security: z.ZodDefault<z.ZodNumber>;
131
+ }, "strip", z.ZodTypeAny, {
132
+ readability: number;
133
+ performance: number;
134
+ standards: number;
135
+ completeness: number;
136
+ security: number;
137
+ }, {
138
+ readability?: number | undefined;
139
+ performance?: number | undefined;
140
+ standards?: number | undefined;
141
+ completeness?: number | undefined;
142
+ security?: number | undefined;
143
+ }>, {
144
+ readability: number;
145
+ performance: number;
146
+ standards: number;
147
+ completeness: number;
148
+ security: number;
149
+ }, {
150
+ readability?: number | undefined;
151
+ performance?: number | undefined;
152
+ standards?: number | undefined;
153
+ completeness?: number | undefined;
154
+ security?: number | undefined;
155
+ }>;
156
+ }, "strip", z.ZodTypeAny, {
157
+ model: string;
158
+ weights: {
159
+ readability: number;
160
+ performance: number;
161
+ standards: number;
162
+ completeness: number;
163
+ security: number;
164
+ };
165
+ }, {
166
+ weights: {
167
+ readability?: number | undefined;
168
+ performance?: number | undefined;
169
+ standards?: number | undefined;
170
+ completeness?: number | undefined;
171
+ security?: number | undefined;
172
+ };
173
+ model?: string | undefined;
174
+ }>;
175
+ logging: z.ZodObject<{
176
+ level: z.ZodDefault<z.ZodEnum<["debug", "info", "warn", "error"]>>;
177
+ }, "strip", z.ZodTypeAny, {
178
+ level: "debug" | "info" | "warn" | "error";
179
+ }, {
180
+ level?: "debug" | "info" | "warn" | "error" | undefined;
181
+ }>;
182
+ }, "strip", z.ZodTypeAny, {
183
+ providers: {
184
+ claude: {
185
+ enabled: boolean;
186
+ apiKey: string;
187
+ timeoutMs: number;
188
+ model?: string | undefined;
189
+ };
190
+ codex: {
191
+ enabled: boolean;
192
+ apiKey: string;
193
+ timeoutMs: number;
194
+ model?: string | undefined;
195
+ };
196
+ chatgpt: {
197
+ enabled: boolean;
198
+ apiKey: string;
199
+ timeoutMs: number;
200
+ model?: string | undefined;
201
+ };
202
+ };
203
+ atlassian: {
204
+ clientId: string;
205
+ callbackUrl: string;
206
+ clientSecret: string;
207
+ cloudId?: string | undefined;
208
+ };
209
+ bitbucket: {
210
+ workspace: string;
211
+ repoSlug: string;
212
+ branch: string;
213
+ obsidianPath: string;
214
+ };
215
+ judge: {
216
+ model: string;
217
+ weights: {
218
+ readability: number;
219
+ performance: number;
220
+ standards: number;
221
+ completeness: number;
222
+ security: number;
223
+ };
224
+ };
225
+ logging: {
226
+ level: "debug" | "info" | "warn" | "error";
227
+ };
228
+ }, {
229
+ providers: {
230
+ claude: {
231
+ model?: string | undefined;
232
+ enabled?: boolean | undefined;
233
+ apiKey?: string | undefined;
234
+ timeoutMs?: number | undefined;
235
+ };
236
+ codex: {
237
+ model?: string | undefined;
238
+ enabled?: boolean | undefined;
239
+ apiKey?: string | undefined;
240
+ timeoutMs?: number | undefined;
241
+ };
242
+ chatgpt: {
243
+ model?: string | undefined;
244
+ enabled?: boolean | undefined;
245
+ apiKey?: string | undefined;
246
+ timeoutMs?: number | undefined;
247
+ };
248
+ };
249
+ atlassian: {
250
+ clientId?: string | undefined;
251
+ callbackUrl?: string | undefined;
252
+ clientSecret?: string | undefined;
253
+ cloudId?: string | undefined;
254
+ };
255
+ bitbucket: {
256
+ workspace?: string | undefined;
257
+ repoSlug?: string | undefined;
258
+ branch?: string | undefined;
259
+ obsidianPath?: string | undefined;
260
+ };
261
+ judge: {
262
+ weights: {
263
+ readability?: number | undefined;
264
+ performance?: number | undefined;
265
+ standards?: number | undefined;
266
+ completeness?: number | undefined;
267
+ security?: number | undefined;
268
+ };
269
+ model?: string | undefined;
270
+ };
271
+ logging: {
272
+ level?: "debug" | "info" | "warn" | "error" | undefined;
273
+ };
274
+ }>;
275
+ export type ValidatedConfig = z.infer<typeof appConfigSchema>;
276
+ //# sourceMappingURL=config.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../../src/config/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyBxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyB1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { z } from 'zod';
2
+ const providerSchema = z.object({
3
+ enabled: z.boolean().default(true),
4
+ apiKey: z.string().default(''),
5
+ model: z.string().optional(),
6
+ timeoutMs: z.number().positive().default(120_000),
7
+ });
8
+ const judgeWeightsSchema = z
9
+ .object({
10
+ readability: z.number().min(0).max(1).default(0.25),
11
+ performance: z.number().min(0).max(1).default(0.2),
12
+ standards: z.number().min(0).max(1).default(0.25),
13
+ completeness: z.number().min(0).max(1).default(0.2),
14
+ security: z.number().min(0).max(1).default(0.1),
15
+ })
16
+ .refine((w) => {
17
+ const sum = w.readability + w.performance + w.standards + w.completeness + w.security;
18
+ return Math.abs(sum - 1.0) < 0.01;
19
+ }, { message: 'Judge weights must sum to 1.0' });
20
+ export const appConfigSchema = z.object({
21
+ atlassian: z.object({
22
+ clientId: z.string().default(''),
23
+ clientSecret: z.string().default(''),
24
+ callbackUrl: z.string().url().default('http://localhost:3456/callback'),
25
+ cloudId: z.string().optional(),
26
+ }),
27
+ bitbucket: z.object({
28
+ workspace: z.string().default(''),
29
+ repoSlug: z.string().default(''),
30
+ obsidianPath: z.string().default('docs/obsidian'),
31
+ branch: z.string().default('main'),
32
+ }),
33
+ providers: z.object({
34
+ claude: providerSchema,
35
+ codex: providerSchema,
36
+ chatgpt: providerSchema,
37
+ }),
38
+ judge: z.object({
39
+ model: z.string().default('claude-sonnet-4-6'),
40
+ weights: judgeWeightsSchema,
41
+ }),
42
+ logging: z.object({
43
+ level: z.enum(['debug', 'info', 'warn', 'error']).default('info'),
44
+ }),
45
+ });
46
+ //# sourceMappingURL=config.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.schema.js","sourceRoot":"","sources":["../../../src/config/config.schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AppConfig } from '../types/config.js';
2
+ export declare const DEFAULT_CONFIG: AppConfig;
3
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,eAAO,MAAM,cAAc,EAAE,SA4C5B,CAAC"}
@@ -0,0 +1,46 @@
1
+ export const DEFAULT_CONFIG = {
2
+ atlassian: {
3
+ clientId: '',
4
+ clientSecret: '',
5
+ callbackUrl: 'http://localhost:3456/callback',
6
+ },
7
+ bitbucket: {
8
+ workspace: '',
9
+ repoSlug: '',
10
+ obsidianPath: 'docs/obsidian',
11
+ branch: 'main',
12
+ },
13
+ providers: {
14
+ claude: {
15
+ enabled: true,
16
+ apiKey: '',
17
+ model: 'claude-sonnet-4-6',
18
+ timeoutMs: 120_000,
19
+ },
20
+ codex: {
21
+ enabled: true,
22
+ apiKey: '',
23
+ timeoutMs: 120_000,
24
+ },
25
+ chatgpt: {
26
+ enabled: true,
27
+ apiKey: '',
28
+ model: 'gpt-4o',
29
+ timeoutMs: 120_000,
30
+ },
31
+ },
32
+ judge: {
33
+ model: 'claude-sonnet-4-6',
34
+ weights: {
35
+ readability: 0.25,
36
+ performance: 0.20,
37
+ standards: 0.25,
38
+ completeness: 0.20,
39
+ security: 0.10,
40
+ },
41
+ },
42
+ logging: {
43
+ level: 'info',
44
+ },
45
+ };
46
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/config/defaults.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAc;IACvC,SAAS,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,gCAAgC;KAC9C;IACD,SAAS,EAAE;QACT,SAAS,EAAE,EAAE;QACb,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,eAAe;QAC7B,MAAM,EAAE,MAAM;KACf;IACD,SAAS,EAAE;QACT,MAAM,EAAE;YACN,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,mBAAmB;YAC1B,SAAS,EAAE,OAAO;SACnB;QACD,KAAK,EAAE;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,OAAO;SACnB;QACD,OAAO,EAAE;YACP,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,OAAO;SACnB;KACF;IACD,KAAK,EAAE;QACL,KAAK,EAAE,mBAAmB;QAC1B,OAAO,EAAE;YACP,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;SACf;KACF;IACD,OAAO,EAAE;QACP,KAAK,EAAE,MAAM;KACd;CACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { SessionInstance } from '../session/session.js';
2
+ import type { AssembledContext } from '../types/context.js';
3
+ export declare class ContextBuilder {
4
+ build(session: SessionInstance, userMessage: string): AssembledContext;
5
+ }
6
+ //# sourceMappingURL=context-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-builder.d.ts","sourceRoot":"","sources":["../../../src/core/context-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,qBAAa,cAAc;IACzB,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,gBAAgB;CAsDvE"}
@@ -0,0 +1,55 @@
1
+ export class ContextBuilder {
2
+ build(session, userMessage) {
3
+ const parts = [];
4
+ parts.push('You are an expert software developer. Generate clean, production-ready code.');
5
+ // Add ticket context
6
+ if (session.context.ticket) {
7
+ const t = session.context.ticket;
8
+ parts.push(`\n## Jira Ticket: ${t.key}`);
9
+ parts.push(`Summary: ${t.summary}`);
10
+ parts.push(`Type: ${t.type} | Status: ${t.status} | Priority: ${t.priority}`);
11
+ if (t.description)
12
+ parts.push(`Description: ${t.description}`);
13
+ if (t.acceptanceCriteria)
14
+ parts.push(`Acceptance Criteria: ${t.acceptanceCriteria}`);
15
+ if (t.labels.length > 0)
16
+ parts.push(`Labels: ${t.labels.join(', ')}`);
17
+ }
18
+ // Add Obsidian docs as project context
19
+ if (session.context.docs.length > 0) {
20
+ parts.push('\n## Project Documentation');
21
+ for (const doc of session.context.docs) {
22
+ parts.push(`\n### ${doc.title}`);
23
+ // Truncate very long docs to stay within token limits
24
+ const maxLen = 2000;
25
+ const content = doc.content.length > maxLen
26
+ ? doc.content.slice(0, maxLen) + '\n... (truncated)'
27
+ : doc.content;
28
+ parts.push(content);
29
+ }
30
+ }
31
+ // Add memory context
32
+ if (session.context.globalMemory) {
33
+ parts.push('\n## Global Preferences');
34
+ parts.push(session.context.globalMemory);
35
+ }
36
+ if (session.context.projectMemory) {
37
+ parts.push('\n## Project Conventions');
38
+ parts.push(session.context.projectMemory);
39
+ }
40
+ if (session.memory) {
41
+ parts.push('\n## Session Notes');
42
+ parts.push(session.memory);
43
+ }
44
+ return {
45
+ userMessage,
46
+ ticket: session.context.ticket,
47
+ documents: session.context.docs,
48
+ projectMemory: session.context.projectMemory,
49
+ globalMemory: session.context.globalMemory,
50
+ sessionMemory: session.memory,
51
+ prompt: parts.join('\n'),
52
+ };
53
+ }
54
+ }
55
+ //# sourceMappingURL=context-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../../src/core/context-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { Logger } from 'pino';
2
+ import type { IAIProvider } from '../providers/provider.interface.js';
3
+ import type { AIProviderResponse } from '../types/ai-response.js';
4
+ import type { AssembledContext } from '../types/context.js';
5
+ import type { ConversationMessage } from '../types/message.js';
6
+ export declare class FanOutExecutor {
7
+ private readonly logger;
8
+ constructor(logger: Logger);
9
+ /**
10
+ * Execute all providers in parallel. Uses Promise.allSettled so
11
+ * individual failures don't kill the entire batch.
12
+ */
13
+ execute(providers: IAIProvider[], context: AssembledContext, history: ConversationMessage[]): Promise<AIProviderResponse[]>;
14
+ private executeWithTimeout;
15
+ }
16
+ //# sourceMappingURL=fan-out-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fan-out-executor.d.ts","sourceRoot":"","sources":["../../../src/core/fan-out-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAE3C;;;OAGG;IACG,OAAO,CACX,SAAS,EAAE,WAAW,EAAE,EACxB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,mBAAmB,EAAE,GAC7B,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAsClB,kBAAkB;CA2BjC"}
@@ -0,0 +1,55 @@
1
+ export class FanOutExecutor {
2
+ logger;
3
+ constructor(logger) {
4
+ this.logger = logger;
5
+ }
6
+ /**
7
+ * Execute all providers in parallel. Uses Promise.allSettled so
8
+ * individual failures don't kill the entire batch.
9
+ */
10
+ async execute(providers, context, history) {
11
+ this.logger.info({ providers: providers.map((p) => p.name) }, 'Fan-out: dispatching to providers');
12
+ const results = await Promise.allSettled(providers.map((provider) => this.executeWithTimeout(provider, context, history)));
13
+ const responses = [];
14
+ for (let i = 0; i < results.length; i++) {
15
+ const result = results[i];
16
+ const providerName = providers[i].name;
17
+ if (result.status === 'fulfilled') {
18
+ responses.push(result.value);
19
+ this.logger.info({ provider: providerName, success: result.value.success, latency: result.value.latencyMs }, 'Provider responded');
20
+ }
21
+ else {
22
+ responses.push({
23
+ providerName,
24
+ success: false,
25
+ error: result.reason instanceof Error ? result.reason.message : 'Unknown error',
26
+ latencyMs: 0,
27
+ });
28
+ this.logger.warn({ provider: providerName, err: result.reason }, 'Provider failed');
29
+ }
30
+ }
31
+ return responses;
32
+ }
33
+ async executeWithTimeout(provider, context, history) {
34
+ // The provider implementations handle their own timeouts,
35
+ // but we add a hard outer timeout as a safety net
36
+ const HARD_TIMEOUT = 180_000; // 3 minutes
37
+ return new Promise((resolve, reject) => {
38
+ const timer = setTimeout(() => {
39
+ provider.abort();
40
+ reject(new Error(`${provider.name} hard timeout after ${HARD_TIMEOUT}ms`));
41
+ }, HARD_TIMEOUT);
42
+ provider
43
+ .execute(context, history)
44
+ .then((result) => {
45
+ clearTimeout(timer);
46
+ resolve(result);
47
+ })
48
+ .catch((error) => {
49
+ clearTimeout(timer);
50
+ reject(error);
51
+ });
52
+ });
53
+ }
54
+ }
55
+ //# sourceMappingURL=fan-out-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fan-out-executor.js","sourceRoot":"","sources":["../../../src/core/fan-out-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { Logger } from 'pino';
2
+ import type { AIProviderResponse, JudgeResult } from '../types/ai-response.js';
3
+ import type { JudgeConfig } from '../types/config.js';
4
+ export declare class Judge {
5
+ private readonly config;
6
+ private readonly apiKey;
7
+ private readonly logger;
8
+ private client;
9
+ constructor(config: JudgeConfig, apiKey: string, logger: Logger);
10
+ evaluate(taskDescription: string, responses: AIProviderResponse[]): Promise<JudgeResult>;
11
+ private judgeWithAI;
12
+ private buildJudgePrompt;
13
+ private computeTotal;
14
+ }
15
+ //# sourceMappingURL=judge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"judge.d.ts","sourceRoot":"","sources":["../../../src/core/judge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAc,WAAW,EAAc,MAAM,yBAAyB,CAAC;AACvG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,qBAAa,KAAK;IAId,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,MAAM,CAA0B;gBAGrB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM;IAG3B,QAAQ,CACZ,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,kBAAkB,EAAE,GAC9B,OAAO,CAAC,WAAW,CAAC;YAsCT,WAAW;IA2FzB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,YAAY;CAiBrB"}