@kosuke-ai/cli 0.0.57 → 1.0.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 (263) hide show
  1. package/README.md +31 -448
  2. package/dist/commands/auth.js +117 -0
  3. package/dist/generated/commands/deploy/cancel.js +17 -0
  4. package/dist/generated/commands/deploy/messages.js +17 -0
  5. package/dist/generated/commands/deploy/run.js +60 -0
  6. package/dist/generated/commands/index.js +132 -0
  7. package/dist/generated/commands/preview/get.js +25 -0
  8. package/dist/generated/commands/preview/health.js +25 -0
  9. package/dist/generated/commands/preview/reset.js +27 -0
  10. package/dist/generated/commands/preview/share-create.js +36 -0
  11. package/dist/generated/commands/preview/share-delete.js +26 -0
  12. package/dist/generated/commands/preview/share-get.js +26 -0
  13. package/dist/generated/commands/preview/shared.js +17 -0
  14. package/dist/generated/commands/projects/create.js +37 -0
  15. package/dist/generated/commands/projects/delete.js +17 -0
  16. package/dist/generated/commands/projects/env-vars-add.js +21 -0
  17. package/dist/generated/commands/projects/env-vars-remove.js +21 -0
  18. package/dist/generated/commands/projects/get.js +17 -0
  19. package/dist/generated/commands/projects/list.js +15 -0
  20. package/dist/generated/commands/projects/services-add.js +87 -0
  21. package/dist/generated/commands/projects/services-list.js +18 -0
  22. package/dist/generated/commands/projects/services-remove.js +19 -0
  23. package/dist/generated/commands/projects/services-update.js +81 -0
  24. package/dist/generated/commands/projects/settings-get.js +18 -0
  25. package/dist/generated/commands/projects/settings-import.js +91 -0
  26. package/dist/generated/commands/projects/settings-update.js +77 -0
  27. package/dist/generated/commands/projects/skills.js +35 -0
  28. package/dist/generated/commands/projects/update.js +27 -0
  29. package/dist/generated/commands/sessions/activate.js +18 -0
  30. package/dist/generated/commands/sessions/checklist-generate.js +19 -0
  31. package/dist/generated/commands/sessions/checklist-get.js +19 -0
  32. package/dist/generated/commands/sessions/comments-add.js +63 -0
  33. package/dist/generated/commands/sessions/comments-delete.js +20 -0
  34. package/dist/generated/commands/sessions/comments-list.js +19 -0
  35. package/dist/generated/commands/sessions/comments-update.js +23 -0
  36. package/dist/generated/commands/sessions/create.js +126 -0
  37. package/dist/generated/commands/sessions/delete.js +18 -0
  38. package/dist/generated/commands/sessions/diff-files.js +19 -0
  39. package/dist/generated/commands/sessions/diff-patch.js +86 -0
  40. package/dist/generated/commands/sessions/edit-prompt.js +59 -0
  41. package/dist/generated/commands/sessions/files-get.js +27 -0
  42. package/dist/generated/commands/sessions/files-list.js +19 -0
  43. package/dist/generated/commands/sessions/files-write.js +41 -0
  44. package/dist/generated/commands/sessions/get.js +18 -0
  45. package/dist/generated/commands/sessions/git-commit-message.js +19 -0
  46. package/dist/generated/commands/sessions/git-commit.js +29 -0
  47. package/dist/generated/commands/sessions/git-push.js +19 -0
  48. package/dist/generated/commands/sessions/git-state.js +19 -0
  49. package/dist/generated/commands/sessions/jobs-cancel.js +20 -0
  50. package/dist/generated/commands/sessions/jobs-get.js +20 -0
  51. package/dist/generated/commands/sessions/list.js +81 -0
  52. package/dist/generated/commands/sessions/messages.js +18 -0
  53. package/dist/generated/commands/sessions/search.js +23 -0
  54. package/dist/generated/commands/sessions/send.js +98 -0
  55. package/dist/generated/commands/sessions/update.js +72 -0
  56. package/dist/generated/commands/workspaces/access-status.js +29 -0
  57. package/dist/generated/commands/workspaces/ai-provider-get.js +18 -0
  58. package/dist/generated/commands/workspaces/ai-provider-remove.js +42 -0
  59. package/dist/generated/commands/workspaces/ai-provider-set.js +21 -0
  60. package/dist/generated/commands/workspaces/credits.js +17 -0
  61. package/dist/generated/commands/workspaces/get.js +17 -0
  62. package/dist/generated/commands/workspaces/getting-started-get.js +18 -0
  63. package/dist/generated/commands/workspaces/getting-started-update.js +32 -0
  64. package/dist/generated/commands/workspaces/list.js +15 -0
  65. package/dist/generated/commands/workspaces/members.js +25 -0
  66. package/dist/generated/commands/workspaces/sandbox-limit.js +17 -0
  67. package/dist/generated/commands/workspaces/stop-sandboxes.js +27 -0
  68. package/dist/generated/commands/workspaces/usage.js +32 -0
  69. package/dist/index.js +5 -595
  70. package/dist/program.js +46 -0
  71. package/dist/runtime/attach.js +139 -0
  72. package/dist/runtime/attachments.js +58 -0
  73. package/dist/runtime/client.js +12 -0
  74. package/dist/runtime/config.js +49 -0
  75. package/dist/runtime/credentials.js +24 -0
  76. package/dist/runtime/descriptor.js +7 -0
  77. package/dist/runtime/invoke.js +152 -0
  78. package/dist/runtime/runtime.js +41 -0
  79. package/dist/runtime/version.js +5 -0
  80. package/openapi.json +5222 -0
  81. package/package.json +21 -79
  82. package/LICENSE +0 -21
  83. package/claude.costs.json +0 -34
  84. package/dist/__tests__/utils/file-discovery.test.d.ts +0 -5
  85. package/dist/__tests__/utils/file-discovery.test.d.ts.map +0 -1
  86. package/dist/__tests__/utils/file-discovery.test.js +0 -51
  87. package/dist/__tests__/utils/file-discovery.test.js.map +0 -1
  88. package/dist/__tests__/utils/logger-nologs.test.d.ts +0 -5
  89. package/dist/__tests__/utils/logger-nologs.test.d.ts.map +0 -1
  90. package/dist/__tests__/utils/logger-nologs.test.js +0 -34
  91. package/dist/__tests__/utils/logger-nologs.test.js.map +0 -1
  92. package/dist/__tests__/utils/logger.test.d.ts +0 -5
  93. package/dist/__tests__/utils/logger.test.d.ts.map +0 -1
  94. package/dist/__tests__/utils/logger.test.js +0 -243
  95. package/dist/__tests__/utils/logger.test.js.map +0 -1
  96. package/dist/__tests__/utils/validator.test.d.ts +0 -5
  97. package/dist/__tests__/utils/validator.test.d.ts.map +0 -1
  98. package/dist/__tests__/utils/validator.test.js +0 -206
  99. package/dist/__tests__/utils/validator.test.js.map +0 -1
  100. package/dist/index.d.ts +0 -37
  101. package/dist/index.d.ts.map +0 -1
  102. package/dist/index.js.map +0 -1
  103. package/dist/kosuke/commands/analyse.d.ts +0 -15
  104. package/dist/kosuke/commands/analyse.d.ts.map +0 -1
  105. package/dist/kosuke/commands/analyse.js +0 -304
  106. package/dist/kosuke/commands/analyse.js.map +0 -1
  107. package/dist/kosuke/commands/build.d.ts +0 -35
  108. package/dist/kosuke/commands/build.d.ts.map +0 -1
  109. package/dist/kosuke/commands/build.js +0 -660
  110. package/dist/kosuke/commands/build.js.map +0 -1
  111. package/dist/kosuke/commands/fix.d.ts +0 -21
  112. package/dist/kosuke/commands/fix.d.ts.map +0 -1
  113. package/dist/kosuke/commands/fix.js +0 -256
  114. package/dist/kosuke/commands/fix.js.map +0 -1
  115. package/dist/kosuke/commands/getcode.d.ts +0 -29
  116. package/dist/kosuke/commands/getcode.d.ts.map +0 -1
  117. package/dist/kosuke/commands/getcode.js +0 -248
  118. package/dist/kosuke/commands/getcode.js.map +0 -1
  119. package/dist/kosuke/commands/lint.d.ts +0 -21
  120. package/dist/kosuke/commands/lint.d.ts.map +0 -1
  121. package/dist/kosuke/commands/lint.js +0 -342
  122. package/dist/kosuke/commands/lint.js.map +0 -1
  123. package/dist/kosuke/commands/migrate.d.ts +0 -38
  124. package/dist/kosuke/commands/migrate.d.ts.map +0 -1
  125. package/dist/kosuke/commands/migrate.js +0 -284
  126. package/dist/kosuke/commands/migrate.js.map +0 -1
  127. package/dist/kosuke/commands/plan.d.ts +0 -28
  128. package/dist/kosuke/commands/plan.d.ts.map +0 -1
  129. package/dist/kosuke/commands/plan.js +0 -684
  130. package/dist/kosuke/commands/plan.js.map +0 -1
  131. package/dist/kosuke/commands/requirements.d.ts +0 -52
  132. package/dist/kosuke/commands/requirements.d.ts.map +0 -1
  133. package/dist/kosuke/commands/requirements.js +0 -615
  134. package/dist/kosuke/commands/requirements.js.map +0 -1
  135. package/dist/kosuke/commands/review.d.ts +0 -26
  136. package/dist/kosuke/commands/review.d.ts.map +0 -1
  137. package/dist/kosuke/commands/review.js +0 -303
  138. package/dist/kosuke/commands/review.js.map +0 -1
  139. package/dist/kosuke/commands/serve.d.ts +0 -9
  140. package/dist/kosuke/commands/serve.d.ts.map +0 -1
  141. package/dist/kosuke/commands/serve.js +0 -17
  142. package/dist/kosuke/commands/serve.js.map +0 -1
  143. package/dist/kosuke/commands/ship.d.ts +0 -37
  144. package/dist/kosuke/commands/ship.d.ts.map +0 -1
  145. package/dist/kosuke/commands/ship.js +0 -375
  146. package/dist/kosuke/commands/ship.js.map +0 -1
  147. package/dist/kosuke/commands/sync-rules.d.ts +0 -9
  148. package/dist/kosuke/commands/sync-rules.d.ts.map +0 -1
  149. package/dist/kosuke/commands/sync-rules.js +0 -414
  150. package/dist/kosuke/commands/sync-rules.js.map +0 -1
  151. package/dist/kosuke/commands/test.d.ts +0 -42
  152. package/dist/kosuke/commands/test.d.ts.map +0 -1
  153. package/dist/kosuke/commands/test.js +0 -540
  154. package/dist/kosuke/commands/test.js.map +0 -1
  155. package/dist/kosuke/commands/tickets.d.ts +0 -43
  156. package/dist/kosuke/commands/tickets.d.ts.map +0 -1
  157. package/dist/kosuke/commands/tickets.js +0 -876
  158. package/dist/kosuke/commands/tickets.js.map +0 -1
  159. package/dist/kosuke/commands/validate-tickets.d.ts +0 -23
  160. package/dist/kosuke/commands/validate-tickets.d.ts.map +0 -1
  161. package/dist/kosuke/commands/validate-tickets.js +0 -360
  162. package/dist/kosuke/commands/validate-tickets.js.map +0 -1
  163. package/dist/kosuke/serve/middleware/error-handler.d.ts +0 -14
  164. package/dist/kosuke/serve/middleware/error-handler.d.ts.map +0 -1
  165. package/dist/kosuke/serve/middleware/error-handler.js +0 -42
  166. package/dist/kosuke/serve/middleware/error-handler.js.map +0 -1
  167. package/dist/kosuke/serve/middleware/validation.d.ts +0 -13
  168. package/dist/kosuke/serve/middleware/validation.d.ts.map +0 -1
  169. package/dist/kosuke/serve/middleware/validation.js +0 -38
  170. package/dist/kosuke/serve/middleware/validation.js.map +0 -1
  171. package/dist/kosuke/serve/routes/build.d.ts +0 -6
  172. package/dist/kosuke/serve/routes/build.d.ts.map +0 -1
  173. package/dist/kosuke/serve/routes/build.js +0 -226
  174. package/dist/kosuke/serve/routes/build.js.map +0 -1
  175. package/dist/kosuke/serve/routes/health.d.ts +0 -6
  176. package/dist/kosuke/serve/routes/health.d.ts.map +0 -1
  177. package/dist/kosuke/serve/routes/health.js +0 -11
  178. package/dist/kosuke/serve/routes/health.js.map +0 -1
  179. package/dist/kosuke/serve/routes/plan.d.ts +0 -6
  180. package/dist/kosuke/serve/routes/plan.d.ts.map +0 -1
  181. package/dist/kosuke/serve/routes/plan.js +0 -106
  182. package/dist/kosuke/serve/routes/plan.js.map +0 -1
  183. package/dist/kosuke/serve/server.d.ts +0 -16
  184. package/dist/kosuke/serve/server.d.ts.map +0 -1
  185. package/dist/kosuke/serve/server.js +0 -67
  186. package/dist/kosuke/serve/server.js.map +0 -1
  187. package/dist/kosuke/serve/validation/build.d.ts +0 -41
  188. package/dist/kosuke/serve/validation/build.d.ts.map +0 -1
  189. package/dist/kosuke/serve/validation/build.js +0 -20
  190. package/dist/kosuke/serve/validation/build.js.map +0 -1
  191. package/dist/kosuke/serve/validation/plan.d.ts +0 -26
  192. package/dist/kosuke/serve/validation/plan.d.ts.map +0 -1
  193. package/dist/kosuke/serve/validation/plan.js +0 -15
  194. package/dist/kosuke/serve/validation/plan.js.map +0 -1
  195. package/dist/kosuke/types.d.ts +0 -539
  196. package/dist/kosuke/types.d.ts.map +0 -1
  197. package/dist/kosuke/types.js +0 -5
  198. package/dist/kosuke/types.js.map +0 -1
  199. package/dist/kosuke/utils/batch-creator.d.ts +0 -14
  200. package/dist/kosuke/utils/batch-creator.d.ts.map +0 -1
  201. package/dist/kosuke/utils/batch-creator.js +0 -76
  202. package/dist/kosuke/utils/batch-creator.js.map +0 -1
  203. package/dist/kosuke/utils/claude-agent.d.ts +0 -140
  204. package/dist/kosuke/utils/claude-agent.d.ts.map +0 -1
  205. package/dist/kosuke/utils/claude-agent.js +0 -388
  206. package/dist/kosuke/utils/claude-agent.js.map +0 -1
  207. package/dist/kosuke/utils/constants.d.ts +0 -40
  208. package/dist/kosuke/utils/constants.d.ts.map +0 -1
  209. package/dist/kosuke/utils/constants.js +0 -54
  210. package/dist/kosuke/utils/constants.js.map +0 -1
  211. package/dist/kosuke/utils/file-discovery.d.ts +0 -15
  212. package/dist/kosuke/utils/file-discovery.d.ts.map +0 -1
  213. package/dist/kosuke/utils/file-discovery.js +0 -80
  214. package/dist/kosuke/utils/file-discovery.js.map +0 -1
  215. package/dist/kosuke/utils/git.d.ts +0 -41
  216. package/dist/kosuke/utils/git.d.ts.map +0 -1
  217. package/dist/kosuke/utils/git.js +0 -145
  218. package/dist/kosuke/utils/git.js.map +0 -1
  219. package/dist/kosuke/utils/github.d.ts +0 -17
  220. package/dist/kosuke/utils/github.d.ts.map +0 -1
  221. package/dist/kosuke/utils/github.js +0 -22
  222. package/dist/kosuke/utils/github.js.map +0 -1
  223. package/dist/kosuke/utils/interactive-input.d.ts +0 -22
  224. package/dist/kosuke/utils/interactive-input.d.ts.map +0 -1
  225. package/dist/kosuke/utils/interactive-input.js +0 -124
  226. package/dist/kosuke/utils/interactive-input.js.map +0 -1
  227. package/dist/kosuke/utils/json-parser.d.ts +0 -14
  228. package/dist/kosuke/utils/json-parser.d.ts.map +0 -1
  229. package/dist/kosuke/utils/json-parser.js +0 -40
  230. package/dist/kosuke/utils/json-parser.js.map +0 -1
  231. package/dist/kosuke/utils/logger.d.ts +0 -161
  232. package/dist/kosuke/utils/logger.d.ts.map +0 -1
  233. package/dist/kosuke/utils/logger.js +0 -234
  234. package/dist/kosuke/utils/logger.js.map +0 -1
  235. package/dist/kosuke/utils/playwright-mcp-client.d.ts +0 -46
  236. package/dist/kosuke/utils/playwright-mcp-client.d.ts.map +0 -1
  237. package/dist/kosuke/utils/playwright-mcp-client.js +0 -135
  238. package/dist/kosuke/utils/playwright-mcp-client.js.map +0 -1
  239. package/dist/kosuke/utils/pr-orchestrator.d.ts +0 -49
  240. package/dist/kosuke/utils/pr-orchestrator.d.ts.map +0 -1
  241. package/dist/kosuke/utils/pr-orchestrator.js +0 -154
  242. package/dist/kosuke/utils/pr-orchestrator.js.map +0 -1
  243. package/dist/kosuke/utils/repository-manager.d.ts +0 -13
  244. package/dist/kosuke/utils/repository-manager.d.ts.map +0 -1
  245. package/dist/kosuke/utils/repository-manager.js +0 -94
  246. package/dist/kosuke/utils/repository-manager.js.map +0 -1
  247. package/dist/kosuke/utils/repository-resolver.d.ts +0 -12
  248. package/dist/kosuke/utils/repository-resolver.d.ts.map +0 -1
  249. package/dist/kosuke/utils/repository-resolver.js +0 -186
  250. package/dist/kosuke/utils/repository-resolver.js.map +0 -1
  251. package/dist/kosuke/utils/tickets-manager.d.ts +0 -34
  252. package/dist/kosuke/utils/tickets-manager.d.ts.map +0 -1
  253. package/dist/kosuke/utils/tickets-manager.js +0 -106
  254. package/dist/kosuke/utils/tickets-manager.js.map +0 -1
  255. package/dist/kosuke/utils/validator.d.ts +0 -45
  256. package/dist/kosuke/utils/validator.d.ts.map +0 -1
  257. package/dist/kosuke/utils/validator.js +0 -248
  258. package/dist/kosuke/utils/validator.js.map +0 -1
  259. package/dist/lib.d.ts +0 -104
  260. package/dist/lib.d.ts.map +0 -1
  261. package/dist/lib.js +0 -104
  262. package/dist/lib.js.map +0 -1
  263. package/dist/package.json +0 -99
