centy 0.0.12 → 0.0.14
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 +1 -1
- package/dist/commands/compact.d.ts +21 -0
- package/dist/commands/compact.d.ts.map +1 -0
- package/dist/commands/compact.js +194 -0
- package/dist/commands/compact.js.map +1 -0
- package/dist/commands/create/pr.d.ts +20 -0
- package/dist/commands/create/pr.d.ts.map +1 -0
- package/dist/commands/create/pr.js +96 -0
- package/dist/commands/create/pr.js.map +1 -0
- package/dist/commands/delete/pr.d.ts +16 -0
- package/dist/commands/delete/pr.d.ts.map +1 -0
- package/dist/commands/delete/pr.js +59 -0
- package/dist/commands/delete/pr.js.map +1 -0
- package/dist/commands/get/pr.d.ts +16 -0
- package/dist/commands/get/pr.d.ts.map +1 -0
- package/dist/commands/get/pr.js +76 -0
- package/dist/commands/get/pr.js.map +1 -0
- package/dist/commands/list/projects.d.ts +1 -0
- package/dist/commands/list/projects.d.ts.map +1 -1
- package/dist/commands/list/projects.js +6 -0
- package/dist/commands/list/projects.js.map +1 -1
- package/dist/commands/list/prs.d.ts +17 -0
- package/dist/commands/list/prs.d.ts.map +1 -0
- package/dist/commands/list/prs.js +74 -0
- package/dist/commands/list/prs.js.map +1 -0
- package/dist/commands/project/archive.d.ts +16 -0
- package/dist/commands/project/archive.d.ts.map +1 -0
- package/dist/commands/project/archive.js +39 -0
- package/dist/commands/project/archive.js.map +1 -0
- package/dist/commands/update/pr.d.ts +20 -0
- package/dist/commands/update/pr.d.ts.map +1 -0
- package/dist/commands/update/pr.js +96 -0
- package/dist/commands/update/pr.js.map +1 -0
- package/dist/daemon/daemon-create-pr.d.ts +6 -0
- package/dist/daemon/daemon-create-pr.d.ts.map +1 -0
- package/dist/daemon/daemon-create-pr.js +17 -0
- package/dist/daemon/daemon-create-pr.js.map +1 -0
- package/dist/daemon/daemon-delete-pr.d.ts +6 -0
- package/dist/daemon/daemon-delete-pr.d.ts.map +1 -0
- package/dist/daemon/daemon-delete-pr.js +17 -0
- package/dist/daemon/daemon-delete-pr.js.map +1 -0
- package/dist/daemon/daemon-get-compact.d.ts +6 -0
- package/dist/daemon/daemon-get-compact.d.ts.map +1 -0
- package/dist/daemon/daemon-get-compact.js +17 -0
- package/dist/daemon/daemon-get-compact.js.map +1 -0
- package/dist/daemon/daemon-get-feature-status.d.ts +6 -0
- package/dist/daemon/daemon-get-feature-status.d.ts.map +1 -0
- package/dist/daemon/daemon-get-feature-status.js +17 -0
- package/dist/daemon/daemon-get-feature-status.js.map +1 -0
- package/dist/daemon/daemon-get-instruction.d.ts +6 -0
- package/dist/daemon/daemon-get-instruction.d.ts.map +1 -0
- package/dist/daemon/daemon-get-instruction.js +17 -0
- package/dist/daemon/daemon-get-instruction.js.map +1 -0
- package/dist/daemon/daemon-get-pr-by-display-number.d.ts +6 -0
- package/dist/daemon/daemon-get-pr-by-display-number.d.ts.map +1 -0
- package/dist/daemon/daemon-get-pr-by-display-number.js +17 -0
- package/dist/daemon/daemon-get-pr-by-display-number.js.map +1 -0
- package/dist/daemon/daemon-get-pr.d.ts +6 -0
- package/dist/daemon/daemon-get-pr.d.ts.map +1 -0
- package/dist/daemon/daemon-get-pr.js +17 -0
- package/dist/daemon/daemon-get-pr.js.map +1 -0
- package/dist/daemon/daemon-list-prs.d.ts +6 -0
- package/dist/daemon/daemon-list-prs.d.ts.map +1 -0
- package/dist/daemon/daemon-list-prs.js +17 -0
- package/dist/daemon/daemon-list-prs.js.map +1 -0
- package/dist/daemon/daemon-list-uncompacted-issues.d.ts +6 -0
- package/dist/daemon/daemon-list-uncompacted-issues.d.ts.map +1 -0
- package/dist/daemon/daemon-list-uncompacted-issues.js +17 -0
- package/dist/daemon/daemon-list-uncompacted-issues.js.map +1 -0
- package/dist/daemon/daemon-mark-issues-compacted.d.ts +6 -0
- package/dist/daemon/daemon-mark-issues-compacted.d.ts.map +1 -0
- package/dist/daemon/daemon-mark-issues-compacted.js +17 -0
- package/dist/daemon/daemon-mark-issues-compacted.js.map +1 -0
- package/dist/daemon/daemon-save-migration.d.ts +6 -0
- package/dist/daemon/daemon-save-migration.d.ts.map +1 -0
- package/dist/daemon/daemon-save-migration.js +17 -0
- package/dist/daemon/daemon-save-migration.js.map +1 -0
- package/dist/daemon/daemon-set-project-archived.d.ts +6 -0
- package/dist/daemon/daemon-set-project-archived.d.ts.map +1 -0
- package/dist/daemon/daemon-set-project-archived.js +17 -0
- package/dist/daemon/daemon-set-project-archived.js.map +1 -0
- package/dist/daemon/daemon-update-compact.d.ts +6 -0
- package/dist/daemon/daemon-update-compact.d.ts.map +1 -0
- package/dist/daemon/daemon-update-compact.js +17 -0
- package/dist/daemon/daemon-update-compact.js.map +1 -0
- package/dist/daemon/daemon-update-pr.d.ts +6 -0
- package/dist/daemon/daemon-update-pr.d.ts.map +1 -0
- package/dist/daemon/daemon-update-pr.js +17 -0
- package/dist/daemon/daemon-update-pr.js.map +1 -0
- package/dist/daemon/load-proto.d.ts +16 -1
- package/dist/daemon/load-proto.d.ts.map +1 -1
- package/dist/daemon/load-proto.js.map +1 -1
- package/dist/daemon/types.d.ts +168 -0
- package/dist/daemon/types.d.ts.map +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +18 -11
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/components/domain/ConfigPanel.js +1 -1
- package/dist/tui/components/domain/ConfigPanel.js.map +1 -1
- package/dist/tui/components/domain/IssueList.js +1 -1
- package/dist/tui/components/domain/IssueList.js.map +1 -1
- package/dist/tui/components/domain/ProjectList.d.ts.map +1 -1
- package/dist/tui/components/domain/ProjectList.js +44 -6
- package/dist/tui/components/domain/ProjectList.js.map +1 -1
- package/dist/tui/components/layout/Sidebar.d.ts +2 -1
- package/dist/tui/components/layout/Sidebar.d.ts.map +1 -1
- package/dist/tui/components/layout/Sidebar.js +3 -3
- package/dist/tui/components/layout/Sidebar.js.map +1 -1
- package/dist/tui/hooks/useProjects.d.ts +2 -0
- package/dist/tui/hooks/useProjects.d.ts.map +1 -1
- package/dist/tui/hooks/useProjects.js +27 -1
- package/dist/tui/hooks/useProjects.js.map +1 -1
- package/dist/tui/services/daemon-service.d.ts +7 -1
- package/dist/tui/services/daemon-service.d.ts.map +1 -1
- package/dist/tui/services/daemon-service.js +45 -2
- package/dist/tui/services/daemon-service.js.map +1 -1
- package/dist/tui/state/app-state.d.ts +3 -0
- package/dist/tui/state/app-state.d.ts.map +1 -1
- package/dist/tui/state/app-state.js +5 -0
- package/dist/tui/state/app-state.js.map +1 -1
- package/dist/tui/types/views.d.ts +4 -0
- package/dist/tui/types/views.d.ts.map +1 -1
- package/dist/tui/types/views.js +14 -0
- package/dist/tui/types/views.js.map +1 -1
- package/oclif.manifest.json +474 -23
- package/package.json +1 -1
- package/proto/centy.proto +271 -0
package/README.md
CHANGED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Compact uncompacted issues into features
|
|
4
|
+
*/
|
|
5
|
+
export default class Compact extends Command {
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
input: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
private generateLlmContext;
|
|
16
|
+
private applyLlmResponse;
|
|
17
|
+
private saveMigrationContent;
|
|
18
|
+
private saveCompactContent;
|
|
19
|
+
private markIssuesFromMigration;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=compact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../src/commands/compact.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAU5C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAC1C,OAAgB,WAAW,SAC0B;IAErD,OAAgB,QAAQ,WAKvB;IAED,OAAgB,KAAK;;;;;MAkBpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAwDnB,kBAAkB;YA4ClB,gBAAgB;YAsDhB,oBAAoB;YAgBpB,kBAAkB;YAgBlB,uBAAuB;CAqCtC"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { writeFile, readFile } from 'node:fs/promises';
|
|
2
|
+
import { Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonGetCompact } from '../daemon/daemon-get-compact.js';
|
|
4
|
+
import { daemonGetInstruction } from '../daemon/daemon-get-instruction.js';
|
|
5
|
+
import { daemonIsInitialized } from '../daemon/daemon-is-initialized.js';
|
|
6
|
+
import { daemonListUncompactedIssues } from '../daemon/daemon-list-uncompacted-issues.js';
|
|
7
|
+
import { daemonMarkIssuesCompacted } from '../daemon/daemon-mark-issues-compacted.js';
|
|
8
|
+
import { daemonSaveMigration } from '../daemon/daemon-save-migration.js';
|
|
9
|
+
import { daemonUpdateCompact } from '../daemon/daemon-update-compact.js';
|
|
10
|
+
/**
|
|
11
|
+
* Compact uncompacted issues into features
|
|
12
|
+
*/
|
|
13
|
+
export default class Compact extends Command {
|
|
14
|
+
static description = 'Compact uncompacted issues into feature summaries';
|
|
15
|
+
static examples = [
|
|
16
|
+
'<%= config.bin %> <%= command.id %>',
|
|
17
|
+
'<%= config.bin %> <%= command.id %> --dry-run',
|
|
18
|
+
'<%= config.bin %> <%= command.id %> --output context.md',
|
|
19
|
+
'<%= config.bin %> <%= command.id %> --input response.md',
|
|
20
|
+
];
|
|
21
|
+
static flags = {
|
|
22
|
+
'dry-run': Flags.boolean({
|
|
23
|
+
char: 'd',
|
|
24
|
+
description: 'List uncompacted issues without modifying',
|
|
25
|
+
default: false,
|
|
26
|
+
}),
|
|
27
|
+
output: Flags.string({
|
|
28
|
+
char: 'o',
|
|
29
|
+
description: 'Write LLM context to file (for external LLM processing)',
|
|
30
|
+
}),
|
|
31
|
+
input: Flags.string({
|
|
32
|
+
char: 'i',
|
|
33
|
+
description: 'Read LLM response from file and apply changes',
|
|
34
|
+
}),
|
|
35
|
+
json: Flags.boolean({
|
|
36
|
+
description: 'Output as JSON (for --dry-run)',
|
|
37
|
+
default: false,
|
|
38
|
+
}),
|
|
39
|
+
};
|
|
40
|
+
async run() {
|
|
41
|
+
const { flags } = await this.parse(Compact);
|
|
42
|
+
const cwd = process.env['CENTY_CWD'] ?? process.cwd();
|
|
43
|
+
// Check if initialized
|
|
44
|
+
const initStatus = await daemonIsInitialized({ projectPath: cwd });
|
|
45
|
+
if (!initStatus.initialized) {
|
|
46
|
+
this.error('.centy folder not initialized. Run "centy init" first.');
|
|
47
|
+
}
|
|
48
|
+
// If input file provided, apply LLM response
|
|
49
|
+
if (flags.input !== undefined) {
|
|
50
|
+
await this.applyLlmResponse(cwd, flags.input);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// Get uncompacted issues
|
|
54
|
+
const response = await daemonListUncompactedIssues({ projectPath: cwd });
|
|
55
|
+
if (response.issues.length === 0) {
|
|
56
|
+
this.log('No new issues to compact.');
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
// Dry run - just show issues
|
|
60
|
+
if (flags['dry-run']) {
|
|
61
|
+
if (flags.json) {
|
|
62
|
+
this.log(JSON.stringify(response.issues, null, 2));
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
this.log(`Found ${response.totalCount} uncompacted issue(s):\n`);
|
|
66
|
+
for (const issue of response.issues) {
|
|
67
|
+
const meta = issue.metadata;
|
|
68
|
+
const status = meta !== undefined ? meta.status : 'unknown';
|
|
69
|
+
this.log(`#${issue.displayNumber} [${status}] ${issue.title}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
// Generate LLM context
|
|
75
|
+
const context = await this.generateLlmContext(cwd, response.issues);
|
|
76
|
+
// If output file provided, write context
|
|
77
|
+
if (flags.output !== undefined) {
|
|
78
|
+
await writeFile(flags.output, context, 'utf-8');
|
|
79
|
+
this.log(`LLM context written to: ${flags.output}`);
|
|
80
|
+
this.log(`\nNext steps:\n1. Process the file with your LLM\n2. Run: centy compact --input <response-file>`);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
// Output context to stdout for piping
|
|
84
|
+
this.log(context);
|
|
85
|
+
}
|
|
86
|
+
async generateLlmContext(projectPath, issues) {
|
|
87
|
+
// Get instruction.md
|
|
88
|
+
const instructionResponse = await daemonGetInstruction({ projectPath });
|
|
89
|
+
const instruction = instructionResponse.content;
|
|
90
|
+
// Get current compact.md
|
|
91
|
+
const compactResponse = await daemonGetCompact({ projectPath });
|
|
92
|
+
const currentCompact = compactResponse.exists
|
|
93
|
+
? compactResponse.content
|
|
94
|
+
: '(No features documented yet)';
|
|
95
|
+
// Build context
|
|
96
|
+
const parts = [];
|
|
97
|
+
parts.push('# LLM Compaction Context\n');
|
|
98
|
+
parts.push('## Instructions\n');
|
|
99
|
+
parts.push(instruction);
|
|
100
|
+
parts.push('\n---\n');
|
|
101
|
+
parts.push('## Current Features Summary (compact.md)\n');
|
|
102
|
+
parts.push('```markdown');
|
|
103
|
+
parts.push(currentCompact);
|
|
104
|
+
parts.push('```');
|
|
105
|
+
parts.push('\n---\n');
|
|
106
|
+
parts.push('## Uncompacted Issues\n');
|
|
107
|
+
for (const issue of issues) {
|
|
108
|
+
parts.push(`### Issue #${issue.displayNumber}: ${issue.title}`);
|
|
109
|
+
parts.push(`**ID:** ${issue.id}`);
|
|
110
|
+
parts.push('');
|
|
111
|
+
parts.push(issue.description || '(No description)');
|
|
112
|
+
parts.push('');
|
|
113
|
+
}
|
|
114
|
+
return parts.join('\n');
|
|
115
|
+
}
|
|
116
|
+
async applyLlmResponse(projectPath, inputFile) {
|
|
117
|
+
// Read LLM response
|
|
118
|
+
const content = await readFile(inputFile, 'utf-8');
|
|
119
|
+
// Parse response - look for MIGRATION_CONTENT and COMPACT_CONTENT sections
|
|
120
|
+
const migrationMatch = content.match(/### MIGRATION_CONTENT\s*\n```(?:markdown|yaml)?\s*\n([\s\S]*?)```/i);
|
|
121
|
+
const compactMatch = content.match(/### COMPACT_CONTENT\s*\n```(?:markdown)?\s*\n([\s\S]*?)```/i);
|
|
122
|
+
if (migrationMatch === null && compactMatch === null) {
|
|
123
|
+
// Try alternative formats - look for sections without code blocks
|
|
124
|
+
const altMigrationMatch = content.match(/### MIGRATION_CONTENT\s*\n([\s\S]*?)(?=### COMPACT_CONTENT|$)/i);
|
|
125
|
+
const altCompactMatch = content.match(/### COMPACT_CONTENT\s*\n([\s\S]*?)$/i);
|
|
126
|
+
if (altMigrationMatch === null && altCompactMatch === null) {
|
|
127
|
+
this.error('Could not parse LLM response. Expected MIGRATION_CONTENT and COMPACT_CONTENT sections.');
|
|
128
|
+
}
|
|
129
|
+
if (altMigrationMatch !== null) {
|
|
130
|
+
await this.saveMigrationContent(projectPath, altMigrationMatch[1].trim());
|
|
131
|
+
}
|
|
132
|
+
if (altCompactMatch !== null) {
|
|
133
|
+
await this.saveCompactContent(projectPath, altCompactMatch[1].trim());
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
if (migrationMatch !== null) {
|
|
138
|
+
await this.saveMigrationContent(projectPath, migrationMatch[1]);
|
|
139
|
+
}
|
|
140
|
+
if (compactMatch !== null) {
|
|
141
|
+
await this.saveCompactContent(projectPath, compactMatch[1]);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// Mark issues as compacted - extract issue IDs from migration content
|
|
145
|
+
await this.markIssuesFromMigration(projectPath, content);
|
|
146
|
+
this.log('Compaction applied successfully!');
|
|
147
|
+
}
|
|
148
|
+
async saveMigrationContent(projectPath, content) {
|
|
149
|
+
const response = await daemonSaveMigration({
|
|
150
|
+
projectPath,
|
|
151
|
+
content,
|
|
152
|
+
});
|
|
153
|
+
if (!response.success) {
|
|
154
|
+
this.error(`Failed to save migration: ${response.error}`);
|
|
155
|
+
}
|
|
156
|
+
this.log(`Migration saved: ${response.filename}`);
|
|
157
|
+
}
|
|
158
|
+
async saveCompactContent(projectPath, content) {
|
|
159
|
+
const response = await daemonUpdateCompact({
|
|
160
|
+
projectPath,
|
|
161
|
+
content,
|
|
162
|
+
});
|
|
163
|
+
if (!response.success) {
|
|
164
|
+
this.error(`Failed to update compact.md: ${response.error}`);
|
|
165
|
+
}
|
|
166
|
+
this.log('compact.md updated');
|
|
167
|
+
}
|
|
168
|
+
async markIssuesFromMigration(projectPath, content) {
|
|
169
|
+
// Extract issue IDs from the migration content
|
|
170
|
+
// Look for patterns like:
|
|
171
|
+
// - id: uuid-123
|
|
172
|
+
// or compactedIssues array
|
|
173
|
+
const idMatches = content.matchAll(/(?:id|issueId):\s*["']?([a-f0-9-]{36})["']?/gi);
|
|
174
|
+
const issueIds = [];
|
|
175
|
+
for (const match of idMatches) {
|
|
176
|
+
if (!issueIds.includes(match[1])) {
|
|
177
|
+
issueIds.push(match[1]);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (issueIds.length === 0) {
|
|
181
|
+
this.warn('No issue IDs found in migration content. Issues will not be marked as compacted.');
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
const response = await daemonMarkIssuesCompacted({
|
|
185
|
+
projectPath,
|
|
186
|
+
issueIds,
|
|
187
|
+
});
|
|
188
|
+
if (!response.success) {
|
|
189
|
+
this.error(`Failed to mark issues as compacted: ${response.error}`);
|
|
190
|
+
}
|
|
191
|
+
this.log(`Marked ${response.markedCount} issue(s) as compacted`);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=compact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compact.js","sourceRoot":"","sources":["../../src/commands/compact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Create a new pull request in the .centy/prs folder
|
|
4
|
+
*/
|
|
5
|
+
export default class CreatePr extends Command {
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
title: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
source: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
target: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
issues: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
reviewers: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
priority: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
status: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
};
|
|
18
|
+
run(): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=pr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../../src/commands/create/pr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAK5C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,OAAO;IAC3C,OAAgB,WAAW,SAAmD;IAE9E,OAAgB,QAAQ,WAKvB;IAED,OAAgB,KAAK;;;;;;;;;MAmCpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkDlC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { Command, Flags } from '@oclif/core';
|
|
2
|
+
import { daemonCreatePr } from '../../daemon/daemon-create-pr.js';
|
|
3
|
+
import { daemonIsInitialized } from '../../daemon/daemon-is-initialized.js';
|
|
4
|
+
/**
|
|
5
|
+
* Create a new pull request in the .centy/prs folder
|
|
6
|
+
*/
|
|
7
|
+
export default class CreatePr extends Command {
|
|
8
|
+
static description = 'Create a new pull request in the .centy folder';
|
|
9
|
+
static examples = [
|
|
10
|
+
'<%= config.bin %> create pr',
|
|
11
|
+
'<%= config.bin %> create pr --title "Add feature" --source feature-branch',
|
|
12
|
+
'<%= config.bin %> create pr -t "Bug fix" -s bugfix/123 --target main',
|
|
13
|
+
'<%= config.bin %> create pr -t "Feature" --issues 1,2 --reviewers alice,bob',
|
|
14
|
+
];
|
|
15
|
+
static flags = {
|
|
16
|
+
title: Flags.string({
|
|
17
|
+
char: 't',
|
|
18
|
+
description: 'PR title',
|
|
19
|
+
required: true,
|
|
20
|
+
}),
|
|
21
|
+
description: Flags.string({
|
|
22
|
+
char: 'd',
|
|
23
|
+
description: 'PR description',
|
|
24
|
+
}),
|
|
25
|
+
source: Flags.string({
|
|
26
|
+
char: 's',
|
|
27
|
+
description: 'Source branch name (auto-detected if not provided)',
|
|
28
|
+
}),
|
|
29
|
+
target: Flags.string({
|
|
30
|
+
description: 'Target branch name (defaults to main)',
|
|
31
|
+
}),
|
|
32
|
+
issues: Flags.string({
|
|
33
|
+
char: 'i',
|
|
34
|
+
description: 'Linked issue IDs (comma-separated)',
|
|
35
|
+
}),
|
|
36
|
+
reviewers: Flags.string({
|
|
37
|
+
char: 'r',
|
|
38
|
+
description: 'Reviewers (comma-separated)',
|
|
39
|
+
}),
|
|
40
|
+
priority: Flags.string({
|
|
41
|
+
char: 'p',
|
|
42
|
+
description: 'Priority level (low/medium/high)',
|
|
43
|
+
options: ['low', 'medium', 'high'],
|
|
44
|
+
}),
|
|
45
|
+
status: Flags.string({
|
|
46
|
+
description: 'Initial status (draft/open)',
|
|
47
|
+
options: ['draft', 'open'],
|
|
48
|
+
default: 'draft',
|
|
49
|
+
}),
|
|
50
|
+
};
|
|
51
|
+
async run() {
|
|
52
|
+
const { flags } = await this.parse(CreatePr);
|
|
53
|
+
const cwd = process.env['CENTY_CWD'] ?? process.cwd();
|
|
54
|
+
const initStatus = await daemonIsInitialized({ projectPath: cwd });
|
|
55
|
+
if (!initStatus.initialized) {
|
|
56
|
+
this.error('.centy folder not initialized. Run "centy init" first.');
|
|
57
|
+
}
|
|
58
|
+
// Convert priority string to number
|
|
59
|
+
const priorityMap = {
|
|
60
|
+
high: 1,
|
|
61
|
+
medium: 2,
|
|
62
|
+
low: 3,
|
|
63
|
+
};
|
|
64
|
+
const priority = flags.priority ? priorityMap[flags.priority] : 0;
|
|
65
|
+
// Parse comma-separated lists
|
|
66
|
+
const linkedIssues = flags.issues
|
|
67
|
+
? flags.issues.split(',').map(s => s.trim())
|
|
68
|
+
: [];
|
|
69
|
+
const reviewers = flags.reviewers
|
|
70
|
+
? flags.reviewers.split(',').map(s => s.trim())
|
|
71
|
+
: [];
|
|
72
|
+
const result = await daemonCreatePr({
|
|
73
|
+
projectPath: cwd,
|
|
74
|
+
title: flags.title,
|
|
75
|
+
description: flags.description ?? '',
|
|
76
|
+
sourceBranch: flags.source,
|
|
77
|
+
targetBranch: flags.target,
|
|
78
|
+
linkedIssues,
|
|
79
|
+
reviewers,
|
|
80
|
+
priority,
|
|
81
|
+
status: flags.status ?? 'draft',
|
|
82
|
+
customFields: {},
|
|
83
|
+
});
|
|
84
|
+
if (!result.success) {
|
|
85
|
+
this.error(result.error ?? 'Failed to create PR');
|
|
86
|
+
}
|
|
87
|
+
this.log(`Created PR #${result.displayNumber}`);
|
|
88
|
+
this.log(`ID: ${result.id}`);
|
|
89
|
+
this.log(`Source branch: ${result.detectedSourceBranch}`);
|
|
90
|
+
this.log(`\nFiles created:`);
|
|
91
|
+
for (const file of result.createdFiles) {
|
|
92
|
+
this.log(` ${file}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=pr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr.js","sourceRoot":"","sources":["../../../src/commands/create/pr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Delete a pull request
|
|
4
|
+
*/
|
|
5
|
+
export default class DeletePr extends Command {
|
|
6
|
+
static args: {
|
|
7
|
+
id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
static description: string;
|
|
10
|
+
static examples: string[];
|
|
11
|
+
static flags: {
|
|
12
|
+
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=pr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../../src/commands/delete/pr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAKlD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,OAAO;IAC3C,OAAgB,IAAI;;MAKnB;IAED,OAAgB,WAAW,SAA0B;IAErD,OAAgB,QAAQ,WAIvB;IAED,OAAgB,KAAK;;MAMpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuClC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
2
|
+
import { daemonDeletePr } from '../../daemon/daemon-delete-pr.js';
|
|
3
|
+
import { daemonIsInitialized } from '../../daemon/daemon-is-initialized.js';
|
|
4
|
+
/**
|
|
5
|
+
* Delete a pull request
|
|
6
|
+
*/
|
|
7
|
+
export default class DeletePr extends Command {
|
|
8
|
+
static args = {
|
|
9
|
+
id: Args.string({
|
|
10
|
+
description: 'PR ID (UUID) or display number',
|
|
11
|
+
required: true,
|
|
12
|
+
}),
|
|
13
|
+
};
|
|
14
|
+
static description = 'Delete a pull request';
|
|
15
|
+
static examples = [
|
|
16
|
+
'<%= config.bin %> delete pr 1',
|
|
17
|
+
'<%= config.bin %> delete pr abc123-uuid',
|
|
18
|
+
'<%= config.bin %> delete pr 1 --force',
|
|
19
|
+
];
|
|
20
|
+
static flags = {
|
|
21
|
+
force: Flags.boolean({
|
|
22
|
+
char: 'f',
|
|
23
|
+
description: 'Skip confirmation prompt',
|
|
24
|
+
default: false,
|
|
25
|
+
}),
|
|
26
|
+
};
|
|
27
|
+
async run() {
|
|
28
|
+
const { args, flags } = await this.parse(DeletePr);
|
|
29
|
+
const cwd = process.env['CENTY_CWD'] ?? process.cwd();
|
|
30
|
+
const initStatus = await daemonIsInitialized({ projectPath: cwd });
|
|
31
|
+
if (!initStatus.initialized) {
|
|
32
|
+
this.error('.centy folder not initialized. Run "centy init" first.');
|
|
33
|
+
}
|
|
34
|
+
if (!flags.force) {
|
|
35
|
+
const readline = await import('node:readline');
|
|
36
|
+
const rl = readline.createInterface({
|
|
37
|
+
input: process.stdin,
|
|
38
|
+
output: process.stdout,
|
|
39
|
+
});
|
|
40
|
+
const answer = await new Promise(resolve => {
|
|
41
|
+
rl.question(`Are you sure you want to delete PR ${args.id}? (y/N) `, resolve);
|
|
42
|
+
});
|
|
43
|
+
rl.close();
|
|
44
|
+
if (answer.toLowerCase() !== 'y') {
|
|
45
|
+
this.log('Cancelled.');
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const response = await daemonDeletePr({
|
|
50
|
+
projectPath: cwd,
|
|
51
|
+
prId: args.id,
|
|
52
|
+
});
|
|
53
|
+
if (!response.success) {
|
|
54
|
+
this.error(response.error);
|
|
55
|
+
}
|
|
56
|
+
this.log(`Deleted PR ${args.id}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=pr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr.js","sourceRoot":"","sources":["../../../src/commands/delete/pr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAE3E;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,OAAO;IAC3C,MAAM,CAAU,IAAI,GAAG;QACrB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;YACd,WAAW,EAAE,gCAAgC;YAC7C,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAA;IAED,MAAM,CAAU,WAAW,GAAG,uBAAuB,CAAA;IAErD,MAAM,CAAU,QAAQ,GAAG;QACzB,+BAA+B;QAC/B,yCAAyC;QACzC,uCAAuC;KACxC,CAAA;IAED,MAAM,CAAU,KAAK,GAAG;QACtB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,0BAA0B;YACvC,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAClD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;QAErD,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAA;QAClE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAA;QACtE,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;YAC9C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;gBAClC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAA;YACF,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,OAAO,CAAC,EAAE;gBACjD,EAAE,CAAC,QAAQ,CACT,sCAAsC,IAAI,CAAC,EAAE,UAAU,EACvD,OAAO,CACR,CAAA;YACH,CAAC,CAAC,CAAA;YACF,EAAE,CAAC,KAAK,EAAE,CAAA;YACV,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;gBACjC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;gBACtB,OAAM;YACR,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;YACpC,WAAW,EAAE,GAAG;YAChB,IAAI,EAAE,IAAI,CAAC,EAAE;SACd,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC5B,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;IACnC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Get a single pull request by ID or display number
|
|
4
|
+
*/
|
|
5
|
+
export default class GetPr extends Command {
|
|
6
|
+
static args: {
|
|
7
|
+
id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
static description: string;
|
|
10
|
+
static examples: string[];
|
|
11
|
+
static flags: {
|
|
12
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=pr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../../src/commands/get/pr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAMlD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IACxC,OAAgB,IAAI;;MAKnB;IAED,OAAgB,WAAW,SAC0B;IAErD,OAAgB,QAAQ,WAIvB;IAED,OAAgB,KAAK;;MAKpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyDlC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
2
|
+
import { daemonGetPr } from '../../daemon/daemon-get-pr.js';
|
|
3
|
+
import { daemonGetPrByDisplayNumber } from '../../daemon/daemon-get-pr-by-display-number.js';
|
|
4
|
+
import { daemonIsInitialized } from '../../daemon/daemon-is-initialized.js';
|
|
5
|
+
/**
|
|
6
|
+
* Get a single pull request by ID or display number
|
|
7
|
+
*/
|
|
8
|
+
export default class GetPr extends Command {
|
|
9
|
+
static args = {
|
|
10
|
+
id: Args.string({
|
|
11
|
+
description: 'PR ID (UUID) or display number',
|
|
12
|
+
required: true,
|
|
13
|
+
}),
|
|
14
|
+
};
|
|
15
|
+
static description = 'Get a single pull request by ID or display number';
|
|
16
|
+
static examples = [
|
|
17
|
+
'<%= config.bin %> get pr 1',
|
|
18
|
+
'<%= config.bin %> get pr abc123-uuid',
|
|
19
|
+
'<%= config.bin %> get pr 1 --json',
|
|
20
|
+
];
|
|
21
|
+
static flags = {
|
|
22
|
+
json: Flags.boolean({
|
|
23
|
+
description: 'Output as JSON',
|
|
24
|
+
default: false,
|
|
25
|
+
}),
|
|
26
|
+
};
|
|
27
|
+
async run() {
|
|
28
|
+
const { args, flags } = await this.parse(GetPr);
|
|
29
|
+
const cwd = process.env['CENTY_CWD'] ?? process.cwd();
|
|
30
|
+
const initStatus = await daemonIsInitialized({ projectPath: cwd });
|
|
31
|
+
if (!initStatus.initialized) {
|
|
32
|
+
this.error('.centy folder not initialized. Run "centy init" first.');
|
|
33
|
+
}
|
|
34
|
+
// Try to parse as display number first
|
|
35
|
+
const displayNumber = Number.parseInt(args.id, 10);
|
|
36
|
+
const isDisplayNumber = !Number.isNaN(displayNumber) && displayNumber > 0;
|
|
37
|
+
const pr = isDisplayNumber
|
|
38
|
+
? await daemonGetPrByDisplayNumber({
|
|
39
|
+
projectPath: cwd,
|
|
40
|
+
displayNumber,
|
|
41
|
+
})
|
|
42
|
+
: await daemonGetPr({
|
|
43
|
+
projectPath: cwd,
|
|
44
|
+
prId: args.id,
|
|
45
|
+
});
|
|
46
|
+
if (flags.json) {
|
|
47
|
+
this.log(JSON.stringify(pr, null, 2));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const meta = pr.metadata;
|
|
51
|
+
this.log(`PR #${pr.displayNumber}`);
|
|
52
|
+
this.log(`ID: ${pr.id}`);
|
|
53
|
+
this.log(`Title: ${pr.title}`);
|
|
54
|
+
this.log(`Status: ${meta !== undefined ? meta.status : 'unknown'}`);
|
|
55
|
+
this.log(`Priority: ${meta !== undefined ? (meta.priorityLabel !== '' ? meta.priorityLabel : `P${meta.priority}`) : 'P?'}`);
|
|
56
|
+
this.log(`Branch: ${meta !== undefined ? `${meta.sourceBranch} -> ${meta.targetBranch}` : '? -> ?'}`);
|
|
57
|
+
if (meta !== undefined && meta.linkedIssues.length > 0) {
|
|
58
|
+
this.log(`Linked Issues: ${meta.linkedIssues.join(', ')}`);
|
|
59
|
+
}
|
|
60
|
+
if (meta !== undefined && meta.reviewers.length > 0) {
|
|
61
|
+
this.log(`Reviewers: ${meta.reviewers.join(', ')}`);
|
|
62
|
+
}
|
|
63
|
+
this.log(`Created: ${meta !== undefined ? meta.createdAt : 'unknown'}`);
|
|
64
|
+
this.log(`Updated: ${meta !== undefined ? meta.updatedAt : 'unknown'}`);
|
|
65
|
+
if (meta !== undefined && meta.mergedAt !== '') {
|
|
66
|
+
this.log(`Merged: ${meta.mergedAt}`);
|
|
67
|
+
}
|
|
68
|
+
if (meta !== undefined && meta.closedAt !== '') {
|
|
69
|
+
this.log(`Closed: ${meta.closedAt}`);
|
|
70
|
+
}
|
|
71
|
+
if (pr.description) {
|
|
72
|
+
this.log(`\nDescription:\n${pr.description}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=pr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr.js","sourceRoot":"","sources":["../../../src/commands/get/pr.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ export default class ListProjects extends Command {
|
|
|
7
7
|
static examples: string[];
|
|
8
8
|
static flags: {
|
|
9
9
|
'include-stale': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
'include-uninitialized': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
11
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
12
|
};
|
|
12
13
|
run(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../../src/commands/list/projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAI5C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAC/C,OAAgB,WAAW,SAAoC;IAE/D,OAAgB,QAAQ,
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../../src/commands/list/projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAI5C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAC/C,OAAgB,WAAW,SAAoC;IAE/D,OAAgB,QAAQ,WAKvB;IAED,OAAgB,KAAK;;;;MAapB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAoClC"}
|
|
@@ -8,6 +8,7 @@ export default class ListProjects extends Command {
|
|
|
8
8
|
static examples = [
|
|
9
9
|
'<%= config.bin %> list projects',
|
|
10
10
|
'<%= config.bin %> list projects --include-stale',
|
|
11
|
+
'<%= config.bin %> list projects --include-uninitialized',
|
|
11
12
|
'<%= config.bin %> list projects --json',
|
|
12
13
|
];
|
|
13
14
|
static flags = {
|
|
@@ -15,6 +16,10 @@ export default class ListProjects extends Command {
|
|
|
15
16
|
description: 'Include projects where path no longer exists',
|
|
16
17
|
default: false,
|
|
17
18
|
}),
|
|
19
|
+
'include-uninitialized': Flags.boolean({
|
|
20
|
+
description: 'Include projects that are not initialized',
|
|
21
|
+
default: false,
|
|
22
|
+
}),
|
|
18
23
|
json: Flags.boolean({
|
|
19
24
|
description: 'Output as JSON',
|
|
20
25
|
default: false,
|
|
@@ -24,6 +29,7 @@ export default class ListProjects extends Command {
|
|
|
24
29
|
const { flags } = await this.parse(ListProjects);
|
|
25
30
|
const response = await daemonListProjects({
|
|
26
31
|
includeStale: flags['include-stale'],
|
|
32
|
+
includeUninitialized: flags['include-uninitialized'],
|
|
27
33
|
});
|
|
28
34
|
if (flags.json) {
|
|
29
35
|
this.log(JSON.stringify(response.projects, null, 2));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../src/commands/list/projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AAEzE;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAC/C,MAAM,CAAU,WAAW,GAAG,iCAAiC,CAAA;IAE/D,MAAM,CAAU,QAAQ,GAAG;QACzB,iCAAiC;QACjC,iDAAiD;QACjD,wCAAwC;KACzC,CAAA;IAED,MAAM,CAAU,KAAK,GAAG;QACtB,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC;YAC7B,WAAW,EAAE,8CAA8C;YAC3D,OAAO,EAAE,KAAK;SACf,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YAClB,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAEhD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC;YACxC,YAAY,EAAE,KAAK,CAAC,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../src/commands/list/projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AAEzE;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAC/C,MAAM,CAAU,WAAW,GAAG,iCAAiC,CAAA;IAE/D,MAAM,CAAU,QAAQ,GAAG;QACzB,iCAAiC;QACjC,iDAAiD;QACjD,yDAAyD;QACzD,wCAAwC;KACzC,CAAA;IAED,MAAM,CAAU,KAAK,GAAG;QACtB,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC;YAC7B,WAAW,EAAE,8CAA8C;YAC3D,OAAO,EAAE,KAAK;SACf,CAAC;QACF,uBAAuB,EAAE,KAAK,CAAC,OAAO,CAAC;YACrC,WAAW,EAAE,2CAA2C;YACxD,OAAO,EAAE,KAAK;SACf,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YAClB,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAEhD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC;YACxC,YAAY,EAAE,KAAK,CAAC,eAAe,CAAC;YACpC,oBAAoB,EAAE,KAAK,CAAC,uBAAuB,CAAC;SACrD,CAAC,CAAA;QAEF,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YACpD,OAAM;QACR,CAAC;QAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;YACtC,OAAM;QACR,CAAC;QAED,uBAAuB;QACvB,MAAM,cAAc,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1D,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,UAAU;gBAAE,OAAO,CAAC,CAAC,CAAA;YAC5C,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU;gBAAE,OAAO,CAAC,CAAA;YAC3C,OAAO,CAAC,CAAA;QACV,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,UAAU,gBAAgB,CAAC,CAAA;QACtD,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;YAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;YAC/C,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;YACjD,IAAI,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;YACrC,IAAI,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,UAAU,WAAW,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;YACxE,IAAI,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;YACtD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACd,CAAC;IACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* List all pull requests in the .centy/prs folder
|
|
4
|
+
*/
|
|
5
|
+
export default class ListPrs extends Command {
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
status: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
source: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
target: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
priority: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
};
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=prs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prs.d.ts","sourceRoot":"","sources":["../../../src/commands/list/prs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAK5C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAC1C,OAAgB,WAAW,SAA2B;IAEtD,OAAgB,QAAQ,WAKvB;IAED,OAAgB,KAAK;;;;;;MAmBpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA6ClC"}
|