@kernelius/forge-cli 0.4.2 → 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 +39 -0
- package/SKILL.md +1 -0
- package/dist/index.js +14 -11
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,14 @@ 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
|
+
|
|
8
16
|
## [0.4.2] - 2026-02-01
|
|
9
17
|
|
|
10
18
|
### Changed
|
|
@@ -12,6 +20,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
12
20
|
- Now calls `/api/repositories/:owner/:name/pulls/:number/comments` instead of two API calls
|
|
13
21
|
- Reduces latency by eliminating the intermediate PR lookup call
|
|
14
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
|
+
|
|
15
45
|
## [0.3.1] - 2026-02-01
|
|
16
46
|
|
|
17
47
|
### Fixed
|
|
@@ -183,6 +213,15 @@ forge orgs create --name "Dev Team" --slug "dev-team" --type "team"
|
|
|
183
213
|
- OpenClaw SKILL.md for agent integration
|
|
184
214
|
- Support for agent API keys (`forge_agent_` prefix)
|
|
185
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
|
|
186
225
|
[0.1.3]: https://github.com/kernelius-hq/forge-cli/compare/v0.1.2...v0.1.3
|
|
187
226
|
[0.1.2]: https://github.com/kernelius-hq/forge-cli/compare/v0.1.1...v0.1.2
|
|
188
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) {
|
|
@@ -1729,7 +1732,7 @@ function createUserCommand() {
|
|
|
1729
1732
|
);
|
|
1730
1733
|
return;
|
|
1731
1734
|
}
|
|
1732
|
-
await apiPatch("/api/
|
|
1735
|
+
await apiPatch("/api/settings/profile", updates);
|
|
1733
1736
|
console.log(chalk7.green("\u2713 Profile updated successfully"));
|
|
1734
1737
|
} catch (error) {
|
|
1735
1738
|
console.error(chalk7.red(`Error: ${error.message}`));
|