@@ -1,80 +0,0 @@
1
- /**
2
- * File discovery utilities for Kosuke CLI
3
- */
4
- import { existsSync, readFileSync } from 'fs';
5
- import { join } from 'path';
6
- import { glob } from 'glob';
7
- import ignore from 'ignore';
8
- const KOSUKEIGNORE_FILE = '.kosukeignore';
9
- /**
10
- * Read .kosukeignore file and return ignore patterns
11
- */
12
- function readKosukeignore(cwd = process.cwd()) {
13
- const kosukeignorePath = join(cwd, KOSUKEIGNORE_FILE);
14
- if (!existsSync(kosukeignorePath)) {
15
- return [];
16
- }
17
- const content = readFileSync(kosukeignorePath, 'utf-8');
18
- return content
19
- .split('\n')
20
- .map((line) => line.trim())
21
- .filter((line) => line && !line.startsWith('#'));
22
- }
23
- /**
24
- * Discover files to analyze, respecting .kosukeignore
25
- */
26
- export async function discoverFiles(options = {}) {
27
- const cwd = options.cwd || process.cwd();
28
- // Default patterns to include
29
- const defaultPatterns = ['**/*.ts', '**/*.tsx', '**/*.py'];
30
- // Build include patterns
31
- let includePatterns;
32
- if (options.scope) {
33
- // Scope: specific directories
34
- const scopes = options.scope.split(',').map((s) => s.trim());
35
- if (options.types) {
36
- includePatterns = scopes.flatMap((scope) => options.types.map((type) => `${scope}/**/*.${type}`));
37
- }
38
- else {
39
- includePatterns = scopes.flatMap((scope) => defaultPatterns.map((pattern) => `${scope}/${pattern}`));
40
- }
41
- }
42
- else if (options.types) {
43
- // Types: specific file extensions
44
- includePatterns = options.types.map((type) => `**/*.${type}`);
45
- }
46
- else {
47
- // Default: all supported types
48
- includePatterns = options.include || defaultPatterns;
49
- }
50
- // Load .kosukeignore patterns
51
- const kosukeignorePatterns = readKosukeignore(cwd);
52
- // Always exclude these (gitignore-style patterns)
53
- const alwaysExclude = [
54
- 'node_modules',
55
- '.next',
56
- 'dist',
57
- 'build',
58
- '*.tsbuildinfo',
59
- 'drizzle',
60
- '__pycache__',
61
- '*.pyc',
62
- '.pytest_cache',
63
- 'engine/uv.lock',
64
- ];
65
- const ig = ignore().add([...kosukeignorePatterns, ...alwaysExclude]);
66
- // Find all matching files
67
- const allFiles = [];
68
- for (const pattern of includePatterns) {
69
- const files = await glob(pattern, {
70
- cwd,
71
- nodir: true,
72
- });
73
- allFiles.push(...files);
74
- }
75
- // Filter with .kosukeignore
76
- const filteredFiles = allFiles.filter((file) => !ig.ignores(file));
77
- // Remove duplicates and sort
78
- return [...new Set(filteredFiles)].sort();
79
- }
80
- //# sourceMappingURL=file-discovery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-discovery.js","sourceRoot":"","sources":["../../../kosuke/utils/file-discovery.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAE1C;;GAEG;AACH,SAAS,gBAAgB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACnD,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAEtD,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACxD,OAAO,OAAO;SACX,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,CAAC;AASD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAgC,EAAE;IACpE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEzC,8BAA8B;IAC9B,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IAE3D,yBAAyB;IACzB,IAAI,eAAyB,CAAC;IAC9B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,8BAA8B;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACzC,OAAO,CAAC,KAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,CAAC,CACtD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACzC,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC,CACxD,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACzB,kCAAkC;QAClC,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,+BAA+B;QAC/B,eAAe,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC;IACvD,CAAC;IAED,8BAA8B;IAC9B,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAEnD,kDAAkD;IAClD,MAAM,aAAa,GAAG;QACpB,cAAc;QACd,OAAO;QACP,MAAM;QACN,OAAO;QACP,eAAe;QACf,SAAS;QACT,aAAa;QACb,OAAO;QACP,eAAe;QACf,gBAAgB;KACjB,CAAC;IAEF,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,oBAAoB,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC;IAErE,0BAA0B;IAC1B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;YAChC,GAAG;YACH,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,4BAA4B;IAC5B,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnE,6BAA6B;IAC7B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5C,CAAC"}
@@ -1,41 +0,0 @@
1
- /**
2
- * Git utilities for Kosuke CLI
3
- */
4
- import type { GitInfo } from '../types.js';
5
- /**
6
- * Get current repository info from git remote
7
- */
8
- export declare function getCurrentRepo(cwd?: string): Promise<GitInfo>;
9
- /**
10
- * Detect if running in kosuke-template repository itself
11
- */
12
- export declare function isKosukeTemplateRepo(cwd?: string): Promise<boolean>;
13
- /**
14
- * Create and checkout a new branch
15
- */
16
- export declare function createBranch(branchName: string, baseBranch?: string, cwd?: string): Promise<void>;
17
- /**
18
- * Commit changes with a message
19
- */
20
- export declare function commit(message: string, cwd?: string): Promise<void>;
21
- /**
22
- * Push current branch to origin
23
- */
24
- export declare function push(branchName: string, cwd?: string): Promise<void>;
25
- /**
26
- * Get the current branch name
27
- */
28
- export declare function getCurrentBranch(cwd?: string): Promise<string>;
29
- /**
30
- * Get git diff of current changes (staged and unstaged)
31
- */
32
- export declare function getGitDiff(cwd?: string): Promise<string>;
33
- /**
34
- * Check if there are any uncommitted changes
35
- */
36
- export declare function hasUncommittedChanges(cwd?: string): Promise<boolean>;
37
- /**
38
- * Stage all changes (including untracked files) so they appear in git diff
39
- */
40
- export declare function stageAllChanges(cwd?: string): Promise<void>;
41
- //# sourceMappingURL=git.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../kosuke/utils/git.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAgD3C;;GAEG;AACH,wBAAsB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBnE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOzE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,MAAe,EAC3B,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKzE;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIpE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU9D;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAI1E;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE"}
@@ -1,145 +0,0 @@
1
- /**
2
- * Git utilities for Kosuke CLI
3
- */
4
- import simpleGit from 'simple-git';
5
- let gitIdentityConfigured = false;
6
- /**
7
- * Get SimpleGit instance for the given directory
8
- */
9
- function getGitInstance(cwd) {
10
- return cwd ? simpleGit(cwd) : simpleGit();
11
- }
12
- /**
13
- * Configure git identity for commits (required in CI environments)
14
- */
15
- async function ensureGitIdentity(cwd) {
16
- if (gitIdentityConfigured) {
17
- return;
18
- }
19
- const git = getGitInstance(cwd);
20
- try {
21
- // Check if git identity is already configured
22
- const userName = await git.raw(['config', 'user.name']).catch(() => '');
23
- const userEmail = await git.raw(['config', 'user.email']).catch(() => '');
24
- if (userName.trim() && userEmail.trim()) {
25
- gitIdentityConfigured = true;
26
- return;
27
- }
28
- // Configure git identity using environment variables or defaults
29
- const name = process.env.GIT_AUTHOR_NAME || process.env.GIT_COMMITTER_NAME || 'kosuke-bot';
30
- const email = process.env.GIT_AUTHOR_EMAIL ||
31
- process.env.GIT_COMMITTER_EMAIL ||
32
- 'kosuke-bot@users.noreply.github.com';
33
- await git.addConfig('user.name', name, false, 'local');
34
- await git.addConfig('user.email', email, false, 'local');
35
- console.log(`✅ Configured git identity: ${name} <${email}>`);
36
- gitIdentityConfigured = true;
37
- }
38
- catch (error) {
39
- console.warn('⚠️ Could not configure git identity, commits may fail:', error);
40
- }
41
- }
42
- /**
43
- * Get current repository info from git remote
44
- */
45
- export async function getCurrentRepo(cwd) {
46
- const git = getGitInstance(cwd);
47
- const remotes = await git.getRemotes(true);
48
- const origin = remotes.find((r) => r.name === 'origin');
49
- if (!origin?.refs?.push) {
50
- throw new Error('Could not determine repository from git remote origin');
51
- }
52
- // Parse GitHub URL (supports both HTTPS and SSH)
53
- const match = origin.refs.push.match(/github\.com[/:]([\w-]+)\/([\w-]+?)(?:\.git)?$/) ||
54
- origin.refs.push.match(/^([\w-]+)\/([\w-]+)$/);
55
- if (!match) {
56
- throw new Error(`Could not parse GitHub repository from URL: ${origin.refs.push}`);
57
- }
58
- return { owner: match[1], repo: match[2] };
59
- }
60
- /**
61
- * Detect if running in kosuke-template repository itself
62
- */
63
- export async function isKosukeTemplateRepo(cwd) {
64
- try {
65
- const { owner, repo } = await getCurrentRepo(cwd);
66
- return owner === 'Kosuke-Org' && repo === 'kosuke-template';
67
- }
68
- catch {
69
- return false;
70
- }
71
- }
72
- /**
73
- * Create and checkout a new branch
74
- */
75
- export async function createBranch(branchName, baseBranch = 'main', cwd) {
76
- const git = getGitInstance(cwd);
77
- await git.checkout(baseBranch);
78
- await git.pull('origin', baseBranch);
79
- // Delete local branch if exists
80
- try {
81
- const branches = await git.branchLocal();
82
- if (branches.all.includes(branchName)) {
83
- await git.deleteLocalBranch(branchName, true);
84
- }
85
- }
86
- catch {
87
- // Branch doesn't exist, continue
88
- }
89
- await git.checkoutLocalBranch(branchName);
90
- }
91
- /**
92
- * Commit changes with a message
93
- */
94
- export async function commit(message, cwd) {
95
- const git = getGitInstance(cwd);
96
- await ensureGitIdentity(cwd);
97
- await git.add(['-A']);
98
- await git.commit(message, ['--no-verify']);
99
- }
100
- /**
101
- * Push current branch to origin
102
- */
103
- export async function push(branchName, cwd) {
104
- const git = getGitInstance(cwd);
105
- await git.push('origin', branchName, ['--set-upstream']);
106
- }
107
- /**
108
- * Get the current branch name
109
- */
110
- export async function getCurrentBranch(cwd) {
111
- const git = getGitInstance(cwd);
112
- const branch = await git.revparse(['--abbrev-ref', 'HEAD']);
113
- return branch.trim();
114
- }
115
- /**
116
- * Get git diff of current changes (staged and unstaged)
117
- */
118
- export async function getGitDiff(cwd) {
119
- const git = getGitInstance(cwd);
120
- try {
121
- // Get diff of both staged and unstaged changes
122
- const diff = await git.diff(['HEAD']);
123
- return diff;
124
- }
125
- catch (error) {
126
- console.warn('⚠️ Could not get git diff:', error);
127
- return '';
128
- }
129
- }
130
- /**
131
- * Check if there are any uncommitted changes
132
- */
133
- export async function hasUncommittedChanges(cwd) {
134
- const git = getGitInstance(cwd);
135
- const status = await git.status();
136
- return status.files.length > 0;
137
- }
138
- /**
139
- * Stage all changes (including untracked files) so they appear in git diff
140
- */
141
- export async function stageAllChanges(cwd) {
142
- const git = getGitInstance(cwd);
143
- await git.add('.');
144
- }
145
- //# sourceMappingURL=git.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../../kosuke/utils/git.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,SAA6B,MAAM,YAAY,CAAC;AAGvD,IAAI,qBAAqB,GAAG,KAAK,CAAC;AAElC;;GAEG;AACH,SAAS,cAAc,CAAC,GAAY;IAClC,OAAO,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,GAAY;IAC3C,IAAI,qBAAqB,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAEhC,IAAI,CAAC;QACH,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACxE,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAE1E,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YACxC,qBAAqB,GAAG,IAAI,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,iEAAiE;QACjE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,YAAY,CAAC;QAC3F,MAAM,KAAK,GACT,OAAO,CAAC,GAAG,CAAC,gBAAgB;YAC5B,OAAO,CAAC,GAAG,CAAC,mBAAmB;YAC/B,qCAAqC,CAAC;QAExC,MAAM,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAEzD,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC;QAC7D,qBAAqB,GAAG,IAAI,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,yDAAyD,EAAE,KAAK,CAAC,CAAC;IACjF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAY;IAC/C,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAExD,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,iDAAiD;IACjD,MAAM,KAAK,GACT,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,+CAA+C,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAEjD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,+CAA+C,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAY;IACrD,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;QAClD,OAAO,KAAK,KAAK,YAAY,IAAI,IAAI,KAAK,iBAAiB,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAAkB,EAClB,aAAqB,MAAM,EAC3B,GAAY;IAEZ,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC/B,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAErC,gCAAgC;IAChC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,MAAM,GAAG,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;IAED,MAAM,GAAG,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAe,EAAE,GAAY;IACxD,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACtB,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,UAAkB,EAAE,GAAY;IACzD,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAY;IACjD,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAY;IAC3C,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC;QACH,+CAA+C;QAC/C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAY;IACtD,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAY;IAChD,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC"}
@@ -1,17 +0,0 @@
1
- /**
2
- * GitHub API utilities for Kosuke CLI
3
- */
4
- interface CreatePROptions {
5
- owner: string;
6
- repo: string;
7
- title: string;
8
- body: string;
9
- head: string;
10
- base: string;
11
- }
12
- /**
13
- * Create a pull request
14
- */
15
- export declare function createPullRequest(options: CreatePROptions): Promise<string>;
16
- export {};
17
- //# sourceMappingURL=github.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../kosuke/utils/github.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAWjF"}
@@ -1,22 +0,0 @@
1
- /**
2
- * GitHub API utilities for Kosuke CLI
3
- */
4
- import { Octokit } from '@octokit/rest';
5
- const octokit = new Octokit({
6
- auth: process.env.GITHUB_TOKEN,
7
- });
8
- /**
9
- * Create a pull request
10
- */
11
- export async function createPullRequest(options) {
12
- const { data: pr } = await octokit.pulls.create({
13
- owner: options.owner,
14
- repo: options.repo,
15
- title: options.title,
16
- head: options.head,
17
- base: options.base,
18
- body: options.body,
19
- });
20
- return pr.html_url;
21
- }
22
- //# sourceMappingURL=github.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"github.js","sourceRoot":"","sources":["../../../kosuke/utils/github.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;IAC1B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;CAC/B,CAAC,CAAC;AAWH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAwB;IAC9D,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;QAC9C,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAC;IAEH,OAAO,EAAE,CAAC,QAAQ,CAAC;AACrB,CAAC"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Interactive CLI input utilities
3
- *
4
- * Provides consistent multi-line input handling across commands.
5
- * Works reliably in Docker and all terminal environments.
6
- */
7
- /**
8
- * Ask a question with multi-line support
9
- *
10
- * Controls:
11
- * - Enter: Submit input
12
- * - Ctrl+J: New line (works in Docker)
13
- * - Ctrl+C: Exit
14
- * - Ctrl+D: Exit if empty
15
- * - Backspace: Delete character
16
- * - Tab: Insert 2 spaces
17
- *
18
- * @param prompt - The prompt to display (e.g., "You: ")
19
- * @returns The user's input (trimmed)
20
- */
21
- export declare function askQuestion(prompt: string): Promise<string>;
22
- //# sourceMappingURL=interactive-input.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interactive-input.d.ts","sourceRoot":"","sources":["../../../kosuke/utils/interactive-input.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0H3D"}
@@ -1,124 +0,0 @@
1
- /**
2
- * Interactive CLI input utilities
3
- *
4
- * Provides consistent multi-line input handling across commands.
5
- * Works reliably in Docker and all terminal environments.
6
- */
7
- /**
8
- * Ask a question with multi-line support
9
- *
10
- * Controls:
11
- * - Enter: Submit input
12
- * - Ctrl+J: New line (works in Docker)
13
- * - Ctrl+C: Exit
14
- * - Ctrl+D: Exit if empty
15
- * - Backspace: Delete character
16
- * - Tab: Insert 2 spaces
17
- *
18
- * @param prompt - The prompt to display (e.g., "You: ")
19
- * @returns The user's input (trimmed)
20
- */
21
- export function askQuestion(prompt) {
22
- return new Promise((resolve) => {
23
- const lines = [];
24
- let currentLine = '';
25
- let escapeBuffer = '';
26
- console.log('(Enter to submit, Ctrl+J for new line, Ctrl+C to exit)\n');
27
- process.stdout.write(prompt);
28
- // Store original stdin state
29
- const wasRaw = process.stdin.isRaw;
30
- // Enable raw mode to capture key combinations
31
- if (process.stdin.isTTY) {
32
- process.stdin.setRawMode(true);
33
- }
34
- // Remove existing listeners
35
- process.stdin.removeAllListeners('data');
36
- process.stdin.resume();
37
- process.stdin.setEncoding('utf8');
38
- const onData = (key) => {
39
- // Handle escape sequences (for Shift+Enter and other special keys)
40
- if (escapeBuffer.length > 0 || key === '\x1b') {
41
- escapeBuffer += key;
42
- // Check for Shift+Enter sequences
43
- // Common sequences: \x1b[13;2~ or \x1b\r or \x1bOM
44
- if (escapeBuffer === '\x1b\r' ||
45
- escapeBuffer === '\x1b\n' ||
46
- escapeBuffer.match(/\x1b\[13;2~/)) {
47
- // Shift+Enter - add new line
48
- lines.push(currentLine);
49
- currentLine = '';
50
- process.stdout.write('\n' + ' '.repeat(prompt.length));
51
- escapeBuffer = '';
52
- return;
53
- }
54
- // If escape sequence is incomplete, wait for more
55
- if (escapeBuffer.length < 6) {
56
- return;
57
- }
58
- // Unknown escape sequence, ignore it
59
- escapeBuffer = '';
60
- return;
61
- }
62
- // Ctrl+C - exit
63
- if (key === '\u0003') {
64
- cleanup();
65
- process.exit(0);
66
- }
67
- // Ctrl+D (EOF)
68
- if (key === '\u0004') {
69
- if (currentLine === '' && lines.length === 0) {
70
- cleanup();
71
- resolve('');
72
- return;
73
- }
74
- }
75
- // Ctrl+J (linefeed) - new line (works in Docker)
76
- if (key === '\n') {
77
- lines.push(currentLine);
78
- currentLine = '';
79
- process.stdout.write('\n' + ' '.repeat(prompt.length));
80
- return;
81
- }
82
- // Regular Enter key (without Shift) - submit
83
- if (key === '\r') {
84
- if (currentLine.length > 0) {
85
- lines.push(currentLine);
86
- }
87
- process.stdout.write('\n');
88
- cleanup();
89
- resolve(lines.join('\n').trim());
90
- return;
91
- }
92
- // Backspace
93
- if (key === '\u007f' || key === '\b' || key === '\x08') {
94
- if (currentLine.length > 0) {
95
- currentLine = currentLine.slice(0, -1);
96
- process.stdout.write('\b \b');
97
- }
98
- return;
99
- }
100
- // Tab - insert 2 spaces
101
- if (key === '\t') {
102
- currentLine += ' ';
103
- process.stdout.write(' ');
104
- return;
105
- }
106
- // Ignore other control characters (except printable ones)
107
- if (key.charCodeAt(0) < 32) {
108
- return;
109
- }
110
- // Regular character
111
- currentLine += key;
112
- process.stdout.write(key);
113
- };
114
- const cleanup = () => {
115
- process.stdin.removeListener('data', onData);
116
- if (process.stdin.isTTY) {
117
- process.stdin.setRawMode(wasRaw || false);
118
- }
119
- process.stdin.pause();
120
- };
121
- process.stdin.on('data', onData);
122
- });
123
- }
124
- //# sourceMappingURL=interactive-input.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interactive-input.js","sourceRoot":"","sources":["../../../kosuke/utils/interactive-input.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- /**
2
- * JSON extraction utilities for parsing LLM responses
3
- *
4
- * LLMs often wrap JSON in markdown code blocks or include explanatory text.
5
- * This utility provides robust extraction of JSON arrays from such responses.
6
- */
7
- import type { Ticket } from '../types.js';
8
- /**
9
- * Extract JSON array from Claude's response
10
- * Handles markdown code blocks and raw JSON arrays
11
- * Returns null if no valid JSON found
12
- */
13
- export declare function extractTicketsJSON(response: string): Ticket[] | null;
14
- //# sourceMappingURL=json-parser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json-parser.d.ts","sourceRoot":"","sources":["../../../kosuke/utils/json-parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAyBpE"}
@@ -1,40 +0,0 @@
1
- /**
2
- * JSON extraction utilities for parsing LLM responses
3
- *
4
- * LLMs often wrap JSON in markdown code blocks or include explanatory text.
5
- * This utility provides robust extraction of JSON arrays from such responses.
6
- */
7
- /**
8
- * Extract JSON array from Claude's response
9
- * Handles markdown code blocks and raw JSON arrays
10
- * Returns null if no valid JSON found
11
- */
12
- export function extractTicketsJSON(response) {
13
- // Strategy 1: Look for JSON in markdown code blocks
14
- const markdownMatch = response.match(/```(?:json)?\s*(\[[\s\S]*?\])\s*```/);
15
- if (markdownMatch) {
16
- try {
17
- const tickets = JSON.parse(markdownMatch[1]);
18
- if (Array.isArray(tickets))
19
- return tickets;
20
- }
21
- catch {
22
- // Continue to next strategy
23
- }
24
- }
25
- // Strategy 2: Look for raw JSON array
26
- const arrayMatch = response.match(/\[[\s\S]*\]/);
27
- if (arrayMatch) {
28
- try {
29
- const tickets = JSON.parse(arrayMatch[0]);
30
- if (Array.isArray(tickets))
31
- return tickets;
32
- }
33
- catch {
34
- // Continue to next strategy
35
- }
36
- }
37
- // No valid JSON found - return null
38
- return null;
39
- }
40
- //# sourceMappingURL=json-parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json-parser.js","sourceRoot":"","sources":["../../../kosuke/utils/json-parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,oDAAoD;IACpD,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAC5E,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAa,CAAC;YACzD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,OAAO,OAAO,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,4BAA4B;QAC9B,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACjD,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAa,CAAC;YACtD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,OAAO,OAAO,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,4BAA4B;QAC9B,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,OAAO,IAAI,CAAC;AACd,CAAC"}