@kernelius/forge-cli 0.4.1 → 0.4.3
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/CHANGELOG.md +46 -0
- package/SKILL.md +1 -0
- package/dist/index.js +17 -16
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,43 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.4.3] - 2026-02-02
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- **Starred repos**: Fixed `forge repos stars` command to use correct endpoint and response format
|
|
12
|
+
- Now calls `/api/users/:username/starred` instead of `/api/users/:id/starred`
|
|
13
|
+
- Correctly parses `repos` array from response instead of `stars`
|
|
14
|
+
- **User profile edit**: Fixed `forge user edit` command to use `/api/settings/profile` endpoint
|
|
15
|
+
|
|
16
|
+
## [0.4.2] - 2026-02-01
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- Simplified `prs comment` command to use repo-scoped endpoint directly
|
|
20
|
+
- Now calls `/api/repositories/:owner/:name/pulls/:number/comments` instead of two API calls
|
|
21
|
+
- Reduces latency by eliminating the intermediate PR lookup call
|
|
22
|
+
|
|
23
|
+
## [0.4.1] - 2026-02-01
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
- Updated default API URL to `https://forge-api.kernelius.com` in documentation
|
|
27
|
+
|
|
28
|
+
## [0.4.0] - 2026-02-01
|
|
29
|
+
|
|
30
|
+
### Added
|
|
31
|
+
- **Webhooks Command**: New `forge webhooks` command for managing repository webhooks
|
|
32
|
+
- `forge webhooks list` - List webhooks for a repository
|
|
33
|
+
- `forge webhooks create` - Create a new webhook with events and URL
|
|
34
|
+
- `forge webhooks update` - Update webhook configuration
|
|
35
|
+
- `forge webhooks delete` - Delete a webhook
|
|
36
|
+
- `forge webhooks test` - Send a test ping to a webhook
|
|
37
|
+
- `forge webhooks deliveries` - View recent webhook deliveries
|
|
38
|
+
- `forge webhooks events` - List available webhook event types
|
|
39
|
+
- `forge webhooks regenerate-secret` - Regenerate webhook secret
|
|
40
|
+
|
|
41
|
+
### Documentation
|
|
42
|
+
- Added comprehensive webhook documentation to SKILL.md
|
|
43
|
+
- Added webhook signature verification example
|
|
44
|
+
|
|
8
45
|
## [0.3.1] - 2026-02-01
|
|
9
46
|
|
|
10
47
|
### Fixed
|
|
@@ -176,6 +213,15 @@ forge orgs create --name "Dev Team" --slug "dev-team" --type "team"
|
|
|
176
213
|
- OpenClaw SKILL.md for agent integration
|
|
177
214
|
- Support for agent API keys (`forge_agent_` prefix)
|
|
178
215
|
|
|
216
|
+
[0.4.3]: https://github.com/kernelius-hq/forge-cli/compare/v0.4.2...v0.4.3
|
|
217
|
+
[0.4.2]: https://github.com/kernelius-hq/forge-cli/compare/v0.4.1...v0.4.2
|
|
218
|
+
[0.4.1]: https://github.com/kernelius-hq/forge-cli/compare/v0.4.0...v0.4.1
|
|
219
|
+
[0.4.0]: https://github.com/kernelius-hq/forge-cli/compare/v0.3.1...v0.4.0
|
|
220
|
+
[0.3.1]: https://github.com/kernelius-hq/forge-cli/compare/v0.3.0...v0.3.1
|
|
221
|
+
[0.3.0]: https://github.com/kernelius-hq/forge-cli/compare/v0.2.1...v0.3.0
|
|
222
|
+
[0.2.1]: https://github.com/kernelius-hq/forge-cli/compare/v0.2.0...v0.2.1
|
|
223
|
+
[0.2.0]: https://github.com/kernelius-hq/forge-cli/compare/v0.1.4...v0.2.0
|
|
224
|
+
[0.1.4]: https://github.com/kernelius-hq/forge-cli/compare/v0.1.3...v0.1.4
|
|
179
225
|
[0.1.3]: https://github.com/kernelius-hq/forge-cli/compare/v0.1.2...v0.1.3
|
|
180
226
|
[0.1.2]: https://github.com/kernelius-hq/forge-cli/compare/v0.1.1...v0.1.2
|
|
181
227
|
[0.1.1]: https://github.com/kernelius-hq/forge-cli/releases/tag/v0.1.1
|
package/SKILL.md
CHANGED
|
@@ -289,6 +289,7 @@ forge webhooks regenerate-secret --repo @owner/repo --id <webhook-id>
|
|
|
289
289
|
| `pr.updated` | PR title/body changed |
|
|
290
290
|
| `pr.merged` | Pull request merged |
|
|
291
291
|
| `pr.closed` | PR closed without merging |
|
|
292
|
+
| `pr.reopened` | PR reopened after being closed |
|
|
292
293
|
| `pr.review_requested` | Review requested on PR |
|
|
293
294
|
| `pr.reviewed` | Review submitted |
|
|
294
295
|
| `pr.commented` | Comment on PR |
|
package/dist/index.js
CHANGED
|
@@ -734,7 +734,8 @@ function createReposCommand() {
|
|
|
734
734
|
});
|
|
735
735
|
}
|
|
736
736
|
console.log(chalk3.green("\u2713 Repository created successfully"));
|
|
737
|
-
|
|
737
|
+
const repoOwner = repo.owner?.identifier || repo.ownerIdentifier || "unknown";
|
|
738
|
+
console.log(chalk3.dim(` @${repoOwner}/${repo.name}`));
|
|
738
739
|
if (template) {
|
|
739
740
|
const templateObj = getTemplateById(template);
|
|
740
741
|
console.log(chalk3.dim(` Template: ${templateObj?.name || template}`));
|
|
@@ -749,15 +750,17 @@ function createReposCommand() {
|
|
|
749
750
|
const [ownerIdentifier, name] = parseRepoArg(repoArg);
|
|
750
751
|
const user = await apiGet("/api/users/me");
|
|
751
752
|
const targetOrgIdentifier = options.org || user.username;
|
|
752
|
-
const
|
|
753
|
+
const result = await apiPost(
|
|
753
754
|
`/api/repositories/${ownerIdentifier}/${name}/fork`,
|
|
754
755
|
{
|
|
755
756
|
name: options.name || name,
|
|
756
757
|
orgIdentifier: targetOrgIdentifier
|
|
757
758
|
}
|
|
758
759
|
);
|
|
760
|
+
const fork = result.repo || result;
|
|
761
|
+
const forkOwner = fork.owner?.identifier || fork.ownerIdentifier || "unknown";
|
|
759
762
|
console.log(chalk3.green("\u2713 Repository forked successfully"));
|
|
760
|
-
console.log(chalk3.dim(` @${
|
|
763
|
+
console.log(chalk3.dim(` @${forkOwner}/${fork.name}`));
|
|
761
764
|
console.log(chalk3.dim(` Forked from @${ownerIdentifier}/${name}`));
|
|
762
765
|
} catch (error) {
|
|
763
766
|
console.error(chalk3.red(`Error: ${error.message}`));
|
|
@@ -794,18 +797,18 @@ function createReposCommand() {
|
|
|
794
797
|
try {
|
|
795
798
|
const user = await apiGet("/api/users/me");
|
|
796
799
|
const result = await apiGet(
|
|
797
|
-
`/api/users/${user.
|
|
800
|
+
`/api/users/${user.username}/starred`
|
|
798
801
|
);
|
|
799
|
-
const
|
|
800
|
-
if (
|
|
802
|
+
const repos2 = result.repos || [];
|
|
803
|
+
if (repos2.length === 0) {
|
|
801
804
|
console.log(chalk3.yellow("No starred repositories"));
|
|
802
805
|
return;
|
|
803
806
|
}
|
|
804
|
-
console.log(chalk3.bold(`Starred Repositories (${
|
|
807
|
+
console.log(chalk3.bold(`Starred Repositories (${repos2.length})`));
|
|
805
808
|
console.log();
|
|
806
|
-
for (const
|
|
807
|
-
const
|
|
808
|
-
const identifier = `@${
|
|
809
|
+
for (const repo of repos2) {
|
|
810
|
+
const ownerName = repo.owner?.identifier || repo.owner?.username || "unknown";
|
|
811
|
+
const identifier = `@${ownerName}/${repo.name}`;
|
|
809
812
|
const visibility = repo.visibility === "private" ? "\u{1F512}" : "\u{1F310}";
|
|
810
813
|
console.log(`${visibility} ${chalk3.cyan(identifier)}`);
|
|
811
814
|
if (repo.description) {
|
|
@@ -1261,12 +1264,10 @@ function createPrsCommand() {
|
|
|
1261
1264
|
prs.command("comment").description("Add a comment to a pull request").requiredOption("--repo <repo>", "Repository (@owner/name)").requiredOption("--number <number>", "PR number").requiredOption("--body <body>", "Comment text").action(async (options) => {
|
|
1262
1265
|
try {
|
|
1263
1266
|
const [ownerIdentifier, name] = parseRepoArg3(options.repo);
|
|
1264
|
-
|
|
1265
|
-
`/api/repositories/${ownerIdentifier}/${name}/pulls/${options.number}
|
|
1267
|
+
await apiPost(
|
|
1268
|
+
`/api/repositories/${ownerIdentifier}/${name}/pulls/${options.number}/comments`,
|
|
1269
|
+
{ body: options.body }
|
|
1266
1270
|
);
|
|
1267
|
-
await apiPost(`/api/pulls/${pr.id}/comments`, {
|
|
1268
|
-
body: options.body
|
|
1269
|
-
});
|
|
1270
1271
|
console.log(chalk5.green("\u2713 Comment added successfully"));
|
|
1271
1272
|
} catch (error) {
|
|
1272
1273
|
console.error(chalk5.red(`Error: ${error.message}`));
|
|
@@ -1731,7 +1732,7 @@ function createUserCommand() {
|
|
|
1731
1732
|
);
|
|
1732
1733
|
return;
|
|
1733
1734
|
}
|
|
1734
|
-
await apiPatch("/api/
|
|
1735
|
+
await apiPatch("/api/settings/profile", updates);
|
|
1735
1736
|
console.log(chalk7.green("\u2713 Profile updated successfully"));
|
|
1736
1737
|
} catch (error) {
|
|
1737
1738
|
console.error(chalk7.red(`Error: ${error.message}`));
|