@kosuke-ai/cli 0.0.56 โ†’ 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 (251) 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 -516
  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 -35
  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 -273
  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 -659
  110. package/dist/kosuke/commands/build.js.map +0 -1
  111. package/dist/kosuke/commands/getcode.d.ts +0 -29
  112. package/dist/kosuke/commands/getcode.d.ts.map +0 -1
  113. package/dist/kosuke/commands/getcode.js +0 -221
  114. package/dist/kosuke/commands/getcode.js.map +0 -1
  115. package/dist/kosuke/commands/lint.d.ts +0 -21
  116. package/dist/kosuke/commands/lint.d.ts.map +0 -1
  117. package/dist/kosuke/commands/lint.js +0 -321
  118. package/dist/kosuke/commands/lint.js.map +0 -1
  119. package/dist/kosuke/commands/migrate.d.ts +0 -38
  120. package/dist/kosuke/commands/migrate.d.ts.map +0 -1
  121. package/dist/kosuke/commands/migrate.js +0 -284
  122. package/dist/kosuke/commands/migrate.js.map +0 -1
  123. package/dist/kosuke/commands/plan.d.ts +0 -28
  124. package/dist/kosuke/commands/plan.d.ts.map +0 -1
  125. package/dist/kosuke/commands/plan.js +0 -630
  126. package/dist/kosuke/commands/plan.js.map +0 -1
  127. package/dist/kosuke/commands/requirements.d.ts +0 -52
  128. package/dist/kosuke/commands/requirements.d.ts.map +0 -1
  129. package/dist/kosuke/commands/requirements.js +0 -615
  130. package/dist/kosuke/commands/requirements.js.map +0 -1
  131. package/dist/kosuke/commands/review.d.ts +0 -26
  132. package/dist/kosuke/commands/review.d.ts.map +0 -1
  133. package/dist/kosuke/commands/review.js +0 -303
  134. package/dist/kosuke/commands/review.js.map +0 -1
  135. package/dist/kosuke/commands/serve.d.ts +0 -9
  136. package/dist/kosuke/commands/serve.d.ts.map +0 -1
  137. package/dist/kosuke/commands/serve.js +0 -17
  138. package/dist/kosuke/commands/serve.js.map +0 -1
  139. package/dist/kosuke/commands/ship.d.ts +0 -37
  140. package/dist/kosuke/commands/ship.d.ts.map +0 -1
  141. package/dist/kosuke/commands/ship.js +0 -375
  142. package/dist/kosuke/commands/ship.js.map +0 -1
  143. package/dist/kosuke/commands/sync-rules.d.ts +0 -9
  144. package/dist/kosuke/commands/sync-rules.d.ts.map +0 -1
  145. package/dist/kosuke/commands/sync-rules.js +0 -379
  146. package/dist/kosuke/commands/sync-rules.js.map +0 -1
  147. package/dist/kosuke/commands/test.d.ts +0 -42
  148. package/dist/kosuke/commands/test.d.ts.map +0 -1
  149. package/dist/kosuke/commands/test.js +0 -540
  150. package/dist/kosuke/commands/test.js.map +0 -1
  151. package/dist/kosuke/commands/tickets.d.ts +0 -43
  152. package/dist/kosuke/commands/tickets.d.ts.map +0 -1
  153. package/dist/kosuke/commands/tickets.js +0 -499
  154. package/dist/kosuke/commands/tickets.js.map +0 -1
  155. package/dist/kosuke/serve/middleware/error-handler.d.ts +0 -14
  156. package/dist/kosuke/serve/middleware/error-handler.d.ts.map +0 -1
  157. package/dist/kosuke/serve/middleware/error-handler.js +0 -42
  158. package/dist/kosuke/serve/middleware/error-handler.js.map +0 -1
  159. package/dist/kosuke/serve/middleware/validation.d.ts +0 -13
  160. package/dist/kosuke/serve/middleware/validation.d.ts.map +0 -1
  161. package/dist/kosuke/serve/middleware/validation.js +0 -38
  162. package/dist/kosuke/serve/middleware/validation.js.map +0 -1
  163. package/dist/kosuke/serve/routes/build.d.ts +0 -6
  164. package/dist/kosuke/serve/routes/build.d.ts.map +0 -1
  165. package/dist/kosuke/serve/routes/build.js +0 -226
  166. package/dist/kosuke/serve/routes/build.js.map +0 -1
  167. package/dist/kosuke/serve/routes/health.d.ts +0 -6
  168. package/dist/kosuke/serve/routes/health.d.ts.map +0 -1
  169. package/dist/kosuke/serve/routes/health.js +0 -11
  170. package/dist/kosuke/serve/routes/health.js.map +0 -1
  171. package/dist/kosuke/serve/routes/plan.d.ts +0 -6
  172. package/dist/kosuke/serve/routes/plan.d.ts.map +0 -1
  173. package/dist/kosuke/serve/routes/plan.js +0 -106
  174. package/dist/kosuke/serve/routes/plan.js.map +0 -1
  175. package/dist/kosuke/serve/server.d.ts +0 -16
  176. package/dist/kosuke/serve/server.d.ts.map +0 -1
  177. package/dist/kosuke/serve/server.js +0 -67
  178. package/dist/kosuke/serve/server.js.map +0 -1
  179. package/dist/kosuke/serve/validation/build.d.ts +0 -41
  180. package/dist/kosuke/serve/validation/build.d.ts.map +0 -1
  181. package/dist/kosuke/serve/validation/build.js +0 -20
  182. package/dist/kosuke/serve/validation/build.js.map +0 -1
  183. package/dist/kosuke/serve/validation/plan.d.ts +0 -26
  184. package/dist/kosuke/serve/validation/plan.d.ts.map +0 -1
  185. package/dist/kosuke/serve/validation/plan.js +0 -15
  186. package/dist/kosuke/serve/validation/plan.js.map +0 -1
  187. package/dist/kosuke/types.d.ts +0 -469
  188. package/dist/kosuke/types.d.ts.map +0 -1
  189. package/dist/kosuke/types.js +0 -5
  190. package/dist/kosuke/types.js.map +0 -1
  191. package/dist/kosuke/utils/batch-creator.d.ts +0 -14
  192. package/dist/kosuke/utils/batch-creator.d.ts.map +0 -1
  193. package/dist/kosuke/utils/batch-creator.js +0 -76
  194. package/dist/kosuke/utils/batch-creator.js.map +0 -1
  195. package/dist/kosuke/utils/claude-agent.d.ts +0 -145
  196. package/dist/kosuke/utils/claude-agent.d.ts.map +0 -1
  197. package/dist/kosuke/utils/claude-agent.js +0 -504
  198. package/dist/kosuke/utils/claude-agent.js.map +0 -1
  199. package/dist/kosuke/utils/constants.d.ts +0 -40
  200. package/dist/kosuke/utils/constants.d.ts.map +0 -1
  201. package/dist/kosuke/utils/constants.js +0 -54
  202. package/dist/kosuke/utils/constants.js.map +0 -1
  203. package/dist/kosuke/utils/file-discovery.d.ts +0 -15
  204. package/dist/kosuke/utils/file-discovery.d.ts.map +0 -1
  205. package/dist/kosuke/utils/file-discovery.js +0 -80
  206. package/dist/kosuke/utils/file-discovery.js.map +0 -1
  207. package/dist/kosuke/utils/git.d.ts +0 -41
  208. package/dist/kosuke/utils/git.d.ts.map +0 -1
  209. package/dist/kosuke/utils/git.js +0 -145
  210. package/dist/kosuke/utils/git.js.map +0 -1
  211. package/dist/kosuke/utils/github.d.ts +0 -17
  212. package/dist/kosuke/utils/github.d.ts.map +0 -1
  213. package/dist/kosuke/utils/github.js +0 -22
  214. package/dist/kosuke/utils/github.js.map +0 -1
  215. package/dist/kosuke/utils/interactive-input.d.ts +0 -22
  216. package/dist/kosuke/utils/interactive-input.d.ts.map +0 -1
  217. package/dist/kosuke/utils/interactive-input.js +0 -124
  218. package/dist/kosuke/utils/interactive-input.js.map +0 -1
  219. package/dist/kosuke/utils/logger.d.ts +0 -161
  220. package/dist/kosuke/utils/logger.d.ts.map +0 -1
  221. package/dist/kosuke/utils/logger.js +0 -234
  222. package/dist/kosuke/utils/logger.js.map +0 -1
  223. package/dist/kosuke/utils/playwright-mcp-client.d.ts +0 -46
  224. package/dist/kosuke/utils/playwright-mcp-client.d.ts.map +0 -1
  225. package/dist/kosuke/utils/playwright-mcp-client.js +0 -135
  226. package/dist/kosuke/utils/playwright-mcp-client.js.map +0 -1
  227. package/dist/kosuke/utils/pr-orchestrator.d.ts +0 -49
  228. package/dist/kosuke/utils/pr-orchestrator.d.ts.map +0 -1
  229. package/dist/kosuke/utils/pr-orchestrator.js +0 -154
  230. package/dist/kosuke/utils/pr-orchestrator.js.map +0 -1
  231. package/dist/kosuke/utils/repository-manager.d.ts +0 -13
  232. package/dist/kosuke/utils/repository-manager.d.ts.map +0 -1
  233. package/dist/kosuke/utils/repository-manager.js +0 -94
  234. package/dist/kosuke/utils/repository-manager.js.map +0 -1
  235. package/dist/kosuke/utils/repository-resolver.d.ts +0 -12
  236. package/dist/kosuke/utils/repository-resolver.d.ts.map +0 -1
  237. package/dist/kosuke/utils/repository-resolver.js +0 -186
  238. package/dist/kosuke/utils/repository-resolver.js.map +0 -1
  239. package/dist/kosuke/utils/tickets-manager.d.ts +0 -64
  240. package/dist/kosuke/utils/tickets-manager.d.ts.map +0 -1
  241. package/dist/kosuke/utils/tickets-manager.js +0 -331
  242. package/dist/kosuke/utils/tickets-manager.js.map +0 -1
  243. package/dist/kosuke/utils/validator.d.ts +0 -45
  244. package/dist/kosuke/utils/validator.d.ts.map +0 -1
  245. package/dist/kosuke/utils/validator.js +0 -248
  246. package/dist/kosuke/utils/validator.js.map +0 -1
  247. package/dist/lib.d.ts +0 -96
  248. package/dist/lib.d.ts.map +0 -1
  249. package/dist/lib.js +0 -95
  250. package/dist/lib.js.map +0 -1
  251. package/dist/package.json +0 -99
