@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,414 +0,0 @@
1
- /**
2
- * Sync rules command - Syncs rules and documentation from kosuke-template
3
- */
4
- import simpleGit from 'simple-git';
5
- import { readFileSync, writeFileSync, existsSync, mkdirSync, rmSync } from 'fs';
6
- import { join, dirname } from 'path';
7
- import { isKosukeTemplateRepo } from '../utils/git.js';
8
- import { runWithPR } from '../utils/pr-orchestrator.js';
9
- import { runFormat, runLint } from '../utils/validator.js';
10
- import { runAgentStream, logAssistantMessage, logToolUsage } from '../utils/claude-agent.js';
11
- import { fixLintErrors } from './lint.js';
12
- import { REPOS_DIR } from '../utils/constants.js';
13
- // Constants
14
- const KOSUKE_TEMPLATE_REPO = 'https://github.com/Kosuke-Org/kosuke-template.git';
15
- const KOSUKE_TEMPLATE_BRANCH = 'main';
16
- const TEMP_DIR = `${REPOS_DIR}/template`;
17
- const RULES_FILE = '.cursor/rules/general.mdc';
18
- const CLAUDE_MD_FILE = 'CLAUDE.md';
19
- /**
20
- * Clone or update kosuke-template repository
21
- */
22
- async function cloneOrUpdateKosukeTemplate() {
23
- const git = simpleGit();
24
- if (existsSync(TEMP_DIR)) {
25
- console.log('๐Ÿ“ Updating existing kosuke-template clone...');
26
- const repoGit = simpleGit(TEMP_DIR);
27
- await repoGit.fetch(['origin', KOSUKE_TEMPLATE_BRANCH, '--depth=100']);
28
- await repoGit.checkout(KOSUKE_TEMPLATE_BRANCH);
29
- await repoGit.pull('origin', KOSUKE_TEMPLATE_BRANCH);
30
- return repoGit;
31
- }
32
- console.log('๐Ÿ“ฅ Cloning kosuke-template repository...');
33
- mkdirSync(TEMP_DIR, { recursive: true });
34
- await git.clone(KOSUKE_TEMPLATE_REPO, TEMP_DIR, [
35
- '--depth',
36
- '100',
37
- '--branch',
38
- KOSUKE_TEMPLATE_BRANCH,
39
- ]);
40
- return simpleGit(TEMP_DIR);
41
- }
42
- /**
43
- * Check if rules file changed in last 24 hours
44
- */
45
- async function checkRulesChangedInLast24Hours(git) {
46
- const oneDayAgo = new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString();
47
- // Get all commits in last 24 hours
48
- const log = await git.log({
49
- maxCount: 100,
50
- '--since': oneDayAgo,
51
- });
52
- for (const commit of log.all) {
53
- // Check if rules file was modified in this commit
54
- const diffSummary = await git.diffSummary([`${commit.hash}^`, commit.hash]);
55
- for (const file of diffSummary.files) {
56
- if (file.file === RULES_FILE) {
57
- return true;
58
- }
59
- }
60
- }
61
- return false;
62
- }
63
- /**
64
- * Adapt rules conservatively with Claude Agent SDK
65
- */
66
- async function adaptRulesWithClaude(fileName, currentContent) {
67
- console.log(`๐Ÿค– Analyzing ${fileName} with Claude Agent SDK...`);
68
- const workspaceRoot = process.cwd();
69
- const kosukeFilePath = join(TEMP_DIR, fileName); // Kosuke-template clone
70
- const currentFilePath = join(workspaceRoot, fileName); // Current repository
71
- const systemPrompt = `You are syncing rules/documentation from kosuke-template to a forked repository.
72
-
73
- TASK:
74
- Compare kosuke-template's version of ${fileName} with the current repository's version.
75
-
76
- Your job is to:
77
- 1. Explore the current repository to understand its architecture, tech stack, and features
78
- 2. Read both versions of ${fileName} (kosuke-template vs current)
79
- 3. Adapt the current repository's file with conservative improvements:
80
- - KEEP repository-specific customizations
81
- - ADD generic improvements (TypeScript patterns, testing, code quality)
82
- - SKIP features not present in this repository (discover by exploring the codebase)
83
- - ADAPT examples to match the repository's domain and features
84
-
85
- Kosuke-template clone: ${TEMP_DIR}
86
- Current repository: ${workspaceRoot}
87
-
88
- Take your time to explore the codebase and understand the context before making changes.`;
89
- const promptText = `Compare and adapt ${fileName}:
90
- - Kosuke-template version: ${kosukeFilePath}
91
- - Current version: ${currentFilePath}
92
-
93
- Explore the repository, read both files, identify improvements, and update the current version conservatively.`;
94
- try {
95
- // Note: Claude Agent SDK doesn't support additionalDirectories in AgentConfig
96
- // The agent can access TEMP_DIR via relative paths from workspaceRoot
97
- const stream = runAgentStream(promptText, {
98
- systemPrompt,
99
- maxTurns: 30,
100
- cwd: workspaceRoot,
101
- verbosity: 'verbose',
102
- settingSources: [], // Don't load CLAUDE.md when syncing it
103
- });
104
- // Process stream and collect result
105
- const filesReferenced = new Set();
106
- for await (const event of stream) {
107
- if (event.type === 'message') {
108
- const message = event.data;
109
- if (message.type === 'assistant' && message.message?.content) {
110
- for (const block of message.message.content) {
111
- if (block.type === 'text' && block.text) {
112
- logAssistantMessage(block.text, 'verbose');
113
- }
114
- else if (block.type === 'tool_use' && block.name) {
115
- logToolUsage(block.name, block.input, filesReferenced);
116
- }
117
- }
118
- }
119
- }
120
- // Final result is in agent_result event but we don't need it here
121
- }
122
- // Read the adapted content
123
- const adaptedContent = existsSync(currentFilePath)
124
- ? readFileSync(currentFilePath, 'utf-8')
125
- : '';
126
- // Check if content actually changed
127
- const relevant = adaptedContent !== currentContent;
128
- const adaptation = {
129
- relevant,
130
- adaptedContent,
131
- summary: relevant ? 'Updated with improvements from kosuke-template' : 'No changes needed',
132
- };
133
- console.log(`\n ${relevant ? 'โœ… File updated' : 'โ„น๏ธ No changes needed'}`);
134
- return adaptation;
135
- }
136
- catch (error) {
137
- console.error(`\n โŒ Error during adaptation:`, error);
138
- throw error;
139
- }
140
- }
141
- /**
142
- * Generate CLAUDE.md from general.mdc (strip frontmatter)
143
- */
144
- function generateClaudeMd(generalMdcContent) {
145
- const lines = generalMdcContent.split('\n');
146
- // Detect frontmatter: starts with --- and ends with ---
147
- if (lines[0] === '---') {
148
- // Find the closing --- (starts from line 1, not 0)
149
- for (let i = 1; i < lines.length; i++) {
150
- if (lines[i] === '---') {
151
- // Skip the closing --- and any empty lines after it
152
- let skipLines = i + 1;
153
- while (skipLines < lines.length && lines[skipLines].trim() === '') {
154
- skipLines++;
155
- }
156
- return lines.slice(skipLines).join('\n');
157
- }
158
- }
159
- }
160
- // No frontmatter detected, return as-is
161
- return generalMdcContent;
162
- }
163
- /**
164
- * Generate concise summary of changes using Claude
165
- */
166
- async function generateChangesSummary(oldContent, newContent) {
167
- console.log('๐Ÿค– Generating changes summary...');
168
- const prompt = `Compare these two versions of a development rules file and provide a CONCISE summary of what changed.
169
-
170
- OLD VERSION:
171
- \`\`\`
172
- ${oldContent.slice(0, 5000)}${oldContent.length > 5000 ? '\n... (truncated)' : ''}
173
- \`\`\`
174
-
175
- NEW VERSION:
176
- \`\`\`
177
- ${newContent.slice(0, 5000)}${newContent.length > 5000 ? '\n... (truncated)' : ''}
178
- \`\`\`
179
-
180
- Provide a brief summary (3-5 bullet points) highlighting:
181
- - New features or guidelines added
182
- - Significant updates to existing rules
183
- - Removed or deprecated items
184
-
185
- Keep it concise and developer-friendly. Use bullet points starting with emojis.`;
186
- try {
187
- const stream = runAgentStream(prompt, {
188
- maxTurns: 1,
189
- cwd: process.cwd(),
190
- verbosity: 'minimal',
191
- systemPrompt: '', // No system prompt needed for this simple task
192
- settingSources: [], // Don't load CLAUDE.md when syncing it
193
- });
194
- let response = '';
195
- // Process stream and collect response
196
- for await (const event of stream) {
197
- if (event.type === 'message') {
198
- const message = event.data;
199
- if (message.type === 'assistant' && message.message?.content) {
200
- for (const block of message.message.content) {
201
- if (block.type === 'text' && block.text) {
202
- logAssistantMessage(block.text, 'minimal');
203
- }
204
- }
205
- }
206
- }
207
- else if (event.type === 'agent_result') {
208
- response = event.data.response;
209
- }
210
- }
211
- console.log(' โœ… Summary generated\n');
212
- return response.trim();
213
- }
214
- catch {
215
- console.warn(' โš ๏ธ Failed to generate summary, using fallback');
216
- return 'Updated rules and documentation from kosuke-template';
217
- }
218
- }
219
- /**
220
- * Core sync logic (git-agnostic)
221
- */
222
- async function syncRulesCore(force) {
223
- // Clone/update kosuke-template
224
- const git = await cloneOrUpdateKosukeTemplate();
225
- if (force) {
226
- console.log('โšก Force mode: Comparing rules file...\n');
227
- }
228
- else {
229
- // Check if rules file changed in last 24 hours
230
- console.log('๐Ÿ“… Checking for changes in last 24 hours...');
231
- const hasChanges = await checkRulesChangedInLast24Hours(git);
232
- if (!hasChanges) {
233
- console.log('โœ… No changes to rules in last 24 hours. Nothing to sync.');
234
- console.log(' Use --force flag to compare files regardless of recent commits.');
235
- throw new Error('No recent changes');
236
- }
237
- console.log(` โœ… Found changes in ${RULES_FILE}\n`);
238
- }
239
- // Read current repository versions
240
- const workspaceRoot = process.cwd();
241
- const kosukeFile = join(TEMP_DIR, RULES_FILE);
242
- const currentFile = join(workspaceRoot, RULES_FILE);
243
- if (!existsSync(kosukeFile)) {
244
- throw new Error(`${RULES_FILE} not found in kosuke-template`);
245
- }
246
- const kosukeContent = readFileSync(kosukeFile, 'utf-8');
247
- const currentContent = existsSync(currentFile) ? readFileSync(currentFile, 'utf-8') : '';
248
- // Check if content is actually different
249
- if (kosukeContent === currentContent) {
250
- console.log(`โ„น๏ธ No differences detected in ${RULES_FILE}. Nothing to sync.`);
251
- throw new Error('No differences detected');
252
- }
253
- console.log(`๐Ÿ“ฅ Processing ${RULES_FILE}...`);
254
- const adaptation = await adaptRulesWithClaude(RULES_FILE, currentContent);
255
- // Abort if no changes
256
- if (!adaptation.relevant) {
257
- console.log('โœ… No relevant changes to sync. Aborting.');
258
- throw new Error('No relevant changes');
259
- }
260
- // Generate CLAUDE.md from adapted general.mdc
261
- console.log(`\n๐Ÿ“„ Generating ${CLAUDE_MD_FILE} from ${RULES_FILE}...`);
262
- const claudeMdContent = generateClaudeMd(adaptation.adaptedContent);
263
- // Generate LLM summary of changes
264
- const changesSummary = await generateChangesSummary(currentContent, adaptation.adaptedContent);
265
- // Write files locally
266
- const workspaceRootPath = process.cwd();
267
- console.log('๐Ÿ“ Writing adapted files...');
268
- // Write general.mdc
269
- const rulesFile = join(workspaceRootPath, RULES_FILE);
270
- const rulesDir = dirname(rulesFile);
271
- if (!existsSync(rulesDir)) {
272
- mkdirSync(rulesDir, { recursive: true });
273
- }
274
- writeFileSync(rulesFile, adaptation.adaptedContent, 'utf-8');
275
- console.log(` โœ… ${RULES_FILE}`);
276
- // Write CLAUDE.md (stripped version)
277
- const claudeFile = join(workspaceRootPath, CLAUDE_MD_FILE);
278
- writeFileSync(claudeFile, claudeMdContent, 'utf-8');
279
- console.log(` โœ… ${CLAUDE_MD_FILE}`);
280
- // Run formatting and linting
281
- console.log('\n๐Ÿ”ง Running formatting and linting...');
282
- const formatResult = await runFormat();
283
- if (formatResult.warning) {
284
- console.log(` ${formatResult.warning}`);
285
- }
286
- else if (!formatResult.success) {
287
- console.error(' โŒ Formatting failed:\n', formatResult.error);
288
- throw new Error('Formatting validation failed');
289
- }
290
- else {
291
- console.log(' โœ… Formatting completed');
292
- }
293
- let lintResult = await runLint();
294
- if (lintResult.warning) {
295
- console.log(` ${lintResult.warning}`);
296
- }
297
- else if (!lintResult.success) {
298
- console.log(' โš ๏ธ Linting errors detected, attempting to fix...');
299
- // Try to fix lint errors with Claude (max 2 attempts)
300
- let attempts = 0;
301
- const maxAttempts = 2;
302
- while (!lintResult.success && attempts < maxAttempts) {
303
- attempts++;
304
- console.log(`\n ๐Ÿ”„ Lint fix attempt ${attempts}/${maxAttempts}`);
305
- const fixApplied = await fixLintErrors(lintResult.error || '');
306
- if (!fixApplied) {
307
- console.log(` โš ๏ธ No fixes were applied by Claude`);
308
- break;
309
- }
310
- // Re-run lint to check if errors are fixed
311
- lintResult = await runLint();
312
- }
313
- if (!lintResult.success) {
314
- console.error(' โŒ Linting failed after attempts:\n', lintResult.error);
315
- throw new Error('Linting validation failed');
316
- }
317
- }
318
- else {
319
- console.log(' โœ… Linting completed');
320
- }
321
- return {
322
- adaptation,
323
- claudeMdContent,
324
- changesSummary,
325
- };
326
- }
327
- /**
328
- * Main sync-rules command
329
- */
330
- export async function syncRulesCommand(options = {}) {
331
- console.log('๐Ÿš€ Starting Rules & Documentation Sync...\n');
332
- try {
333
- // Check if running in kosuke-template itself
334
- if (await isKosukeTemplateRepo()) {
335
- console.log('โš ๏ธ Detected running in kosuke-template repository itself.');
336
- console.log(' This script is designed to sync FROM kosuke-template TO forked repos.');
337
- console.log(' Skipping sync to prevent self-modification.\n');
338
- return;
339
- }
340
- // Validate environment
341
- if (!process.env.ANTHROPIC_API_KEY) {
342
- throw new Error('ANTHROPIC_API_KEY environment variable is required');
343
- }
344
- // If --pr flag is provided, wrap with PR workflow
345
- if (options.pr) {
346
- if (!process.env.GITHUB_TOKEN) {
347
- throw new Error('GITHUB_TOKEN environment variable is required for --pr flag');
348
- }
349
- const date = new Date().toISOString().split('T')[0];
350
- try {
351
- const { result, prInfo } = await runWithPR({
352
- branchPrefix: 'sync/rules',
353
- baseBranch: options.baseBranch,
354
- commitMessage: 'chore: sync rules and documentation from kosuke-template',
355
- prTitle: `chore: sync rules & docs from kosuke-template (${date})`,
356
- prBody: `## ๐Ÿ”„ Sync Rules from Kosuke Template
357
-
358
- This PR syncs rules and documentation from the kosuke-template repository.
359
-
360
- ### ๐Ÿ“ Changes
361
- - Updated \`.cursor/rules/general.mdc\`
362
- - Updated \`CLAUDE.md\`
363
-
364
- ---
365
-
366
- ๐Ÿค– *Auto-generated by \`kosuke sync-rules --pr\`*`,
367
- }, async () => syncRulesCore(options.force || false));
368
- console.log('\nโœ… Rules sync completed successfully!');
369
- console.log(`๐Ÿ“ Changes summary: ${result.changesSummary}`);
370
- console.log(`๐Ÿ”— PR: ${prInfo.prUrl}`);
371
- }
372
- catch (error) {
373
- if (error instanceof Error &&
374
- (error.message === 'No recent changes' ||
375
- error.message === 'No differences detected' ||
376
- error.message === 'No relevant changes')) {
377
- console.log('\nโœ… No sync needed.');
378
- return;
379
- }
380
- throw error;
381
- }
382
- }
383
- else {
384
- // Run core logic without PR
385
- try {
386
- await syncRulesCore(options.force || false);
387
- console.log('\nโœ… Rules sync completed successfully!');
388
- console.log('\nโ„น๏ธ Changes applied locally. Use --pr flag to create a pull request.');
389
- }
390
- catch (error) {
391
- if (error instanceof Error &&
392
- (error.message === 'No recent changes' ||
393
- error.message === 'No differences detected' ||
394
- error.message === 'No relevant changes')) {
395
- console.log('\nโœ… No sync needed.');
396
- return;
397
- }
398
- throw error;
399
- }
400
- }
401
- }
402
- catch (error) {
403
- console.error('\nโŒ Sync failed:', error);
404
- throw error;
405
- }
406
- finally {
407
- // Cleanup temp directory
408
- if (existsSync(TEMP_DIR)) {
409
- console.log('\n๐Ÿงน Cleaning up...');
410
- rmSync(TEMP_DIR, { recursive: true, force: true });
411
- }
412
- }
413
- }
414
- //# sourceMappingURL=sync-rules.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-rules.js","sourceRoot":"","sources":["../../../kosuke/commands/sync-rules.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- /**
2
- * Test command - Atomic web E2E testing with Playwright MCP
3
- *
4
- * This command:
5
- * 1. Accepts a test prompt with optional ticket context
6
- * 2. Runs a single web E2E test using Playwright MCP + Claude AI
7
- * 3. Returns result (success/failure) with logs and trace files
8
- *
9
- * Test type:
10
- * - web-test: Browser E2E testing with Playwright MCP + Claude AI
11
- *
12
- * NOTE: This is ATOMIC - no retries, no fixing, no linting
13
- * For iterative test+fix, use: kosuke build
14
- *
15
- * Usage:
16
- * kosuke test --prompt="Test user login"
17
- * kosuke test --prompt="..." --url=http://localhost:4000
18
- * kosuke test --prompt="..." --verbose # Enable verbose output
19
- * kosuke test --prompt="..." --headless # Run in headless mode
20
- * kosuke test --prompt="..." --trace # Enable trace recording
21
- *
22
- * Programmatic usage (from build command):
23
- * const result = await testCore({
24
- * prompt: "Test login functionality",
25
- * context: { ticketId, ticketTitle, ticketDescription },
26
- * });
27
- */
28
- import type { TestOptions, TestResult, TestStreamEvent } from '../types.js';
29
- /**
30
- * Streaming version of testCore - yields events for SSE integration
31
- */
32
- export declare function testCoreStream(options: TestOptions): AsyncGenerator<TestStreamEvent, void, void>;
33
- /**
34
- * Core test logic (atomic - single execution, no retries, no fixes)
35
- * Consumes testCoreStream and adds console logging
36
- */
37
- export declare function testCore(options: TestOptions): Promise<TestResult>;
38
- /**
39
- * Main test command
40
- */
41
- export declare function testCommand(options: TestOptions): Promise<void>;
42
- //# sourceMappingURL=test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../kosuke/commands/test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAqY5E;;GAEG;AACH,wBAAuB,cAAc,CACnC,OAAO,EAAE,WAAW,GACnB,cAAc,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,CAwD7C;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAqDxE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuCrE"}