@kernel.chat/kbot 3.50.0 → 3.52.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 +43 -9
- package/dist/agent-protocol.test.d.ts +2 -0
- package/dist/agent-protocol.test.d.ts.map +1 -0
- package/dist/agent-protocol.test.js +730 -0
- package/dist/agent-protocol.test.js.map +1 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +34 -10
- package/dist/agent.js.map +1 -1
- package/dist/auth.js +3 -3
- package/dist/auth.js.map +1 -1
- package/dist/bench.d.ts +64 -0
- package/dist/bench.d.ts.map +1 -0
- package/dist/bench.js +973 -0
- package/dist/bench.js.map +1 -0
- package/dist/cli.js +144 -29
- package/dist/cli.js.map +1 -1
- package/dist/cloud-agent.d.ts +77 -0
- package/dist/cloud-agent.d.ts.map +1 -0
- package/dist/cloud-agent.js +743 -0
- package/dist/cloud-agent.js.map +1 -0
- package/dist/context.test.d.ts +2 -0
- package/dist/context.test.d.ts.map +1 -0
- package/dist/context.test.js +561 -0
- package/dist/context.test.js.map +1 -0
- package/dist/evolution.d.ts.map +1 -1
- package/dist/evolution.js +4 -1
- package/dist/evolution.js.map +1 -1
- package/dist/github-release.d.ts +61 -0
- package/dist/github-release.d.ts.map +1 -0
- package/dist/github-release.js +451 -0
- package/dist/github-release.js.map +1 -0
- package/dist/graph-memory.test.d.ts +2 -0
- package/dist/graph-memory.test.d.ts.map +1 -0
- package/dist/graph-memory.test.js +946 -0
- package/dist/graph-memory.test.js.map +1 -0
- package/dist/init-science.d.ts +43 -0
- package/dist/init-science.d.ts.map +1 -0
- package/dist/init-science.js +477 -0
- package/dist/init-science.js.map +1 -0
- package/dist/lab.d.ts +45 -0
- package/dist/lab.d.ts.map +1 -0
- package/dist/lab.js +1020 -0
- package/dist/lab.js.map +1 -0
- package/dist/lsp-deep.d.ts +101 -0
- package/dist/lsp-deep.d.ts.map +1 -0
- package/dist/lsp-deep.js +689 -0
- package/dist/lsp-deep.js.map +1 -0
- package/dist/memory.test.d.ts +2 -0
- package/dist/memory.test.d.ts.map +1 -0
- package/dist/memory.test.js +369 -0
- package/dist/memory.test.js.map +1 -0
- package/dist/multi-session.d.ts +164 -0
- package/dist/multi-session.d.ts.map +1 -0
- package/dist/multi-session.js +885 -0
- package/dist/multi-session.js.map +1 -0
- package/dist/self-eval.d.ts.map +1 -1
- package/dist/self-eval.js +5 -2
- package/dist/self-eval.js.map +1 -1
- package/dist/streaming.d.ts.map +1 -1
- package/dist/streaming.js +0 -1
- package/dist/streaming.js.map +1 -1
- package/dist/teach.d.ts +136 -0
- package/dist/teach.d.ts.map +1 -0
- package/dist/teach.js +915 -0
- package/dist/teach.js.map +1 -0
- package/dist/telemetry.d.ts +1 -1
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js.map +1 -1
- package/dist/tools/ableton.d.ts.map +1 -1
- package/dist/tools/ableton.js +255 -1
- package/dist/tools/ableton.js.map +1 -1
- package/dist/tools/browser-agent.js +2 -2
- package/dist/tools/browser-agent.js.map +1 -1
- package/dist/tools/forge.d.ts.map +1 -1
- package/dist/tools/forge.js +15 -26
- package/dist/tools/forge.js.map +1 -1
- package/dist/tools/git.d.ts.map +1 -1
- package/dist/tools/git.js +10 -7
- package/dist/tools/git.js.map +1 -1
- package/dist/voice-realtime.d.ts +54 -0
- package/dist/voice-realtime.d.ts.map +1 -0
- package/dist/voice-realtime.js +805 -0
- package/dist/voice-realtime.js.map +1 -0
- package/package.json +10 -3
|
@@ -0,0 +1,451 @@
|
|
|
1
|
+
// kbot GitHub Release — Auto-create GitHub releases from git history
|
|
2
|
+
//
|
|
3
|
+
// Usage:
|
|
4
|
+
// import { createGitHubRelease, generateChangelog } from './github-release.js'
|
|
5
|
+
// const result = await createGitHubRelease({ owner: 'isaacsight', repo: 'kernel' })
|
|
6
|
+
//
|
|
7
|
+
// CLI:
|
|
8
|
+
// $ kbot release # Create release from current version
|
|
9
|
+
// $ kbot release --draft # Create as draft
|
|
10
|
+
// $ kbot release --tag v3.52.0 # Override tag
|
|
11
|
+
// $ kbot release --dry-run # Preview without creating
|
|
12
|
+
import { execSync } from 'node:child_process';
|
|
13
|
+
import { readFileSync } from 'node:fs';
|
|
14
|
+
import { join } from 'node:path';
|
|
15
|
+
// ── Conventional commit categories ──
|
|
16
|
+
const COMMIT_CATEGORIES = {
|
|
17
|
+
'feat': { label: 'Features', emoji: '\u2728', order: 0 },
|
|
18
|
+
'fix': { label: 'Bug Fixes', emoji: '\uD83D\uDC1B', order: 1 },
|
|
19
|
+
'perf': { label: 'Performance', emoji: '\u26A1', order: 2 },
|
|
20
|
+
'security': { label: 'Security', emoji: '\uD83D\uDD12', order: 3 },
|
|
21
|
+
'refactor': { label: 'Refactoring', emoji: '\u267B\uFE0F', order: 4 },
|
|
22
|
+
'test': { label: 'Tests', emoji: '\uD83E\uDDEA', order: 5 },
|
|
23
|
+
'docs': { label: 'Documentation', emoji: '\uD83D\uDCDA', order: 6 },
|
|
24
|
+
'build': { label: 'Build & Deploy', emoji: '\uD83D\uDCE6', order: 7 },
|
|
25
|
+
'ci': { label: 'CI/CD', emoji: '\u2699\uFE0F', order: 8 },
|
|
26
|
+
'chore': { label: 'Maintenance', emoji: '\uD83E\uDDF9', order: 9 },
|
|
27
|
+
'style': { label: 'Code Style', emoji: '\uD83C\uDFA8', order: 10 },
|
|
28
|
+
'revert': { label: 'Reverts', emoji: '\u23EA', order: 11 },
|
|
29
|
+
};
|
|
30
|
+
const DEFAULT_CATEGORY = { label: 'Other Changes', emoji: '\uD83D\uDD27', order: 99 };
|
|
31
|
+
// ── Git helpers ──
|
|
32
|
+
function git(cmd) {
|
|
33
|
+
try {
|
|
34
|
+
return execSync(`git ${cmd}`, {
|
|
35
|
+
cwd: process.cwd(),
|
|
36
|
+
encoding: 'utf-8',
|
|
37
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
38
|
+
timeout: 15000,
|
|
39
|
+
}).trim();
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return '';
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function getLastTag() {
|
|
46
|
+
const tag = git('describe --tags --abbrev=0');
|
|
47
|
+
return tag || null;
|
|
48
|
+
}
|
|
49
|
+
function getPreviousTag(currentTag) {
|
|
50
|
+
const tag = git(`describe --tags --abbrev=0 ${currentTag}^`);
|
|
51
|
+
return tag || null;
|
|
52
|
+
}
|
|
53
|
+
function getAllTags() {
|
|
54
|
+
const output = git('tag --sort=-v:refname');
|
|
55
|
+
return output ? output.split('\n').filter(Boolean) : [];
|
|
56
|
+
}
|
|
57
|
+
function getCommitsBetween(fromRef, toRef) {
|
|
58
|
+
const separator = '---KBOT-COMMIT-SEP---';
|
|
59
|
+
const fieldSep = '---KBOT-FIELD-SEP---';
|
|
60
|
+
const format = `${fieldSep}%h${fieldSep}%s${fieldSep}%b${fieldSep}%an${fieldSep}%ai${separator}`;
|
|
61
|
+
const range = fromRef && toRef
|
|
62
|
+
? `${fromRef}..${toRef}`
|
|
63
|
+
: fromRef
|
|
64
|
+
? `${fromRef}..HEAD`
|
|
65
|
+
: toRef
|
|
66
|
+
? toRef
|
|
67
|
+
: '-30';
|
|
68
|
+
const output = git(`log ${range} --format="${format}"`);
|
|
69
|
+
if (!output)
|
|
70
|
+
return [];
|
|
71
|
+
return output
|
|
72
|
+
.split(separator)
|
|
73
|
+
.filter(chunk => chunk.trim())
|
|
74
|
+
.map(chunk => {
|
|
75
|
+
const fields = chunk.split(fieldSep).filter(Boolean);
|
|
76
|
+
if (fields.length < 2)
|
|
77
|
+
return null;
|
|
78
|
+
return {
|
|
79
|
+
hash: fields[0]?.trim() || '',
|
|
80
|
+
subject: fields[1]?.trim() || '',
|
|
81
|
+
body: fields[2]?.trim() || '',
|
|
82
|
+
author: fields[3]?.trim() || '',
|
|
83
|
+
date: fields[4]?.trim() || '',
|
|
84
|
+
};
|
|
85
|
+
})
|
|
86
|
+
.filter((c) => c !== null && c.hash.length > 0);
|
|
87
|
+
}
|
|
88
|
+
function getVersionFromPackageJson() {
|
|
89
|
+
try {
|
|
90
|
+
// Check packages/kbot/package.json first, then root
|
|
91
|
+
for (const rel of ['packages/kbot/package.json', 'package.json']) {
|
|
92
|
+
try {
|
|
93
|
+
const pkgPath = join(process.cwd(), rel);
|
|
94
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
95
|
+
if (pkg.version)
|
|
96
|
+
return pkg.version;
|
|
97
|
+
}
|
|
98
|
+
catch { /* try next */ }
|
|
99
|
+
}
|
|
100
|
+
return 'unreleased';
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
return 'unreleased';
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function getRepoInfo() {
|
|
107
|
+
const remote = git('remote get-url origin');
|
|
108
|
+
if (!remote)
|
|
109
|
+
return null;
|
|
110
|
+
// Parse SSH or HTTPS URLs
|
|
111
|
+
// git@github.com:owner/repo.git
|
|
112
|
+
// https://github.com/owner/repo.git
|
|
113
|
+
const sshMatch = remote.match(/git@github\.com:([^/]+)\/([^/.]+)/);
|
|
114
|
+
const httpsMatch = remote.match(/github\.com\/([^/]+)\/([^/.]+)/);
|
|
115
|
+
const match = sshMatch || httpsMatch;
|
|
116
|
+
if (match)
|
|
117
|
+
return { owner: match[1], repo: match[2] };
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Resolve a GitHub token from multiple sources.
|
|
122
|
+
* Priority: explicit token > GITHUB_TOKEN env > GH_TOKEN env > gh CLI auth
|
|
123
|
+
*/
|
|
124
|
+
function resolveToken(explicit) {
|
|
125
|
+
if (explicit)
|
|
126
|
+
return explicit;
|
|
127
|
+
// Environment variables
|
|
128
|
+
if (process.env.GITHUB_TOKEN)
|
|
129
|
+
return process.env.GITHUB_TOKEN;
|
|
130
|
+
if (process.env.GH_TOKEN)
|
|
131
|
+
return process.env.GH_TOKEN;
|
|
132
|
+
// Try gh CLI auth token
|
|
133
|
+
try {
|
|
134
|
+
const token = execSync('gh auth token', {
|
|
135
|
+
encoding: 'utf-8',
|
|
136
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
137
|
+
timeout: 5000,
|
|
138
|
+
}).trim();
|
|
139
|
+
if (token)
|
|
140
|
+
return token;
|
|
141
|
+
}
|
|
142
|
+
catch { /* gh not available or not authenticated */ }
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
// ── Commit categorization ──
|
|
146
|
+
/**
|
|
147
|
+
* Parse a commit subject into its conventional commit prefix.
|
|
148
|
+
* Returns the prefix key (e.g., 'feat', 'fix') or null.
|
|
149
|
+
*/
|
|
150
|
+
function parsePrefix(subject) {
|
|
151
|
+
const match = subject.match(/^(\w+)(?:\(.+?\))?(!)?:\s/);
|
|
152
|
+
if (!match)
|
|
153
|
+
return null;
|
|
154
|
+
return match[1].toLowerCase();
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Strip the conventional commit prefix from a subject line.
|
|
158
|
+
* "feat(auth): add OAuth" -> "add OAuth"
|
|
159
|
+
*/
|
|
160
|
+
function stripPrefix(subject) {
|
|
161
|
+
return subject.replace(/^\w+(?:\(.+?\))?(!)?:\s*/, '');
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Check if a commit is a breaking change (! suffix or BREAKING CHANGE in body).
|
|
165
|
+
*/
|
|
166
|
+
function isBreaking(commit) {
|
|
167
|
+
if (commit.subject.match(/^\w+(?:\(.+?\))?!:/))
|
|
168
|
+
return true;
|
|
169
|
+
if (commit.body.includes('BREAKING CHANGE'))
|
|
170
|
+
return true;
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Extract the scope from a conventional commit subject.
|
|
175
|
+
* "feat(auth): add OAuth" -> "auth"
|
|
176
|
+
*/
|
|
177
|
+
function extractScope(subject) {
|
|
178
|
+
const match = subject.match(/^\w+\(([^)]+)\)/);
|
|
179
|
+
return match ? match[1] : null;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Categorize an array of commit subjects into labeled sections.
|
|
183
|
+
*/
|
|
184
|
+
export function categorizeCommits(commits) {
|
|
185
|
+
const groups = {};
|
|
186
|
+
for (const subject of commits) {
|
|
187
|
+
const prefix = parsePrefix(subject);
|
|
188
|
+
const category = prefix && COMMIT_CATEGORIES[prefix]
|
|
189
|
+
? COMMIT_CATEGORIES[prefix].label
|
|
190
|
+
: DEFAULT_CATEGORY.label;
|
|
191
|
+
if (!groups[category])
|
|
192
|
+
groups[category] = [];
|
|
193
|
+
groups[category].push(stripPrefix(subject));
|
|
194
|
+
}
|
|
195
|
+
return groups;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Format categorized commits into markdown release notes.
|
|
199
|
+
*/
|
|
200
|
+
export function formatReleaseNotes(categorized) {
|
|
201
|
+
const lines = [];
|
|
202
|
+
// Sort categories by defined order
|
|
203
|
+
const sortedCategories = Object.entries(categorized).sort(([a], [b]) => {
|
|
204
|
+
const orderA = Object.values(COMMIT_CATEGORIES).find(c => c.label === a)?.order ?? 99;
|
|
205
|
+
const orderB = Object.values(COMMIT_CATEGORIES).find(c => c.label === b)?.order ?? 99;
|
|
206
|
+
return orderA - orderB;
|
|
207
|
+
});
|
|
208
|
+
for (const [category, items] of sortedCategories) {
|
|
209
|
+
if (items.length === 0)
|
|
210
|
+
continue;
|
|
211
|
+
const meta = Object.values(COMMIT_CATEGORIES).find(c => c.label === category);
|
|
212
|
+
const emoji = meta?.emoji || DEFAULT_CATEGORY.emoji;
|
|
213
|
+
lines.push(`### ${emoji} ${category}`);
|
|
214
|
+
lines.push('');
|
|
215
|
+
for (const item of items) {
|
|
216
|
+
lines.push(`- ${item}`);
|
|
217
|
+
}
|
|
218
|
+
lines.push('');
|
|
219
|
+
}
|
|
220
|
+
return lines.join('\n');
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Generate a full changelog between two tags/refs.
|
|
224
|
+
* If no refs provided, auto-detects from the latest and previous tags.
|
|
225
|
+
*/
|
|
226
|
+
export function generateChangelog(fromTag, toTag) {
|
|
227
|
+
// Auto-detect refs if not provided
|
|
228
|
+
const to = toTag || 'HEAD';
|
|
229
|
+
const from = fromTag || getLastTag() || undefined;
|
|
230
|
+
const commits = getCommitsBetween(from, to === 'HEAD' ? undefined : to);
|
|
231
|
+
if (commits.length === 0) {
|
|
232
|
+
return '> No commits found for this range.\n';
|
|
233
|
+
}
|
|
234
|
+
// Separate breaking changes
|
|
235
|
+
const breaking = [];
|
|
236
|
+
const regular = [];
|
|
237
|
+
for (const commit of commits) {
|
|
238
|
+
if (isBreaking(commit)) {
|
|
239
|
+
breaking.push(commit);
|
|
240
|
+
}
|
|
241
|
+
regular.push(commit);
|
|
242
|
+
}
|
|
243
|
+
// Group regular commits by category
|
|
244
|
+
const groups = {};
|
|
245
|
+
for (const commit of regular) {
|
|
246
|
+
const prefix = parsePrefix(commit.subject);
|
|
247
|
+
const category = prefix && COMMIT_CATEGORIES[prefix]
|
|
248
|
+
? COMMIT_CATEGORIES[prefix].label
|
|
249
|
+
: DEFAULT_CATEGORY.label;
|
|
250
|
+
if (!groups[category])
|
|
251
|
+
groups[category] = { items: [], hashes: [] };
|
|
252
|
+
const scope = extractScope(commit.subject);
|
|
253
|
+
const clean = stripPrefix(commit.subject);
|
|
254
|
+
const display = scope ? `**${scope}**: ${clean}` : clean;
|
|
255
|
+
groups[category].items.push(display);
|
|
256
|
+
groups[category].hashes.push(commit.hash);
|
|
257
|
+
}
|
|
258
|
+
// Build markdown
|
|
259
|
+
const lines = [];
|
|
260
|
+
// Breaking changes section
|
|
261
|
+
if (breaking.length > 0) {
|
|
262
|
+
lines.push('### \u26A0\uFE0F Breaking Changes');
|
|
263
|
+
lines.push('');
|
|
264
|
+
for (const commit of breaking) {
|
|
265
|
+
const clean = stripPrefix(commit.subject);
|
|
266
|
+
lines.push(`- **${clean}** (\`${commit.hash}\`)`);
|
|
267
|
+
if (commit.body) {
|
|
268
|
+
const breakingNote = commit.body
|
|
269
|
+
.split('\n')
|
|
270
|
+
.find(l => l.startsWith('BREAKING CHANGE:'));
|
|
271
|
+
if (breakingNote) {
|
|
272
|
+
lines.push(` ${breakingNote.replace('BREAKING CHANGE:', '').trim()}`);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
lines.push('');
|
|
277
|
+
}
|
|
278
|
+
// Categorized commits
|
|
279
|
+
const sortedCategories = Object.entries(groups).sort(([a], [b]) => {
|
|
280
|
+
const orderA = Object.values(COMMIT_CATEGORIES).find(c => c.label === a)?.order ?? 99;
|
|
281
|
+
const orderB = Object.values(COMMIT_CATEGORIES).find(c => c.label === b)?.order ?? 99;
|
|
282
|
+
return orderA - orderB;
|
|
283
|
+
});
|
|
284
|
+
for (const [category, { items, hashes }] of sortedCategories) {
|
|
285
|
+
if (items.length === 0)
|
|
286
|
+
continue;
|
|
287
|
+
const meta = Object.values(COMMIT_CATEGORIES).find(c => c.label === category);
|
|
288
|
+
const emoji = meta?.emoji || DEFAULT_CATEGORY.emoji;
|
|
289
|
+
lines.push(`### ${emoji} ${category}`);
|
|
290
|
+
lines.push('');
|
|
291
|
+
for (let i = 0; i < items.length; i++) {
|
|
292
|
+
lines.push(`- ${items[i]} (\`${hashes[i]}\`)`);
|
|
293
|
+
}
|
|
294
|
+
lines.push('');
|
|
295
|
+
}
|
|
296
|
+
// Stats footer
|
|
297
|
+
const from_label = from || 'beginning';
|
|
298
|
+
const to_label = to === 'HEAD' ? 'HEAD' : to;
|
|
299
|
+
lines.push('---');
|
|
300
|
+
lines.push(`**${commits.length}** commits from \`${from_label}\` to \`${to_label}\``);
|
|
301
|
+
lines.push('');
|
|
302
|
+
return lines.join('\n');
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Detect the current version tag and release name.
|
|
306
|
+
* Looks at package.json and recent git tags.
|
|
307
|
+
*/
|
|
308
|
+
function detectReleaseInfo() {
|
|
309
|
+
const version = getVersionFromPackageJson();
|
|
310
|
+
const tag = `v${version}`;
|
|
311
|
+
// Try to extract a feature name from recent commits
|
|
312
|
+
const commits = getCommitsBetween(getLastTag() || undefined);
|
|
313
|
+
const feats = commits.filter(c => parsePrefix(c.subject) === 'feat');
|
|
314
|
+
const featureHint = feats.length > 0
|
|
315
|
+
? stripPrefix(feats[0].subject).split(' ').slice(0, 4).join(' ')
|
|
316
|
+
: null;
|
|
317
|
+
const name = featureHint
|
|
318
|
+
? `${tag} \u2014 ${featureHint.charAt(0).toUpperCase() + featureHint.slice(1)}`
|
|
319
|
+
: tag;
|
|
320
|
+
const isPrerelease = version.includes('-alpha') ||
|
|
321
|
+
version.includes('-beta') ||
|
|
322
|
+
version.includes('-rc') ||
|
|
323
|
+
version.includes('-canary');
|
|
324
|
+
return {
|
|
325
|
+
tag,
|
|
326
|
+
name,
|
|
327
|
+
prerelease: isPrerelease,
|
|
328
|
+
draft: false,
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Create a GitHub release via the REST API.
|
|
333
|
+
*
|
|
334
|
+
* Generates a changelog, creates a git tag (if it doesn't exist),
|
|
335
|
+
* and publishes a release on GitHub.
|
|
336
|
+
*/
|
|
337
|
+
export async function createGitHubRelease(config, info) {
|
|
338
|
+
// Resolve token
|
|
339
|
+
const token = resolveToken(config.token);
|
|
340
|
+
if (!token) {
|
|
341
|
+
throw new Error('GitHub token not found. Set GITHUB_TOKEN env var, authenticate with `gh auth login`, or pass token in config.');
|
|
342
|
+
}
|
|
343
|
+
// Build release info from defaults + overrides
|
|
344
|
+
const detected = detectReleaseInfo();
|
|
345
|
+
const tag = info?.tag || detected.tag || `v${getVersionFromPackageJson()}`;
|
|
346
|
+
const previousTag = getPreviousTag(tag) || getLastTag() || undefined;
|
|
347
|
+
const body = info?.body || generateChangelog(previousTag, tag === `v${getVersionFromPackageJson()}` ? undefined : tag);
|
|
348
|
+
const name = info?.name || detected.name || tag;
|
|
349
|
+
const draft = info?.draft ?? detected.draft ?? false;
|
|
350
|
+
const prerelease = info?.prerelease ?? detected.prerelease ?? false;
|
|
351
|
+
// Create the tag locally if it doesn't exist
|
|
352
|
+
const existingTags = getAllTags();
|
|
353
|
+
if (!existingTags.includes(tag)) {
|
|
354
|
+
const tagResult = git(`tag -a ${tag} -m "Release ${tag}"`);
|
|
355
|
+
if (tagResult === '' && !getAllTags().includes(tag)) {
|
|
356
|
+
// tag command returns empty on success too, verify
|
|
357
|
+
const verify = git(`tag -l ${tag}`);
|
|
358
|
+
if (!verify) {
|
|
359
|
+
throw new Error(`Failed to create git tag: ${tag}`);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
// Push the tag
|
|
363
|
+
git(`push origin ${tag}`);
|
|
364
|
+
}
|
|
365
|
+
// Create release via GitHub API
|
|
366
|
+
const apiUrl = `https://api.github.com/repos/${config.owner}/${config.repo}/releases`;
|
|
367
|
+
const response = await fetch(apiUrl, {
|
|
368
|
+
method: 'POST',
|
|
369
|
+
headers: {
|
|
370
|
+
'Accept': 'application/vnd.github+json',
|
|
371
|
+
'Authorization': `Bearer ${token}`,
|
|
372
|
+
'X-GitHub-Api-Version': '2022-11-28',
|
|
373
|
+
'Content-Type': 'application/json',
|
|
374
|
+
},
|
|
375
|
+
body: JSON.stringify({
|
|
376
|
+
tag_name: tag,
|
|
377
|
+
target_commitish: 'main',
|
|
378
|
+
name,
|
|
379
|
+
body,
|
|
380
|
+
draft,
|
|
381
|
+
prerelease,
|
|
382
|
+
generate_release_notes: false,
|
|
383
|
+
}),
|
|
384
|
+
});
|
|
385
|
+
if (!response.ok) {
|
|
386
|
+
const errorBody = await response.text();
|
|
387
|
+
throw new Error(`GitHub API error ${response.status}: ${response.statusText}\n${errorBody}`);
|
|
388
|
+
}
|
|
389
|
+
const release = await response.json();
|
|
390
|
+
return {
|
|
391
|
+
url: release.html_url,
|
|
392
|
+
id: release.id,
|
|
393
|
+
tag: release.tag_name,
|
|
394
|
+
draft: release.draft,
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* CLI handler for `kbot release`.
|
|
399
|
+
* Called from cli.ts command registration.
|
|
400
|
+
*/
|
|
401
|
+
export async function runRelease(opts) {
|
|
402
|
+
const { printSuccess, printError, printInfo, printWarn } = await import('./ui.js');
|
|
403
|
+
// Detect repo info from git remote
|
|
404
|
+
const repoInfo = getRepoInfo();
|
|
405
|
+
if (!repoInfo) {
|
|
406
|
+
printError('Could not detect GitHub repo from git remote. Are you in a git repository?');
|
|
407
|
+
process.exit(1);
|
|
408
|
+
}
|
|
409
|
+
const version = getVersionFromPackageJson();
|
|
410
|
+
const tag = opts.tag || `v${version}`;
|
|
411
|
+
printInfo(`Preparing release: ${tag}`);
|
|
412
|
+
printInfo(`Repository: ${repoInfo.owner}/${repoInfo.repo}`);
|
|
413
|
+
// Generate changelog for preview
|
|
414
|
+
const previousTag = getLastTag();
|
|
415
|
+
const changelog = generateChangelog(previousTag || undefined);
|
|
416
|
+
if (opts.dryRun) {
|
|
417
|
+
printInfo('\n--- DRY RUN (no release created) ---\n');
|
|
418
|
+
printInfo(`Tag: ${tag}`);
|
|
419
|
+
printInfo(`Draft: ${opts.draft ? 'yes' : 'no'}`);
|
|
420
|
+
printInfo(`Previous tag: ${previousTag || '(none)'}`);
|
|
421
|
+
printInfo('\nRelease notes:\n');
|
|
422
|
+
process.stdout.write(changelog);
|
|
423
|
+
return;
|
|
424
|
+
}
|
|
425
|
+
// Check for token before attempting
|
|
426
|
+
const token = resolveToken();
|
|
427
|
+
if (!token) {
|
|
428
|
+
printError('No GitHub token found.');
|
|
429
|
+
printWarn('Set GITHUB_TOKEN environment variable or run `gh auth login`');
|
|
430
|
+
process.exit(1);
|
|
431
|
+
}
|
|
432
|
+
try {
|
|
433
|
+
const result = await createGitHubRelease({ owner: repoInfo.owner, repo: repoInfo.repo, token }, {
|
|
434
|
+
tag,
|
|
435
|
+
draft: opts.draft,
|
|
436
|
+
body: changelog,
|
|
437
|
+
});
|
|
438
|
+
if (opts.json) {
|
|
439
|
+
process.stdout.write(JSON.stringify(result, null, 2) + '\n');
|
|
440
|
+
return;
|
|
441
|
+
}
|
|
442
|
+
printSuccess(`Release created: ${result.tag}${result.draft ? ' (draft)' : ''}`);
|
|
443
|
+
printInfo(`URL: ${result.url}`);
|
|
444
|
+
printInfo(`ID: ${result.id}`);
|
|
445
|
+
}
|
|
446
|
+
catch (err) {
|
|
447
|
+
printError(err instanceof Error ? err.message : String(err));
|
|
448
|
+
process.exit(1);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
//# sourceMappingURL=github-release.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-release.js","sourceRoot":"","sources":["../src/github-release.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-memory.test.d.ts","sourceRoot":"","sources":["../src/graph-memory.test.ts"],"names":[],"mappings":""}
|