@@ -1,379 +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 { runAgent } 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
- await runAgent(promptText, {
98
- systemPrompt,
99
- maxTurns: 30,
100
- cwd: workspaceRoot,
101
- verbosity: 'verbose',
102
- settingSources: [], // Don't load CLAUDE.md when syncing it
103
- });
104
- // Read the adapted content
105
- const adaptedContent = existsSync(currentFilePath)
106
- ? readFileSync(currentFilePath, 'utf-8')
107
- : '';
108
- // Check if content actually changed
109
- const relevant = adaptedContent !== currentContent;
110
- const adaptation = {
111
- relevant,
112
- adaptedContent,
113
- summary: relevant ? 'Updated with improvements from kosuke-template' : 'No changes needed',
114
- };
115
- console.log(`\n ${relevant ? 'โœ… File updated' : 'โ„น๏ธ No changes needed'}`);
116
- return adaptation;
117
- }
118
- catch (error) {
119
- console.error(`\n โŒ Error during adaptation:`, error);
120
- throw error;
121
- }
122
- }
123
- /**
124
- * Generate CLAUDE.md from general.mdc (strip frontmatter)
125
- */
126
- function generateClaudeMd(generalMdcContent) {
127
- const lines = generalMdcContent.split('\n');
128
- // Detect frontmatter: starts with --- and ends with ---
129
- if (lines[0] === '---') {
130
- // Find the closing --- (starts from line 1, not 0)
131
- for (let i = 1; i < lines.length; i++) {
132
- if (lines[i] === '---') {
133
- // Skip the closing --- and any empty lines after it
134
- let skipLines = i + 1;
135
- while (skipLines < lines.length && lines[skipLines].trim() === '') {
136
- skipLines++;
137
- }
138
- return lines.slice(skipLines).join('\n');
139
- }
140
- }
141
- }
142
- // No frontmatter detected, return as-is
143
- return generalMdcContent;
144
- }
145
- /**
146
- * Generate concise summary of changes using Claude
147
- */
148
- async function generateChangesSummary(oldContent, newContent) {
149
- console.log('๐Ÿค– Generating changes summary...');
150
- const prompt = `Compare these two versions of a development rules file and provide a CONCISE summary of what changed.
151
-
152
- OLD VERSION:
153
- \`\`\`
154
- ${oldContent.slice(0, 5000)}${oldContent.length > 5000 ? '\n... (truncated)' : ''}
155
- \`\`\`
156
-
157
- NEW VERSION:
158
- \`\`\`
159
- ${newContent.slice(0, 5000)}${newContent.length > 5000 ? '\n... (truncated)' : ''}
160
- \`\`\`
161
-
162
- Provide a brief summary (3-5 bullet points) highlighting:
163
- - New features or guidelines added
164
- - Significant updates to existing rules
165
- - Removed or deprecated items
166
-
167
- Keep it concise and developer-friendly. Use bullet points starting with emojis.`;
168
- try {
169
- const result = await runAgent(prompt, {
170
- maxTurns: 1,
171
- cwd: process.cwd(),
172
- verbosity: 'minimal',
173
- systemPrompt: '', // No system prompt needed for this simple task
174
- settingSources: [], // Don't load CLAUDE.md when syncing it
175
- });
176
- console.log(' โœ… Summary generated\n');
177
- return result.response.trim();
178
- }
179
- catch {
180
- console.warn(' โš ๏ธ Failed to generate summary, using fallback');
181
- return 'Updated rules and documentation from kosuke-template';
182
- }
183
- }
184
- /**
185
- * Core sync logic (git-agnostic)
186
- */
187
- async function syncRulesCore(force) {
188
- // Clone/update kosuke-template
189
- const git = await cloneOrUpdateKosukeTemplate();
190
- if (force) {
191
- console.log('โšก Force mode: Comparing rules file...\n');
192
- }
193
- else {
194
- // Check if rules file changed in last 24 hours
195
- console.log('๐Ÿ“… Checking for changes in last 24 hours...');
196
- const hasChanges = await checkRulesChangedInLast24Hours(git);
197
- if (!hasChanges) {
198
- console.log('โœ… No changes to rules in last 24 hours. Nothing to sync.');
199
- console.log(' Use --force flag to compare files regardless of recent commits.');
200
- throw new Error('No recent changes');
201
- }
202
- console.log(` โœ… Found changes in ${RULES_FILE}\n`);
203
- }
204
- // Read current repository versions
205
- const workspaceRoot = process.cwd();
206
- const kosukeFile = join(TEMP_DIR, RULES_FILE);
207
- const currentFile = join(workspaceRoot, RULES_FILE);
208
- if (!existsSync(kosukeFile)) {
209
- throw new Error(`${RULES_FILE} not found in kosuke-template`);
210
- }
211
- const kosukeContent = readFileSync(kosukeFile, 'utf-8');
212
- const currentContent = existsSync(currentFile) ? readFileSync(currentFile, 'utf-8') : '';
213
- // Check if content is actually different
214
- if (kosukeContent === currentContent) {
215
- console.log(`โ„น๏ธ No differences detected in ${RULES_FILE}. Nothing to sync.`);
216
- throw new Error('No differences detected');
217
- }
218
- console.log(`๐Ÿ“ฅ Processing ${RULES_FILE}...`);
219
- const adaptation = await adaptRulesWithClaude(RULES_FILE, currentContent);
220
- // Abort if no changes
221
- if (!adaptation.relevant) {
222
- console.log('โœ… No relevant changes to sync. Aborting.');
223
- throw new Error('No relevant changes');
224
- }
225
- // Generate CLAUDE.md from adapted general.mdc
226
- console.log(`\n๐Ÿ“„ Generating ${CLAUDE_MD_FILE} from ${RULES_FILE}...`);
227
- const claudeMdContent = generateClaudeMd(adaptation.adaptedContent);
228
- // Generate LLM summary of changes
229
- const changesSummary = await generateChangesSummary(currentContent, adaptation.adaptedContent);
230
- // Write files locally
231
- const workspaceRootPath = process.cwd();
232
- console.log('๐Ÿ“ Writing adapted files...');
233
- // Write general.mdc
234
- const rulesFile = join(workspaceRootPath, RULES_FILE);
235
- const rulesDir = dirname(rulesFile);
236
- if (!existsSync(rulesDir)) {
237
- mkdirSync(rulesDir, { recursive: true });
238
- }
239
- writeFileSync(rulesFile, adaptation.adaptedContent, 'utf-8');
240
- console.log(` โœ… ${RULES_FILE}`);
241
- // Write CLAUDE.md (stripped version)
242
- const claudeFile = join(workspaceRootPath, CLAUDE_MD_FILE);
243
- writeFileSync(claudeFile, claudeMdContent, 'utf-8');
244
- console.log(` โœ… ${CLAUDE_MD_FILE}`);
245
- // Run formatting and linting
246
- console.log('\n๐Ÿ”ง Running formatting and linting...');
247
- const formatResult = await runFormat();
248
- if (formatResult.warning) {
249
- console.log(` ${formatResult.warning}`);
250
- }
251
- else if (!formatResult.success) {
252
- console.error(' โŒ Formatting failed:\n', formatResult.error);
253
- throw new Error('Formatting validation failed');
254
- }
255
- else {
256
- console.log(' โœ… Formatting completed');
257
- }
258
- let lintResult = await runLint();
259
- if (lintResult.warning) {
260
- console.log(` ${lintResult.warning}`);
261
- }
262
- else if (!lintResult.success) {
263
- console.log(' โš ๏ธ Linting errors detected, attempting to fix...');
264
- // Try to fix lint errors with Claude (max 2 attempts)
265
- let attempts = 0;
266
- const maxAttempts = 2;
267
- while (!lintResult.success && attempts < maxAttempts) {
268
- attempts++;
269
- console.log(`\n ๐Ÿ”„ Lint fix attempt ${attempts}/${maxAttempts}`);
270
- const fixApplied = await fixLintErrors(lintResult.error || '');
271
- if (!fixApplied) {
272
- console.log(` โš ๏ธ No fixes were applied by Claude`);
273
- break;
274
- }
275
- // Re-run lint to check if errors are fixed
276
- lintResult = await runLint();
277
- }
278
- if (!lintResult.success) {
279
- console.error(' โŒ Linting failed after attempts:\n', lintResult.error);
280
- throw new Error('Linting validation failed');
281
- }
282
- }
283
- else {
284
- console.log(' โœ… Linting completed');
285
- }
286
- return {
287
- adaptation,
288
- claudeMdContent,
289
- changesSummary,
290
- };
291
- }
292
- /**
293
- * Main sync-rules command
294
- */
295
- export async function syncRulesCommand(options = {}) {
296
- console.log('๐Ÿš€ Starting Rules & Documentation Sync...\n');
297
- try {
298
- // Check if running in kosuke-template itself
299
- if (await isKosukeTemplateRepo()) {
300
- console.log('โš ๏ธ Detected running in kosuke-template repository itself.');
301
- console.log(' This script is designed to sync FROM kosuke-template TO forked repos.');
302
- console.log(' Skipping sync to prevent self-modification.\n');
303
- return;
304
- }
305
- // Validate environment
306
- if (!process.env.ANTHROPIC_API_KEY) {
307
- throw new Error('ANTHROPIC_API_KEY environment variable is required');
308
- }
309
- // If --pr flag is provided, wrap with PR workflow
310
- if (options.pr) {
311
- if (!process.env.GITHUB_TOKEN) {
312
- throw new Error('GITHUB_TOKEN environment variable is required for --pr flag');
313
- }
314
- const date = new Date().toISOString().split('T')[0];
315
- try {
316
- const { result, prInfo } = await runWithPR({
317
- branchPrefix: 'sync/rules',
318
- baseBranch: options.baseBranch,
319
- commitMessage: 'chore: sync rules and documentation from kosuke-template',
320
- prTitle: `chore: sync rules & docs from kosuke-template (${date})`,
321
- prBody: `## ๐Ÿ”„ Sync Rules from Kosuke Template
322
-
323
- This PR syncs rules and documentation from the kosuke-template repository.
324
-
325
- ### ๐Ÿ“ Changes
326
- - Updated \`.cursor/rules/general.mdc\`
327
- - Updated \`CLAUDE.md\`
328
-
329
- ---
330
-
331
- ๐Ÿค– *Auto-generated by \`kosuke sync-rules --pr\`*`,
332
- }, async () => syncRulesCore(options.force || false));
333
- console.log('\nโœ… Rules sync completed successfully!');
334
- console.log(`๐Ÿ“ Changes summary: ${result.changesSummary}`);
335
- console.log(`๐Ÿ”— PR: ${prInfo.prUrl}`);
336
- }
337
- catch (error) {
338
- if (error instanceof Error &&
339
- (error.message === 'No recent changes' ||
340
- error.message === 'No differences detected' ||
341
- error.message === 'No relevant changes')) {
342
- console.log('\nโœ… No sync needed.');
343
- return;
344
- }
345
- throw error;
346
- }
347
- }
348
- else {
349
- // Run core logic without PR
350
- try {
351
- await syncRulesCore(options.force || false);
352
- console.log('\nโœ… Rules sync completed successfully!');
353
- console.log('\nโ„น๏ธ Changes applied locally. Use --pr flag to create a pull request.');
354
- }
355
- catch (error) {
356
- if (error instanceof Error &&
357
- (error.message === 'No recent changes' ||
358
- error.message === 'No differences detected' ||
359
- error.message === 'No relevant changes')) {
360
- console.log('\nโœ… No sync needed.');
361
- return;
362
- }
363
- throw error;
364
- }
365
- }
366
- }
367
- catch (error) {
368
- console.error('\nโŒ Sync failed:', error);
369
- throw error;
370
- }
371
- finally {
372
- // Cleanup temp directory
373
- if (existsSync(TEMP_DIR)) {
374
- console.log('\n๐Ÿงน Cleaning up...');
375
- rmSync(TEMP_DIR, { recursive: true, force: true });
376
- }
377
- }
378
- }
379
- //# 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"}