golem-cc 2.1.2 → 3.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/.claude/commands/golem/build.md +18 -0
- package/.claude/commands/golem/config.md +39 -0
- package/.claude/commands/golem/continue.md +73 -0
- package/.claude/commands/golem/doctor.md +46 -0
- package/.claude/commands/golem/document.md +138 -0
- package/.claude/commands/golem/help.md +58 -0
- package/.claude/commands/golem/pause.md +130 -0
- package/.claude/commands/golem/plan.md +111 -0
- package/.claude/commands/golem/review.md +166 -0
- package/.claude/commands/golem/security.md +186 -0
- package/.claude/commands/golem/simplify.md +76 -0
- package/.claude/commands/golem/spec.md +105 -0
- package/.claude/commands/golem/status.md +33 -0
- package/.golem/agents/code-simplifier.md +54 -0
- package/.golem/agents/review-architecture.md +59 -0
- package/.golem/agents/review-logic.md +50 -0
- package/.golem/agents/review-security.md +50 -0
- package/.golem/agents/review-style.md +48 -0
- package/.golem/agents/review-tests.md +48 -0
- package/.golem/agents/spec-builder.md +60 -0
- package/.golem/bin/golem.mjs +270 -0
- package/.golem/lib/build.mjs +557 -0
- package/.golem/lib/claude.mjs +95 -0
- package/.golem/lib/config.mjs +421 -0
- package/.golem/lib/display.mjs +191 -0
- package/.golem/lib/doctor.mjs +197 -0
- package/.golem/lib/document.mjs +792 -0
- package/.golem/lib/gates.mjs +78 -0
- package/.golem/lib/init.mjs +166 -0
- package/.golem/lib/output.mjs +40 -0
- package/.golem/lib/ratelimit.mjs +86 -0
- package/.golem/lib/security.mjs +603 -0
- package/.golem/lib/simplify.mjs +101 -0
- package/.golem/lib/tui.mjs +368 -0
- package/.golem/lib/usage.mjs +119 -0
- package/.golem/lib/worktree.mjs +509 -0
- package/.golem/prompts/build.md +23 -0
- package/.golem/prompts/document-inline.md +66 -0
- package/.golem/prompts/document-markdown.md +80 -0
- package/.golem/prompts/simplify.md +35 -0
- package/README.md +141 -142
- package/bin/golem-shim.mjs +36 -0
- package/bin/install.mjs +193 -0
- package/package.json +27 -32
- package/.env.example +0 -17
- package/bin/golem +0 -1040
- package/commands/golem/build.md +0 -235
- package/commands/golem/config.md +0 -55
- package/commands/golem/doctor.md +0 -137
- package/commands/golem/help.md +0 -212
- package/commands/golem/plan.md +0 -214
- package/commands/golem/review.md +0 -376
- package/commands/golem/security.md +0 -204
- package/commands/golem/simplify.md +0 -94
- package/commands/golem/spec.md +0 -226
- package/commands/golem/status.md +0 -60
- package/dist/api/freshworks.d.ts +0 -61
- package/dist/api/freshworks.d.ts.map +0 -1
- package/dist/api/freshworks.js +0 -119
- package/dist/api/freshworks.js.map +0 -1
- package/dist/api/gitea.d.ts +0 -96
- package/dist/api/gitea.d.ts.map +0 -1
- package/dist/api/gitea.js +0 -154
- package/dist/api/gitea.js.map +0 -1
- package/dist/cli/index.d.ts +0 -9
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -352
- package/dist/cli/index.js.map +0 -1
- package/dist/sync/ticket-sync.d.ts +0 -53
- package/dist/sync/ticket-sync.d.ts.map +0 -1
- package/dist/sync/ticket-sync.js +0 -226
- package/dist/sync/ticket-sync.js.map +0 -1
- package/dist/types.d.ts +0 -125
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -5
- package/dist/types.js.map +0 -1
- package/dist/worktree/manager.d.ts +0 -54
- package/dist/worktree/manager.d.ts.map +0 -1
- package/dist/worktree/manager.js +0 -190
- package/dist/worktree/manager.js.map +0 -1
- package/golem/agents/code-simplifier.md +0 -81
- package/golem/agents/spec-builder.md +0 -90
- package/golem/prompts/PROMPT_build.md +0 -71
- package/golem/prompts/PROMPT_plan.md +0 -102
package/dist/api/freshworks.js
DELETED
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Freshservice API client
|
|
3
|
-
*
|
|
4
|
-
* API Docs: https://api.freshservice.com/
|
|
5
|
-
*/
|
|
6
|
-
export class FreshworksClient {
|
|
7
|
-
baseUrl;
|
|
8
|
-
headers;
|
|
9
|
-
constructor(config) {
|
|
10
|
-
this.baseUrl = `https://${config.domain}/api/v2`;
|
|
11
|
-
// Freshservice uses Basic Auth with API key as username, 'X' as password
|
|
12
|
-
const auth = Buffer.from(`${config.apiKey}:X`).toString('base64');
|
|
13
|
-
this.headers = new Headers({
|
|
14
|
-
'Authorization': `Basic ${auth}`,
|
|
15
|
-
'Content-Type': 'application/json',
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
async request(method, endpoint, body) {
|
|
19
|
-
const response = await fetch(`${this.baseUrl}${endpoint}`, {
|
|
20
|
-
method,
|
|
21
|
-
headers: this.headers,
|
|
22
|
-
body: body ? JSON.stringify(body) : undefined,
|
|
23
|
-
});
|
|
24
|
-
if (!response.ok) {
|
|
25
|
-
const text = await response.text();
|
|
26
|
-
throw new Error(`Freshservice API error ${response.status}: ${text}`);
|
|
27
|
-
}
|
|
28
|
-
return response.json();
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Get a ticket by ID
|
|
32
|
-
*/
|
|
33
|
-
async getTicket(id) {
|
|
34
|
-
const result = await this.request('GET', `/tickets/${id}`);
|
|
35
|
-
return result.ticket;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Get tickets assigned to current user
|
|
39
|
-
*/
|
|
40
|
-
async getMyTickets() {
|
|
41
|
-
// Filter: new_and_my_open gets tickets assigned to me that are open
|
|
42
|
-
const result = await this.request('GET', '/tickets?filter=new_and_my_open');
|
|
43
|
-
return result.tickets;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Create a new ticket
|
|
47
|
-
*/
|
|
48
|
-
async createTicket(payload) {
|
|
49
|
-
const result = await this.request('POST', '/tickets', { ticket: payload });
|
|
50
|
-
return result.ticket;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Update a ticket
|
|
54
|
-
*/
|
|
55
|
-
async updateTicket(id, updates) {
|
|
56
|
-
const result = await this.request('PUT', `/tickets/${id}`, { ticket: updates });
|
|
57
|
-
return result.ticket;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Get current agent info
|
|
61
|
-
*/
|
|
62
|
-
async getCurrentAgent() {
|
|
63
|
-
const result = await this.request('GET', '/agents/me');
|
|
64
|
-
return result.agent;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Add a note to a ticket
|
|
68
|
-
*/
|
|
69
|
-
async addNote(ticketId, body, isPrivate = true) {
|
|
70
|
-
await this.request('POST', `/tickets/${ticketId}/notes`, {
|
|
71
|
-
body,
|
|
72
|
-
private: isPrivate,
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Close/resolve a ticket
|
|
77
|
-
* Note: Freshservice requires responder_id and resolution_notes when closing
|
|
78
|
-
*/
|
|
79
|
-
async closeTicket(id, resolution) {
|
|
80
|
-
// Get current agent to assign as responder (required for closing)
|
|
81
|
-
const agent = await this.getCurrentAgent();
|
|
82
|
-
const resolutionText = resolution || 'Completed via Golem';
|
|
83
|
-
const updates = {
|
|
84
|
-
status: 4, // Resolved in Freshservice (5 = Closed requires additional workflow)
|
|
85
|
-
responder_id: agent.id,
|
|
86
|
-
resolution_notes: resolutionText,
|
|
87
|
-
};
|
|
88
|
-
return this.updateTicket(id, updates);
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Format ticket ID for display (e.g., "INC-1234")
|
|
92
|
-
*/
|
|
93
|
-
static formatTicketId(id, type = 'Incident') {
|
|
94
|
-
const prefix = type === 'Incident' ? 'INC' : 'SR';
|
|
95
|
-
return `${prefix}-${id}`;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Parse ticket ID from string (e.g., "INC-1234" -> 1234)
|
|
99
|
-
*/
|
|
100
|
-
static parseTicketId(idString) {
|
|
101
|
-
const match = idString.match(/(?:INC|SR)-?(\d+)/i);
|
|
102
|
-
if (!match) {
|
|
103
|
-
throw new Error(`Invalid ticket ID format: ${idString}`);
|
|
104
|
-
}
|
|
105
|
-
return parseInt(match[1], 10);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Create client from environment variables
|
|
110
|
-
*/
|
|
111
|
-
export function createFreshworksClient() {
|
|
112
|
-
const domain = process.env.FRESH_DOMAIN;
|
|
113
|
-
const apiKey = process.env.FRESH_API_KEY;
|
|
114
|
-
if (!domain || !apiKey) {
|
|
115
|
-
throw new Error('Missing FRESH_DOMAIN or FRESH_API_KEY environment variables');
|
|
116
|
-
}
|
|
117
|
-
return new FreshworksClient({ domain, apiKey });
|
|
118
|
-
}
|
|
119
|
-
//# sourceMappingURL=freshworks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"freshworks.js","sourceRoot":"","sources":["../../src/api/freshworks.ts"],"names":[],"mappings":"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"}
|
package/dist/api/gitea.d.ts
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Gitea API client
|
|
3
|
-
*
|
|
4
|
-
* API Docs: https://docs.gitea.com/api/1.20/
|
|
5
|
-
* Swagger: {your-gitea}/api/swagger
|
|
6
|
-
*/
|
|
7
|
-
import type { GiteaIssue, GiteaIssueCreatePayload, GiteaPullRequest } from '../types.js';
|
|
8
|
-
export interface GiteaConfig {
|
|
9
|
-
baseUrl: string;
|
|
10
|
-
token: string;
|
|
11
|
-
org: string;
|
|
12
|
-
}
|
|
13
|
-
export declare class GiteaClient {
|
|
14
|
-
private baseUrl;
|
|
15
|
-
private headers;
|
|
16
|
-
private defaultOrg;
|
|
17
|
-
constructor(config: GiteaConfig);
|
|
18
|
-
private request;
|
|
19
|
-
private repoPath;
|
|
20
|
-
/**
|
|
21
|
-
* Get an issue by number
|
|
22
|
-
*/
|
|
23
|
-
getIssue(repo: string, number: number): Promise<GiteaIssue>;
|
|
24
|
-
/**
|
|
25
|
-
* List issues for a repo
|
|
26
|
-
*/
|
|
27
|
-
listIssues(repo: string, options?: {
|
|
28
|
-
state?: 'open' | 'closed' | 'all';
|
|
29
|
-
labels?: string[];
|
|
30
|
-
}): Promise<GiteaIssue[]>;
|
|
31
|
-
/**
|
|
32
|
-
* Find an issue by ticket ID prefix in the title (e.g., "[INC-123]")
|
|
33
|
-
* Returns the first matching issue or null if not found
|
|
34
|
-
*/
|
|
35
|
-
findIssueByTicketId(repo: string, ticketId: string): Promise<GiteaIssue | null>;
|
|
36
|
-
/**
|
|
37
|
-
* Create a new issue
|
|
38
|
-
*/
|
|
39
|
-
createIssue(repo: string, payload: GiteaIssueCreatePayload): Promise<GiteaIssue>;
|
|
40
|
-
/**
|
|
41
|
-
* Update an issue
|
|
42
|
-
*/
|
|
43
|
-
updateIssue(repo: string, number: number, updates: Partial<GiteaIssueCreatePayload> & {
|
|
44
|
-
state?: 'open' | 'closed';
|
|
45
|
-
}): Promise<GiteaIssue>;
|
|
46
|
-
/**
|
|
47
|
-
* Add a comment to an issue
|
|
48
|
-
*/
|
|
49
|
-
addIssueComment(repo: string, number: number, body: string): Promise<void>;
|
|
50
|
-
/**
|
|
51
|
-
* Close an issue
|
|
52
|
-
*/
|
|
53
|
-
closeIssue(repo: string, number: number): Promise<GiteaIssue>;
|
|
54
|
-
/**
|
|
55
|
-
* Get a pull request by number
|
|
56
|
-
*/
|
|
57
|
-
getPullRequest(repo: string, number: number): Promise<GiteaPullRequest>;
|
|
58
|
-
/**
|
|
59
|
-
* Create a pull request
|
|
60
|
-
*/
|
|
61
|
-
createPullRequest(repo: string, payload: {
|
|
62
|
-
title: string;
|
|
63
|
-
body: string;
|
|
64
|
-
head: string;
|
|
65
|
-
base: string;
|
|
66
|
-
}): Promise<GiteaPullRequest>;
|
|
67
|
-
/**
|
|
68
|
-
* Merge a pull request
|
|
69
|
-
*/
|
|
70
|
-
mergePullRequest(repo: string, number: number, options?: {
|
|
71
|
-
mergeStyle?: 'merge' | 'rebase' | 'squash';
|
|
72
|
-
title?: string;
|
|
73
|
-
message?: string;
|
|
74
|
-
}): Promise<void>;
|
|
75
|
-
/**
|
|
76
|
-
* List repos in the default org
|
|
77
|
-
*/
|
|
78
|
-
listOrgRepos(): Promise<{
|
|
79
|
-
name: string;
|
|
80
|
-
full_name: string;
|
|
81
|
-
html_url: string;
|
|
82
|
-
}[]>;
|
|
83
|
-
/**
|
|
84
|
-
* Get repo info
|
|
85
|
-
*/
|
|
86
|
-
getRepo(repo: string): Promise<{
|
|
87
|
-
name: string;
|
|
88
|
-
full_name: string;
|
|
89
|
-
default_branch: string;
|
|
90
|
-
}>;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Create client from environment variables
|
|
94
|
-
*/
|
|
95
|
-
export declare function createGiteaClient(): GiteaClient;
|
|
96
|
-
//# sourceMappingURL=gitea.d.ts.map
|
package/dist/api/gitea.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gitea.d.ts","sourceRoot":"","sources":["../../src/api/gitea.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEzF,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,WAAW;YASjB,OAAO;IAwBrB,OAAO,CAAC,QAAQ;IAUhB;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAKjE;;OAEG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO,GACrE,OAAO,CAAC,UAAU,EAAE,CAAC;IAaxB;;;OAGG;IACG,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAQrF;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IAKtF;;OAEG;IACG,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,GACxE,OAAO,CAAC,UAAU,CAAC;IAKtB;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhF;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAMnE;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAK7E;;OAEG;IACG,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,GACA,OAAO,CAAC,gBAAgB,CAAC;IAK5B;;OAEG;IACG,gBAAgB,CACpB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QACP,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KACb,GACL,OAAO,CAAC,IAAI,CAAC;IAWhB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAItF;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;CAIlG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAU/C"}
|
package/dist/api/gitea.js
DELETED
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Gitea API client
|
|
3
|
-
*
|
|
4
|
-
* API Docs: https://docs.gitea.com/api/1.20/
|
|
5
|
-
* Swagger: {your-gitea}/api/swagger
|
|
6
|
-
*/
|
|
7
|
-
export class GiteaClient {
|
|
8
|
-
baseUrl;
|
|
9
|
-
headers;
|
|
10
|
-
defaultOrg;
|
|
11
|
-
constructor(config) {
|
|
12
|
-
this.baseUrl = `${config.baseUrl}/api/v1`;
|
|
13
|
-
this.defaultOrg = config.org;
|
|
14
|
-
this.headers = new Headers({
|
|
15
|
-
'Authorization': `token ${config.token}`,
|
|
16
|
-
'Content-Type': 'application/json',
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
async request(method, endpoint, body) {
|
|
20
|
-
const response = await fetch(`${this.baseUrl}${endpoint}`, {
|
|
21
|
-
method,
|
|
22
|
-
headers: this.headers,
|
|
23
|
-
body: body ? JSON.stringify(body) : undefined,
|
|
24
|
-
});
|
|
25
|
-
if (!response.ok) {
|
|
26
|
-
const text = await response.text();
|
|
27
|
-
throw new Error(`Gitea API error ${response.status}: ${text}`);
|
|
28
|
-
}
|
|
29
|
-
// Handle empty responses (204 No Content)
|
|
30
|
-
if (response.status === 204) {
|
|
31
|
-
return undefined;
|
|
32
|
-
}
|
|
33
|
-
return response.json();
|
|
34
|
-
}
|
|
35
|
-
repoPath(repo) {
|
|
36
|
-
// If repo doesn't include org, prepend default org
|
|
37
|
-
if (!repo.includes('/')) {
|
|
38
|
-
return `${this.defaultOrg}/${repo}`;
|
|
39
|
-
}
|
|
40
|
-
return repo;
|
|
41
|
-
}
|
|
42
|
-
// ============ Issues ============
|
|
43
|
-
/**
|
|
44
|
-
* Get an issue by number
|
|
45
|
-
*/
|
|
46
|
-
async getIssue(repo, number) {
|
|
47
|
-
const path = this.repoPath(repo);
|
|
48
|
-
return this.request('GET', `/repos/${path}/issues/${number}`);
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* List issues for a repo
|
|
52
|
-
*/
|
|
53
|
-
async listIssues(repo, options = {}) {
|
|
54
|
-
const path = this.repoPath(repo);
|
|
55
|
-
const params = new URLSearchParams();
|
|
56
|
-
if (options.state)
|
|
57
|
-
params.set('state', options.state);
|
|
58
|
-
if (options.labels?.length)
|
|
59
|
-
params.set('labels', options.labels.join(','));
|
|
60
|
-
const query = params.toString();
|
|
61
|
-
return this.request('GET', `/repos/${path}/issues${query ? `?${query}` : ''}`);
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Find an issue by ticket ID prefix in the title (e.g., "[INC-123]")
|
|
65
|
-
* Returns the first matching issue or null if not found
|
|
66
|
-
*/
|
|
67
|
-
async findIssueByTicketId(repo, ticketId) {
|
|
68
|
-
// Search all issues (open and closed) for one with the ticket ID in the title
|
|
69
|
-
const issues = await this.listIssues(repo, { state: 'all' });
|
|
70
|
-
const prefix = `[${ticketId}]`;
|
|
71
|
-
const match = issues.find(issue => issue.title.startsWith(prefix));
|
|
72
|
-
return match || null;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Create a new issue
|
|
76
|
-
*/
|
|
77
|
-
async createIssue(repo, payload) {
|
|
78
|
-
const path = this.repoPath(repo);
|
|
79
|
-
return this.request('POST', `/repos/${path}/issues`, payload);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Update an issue
|
|
83
|
-
*/
|
|
84
|
-
async updateIssue(repo, number, updates) {
|
|
85
|
-
const path = this.repoPath(repo);
|
|
86
|
-
return this.request('PATCH', `/repos/${path}/issues/${number}`, updates);
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Add a comment to an issue
|
|
90
|
-
*/
|
|
91
|
-
async addIssueComment(repo, number, body) {
|
|
92
|
-
const path = this.repoPath(repo);
|
|
93
|
-
await this.request('POST', `/repos/${path}/issues/${number}/comments`, { body });
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Close an issue
|
|
97
|
-
*/
|
|
98
|
-
async closeIssue(repo, number) {
|
|
99
|
-
return this.updateIssue(repo, number, { state: 'closed' });
|
|
100
|
-
}
|
|
101
|
-
// ============ Pull Requests ============
|
|
102
|
-
/**
|
|
103
|
-
* Get a pull request by number
|
|
104
|
-
*/
|
|
105
|
-
async getPullRequest(repo, number) {
|
|
106
|
-
const path = this.repoPath(repo);
|
|
107
|
-
return this.request('GET', `/repos/${path}/pulls/${number}`);
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Create a pull request
|
|
111
|
-
*/
|
|
112
|
-
async createPullRequest(repo, payload) {
|
|
113
|
-
const path = this.repoPath(repo);
|
|
114
|
-
return this.request('POST', `/repos/${path}/pulls`, payload);
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Merge a pull request
|
|
118
|
-
*/
|
|
119
|
-
async mergePullRequest(repo, number, options = {}) {
|
|
120
|
-
const path = this.repoPath(repo);
|
|
121
|
-
await this.request('POST', `/repos/${path}/pulls/${number}/merge`, {
|
|
122
|
-
Do: options.mergeStyle || 'squash',
|
|
123
|
-
MergeTitleField: options.title,
|
|
124
|
-
MergeMessageField: options.message,
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
// ============ Repos ============
|
|
128
|
-
/**
|
|
129
|
-
* List repos in the default org
|
|
130
|
-
*/
|
|
131
|
-
async listOrgRepos() {
|
|
132
|
-
return this.request('GET', `/orgs/${this.defaultOrg}/repos`);
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Get repo info
|
|
136
|
-
*/
|
|
137
|
-
async getRepo(repo) {
|
|
138
|
-
const path = this.repoPath(repo);
|
|
139
|
-
return this.request('GET', `/repos/${path}`);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Create client from environment variables
|
|
144
|
-
*/
|
|
145
|
-
export function createGiteaClient() {
|
|
146
|
-
const baseUrl = process.env.GITEA_URL;
|
|
147
|
-
const token = process.env.GITEA_TOKEN;
|
|
148
|
-
const org = process.env.GITEA_ORG;
|
|
149
|
-
if (!baseUrl || !token || !org) {
|
|
150
|
-
throw new Error('Missing GITEA_URL, GITEA_TOKEN, or GITEA_ORG environment variables');
|
|
151
|
-
}
|
|
152
|
-
return new GiteaClient({ baseUrl, token, org });
|
|
153
|
-
}
|
|
154
|
-
//# sourceMappingURL=gitea.js.map
|
package/dist/api/gitea.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gitea.js","sourceRoot":"","sources":["../../src/api/gitea.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.d.ts
DELETED
package/dist/cli/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG"}
|