@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.
- package/README.md +31 -448
- package/dist/commands/auth.js +117 -0
- package/dist/generated/commands/deploy/cancel.js +17 -0
- package/dist/generated/commands/deploy/messages.js +17 -0
- package/dist/generated/commands/deploy/run.js +60 -0
- package/dist/generated/commands/index.js +132 -0
- package/dist/generated/commands/preview/get.js +25 -0
- package/dist/generated/commands/preview/health.js +25 -0
- package/dist/generated/commands/preview/reset.js +27 -0
- package/dist/generated/commands/preview/share-create.js +36 -0
- package/dist/generated/commands/preview/share-delete.js +26 -0
- package/dist/generated/commands/preview/share-get.js +26 -0
- package/dist/generated/commands/preview/shared.js +17 -0
- package/dist/generated/commands/projects/create.js +37 -0
- package/dist/generated/commands/projects/delete.js +17 -0
- package/dist/generated/commands/projects/env-vars-add.js +21 -0
- package/dist/generated/commands/projects/env-vars-remove.js +21 -0
- package/dist/generated/commands/projects/get.js +17 -0
- package/dist/generated/commands/projects/list.js +15 -0
- package/dist/generated/commands/projects/services-add.js +87 -0
- package/dist/generated/commands/projects/services-list.js +18 -0
- package/dist/generated/commands/projects/services-remove.js +19 -0
- package/dist/generated/commands/projects/services-update.js +81 -0
- package/dist/generated/commands/projects/settings-get.js +18 -0
- package/dist/generated/commands/projects/settings-import.js +91 -0
- package/dist/generated/commands/projects/settings-update.js +77 -0
- package/dist/generated/commands/projects/skills.js +35 -0
- package/dist/generated/commands/projects/update.js +27 -0
- package/dist/generated/commands/sessions/activate.js +18 -0
- package/dist/generated/commands/sessions/checklist-generate.js +19 -0
- package/dist/generated/commands/sessions/checklist-get.js +19 -0
- package/dist/generated/commands/sessions/comments-add.js +63 -0
- package/dist/generated/commands/sessions/comments-delete.js +20 -0
- package/dist/generated/commands/sessions/comments-list.js +19 -0
- package/dist/generated/commands/sessions/comments-update.js +23 -0
- package/dist/generated/commands/sessions/create.js +126 -0
- package/dist/generated/commands/sessions/delete.js +18 -0
- package/dist/generated/commands/sessions/diff-files.js +19 -0
- package/dist/generated/commands/sessions/diff-patch.js +86 -0
- package/dist/generated/commands/sessions/edit-prompt.js +59 -0
- package/dist/generated/commands/sessions/files-get.js +27 -0
- package/dist/generated/commands/sessions/files-list.js +19 -0
- package/dist/generated/commands/sessions/files-write.js +41 -0
- package/dist/generated/commands/sessions/get.js +18 -0
- package/dist/generated/commands/sessions/git-commit-message.js +19 -0
- package/dist/generated/commands/sessions/git-commit.js +29 -0
- package/dist/generated/commands/sessions/git-push.js +19 -0
- package/dist/generated/commands/sessions/git-state.js +19 -0
- package/dist/generated/commands/sessions/jobs-cancel.js +20 -0
- package/dist/generated/commands/sessions/jobs-get.js +20 -0
- package/dist/generated/commands/sessions/list.js +81 -0
- package/dist/generated/commands/sessions/messages.js +18 -0
- package/dist/generated/commands/sessions/search.js +23 -0
- package/dist/generated/commands/sessions/send.js +98 -0
- package/dist/generated/commands/sessions/update.js +72 -0
- package/dist/generated/commands/workspaces/access-status.js +29 -0
- package/dist/generated/commands/workspaces/ai-provider-get.js +18 -0
- package/dist/generated/commands/workspaces/ai-provider-remove.js +42 -0
- package/dist/generated/commands/workspaces/ai-provider-set.js +21 -0
- package/dist/generated/commands/workspaces/credits.js +17 -0
- package/dist/generated/commands/workspaces/get.js +17 -0
- package/dist/generated/commands/workspaces/getting-started-get.js +18 -0
- package/dist/generated/commands/workspaces/getting-started-update.js +32 -0
- package/dist/generated/commands/workspaces/list.js +15 -0
- package/dist/generated/commands/workspaces/members.js +25 -0
- package/dist/generated/commands/workspaces/sandbox-limit.js +17 -0
- package/dist/generated/commands/workspaces/stop-sandboxes.js +27 -0
- package/dist/generated/commands/workspaces/usage.js +32 -0
- package/dist/index.js +5 -595
- package/dist/program.js +46 -0
- package/dist/runtime/attach.js +139 -0
- package/dist/runtime/attachments.js +58 -0
- package/dist/runtime/client.js +12 -0
- package/dist/runtime/config.js +49 -0
- package/dist/runtime/credentials.js +24 -0
- package/dist/runtime/descriptor.js +7 -0
- package/dist/runtime/invoke.js +152 -0
- package/dist/runtime/runtime.js +41 -0
- package/dist/runtime/version.js +5 -0
- package/openapi.json +5222 -0
- package/package.json +21 -79
- package/LICENSE +0 -21
- package/claude.costs.json +0 -34
- package/dist/__tests__/utils/file-discovery.test.d.ts +0 -5
- package/dist/__tests__/utils/file-discovery.test.d.ts.map +0 -1
- package/dist/__tests__/utils/file-discovery.test.js +0 -51
- package/dist/__tests__/utils/file-discovery.test.js.map +0 -1
- package/dist/__tests__/utils/logger-nologs.test.d.ts +0 -5
- package/dist/__tests__/utils/logger-nologs.test.d.ts.map +0 -1
- package/dist/__tests__/utils/logger-nologs.test.js +0 -34
- package/dist/__tests__/utils/logger-nologs.test.js.map +0 -1
- package/dist/__tests__/utils/logger.test.d.ts +0 -5
- package/dist/__tests__/utils/logger.test.d.ts.map +0 -1
- package/dist/__tests__/utils/logger.test.js +0 -243
- package/dist/__tests__/utils/logger.test.js.map +0 -1
- package/dist/__tests__/utils/validator.test.d.ts +0 -5
- package/dist/__tests__/utils/validator.test.d.ts.map +0 -1
- package/dist/__tests__/utils/validator.test.js +0 -206
- package/dist/__tests__/utils/validator.test.js.map +0 -1
- package/dist/index.d.ts +0 -37
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/kosuke/commands/analyse.d.ts +0 -15
- package/dist/kosuke/commands/analyse.d.ts.map +0 -1
- package/dist/kosuke/commands/analyse.js +0 -304
- package/dist/kosuke/commands/analyse.js.map +0 -1
- package/dist/kosuke/commands/build.d.ts +0 -35
- package/dist/kosuke/commands/build.d.ts.map +0 -1
- package/dist/kosuke/commands/build.js +0 -660
- package/dist/kosuke/commands/build.js.map +0 -1
- package/dist/kosuke/commands/fix.d.ts +0 -21
- package/dist/kosuke/commands/fix.d.ts.map +0 -1
- package/dist/kosuke/commands/fix.js +0 -256
- package/dist/kosuke/commands/fix.js.map +0 -1
- package/dist/kosuke/commands/getcode.d.ts +0 -29
- package/dist/kosuke/commands/getcode.d.ts.map +0 -1
- package/dist/kosuke/commands/getcode.js +0 -248
- package/dist/kosuke/commands/getcode.js.map +0 -1
- package/dist/kosuke/commands/lint.d.ts +0 -21
- package/dist/kosuke/commands/lint.d.ts.map +0 -1
- package/dist/kosuke/commands/lint.js +0 -342
- package/dist/kosuke/commands/lint.js.map +0 -1
- package/dist/kosuke/commands/migrate.d.ts +0 -38
- package/dist/kosuke/commands/migrate.d.ts.map +0 -1
- package/dist/kosuke/commands/migrate.js +0 -284
- package/dist/kosuke/commands/migrate.js.map +0 -1
- package/dist/kosuke/commands/plan.d.ts +0 -28
- package/dist/kosuke/commands/plan.d.ts.map +0 -1
- package/dist/kosuke/commands/plan.js +0 -684
- package/dist/kosuke/commands/plan.js.map +0 -1
- package/dist/kosuke/commands/requirements.d.ts +0 -52
- package/dist/kosuke/commands/requirements.d.ts.map +0 -1
- package/dist/kosuke/commands/requirements.js +0 -615
- package/dist/kosuke/commands/requirements.js.map +0 -1
- package/dist/kosuke/commands/review.d.ts +0 -26
- package/dist/kosuke/commands/review.d.ts.map +0 -1
- package/dist/kosuke/commands/review.js +0 -303
- package/dist/kosuke/commands/review.js.map +0 -1
- package/dist/kosuke/commands/serve.d.ts +0 -9
- package/dist/kosuke/commands/serve.d.ts.map +0 -1
- package/dist/kosuke/commands/serve.js +0 -17
- package/dist/kosuke/commands/serve.js.map +0 -1
- package/dist/kosuke/commands/ship.d.ts +0 -37
- package/dist/kosuke/commands/ship.d.ts.map +0 -1
- package/dist/kosuke/commands/ship.js +0 -375
- package/dist/kosuke/commands/ship.js.map +0 -1
- package/dist/kosuke/commands/sync-rules.d.ts +0 -9
- package/dist/kosuke/commands/sync-rules.d.ts.map +0 -1
- package/dist/kosuke/commands/sync-rules.js +0 -414
- package/dist/kosuke/commands/sync-rules.js.map +0 -1
- package/dist/kosuke/commands/test.d.ts +0 -42
- package/dist/kosuke/commands/test.d.ts.map +0 -1
- package/dist/kosuke/commands/test.js +0 -540
- package/dist/kosuke/commands/test.js.map +0 -1
- package/dist/kosuke/commands/tickets.d.ts +0 -43
- package/dist/kosuke/commands/tickets.d.ts.map +0 -1
- package/dist/kosuke/commands/tickets.js +0 -876
- package/dist/kosuke/commands/tickets.js.map +0 -1
- package/dist/kosuke/commands/validate-tickets.d.ts +0 -23
- package/dist/kosuke/commands/validate-tickets.d.ts.map +0 -1
- package/dist/kosuke/commands/validate-tickets.js +0 -360
- package/dist/kosuke/commands/validate-tickets.js.map +0 -1
- package/dist/kosuke/serve/middleware/error-handler.d.ts +0 -14
- package/dist/kosuke/serve/middleware/error-handler.d.ts.map +0 -1
- package/dist/kosuke/serve/middleware/error-handler.js +0 -42
- package/dist/kosuke/serve/middleware/error-handler.js.map +0 -1
- package/dist/kosuke/serve/middleware/validation.d.ts +0 -13
- package/dist/kosuke/serve/middleware/validation.d.ts.map +0 -1
- package/dist/kosuke/serve/middleware/validation.js +0 -38
- package/dist/kosuke/serve/middleware/validation.js.map +0 -1
- package/dist/kosuke/serve/routes/build.d.ts +0 -6
- package/dist/kosuke/serve/routes/build.d.ts.map +0 -1
- package/dist/kosuke/serve/routes/build.js +0 -226
- package/dist/kosuke/serve/routes/build.js.map +0 -1
- package/dist/kosuke/serve/routes/health.d.ts +0 -6
- package/dist/kosuke/serve/routes/health.d.ts.map +0 -1
- package/dist/kosuke/serve/routes/health.js +0 -11
- package/dist/kosuke/serve/routes/health.js.map +0 -1
- package/dist/kosuke/serve/routes/plan.d.ts +0 -6
- package/dist/kosuke/serve/routes/plan.d.ts.map +0 -1
- package/dist/kosuke/serve/routes/plan.js +0 -106
- package/dist/kosuke/serve/routes/plan.js.map +0 -1
- package/dist/kosuke/serve/server.d.ts +0 -16
- package/dist/kosuke/serve/server.d.ts.map +0 -1
- package/dist/kosuke/serve/server.js +0 -67
- package/dist/kosuke/serve/server.js.map +0 -1
- package/dist/kosuke/serve/validation/build.d.ts +0 -41
- package/dist/kosuke/serve/validation/build.d.ts.map +0 -1
- package/dist/kosuke/serve/validation/build.js +0 -20
- package/dist/kosuke/serve/validation/build.js.map +0 -1
- package/dist/kosuke/serve/validation/plan.d.ts +0 -26
- package/dist/kosuke/serve/validation/plan.d.ts.map +0 -1
- package/dist/kosuke/serve/validation/plan.js +0 -15
- package/dist/kosuke/serve/validation/plan.js.map +0 -1
- package/dist/kosuke/types.d.ts +0 -539
- package/dist/kosuke/types.d.ts.map +0 -1
- package/dist/kosuke/types.js +0 -5
- package/dist/kosuke/types.js.map +0 -1
- package/dist/kosuke/utils/batch-creator.d.ts +0 -14
- package/dist/kosuke/utils/batch-creator.d.ts.map +0 -1
- package/dist/kosuke/utils/batch-creator.js +0 -76
- package/dist/kosuke/utils/batch-creator.js.map +0 -1
- package/dist/kosuke/utils/claude-agent.d.ts +0 -140
- package/dist/kosuke/utils/claude-agent.d.ts.map +0 -1
- package/dist/kosuke/utils/claude-agent.js +0 -388
- package/dist/kosuke/utils/claude-agent.js.map +0 -1
- package/dist/kosuke/utils/constants.d.ts +0 -40
- package/dist/kosuke/utils/constants.d.ts.map +0 -1
- package/dist/kosuke/utils/constants.js +0 -54
- package/dist/kosuke/utils/constants.js.map +0 -1
- package/dist/kosuke/utils/file-discovery.d.ts +0 -15
- package/dist/kosuke/utils/file-discovery.d.ts.map +0 -1
- package/dist/kosuke/utils/file-discovery.js +0 -80
- package/dist/kosuke/utils/file-discovery.js.map +0 -1
- package/dist/kosuke/utils/git.d.ts +0 -41
- package/dist/kosuke/utils/git.d.ts.map +0 -1
- package/dist/kosuke/utils/git.js +0 -145
- package/dist/kosuke/utils/git.js.map +0 -1
- package/dist/kosuke/utils/github.d.ts +0 -17
- package/dist/kosuke/utils/github.d.ts.map +0 -1
- package/dist/kosuke/utils/github.js +0 -22
- package/dist/kosuke/utils/github.js.map +0 -1
- package/dist/kosuke/utils/interactive-input.d.ts +0 -22
- package/dist/kosuke/utils/interactive-input.d.ts.map +0 -1
- package/dist/kosuke/utils/interactive-input.js +0 -124
- package/dist/kosuke/utils/interactive-input.js.map +0 -1
- package/dist/kosuke/utils/json-parser.d.ts +0 -14
- package/dist/kosuke/utils/json-parser.d.ts.map +0 -1
- package/dist/kosuke/utils/json-parser.js +0 -40
- package/dist/kosuke/utils/json-parser.js.map +0 -1
- package/dist/kosuke/utils/logger.d.ts +0 -161
- package/dist/kosuke/utils/logger.d.ts.map +0 -1
- package/dist/kosuke/utils/logger.js +0 -234
- package/dist/kosuke/utils/logger.js.map +0 -1
- package/dist/kosuke/utils/playwright-mcp-client.d.ts +0 -46
- package/dist/kosuke/utils/playwright-mcp-client.d.ts.map +0 -1
- package/dist/kosuke/utils/playwright-mcp-client.js +0 -135
- package/dist/kosuke/utils/playwright-mcp-client.js.map +0 -1
- package/dist/kosuke/utils/pr-orchestrator.d.ts +0 -49
- package/dist/kosuke/utils/pr-orchestrator.d.ts.map +0 -1
- package/dist/kosuke/utils/pr-orchestrator.js +0 -154
- package/dist/kosuke/utils/pr-orchestrator.js.map +0 -1
- package/dist/kosuke/utils/repository-manager.d.ts +0 -13
- package/dist/kosuke/utils/repository-manager.d.ts.map +0 -1
- package/dist/kosuke/utils/repository-manager.js +0 -94
- package/dist/kosuke/utils/repository-manager.js.map +0 -1
- package/dist/kosuke/utils/repository-resolver.d.ts +0 -12
- package/dist/kosuke/utils/repository-resolver.d.ts.map +0 -1
- package/dist/kosuke/utils/repository-resolver.js +0 -186
- package/dist/kosuke/utils/repository-resolver.js.map +0 -1
- package/dist/kosuke/utils/tickets-manager.d.ts +0 -34
- package/dist/kosuke/utils/tickets-manager.d.ts.map +0 -1
- package/dist/kosuke/utils/tickets-manager.js +0 -106
- package/dist/kosuke/utils/tickets-manager.js.map +0 -1
- package/dist/kosuke/utils/validator.d.ts +0 -45
- package/dist/kosuke/utils/validator.d.ts.map +0 -1
- package/dist/kosuke/utils/validator.js +0 -248
- package/dist/kosuke/utils/validator.js.map +0 -1
- package/dist/lib.d.ts +0 -104
- package/dist/lib.d.ts.map +0 -1
- package/dist/lib.js +0 -104
- package/dist/lib.js.map +0 -1
- package/dist/package.json +0 -99
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PR Orchestrator - Generic PR workflow utility
|
|
3
|
-
*
|
|
4
|
-
* Handles branch creation, commits, push, and PR creation
|
|
5
|
-
* Used across all commands that support --pr flag
|
|
6
|
-
*/
|
|
7
|
-
import simpleGit from 'simple-git';
|
|
8
|
-
import { createBranch, commit, push, getCurrentRepo, getCurrentBranch } from './git.js';
|
|
9
|
-
import { createPullRequest } from './github.js';
|
|
10
|
-
/**
|
|
11
|
-
* Execute core logic wrapped with PR workflow
|
|
12
|
-
*/
|
|
13
|
-
export async function runWithPR(options, coreLogic) {
|
|
14
|
-
// Validate environment
|
|
15
|
-
if (!process.env.GITHUB_TOKEN) {
|
|
16
|
-
throw new Error('GITHUB_TOKEN environment variable is required for --pr flag');
|
|
17
|
-
}
|
|
18
|
-
const { cwd } = options;
|
|
19
|
-
const git = cwd ? simpleGit(cwd) : simpleGit();
|
|
20
|
-
// Get base branch (current branch before creating feature branch)
|
|
21
|
-
const baseBranch = options.baseBranch || (await getCurrentBranch(cwd));
|
|
22
|
-
console.log(`📍 Base branch: ${baseBranch}\n`);
|
|
23
|
-
// Create working branch with unique name
|
|
24
|
-
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').split('.')[0];
|
|
25
|
-
const branchName = `${options.branchPrefix}/${timestamp}`;
|
|
26
|
-
console.log(`🌿 Creating branch: ${branchName}\n`);
|
|
27
|
-
await createBranch(branchName, baseBranch, cwd);
|
|
28
|
-
// Execute core logic
|
|
29
|
-
const result = await coreLogic();
|
|
30
|
-
// Check if there are any changes to commit
|
|
31
|
-
const status = await git.status();
|
|
32
|
-
if (status.files.length === 0) {
|
|
33
|
-
console.log('\nℹ️ No changes detected. Skipping PR creation.');
|
|
34
|
-
throw new Error('No changes to commit');
|
|
35
|
-
}
|
|
36
|
-
// Commit changes
|
|
37
|
-
console.log('\n📝 Committing changes...');
|
|
38
|
-
const commitMsg = typeof options.commitMessage === 'function' ? options.commitMessage(0) : options.commitMessage;
|
|
39
|
-
await commit(commitMsg, cwd);
|
|
40
|
-
console.log(' ✅ Changes committed\n');
|
|
41
|
-
// Push branch
|
|
42
|
-
console.log('📤 Pushing branch...');
|
|
43
|
-
await push(branchName, cwd);
|
|
44
|
-
console.log(' ✅ Branch pushed\n');
|
|
45
|
-
// Create PR
|
|
46
|
-
console.log('📋 Creating pull request...');
|
|
47
|
-
const { owner, repo } = await getCurrentRepo(cwd);
|
|
48
|
-
const prUrl = await createPullRequest({
|
|
49
|
-
owner,
|
|
50
|
-
repo,
|
|
51
|
-
title: options.prTitle,
|
|
52
|
-
head: branchName,
|
|
53
|
-
base: baseBranch,
|
|
54
|
-
body: options.prBody,
|
|
55
|
-
});
|
|
56
|
-
console.log(` ✅ Pull request created: ${prUrl}\n`);
|
|
57
|
-
return {
|
|
58
|
-
result,
|
|
59
|
-
prInfo: {
|
|
60
|
-
branchName,
|
|
61
|
-
prUrl,
|
|
62
|
-
baseBranch,
|
|
63
|
-
commitsCreated: 1,
|
|
64
|
-
},
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Execute core logic wrapped with PR workflow (batch mode)
|
|
69
|
-
* Supports multiple commits for batch processing
|
|
70
|
-
*/
|
|
71
|
-
export async function runWithPRBatched(options, batches) {
|
|
72
|
-
// Validate environment
|
|
73
|
-
if (!process.env.GITHUB_TOKEN) {
|
|
74
|
-
throw new Error('GITHUB_TOKEN environment variable is required for --pr flag');
|
|
75
|
-
}
|
|
76
|
-
const { cwd } = options;
|
|
77
|
-
const git = cwd ? simpleGit(cwd) : simpleGit();
|
|
78
|
-
// Get base branch
|
|
79
|
-
const baseBranch = options.baseBranch || (await getCurrentBranch(cwd));
|
|
80
|
-
console.log(`📍 Base branch: ${baseBranch}\n`);
|
|
81
|
-
// Create working branch
|
|
82
|
-
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').split('.')[0];
|
|
83
|
-
const branchName = `${options.branchPrefix}/${timestamp}`;
|
|
84
|
-
console.log(`🌿 Creating branch: ${branchName}\n`);
|
|
85
|
-
await createBranch(branchName, baseBranch, cwd);
|
|
86
|
-
// Process each batch
|
|
87
|
-
const results = [];
|
|
88
|
-
let commitsCreated = 0;
|
|
89
|
-
for (let i = 0; i < batches.length; i++) {
|
|
90
|
-
console.log(`\n📊 Processing batch ${i + 1}/${batches.length}...`);
|
|
91
|
-
// Execute batch logic
|
|
92
|
-
const result = await batches[i]();
|
|
93
|
-
results.push(result);
|
|
94
|
-
// Check if there are changes
|
|
95
|
-
const status = await git.status();
|
|
96
|
-
if (status.files.length === 0) {
|
|
97
|
-
console.log(' ℹ️ No changes in this batch, skipping commit');
|
|
98
|
-
continue;
|
|
99
|
-
}
|
|
100
|
-
// Validate if needed
|
|
101
|
-
if (options.validateBeforeCommit) {
|
|
102
|
-
console.log(' 🔧 Running validation...');
|
|
103
|
-
const isValid = await options.validateBeforeCommit();
|
|
104
|
-
if (!isValid) {
|
|
105
|
-
console.warn(' ⚠️ Validation failed, skipping this batch');
|
|
106
|
-
await git.reset(['--hard', 'HEAD']);
|
|
107
|
-
continue;
|
|
108
|
-
}
|
|
109
|
-
console.log(' ✅ Validation passed');
|
|
110
|
-
}
|
|
111
|
-
// Commit batch
|
|
112
|
-
const commitMsg = typeof options.commitMessage === 'function'
|
|
113
|
-
? options.commitMessage(i)
|
|
114
|
-
: options.commitMessage;
|
|
115
|
-
await commit(commitMsg, cwd);
|
|
116
|
-
commitsCreated++;
|
|
117
|
-
console.log(' ✅ Batch committed');
|
|
118
|
-
// Callback if needed
|
|
119
|
-
if (options.onBatchComplete) {
|
|
120
|
-
await options.onBatchComplete(i);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
// Check if any commits were made
|
|
124
|
-
if (commitsCreated === 0) {
|
|
125
|
-
console.log('\nℹ️ No changes were committed. Skipping PR creation.');
|
|
126
|
-
throw new Error('No changes to commit');
|
|
127
|
-
}
|
|
128
|
-
// Push all commits
|
|
129
|
-
console.log(`\n📤 Pushing ${commitsCreated} commit(s)...`);
|
|
130
|
-
await push(branchName, cwd);
|
|
131
|
-
console.log(' ✅ All commits pushed\n');
|
|
132
|
-
// Create PR
|
|
133
|
-
console.log('📋 Creating pull request...');
|
|
134
|
-
const { owner, repo } = await getCurrentRepo(cwd);
|
|
135
|
-
const prUrl = await createPullRequest({
|
|
136
|
-
owner,
|
|
137
|
-
repo,
|
|
138
|
-
title: options.prTitle,
|
|
139
|
-
head: branchName,
|
|
140
|
-
base: baseBranch,
|
|
141
|
-
body: options.prBody,
|
|
142
|
-
});
|
|
143
|
-
console.log(` ✅ Pull request created: ${prUrl}\n`);
|
|
144
|
-
return {
|
|
145
|
-
results,
|
|
146
|
-
prInfo: {
|
|
147
|
-
branchName,
|
|
148
|
-
prUrl,
|
|
149
|
-
baseBranch,
|
|
150
|
-
commitsCreated,
|
|
151
|
-
},
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
//# sourceMappingURL=pr-orchestrator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pr-orchestrator.js","sourceRoot":"","sources":["../../../kosuke/utils/pr-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Repository Manager - Clone and update GitHub repositories
|
|
3
|
-
*/
|
|
4
|
-
import type { RepositoryInfo } from '../types.js';
|
|
5
|
-
/**
|
|
6
|
-
* Ensure repository is cloned and up-to-date
|
|
7
|
-
*/
|
|
8
|
-
export declare function ensureRepoReady(repoIdentifier: string): Promise<RepositoryInfo>;
|
|
9
|
-
/**
|
|
10
|
-
* Get local path for a repository (without ensuring it exists)
|
|
11
|
-
*/
|
|
12
|
-
export declare function getRepoLocalPath(repoIdentifier: string): string;
|
|
13
|
-
//# sourceMappingURL=repository-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repository-manager.d.ts","sourceRoot":"","sources":["../../../kosuke/utils/repository-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD;;GAEG;AACH,wBAAsB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAYrF;AAiFD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAG/D"}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Repository Manager - Clone and update GitHub repositories
|
|
3
|
-
*/
|
|
4
|
-
import simpleGit from 'simple-git';
|
|
5
|
-
import { existsSync, mkdirSync } from 'fs';
|
|
6
|
-
import { join } from 'path';
|
|
7
|
-
import { REPOS_DIR } from './constants.js';
|
|
8
|
-
/**
|
|
9
|
-
* Ensure repository is cloned and up-to-date
|
|
10
|
-
*/
|
|
11
|
-
export async function ensureRepoReady(repoIdentifier) {
|
|
12
|
-
const repoInfo = getRepositoryInfo(repoIdentifier);
|
|
13
|
-
if (existsSync(repoInfo.localPath)) {
|
|
14
|
-
// Repository exists, pull latest changes
|
|
15
|
-
await updateRepository(repoInfo);
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
// Clone repository
|
|
19
|
-
await cloneRepository(repoInfo);
|
|
20
|
-
}
|
|
21
|
-
return repoInfo;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Get repository information
|
|
25
|
-
*/
|
|
26
|
-
function getRepositoryInfo(repoIdentifier) {
|
|
27
|
-
const [owner, repo] = repoIdentifier.split('/');
|
|
28
|
-
if (!owner || !repo) {
|
|
29
|
-
throw new Error(`Invalid repository identifier: ${repoIdentifier}`);
|
|
30
|
-
}
|
|
31
|
-
// Replace '/' with '__' to avoid nested directories
|
|
32
|
-
const safeName = repoIdentifier.replace('/', '__');
|
|
33
|
-
const localPath = join(process.cwd(), REPOS_DIR, safeName);
|
|
34
|
-
return {
|
|
35
|
-
owner,
|
|
36
|
-
repo,
|
|
37
|
-
fullName: repoIdentifier,
|
|
38
|
-
localPath,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Clone repository
|
|
43
|
-
*/
|
|
44
|
-
async function cloneRepository(repoInfo) {
|
|
45
|
-
console.log(`📥 Cloning ${repoInfo.fullName}...`);
|
|
46
|
-
const git = simpleGit();
|
|
47
|
-
const repoUrl = `https://github.com/${repoInfo.fullName}.git`;
|
|
48
|
-
// Ensure repos directory exists
|
|
49
|
-
const reposDir = join(process.cwd(), REPOS_DIR);
|
|
50
|
-
if (!existsSync(reposDir)) {
|
|
51
|
-
mkdirSync(reposDir, { recursive: true });
|
|
52
|
-
}
|
|
53
|
-
try {
|
|
54
|
-
await git.clone(repoUrl, repoInfo.localPath, [
|
|
55
|
-
'--depth',
|
|
56
|
-
'1', // Shallow clone for faster cloning
|
|
57
|
-
'--single-branch',
|
|
58
|
-
]);
|
|
59
|
-
console.log(` ✅ Cloned to ${REPOS_DIR}/${repoInfo.fullName.replace('/', '__')}\n`);
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
throw new Error(`Failed to clone repository ${repoInfo.fullName}:\n` +
|
|
63
|
-
`${error instanceof Error ? error.message : String(error)}\n\n` +
|
|
64
|
-
`Please check:\n` +
|
|
65
|
-
`- Repository exists and is accessible\n` +
|
|
66
|
-
`- You have network connectivity\n` +
|
|
67
|
-
`- Repository name is correct (owner/repo format)`);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Update repository (git pull)
|
|
72
|
-
*/
|
|
73
|
-
async function updateRepository(repoInfo) {
|
|
74
|
-
console.log(`🔄 Updating ${repoInfo.fullName}...`);
|
|
75
|
-
const git = simpleGit(repoInfo.localPath);
|
|
76
|
-
try {
|
|
77
|
-
// Fetch and pull latest changes
|
|
78
|
-
await git.fetch(['origin', '--depth', '1']);
|
|
79
|
-
await git.pull('origin', 'HEAD');
|
|
80
|
-
console.log(` ✅ Updated to latest version\n`);
|
|
81
|
-
}
|
|
82
|
-
catch (error) {
|
|
83
|
-
// If update fails, it's not critical - we can use the existing version
|
|
84
|
-
console.warn(` ⚠️ Could not update repository (using cached version):\n ${error instanceof Error ? error.message : String(error)}\n`);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Get local path for a repository (without ensuring it exists)
|
|
89
|
-
*/
|
|
90
|
-
export function getRepoLocalPath(repoIdentifier) {
|
|
91
|
-
const safeName = repoIdentifier.replace('/', '__');
|
|
92
|
-
return join(process.cwd(), REPOS_DIR, safeName);
|
|
93
|
-
}
|
|
94
|
-
//# sourceMappingURL=repository-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repository-manager.js","sourceRoot":"","sources":["../../../kosuke/utils/repository-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Repository Resolver - Smart repository inference from queries
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Resolve repository identifier to owner/repo format
|
|
6
|
-
*/
|
|
7
|
-
export declare function resolveRepository(repo: string | undefined, query: string, useTemplate: boolean, githubToken?: string): Promise<string>;
|
|
8
|
-
/**
|
|
9
|
-
* Validate repository access
|
|
10
|
-
*/
|
|
11
|
-
export declare function validateRepoAccess(repoIdentifier: string, githubToken?: string): Promise<boolean>;
|
|
12
|
-
//# sourceMappingURL=repository-resolver.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repository-resolver.d.ts","sourceRoot":"","sources":["../../../kosuke/utils/repository-resolver.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiCH;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,OAAO,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAiCjB;AA4HD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,cAAc,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC,CAelB"}
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Repository Resolver - Smart repository inference from queries
|
|
3
|
-
*/
|
|
4
|
-
import { Octokit } from '@octokit/rest';
|
|
5
|
-
const KOSUKE_TEMPLATE_REPO = 'Kosuke-Org/kosuke-template';
|
|
6
|
-
const DEFAULT_ORG = 'Kosuke-Org';
|
|
7
|
-
// Well-known repositories mapping
|
|
8
|
-
const WELL_KNOWN_REPOS = {
|
|
9
|
-
nextjs: 'vercel/next.js',
|
|
10
|
-
'next.js': 'vercel/next.js',
|
|
11
|
-
next: 'vercel/next.js',
|
|
12
|
-
react: 'facebook/react',
|
|
13
|
-
shadcn: 'shadcn/ui',
|
|
14
|
-
'shadcn-ui': 'shadcn/ui',
|
|
15
|
-
tailwind: 'tailwindlabs/tailwindcss',
|
|
16
|
-
tailwindcss: 'tailwindlabs/tailwindcss',
|
|
17
|
-
prisma: 'prisma/prisma',
|
|
18
|
-
drizzle: 'drizzle-team/drizzle-orm',
|
|
19
|
-
'drizzle-orm': 'drizzle-team/drizzle-orm',
|
|
20
|
-
trpc: 'trpc/trpc',
|
|
21
|
-
remix: 'remix-run/remix',
|
|
22
|
-
astro: 'withastro/astro',
|
|
23
|
-
svelte: 'sveltejs/svelte',
|
|
24
|
-
vue: 'vuejs/core',
|
|
25
|
-
nuxt: 'nuxt/nuxt',
|
|
26
|
-
angular: 'angular/angular',
|
|
27
|
-
express: 'expressjs/express',
|
|
28
|
-
fastify: 'fastify/fastify',
|
|
29
|
-
nestjs: 'nestjs/nest',
|
|
30
|
-
'kosuke-template': KOSUKE_TEMPLATE_REPO,
|
|
31
|
-
};
|
|
32
|
-
/**
|
|
33
|
-
* Resolve repository identifier to owner/repo format
|
|
34
|
-
*/
|
|
35
|
-
export async function resolveRepository(repo, query, useTemplate, githubToken) {
|
|
36
|
-
// If --template flag is used, always use kosuke-template
|
|
37
|
-
if (useTemplate) {
|
|
38
|
-
return KOSUKE_TEMPLATE_REPO;
|
|
39
|
-
}
|
|
40
|
-
// If repo is explicitly provided, normalize it
|
|
41
|
-
if (repo) {
|
|
42
|
-
return normalizeRepoIdentifier(repo);
|
|
43
|
-
}
|
|
44
|
-
// Try to infer from query
|
|
45
|
-
const inferred = inferRepoFromQuery(query);
|
|
46
|
-
if (inferred) {
|
|
47
|
-
return inferred;
|
|
48
|
-
}
|
|
49
|
-
// If we have a GitHub token, try searching (optional, as per requirement)
|
|
50
|
-
if (githubToken) {
|
|
51
|
-
const searched = await searchGitHubRepo(query, githubToken);
|
|
52
|
-
if (searched) {
|
|
53
|
-
return searched;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
// Could not determine repository
|
|
57
|
-
throw new Error(`Could not determine repository from query: "${query}"\n` +
|
|
58
|
-
`Please specify the repository explicitly:\n` +
|
|
59
|
-
` kosuke getcode "owner/repo" "${query}"\n` +
|
|
60
|
-
`Or use --template flag for kosuke-template:\n` +
|
|
61
|
-
` kosuke getcode --template "${query}"`);
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Normalize repository identifier to owner/repo format
|
|
65
|
-
*/
|
|
66
|
-
function normalizeRepoIdentifier(repo) {
|
|
67
|
-
// Handle GitHub URLs
|
|
68
|
-
const urlPatterns = [
|
|
69
|
-
/github\.com\/([^\/]+)\/([^\/\s]+)/i, // https://github.com/owner/repo
|
|
70
|
-
/github\.com:([^\/]+)\/([^\/\s]+)/i, // git@github.com:owner/repo
|
|
71
|
-
];
|
|
72
|
-
for (const pattern of urlPatterns) {
|
|
73
|
-
const match = repo.match(pattern);
|
|
74
|
-
if (match) {
|
|
75
|
-
const owner = match[1];
|
|
76
|
-
const repoName = match[2].replace(/\.git$/, ''); // Remove .git suffix
|
|
77
|
-
return `${owner}/${repoName}`;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
// Already in owner/repo format
|
|
81
|
-
if (repo.includes('/')) {
|
|
82
|
-
return repo;
|
|
83
|
-
}
|
|
84
|
-
// Just repo name, assume Kosuke-Org
|
|
85
|
-
if (repo.startsWith('kosuke-')) {
|
|
86
|
-
return `${DEFAULT_ORG}/${repo}`;
|
|
87
|
-
}
|
|
88
|
-
// Can't normalize
|
|
89
|
-
throw new Error(`Invalid repository format: "${repo}"\n` +
|
|
90
|
-
`Expected formats:\n` +
|
|
91
|
-
` - owner/repo (e.g., "facebook/react")\n` +
|
|
92
|
-
` - https://github.com/owner/repo\n` +
|
|
93
|
-
` - kosuke-* (assumes Kosuke-Org/kosuke-*)`);
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Extract repository name from user input
|
|
97
|
-
*/
|
|
98
|
-
function inferRepoFromQuery(query) {
|
|
99
|
-
const queryLower = query.toLowerCase();
|
|
100
|
-
// Pattern 1: Explicit owner/repo format in query
|
|
101
|
-
const ownerRepoPattern = /\b([a-zA-Z0-9_-]+)\/([a-zA-Z0-9_.-]+)\b/;
|
|
102
|
-
const match = query.match(ownerRepoPattern);
|
|
103
|
-
if (match) {
|
|
104
|
-
return `${match[1]}/${match[2]}`;
|
|
105
|
-
}
|
|
106
|
-
// Pattern 2: Kosuke-specific repos (e.g., "kosuke-template", "kosuke-cli")
|
|
107
|
-
const kosukeRepoPattern = /\b(kosuke-[a-zA-Z0-9_-]+)\b/i;
|
|
108
|
-
const kosukeMatch = query.match(kosukeRepoPattern);
|
|
109
|
-
if (kosukeMatch) {
|
|
110
|
-
return `${DEFAULT_ORG}/${kosukeMatch[1].toLowerCase()}`;
|
|
111
|
-
}
|
|
112
|
-
// Pattern 3: Well-known repositories
|
|
113
|
-
for (const [keyword, repoIdentifier] of Object.entries(WELL_KNOWN_REPOS)) {
|
|
114
|
-
if (queryLower.includes(keyword)) {
|
|
115
|
-
return repoIdentifier;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Search GitHub for repository (fallback, requires token)
|
|
122
|
-
*/
|
|
123
|
-
async function searchGitHubRepo(query, githubToken) {
|
|
124
|
-
try {
|
|
125
|
-
const octokit = new Octokit({ auth: githubToken });
|
|
126
|
-
// Extract potential repo names from query
|
|
127
|
-
const words = query.match(/\b[a-zA-Z][a-zA-Z0-9_-]{2,}\b/g) || [];
|
|
128
|
-
for (const word of words) {
|
|
129
|
-
// Skip common words
|
|
130
|
-
const skipWords = [
|
|
131
|
-
'from',
|
|
132
|
-
'repository',
|
|
133
|
-
'repo',
|
|
134
|
-
'code',
|
|
135
|
-
'implementation',
|
|
136
|
-
'inspiration',
|
|
137
|
-
'example',
|
|
138
|
-
'how',
|
|
139
|
-
'does',
|
|
140
|
-
'work',
|
|
141
|
-
'what',
|
|
142
|
-
'where',
|
|
143
|
-
'show',
|
|
144
|
-
'find',
|
|
145
|
-
];
|
|
146
|
-
if (skipWords.includes(word.toLowerCase())) {
|
|
147
|
-
continue;
|
|
148
|
-
}
|
|
149
|
-
// Search GitHub
|
|
150
|
-
const { data } = await octokit.search.repos({
|
|
151
|
-
q: word,
|
|
152
|
-
sort: 'stars',
|
|
153
|
-
order: 'desc',
|
|
154
|
-
per_page: 1,
|
|
155
|
-
});
|
|
156
|
-
// Only return if it's a popular repo (>1000 stars)
|
|
157
|
-
if (data.items.length > 0 && data.items[0].stargazers_count > 1000) {
|
|
158
|
-
return data.items[0].full_name;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
catch {
|
|
163
|
-
// Silently fail - this is just a fallback
|
|
164
|
-
console.warn(' ⚠️ GitHub search failed, explicit repo required');
|
|
165
|
-
}
|
|
166
|
-
return null;
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Validate repository access
|
|
170
|
-
*/
|
|
171
|
-
export async function validateRepoAccess(repoIdentifier, githubToken) {
|
|
172
|
-
if (!githubToken) {
|
|
173
|
-
// Without token, assume public access
|
|
174
|
-
return true;
|
|
175
|
-
}
|
|
176
|
-
try {
|
|
177
|
-
const octokit = new Octokit({ auth: githubToken });
|
|
178
|
-
const [owner, repo] = repoIdentifier.split('/');
|
|
179
|
-
await octokit.repos.get({ owner, repo });
|
|
180
|
-
return true;
|
|
181
|
-
}
|
|
182
|
-
catch {
|
|
183
|
-
return false;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
//# sourceMappingURL=repository-resolver.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repository-resolver.js","sourceRoot":"","sources":["../../../kosuke/utils/repository-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tickets file management utilities
|
|
3
|
-
*
|
|
4
|
-
* Core file I/O and ticket management operations.
|
|
5
|
-
* For JSON parsing, use json-parser.ts
|
|
6
|
-
* For validation, use validate-tickets command
|
|
7
|
-
*/
|
|
8
|
-
import type { Ticket } from '../types.js';
|
|
9
|
-
export interface TicketsFile {
|
|
10
|
-
generatedAt: string;
|
|
11
|
-
totalTickets: number;
|
|
12
|
-
tickets: Ticket[];
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Load tickets from file
|
|
16
|
-
*/
|
|
17
|
-
export declare function loadTicketsFile(ticketsPath: string): TicketsFile;
|
|
18
|
-
/**
|
|
19
|
-
* Save tickets to file
|
|
20
|
-
*/
|
|
21
|
-
export declare function saveTicketsFile(ticketsPath: string, ticketsData: TicketsFile): void;
|
|
22
|
-
/**
|
|
23
|
-
* Write tickets to a JSON file (creates new file structure)
|
|
24
|
-
*/
|
|
25
|
-
export declare function writeTicketsFile(outputPath: string, tickets: Ticket[]): void;
|
|
26
|
-
/**
|
|
27
|
-
* Update ticket status in file
|
|
28
|
-
*/
|
|
29
|
-
export declare function updateTicketStatus(ticketsPath: string, ticketId: string, status: Ticket['status'], error?: string): void;
|
|
30
|
-
/**
|
|
31
|
-
* Display tickets summary to console
|
|
32
|
-
*/
|
|
33
|
-
export declare function displayTicketsSummary(tickets: Ticket[]): void;
|
|
34
|
-
//# sourceMappingURL=tickets-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tickets-manager.d.ts","sourceRoot":"","sources":["../../../kosuke/utils/tickets-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAgBhE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI,CAEnF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAQ5E;AAaD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EACxB,KAAK,CAAC,EAAE,MAAM,GACb,IAAI,CAiBN;AAMD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CA6B7D"}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tickets file management utilities
|
|
3
|
-
*
|
|
4
|
-
* Core file I/O and ticket management operations.
|
|
5
|
-
* For JSON parsing, use json-parser.ts
|
|
6
|
-
* For validation, use validate-tickets command
|
|
7
|
-
*/
|
|
8
|
-
import { existsSync, readFileSync, writeFileSync } from 'fs';
|
|
9
|
-
// ============================================================================
|
|
10
|
-
// File Operations
|
|
11
|
-
// ============================================================================
|
|
12
|
-
/**
|
|
13
|
-
* Load tickets from file
|
|
14
|
-
*/
|
|
15
|
-
export function loadTicketsFile(ticketsPath) {
|
|
16
|
-
if (!existsSync(ticketsPath)) {
|
|
17
|
-
throw new Error(`Tickets file not found: ${ticketsPath}\n` +
|
|
18
|
-
`Please generate tickets first using: kosuke tickets`);
|
|
19
|
-
}
|
|
20
|
-
try {
|
|
21
|
-
const content = readFileSync(ticketsPath, 'utf-8');
|
|
22
|
-
return JSON.parse(content);
|
|
23
|
-
}
|
|
24
|
-
catch (error) {
|
|
25
|
-
throw new Error(`Failed to parse tickets file: ${error instanceof Error ? error.message : String(error)}`);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Save tickets to file
|
|
30
|
-
*/
|
|
31
|
-
export function saveTicketsFile(ticketsPath, ticketsData) {
|
|
32
|
-
writeFileSync(ticketsPath, JSON.stringify(ticketsData, null, 2), 'utf-8');
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Write tickets to a JSON file (creates new file structure)
|
|
36
|
-
*/
|
|
37
|
-
export function writeTicketsFile(outputPath, tickets) {
|
|
38
|
-
const outputData = {
|
|
39
|
-
generatedAt: new Date().toISOString(),
|
|
40
|
-
totalTickets: tickets.length,
|
|
41
|
-
tickets,
|
|
42
|
-
};
|
|
43
|
-
writeFileSync(outputPath, JSON.stringify(outputData, null, 2), 'utf-8');
|
|
44
|
-
}
|
|
45
|
-
// ============================================================================
|
|
46
|
-
// Ticket Lookup & Status
|
|
47
|
-
// ============================================================================
|
|
48
|
-
/**
|
|
49
|
-
* Find ticket by ID
|
|
50
|
-
*/
|
|
51
|
-
function findTicket(ticketsData, ticketId) {
|
|
52
|
-
return ticketsData.tickets.find((t) => t.id === ticketId);
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Update ticket status in file
|
|
56
|
-
*/
|
|
57
|
-
export function updateTicketStatus(ticketsPath, ticketId, status, error) {
|
|
58
|
-
const ticketsData = loadTicketsFile(ticketsPath);
|
|
59
|
-
const ticket = findTicket(ticketsData, ticketId);
|
|
60
|
-
if (!ticket) {
|
|
61
|
-
console.warn(`⚠️ Ticket ${ticketId} not found, skipping status update`);
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
ticket.status = status;
|
|
65
|
-
if (error) {
|
|
66
|
-
ticket.error = error;
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
delete ticket.error;
|
|
70
|
-
}
|
|
71
|
-
saveTicketsFile(ticketsPath, ticketsData);
|
|
72
|
-
}
|
|
73
|
-
// ============================================================================
|
|
74
|
-
// Display
|
|
75
|
-
// ============================================================================
|
|
76
|
-
/**
|
|
77
|
-
* Display tickets summary to console
|
|
78
|
-
*/
|
|
79
|
-
export function displayTicketsSummary(tickets) {
|
|
80
|
-
console.log(`\n${'='.repeat(60)}`);
|
|
81
|
-
console.log('📋 Tickets Created');
|
|
82
|
-
console.log(`${'='.repeat(60)}\n`);
|
|
83
|
-
for (const ticket of tickets) {
|
|
84
|
-
const emoji = ticket.type === 'schema'
|
|
85
|
-
? '🗄️'
|
|
86
|
-
: ticket.type === 'refactor'
|
|
87
|
-
? '🔄'
|
|
88
|
-
: ticket.type === 'engine'
|
|
89
|
-
? '🐍'
|
|
90
|
-
: ticket.type === 'backend'
|
|
91
|
-
? '⚙️'
|
|
92
|
-
: ticket.type === 'frontend'
|
|
93
|
-
? '🎨'
|
|
94
|
-
: '🧪';
|
|
95
|
-
console.log(`${emoji} ${ticket.id}: ${ticket.title}`);
|
|
96
|
-
console.log(` Type: ${ticket.type} | Effort: ${ticket.estimatedEffort}/10`);
|
|
97
|
-
if (ticket.category) {
|
|
98
|
-
console.log(` Category: ${ticket.category}`);
|
|
99
|
-
}
|
|
100
|
-
console.log('');
|
|
101
|
-
}
|
|
102
|
-
console.log(`${'='.repeat(60)}`);
|
|
103
|
-
console.log(`✅ Total: ${tickets.length} ticket(s)`);
|
|
104
|
-
console.log(`${'='.repeat(60)}\n`);
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=tickets-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tickets-manager.js","sourceRoot":"","sources":["../../../kosuke/utils/tickets-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAS7D,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,2BAA2B,WAAW,IAAI;YACxC,qDAAqD,CACxD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAgB,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC1F,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB,EAAE,WAAwB;IAC3E,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAkB,EAAE,OAAiB;IACpE,MAAM,UAAU,GAAgB;QAC9B,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,YAAY,EAAE,OAAO,CAAC,MAAM;QAC5B,OAAO;KACR,CAAC;IAEF,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAED,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;GAEG;AACH,SAAS,UAAU,CAAC,WAAwB,EAAE,QAAgB;IAC5D,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,WAAmB,EACnB,QAAgB,EAChB,MAAwB,EACxB,KAAc;IAEd,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAEjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,cAAc,QAAQ,oCAAoC,CAAC,CAAC;QACzE,OAAO;IACT,CAAC;IAED,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAC5C,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAiB;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAEnC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GACT,MAAM,CAAC,IAAI,KAAK,QAAQ;YACtB,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU;gBAC1B,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;oBACxB,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS;wBACzB,CAAC,CAAC,IAAI;wBACN,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU;4BAC1B,CAAC,CAAC,IAAI;4BACN,CAAC,CAAC,IAAI,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,IAAI,cAAc,MAAM,CAAC,eAAe,KAAK,CAAC,CAAC;QAC9E,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,MAAM,YAAY,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC"}
|