@ranimontagna/agent-toolkit 0.1.17 → 0.1.19

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.
Files changed (60) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/CONTRIBUTING.md +34 -0
  3. package/README.md +67 -18
  4. package/SECURITY.md +24 -0
  5. package/dist/src/args.js +29 -0
  6. package/dist/src/args.js.map +1 -1
  7. package/dist/src/doctor.d.ts +28 -0
  8. package/dist/src/doctor.js +78 -0
  9. package/dist/src/doctor.js.map +1 -0
  10. package/dist/src/lock-update.d.ts +22 -0
  11. package/dist/src/lock-update.js +130 -0
  12. package/dist/src/lock-update.js.map +1 -0
  13. package/dist/src/main.js +74 -1
  14. package/dist/src/main.js.map +1 -1
  15. package/dist/src/manifest.d.ts +26 -0
  16. package/dist/src/manifest.js +104 -0
  17. package/dist/src/manifest.js.map +1 -0
  18. package/dist/src/release.d.ts +4 -0
  19. package/dist/src/release.js +80 -0
  20. package/dist/src/release.js.map +1 -0
  21. package/dist/src/skills-audit.d.ts +10 -0
  22. package/dist/src/skills-audit.js +75 -0
  23. package/dist/src/skills-audit.js.map +1 -0
  24. package/dist/src/skills.js +7 -2
  25. package/dist/src/skills.js.map +1 -1
  26. package/dist/src/state.d.ts +7 -0
  27. package/dist/src/state.js +7 -0
  28. package/dist/src/state.js.map +1 -1
  29. package/dist/src/usage.js +10 -0
  30. package/dist/src/usage.js.map +1 -1
  31. package/package.json +11 -5
  32. package/skills/backend/api/api-design/NOTICE.md +1 -1
  33. package/skills/backend/api/api-design/SKILL.md +2 -1
  34. package/skills/backend/go/golang-patterns/NOTICE.md +1 -1
  35. package/skills/backend/go/golang-patterns/SKILL.md +2 -1
  36. package/skills/backend/java/java-coding-standards/NOTICE.md +1 -1
  37. package/skills/backend/java/java-coding-standards/SKILL.md +2 -1
  38. package/skills/backend/kotlin/kotlin-patterns/NOTICE.md +1 -1
  39. package/skills/backend/kotlin/kotlin-patterns/SKILL.md +2 -1
  40. package/skills/backend/kotlin/kotlin-testing/NOTICE.md +1 -1
  41. package/skills/backend/kotlin/kotlin-testing/SKILL.md +2 -1
  42. package/skills/frontend/accessibility/NOTICE.md +1 -1
  43. package/skills/frontend/accessibility/SKILL.md +2 -1
  44. package/skills/frontend/astro/astro-developer/NOTICE.md +1 -1
  45. package/skills/frontend/astro/astro-developer/SKILL.md +1 -1
  46. package/skills/frontend/astro/astro-developer/debugging.md +7 -7
  47. package/skills/frontend/design/ui-ux-pro-max/NOTICE.md +1 -1
  48. package/skills/frontend/design/ui-ux-pro-max/SKILL.md +30 -18
  49. package/skills/frontend/react/react-patterns/NOTICE.md +1 -1
  50. package/skills/frontend/react/react-patterns/SKILL.md +2 -1
  51. package/skills/frontend/react/react-performance/NOTICE.md +1 -1
  52. package/skills/frontend/react/react-performance/SKILL.md +2 -1
  53. package/skills/frontend/react/react-testing/NOTICE.md +1 -1
  54. package/skills/frontend/react/react-testing/SKILL.md +2 -1
  55. package/skills/general/code-reviewer/AGENTS.md +1 -1
  56. package/skills/general/code-reviewer/NOTICE.md +1 -1
  57. package/skills/general/thermo-nuclear-code-quality-review/LICENSE +21 -0
  58. package/skills/general/thermo-nuclear-code-quality-review/NOTICE.md +12 -0
  59. package/skills/general/thermo-nuclear-code-quality-review/SKILL.md +192 -0
  60. package/tools.lock.json +14 -14
package/CHANGELOG.md ADDED
@@ -0,0 +1,11 @@
1
+ # Changelog
2
+
3
+ ## 0.1.17
4
+
5
+ - Added shadcn Improve installation from a pinned source.
6
+ - Added GSAP skills under the bundled frontend package.
7
+ - Updated external tool and runtime pins.
8
+ - Published through the trusted npm release workflow.
9
+
10
+ Earlier versions were developed before this changelog existed. Use Git history
11
+ and npm release metadata for older details.
@@ -0,0 +1,34 @@
1
+ # Contributing
2
+
3
+ Agent Toolkit is a public installer for personal AI-agent workflows. Keep changes
4
+ small, pinned and easy to verify.
5
+
6
+ ## Development Flow
7
+
8
+ 1. Install dependencies with `pnpm install`.
9
+ 2. Make focused changes that follow the existing TypeScript module boundaries.
10
+ 3. Add or update tests for behavior that can regress.
11
+ 4. Run the release gate before claiming completion:
12
+
13
+ ```bash
14
+ rtk pnpm run check
15
+ ```
16
+
17
+ If `rtk` is unavailable, run the same command without the prefix.
18
+
19
+ ## Commit Messages
20
+
21
+ Use Conventional Commits:
22
+
23
+ ```text
24
+ feat: add doctor command
25
+ fix: preserve skill manifest entries
26
+ docs: document release flow
27
+ test: cover installer dry run
28
+ ```
29
+
30
+ ## External Sources
31
+
32
+ Keep `tools.lock.json` as the source of truth for external tools. New third-party
33
+ skills must use immutable public sources, include license/notice files when
34
+ vendored, and pass `pnpm run check`.
package/README.md CHANGED
@@ -118,6 +118,30 @@ Install only bundled Custom Skills into the current project:
118
118
  npx -y @ranimontagna/agent-toolkit --skills-only --codex --local
119
119
  ```
120
120
 
121
+ Preview an install plan without changing files:
122
+
123
+ ```bash
124
+ npx -y @ranimontagna/agent-toolkit --all --codex --dry-run
125
+ ```
126
+
127
+ Inspect selected tools and runtimes as JSON:
128
+
129
+ ```bash
130
+ npx -y @ranimontagna/agent-toolkit --doctor --json --codex
131
+ ```
132
+
133
+ Audit bundled Custom Skills metadata and local links:
134
+
135
+ ```bash
136
+ npx -y @ranimontagna/agent-toolkit --skills-audit
137
+ ```
138
+
139
+ Report newer candidates for pinned external tools:
140
+
141
+ ```bash
142
+ npx -y @ranimontagna/agent-toolkit --update-lock
143
+ ```
144
+
121
145
  Install only the `core` Custom Skills package:
122
146
 
123
147
  ```bash
@@ -226,6 +250,8 @@ skills/
226
250
  code-reviewer/
227
251
  SKILL.md
228
252
  rules/
253
+ thermo-nuclear-code-quality-review/
254
+ SKILL.md
229
255
  devops/
230
256
  docker-patterns/
231
257
  SKILL.md
@@ -345,6 +371,7 @@ Follow these steps...
345
371
  | `frontend` | `react-performance` | Copied from Affaan Mustafa's [`ECC`](https://github.com/affaan-m/ECC/tree/main/skills/react-performance) under the MIT license |
346
372
  | `frontend` | `react-testing` | Copied from Affaan Mustafa's [`ECC`](https://github.com/affaan-m/ECC/tree/main/skills/react-testing) under the MIT license |
347
373
  | `general` | `code-reviewer` | Copied from Shubhamsaboo's [`awesome-llm-apps`](https://github.com/Shubhamsaboo/awesome-llm-apps/tree/main/awesome_agent_skills/code-reviewer) under the repository Apache-2.0 license |
374
+ | `general` | `thermo-nuclear-code-quality-review` | Copied from Cursor's [`plugins`](https://github.com/cursor/plugins/tree/main/cursor-team-kit/skills/thermo-nuclear-code-quality-review) repository under the MIT license |
348
375
 
349
376
  Each React skill carries its own ECC `rules/react` references so Markdown links
350
377
  still resolve after the installer copies skills into flat runtime directories.
@@ -405,6 +432,16 @@ Install scope:
405
432
  --skills-path PATH Install an exact Custom Skill path
406
433
  --skills-list List discovered Custom Skills and exit
407
434
 
435
+ Operations:
436
+ --dry-run Print the selected install plan without changing files
437
+ --plan-only Alias for --dry-run
438
+ --doctor, --status Inspect selected tools and runtimes without installing
439
+ --json Emit machine-readable output for supported operations
440
+ --uninstall Remove files recorded in the Agent Toolkit manifest
441
+ --repair Re-run selected installs and refresh the manifest
442
+ --update-lock Report newer versions for pinned external sources
443
+ --skills-audit Validate bundled Custom Skills metadata and links
444
+
408
445
  Other:
409
446
  --install-missing-clis Install or update selected runtime CLIs
410
447
  --allow-mutable-sources Allow explicit mutable package sources like @latest
@@ -445,15 +482,15 @@ Defaults come from `tools.lock.json`:
445
482
 
446
483
  ```text
447
484
  CAVEMAN_PACKAGE=github:JuliusBrussee/caveman#25d22f864ad68cc447a4cb93aefde918aa4aec9f
448
- GRAPHIFY_PACKAGE=graphifyy==0.8.41
485
+ GRAPHIFY_PACKAGE=graphifyy==0.8.51
449
486
  GRAPHIFY_INSTALLER=uv
450
487
  GSD_PACKAGE=get-shit-done-cc@1.42.3
451
- SKILLS_CLI_PACKAGE=skills@1.5.11
488
+ SKILLS_CLI_PACKAGE=skills@1.5.13
452
489
  ANTIGRAVITY_INSTALL_SCRIPT=https://antigravity.google/cli/install.sh
453
- CLAUDE_CLI_PACKAGE=@anthropic-ai/claude-code@2.1.181
454
- CODEX_CLI_PACKAGE=@openai/codex@0.141.0
455
- OPENCODE_CLI_PACKAGE=opencode-ai@1.17.8
456
- GEMINI_CLI_PACKAGE=@google/gemini-cli@0.47.0
490
+ CLAUDE_CLI_PACKAGE=@anthropic-ai/claude-code@2.1.195
491
+ CODEX_CLI_PACKAGE=@openai/codex@0.142.3
492
+ OPENCODE_CLI_PACKAGE=opencode-ai@1.17.11
493
+ GEMINI_CLI_PACKAGE=@google/gemini-cli@0.49.0
457
494
  ```
458
495
 
459
496
  Mutable overrides like `@latest`, unpinned npm packages or GitHub package
@@ -479,31 +516,31 @@ Current external sources:
479
516
 
480
517
  | Tool | Locked source | Runtime verification |
481
518
  |---|---|---|
482
- | RTK | GitHub release `rtk-ai/rtk@v0.42.4` | Verifies the selected asset SHA-256 before extraction |
519
+ | RTK | GitHub release `rtk-ai/rtk@v0.43.0` | Verifies the selected asset SHA-256 before extraction |
483
520
  | Caveman | `JuliusBrussee/caveman` at commit `25d22f864ad68cc447a4cb93aefde918aa4aec9f` | Immutable GitHub npm spec |
484
- | Graphify | `graphifyy==0.8.41` | Blocks unpinned package overrides |
521
+ | Graphify | `graphifyy==0.8.51` | Blocks unpinned package overrides |
485
522
  | GSD | `get-shit-done-cc@1.42.3` | Blocks `@latest` unless explicitly allowed |
486
523
  | Improve | `shadcn/improve` at commit `03369ee6d7cafbfcecc4346539b05b3dc0a603bb` | Clones the pinned ref before Agent Skills CLI install |
487
- | Frontend Skills | `skills@1.5.11`, `pbakaus/impeccable` and `Leonxlnx/taste-skill` at pinned commits | Clones pinned refs before install |
524
+ | Frontend Skills | `skills@1.5.13`, `pbakaus/impeccable` and `Leonxlnx/taste-skill` at pinned commits | Clones pinned refs before install |
488
525
  | Runtime CLIs | Exact npm versions for Claude, Codex, OpenCode and Gemini | Installed or updated only when `--install-missing-clis` is enabled; Antigravity uses the official `agy` installer instead of npm |
489
526
 
490
527
  Bundled third-party skills preserve upstream attribution and license files:
491
528
 
492
529
  | Skill | Source commit | License |
493
530
  |---|---|---|
494
- | `api-design` | `affaan-m/ECC@0f84c0e2796703fbda87d577b2636351418c7442` | MIT |
531
+ | `api-design` | `affaan-m/ECC@2bc924faf2f8e893bfe0af86b1931283693c30ae` | MIT |
495
532
  | `fastify-best-practices` | `mcollina/skills@5b2a81354b6d10325da0db9decc9ce5ecc714138` | MIT |
496
- | `astro-developer` | `withastro/astro@c90ce9751c7862a7280e752549ef74298669693d` | MIT |
533
+ | `astro-developer` | `withastro/astro@e37dfe2a7623acd364d7e3556ecc9b31e3e45520` | MIT |
497
534
  | `gsap-*` | `greensock/gsap-skills@aed9cfd3277740755f6bfc1155c7aa645403b760` | MIT |
498
535
  | `react-native-expert` | `Jeffallan/claude-skills@e8be415bc94d8d6ebddc2fb50e5d03c6e27d4319` | MIT |
499
536
  | `react-native-unistyles-v3` | `jpudysz/react-native-unistyles@8b5e9fd281a81bdfd87d4fe9e6a0b042c84c5c83` | MIT |
500
- | `react-patterns` | `affaan-m/ECC@0f84c0e2796703fbda87d577b2636351418c7442` | MIT |
501
- | `react-performance` | `affaan-m/ECC@0f84c0e2796703fbda87d577b2636351418c7442` | MIT |
502
- | `react-testing` | `affaan-m/ECC@0f84c0e2796703fbda87d577b2636351418c7442` | MIT |
537
+ | `react-patterns` | `affaan-m/ECC@2bc924faf2f8e893bfe0af86b1931283693c30ae` | MIT |
538
+ | `react-performance` | `affaan-m/ECC@2bc924faf2f8e893bfe0af86b1931283693c30ae` | MIT |
539
+ | `react-testing` | `affaan-m/ECC@2bc924faf2f8e893bfe0af86b1931283693c30ae` | MIT |
503
540
  | `python-patterns` | `affaan-m/ECC@0f84c0e2796703fbda87d577b2636351418c7442` | MIT |
504
541
  | `python-testing` | `affaan-m/ECC@0f84c0e2796703fbda87d577b2636351418c7442` | MIT |
505
- | `kotlin-patterns` | `affaan-m/ECC@0f84c0e2796703fbda87d577b2636351418c7442` | MIT |
506
- | `kotlin-testing` | `affaan-m/ECC@0f84c0e2796703fbda87d577b2636351418c7442` | MIT |
542
+ | `kotlin-patterns` | `affaan-m/ECC@2bc924faf2f8e893bfe0af86b1931283693c30ae` | MIT |
543
+ | `kotlin-testing` | `affaan-m/ECC@2bc924faf2f8e893bfe0af86b1931283693c30ae` | MIT |
507
544
 
508
545
  Releases use npm trusted publishing through GitHub Actions OIDC. The npm
509
546
  package is published without a long-lived npm token, and npm automatically
@@ -592,6 +629,9 @@ pnpm run typecheck
592
629
  pnpm run lint
593
630
  pnpm run lint:fix
594
631
  pnpm run format
632
+ pnpm run release:patch
633
+ pnpm run release:minor
634
+ pnpm run release:major
595
635
  pnpm run security
596
636
  pnpm run test:unit
597
637
  pnpm run test:integration
@@ -621,8 +661,17 @@ Release a new npm version by updating `package.json`, pushing the change to
621
661
  `main`, then pushing a matching tag:
622
662
 
623
663
  ```bash
624
- git tag v0.1.17
625
- git push origin v0.1.17
664
+ git tag v0.1.19
665
+ git push origin v0.1.19
666
+ ```
667
+
668
+ For normal releases, prefer the scripted flow. It bumps `package.json`, updates
669
+ the README release tag example, runs `pnpm run check`, commits with a
670
+ Conventional Commit message and creates the local tag:
671
+
672
+ ```bash
673
+ pnpm run release:patch
674
+ git push origin main v0.1.18
626
675
  ```
627
676
 
628
677
  The `Release` workflow runs the full check and publishes the scoped package to
package/SECURITY.md ADDED
@@ -0,0 +1,24 @@
1
+ # Security
2
+
3
+ Agent Toolkit installs tools and skills into local agent runtime directories, so
4
+ supply-chain changes need careful review.
5
+
6
+ ## Reporting
7
+
8
+ Open a GitHub security advisory or a private issue with:
9
+
10
+ - affected version or commit;
11
+ - exact command used;
12
+ - affected runtime and install scope;
13
+ - relevant logs with secrets removed.
14
+
15
+ Do not paste tokens, private repository URLs or internal project names into
16
+ public issues.
17
+
18
+ ## Project Controls
19
+
20
+ - repository dependencies are locked by `pnpm-lock.yaml`;
21
+ - external installer sources are pinned in `tools.lock.json`;
22
+ - mutable sources are blocked unless `--allow-mutable-sources` is explicit;
23
+ - CI runs lint, typecheck, tests, build, Gitleaks and dependency audit;
24
+ - npm releases use trusted publishing through GitHub Actions OIDC.
package/dist/src/args.js CHANGED
@@ -169,6 +169,35 @@ export function parseArgs(argv) {
169
169
  state.listSkills = true;
170
170
  state.nonInteractive = true;
171
171
  break;
172
+ case "--dry-run":
173
+ case "--plan-only":
174
+ state.dryRun = true;
175
+ state.nonInteractive = true;
176
+ break;
177
+ case "--doctor":
178
+ case "--status":
179
+ state.doctor = true;
180
+ state.nonInteractive = true;
181
+ break;
182
+ case "--json":
183
+ state.jsonOutput = true;
184
+ break;
185
+ case "--uninstall":
186
+ state.uninstall = true;
187
+ state.nonInteractive = true;
188
+ break;
189
+ case "--repair":
190
+ state.repair = true;
191
+ state.nonInteractive = true;
192
+ break;
193
+ case "--update-lock":
194
+ state.updateLock = true;
195
+ state.nonInteractive = true;
196
+ break;
197
+ case "--skills-audit":
198
+ state.auditSkills = true;
199
+ state.nonInteractive = true;
200
+ break;
172
201
  case "--install-missing-clis":
173
202
  state.installMissingClis = true;
174
203
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { type InstallScope, type RuntimeName, type ToolName } from "./state.js";
2
+ import type { InstallerStatus } from "./status.js";
3
+ type DoctorIssue = {
4
+ kind: "tool" | "runtime" | "skills";
5
+ name: string;
6
+ message: string;
7
+ };
8
+ export type DoctorReport = {
9
+ command: "doctor";
10
+ ok: boolean;
11
+ scope: InstallScope;
12
+ customSkillsDir: string;
13
+ installMissingClis: boolean;
14
+ selectedTools: ToolName[];
15
+ selectedRuntimes: RuntimeName[];
16
+ status: InstallerStatus;
17
+ issues: DoctorIssue[];
18
+ };
19
+ type DoctorInput = {
20
+ selectedTools: ToolName[];
21
+ selectedRuntimes: RuntimeName[];
22
+ scope: InstallScope;
23
+ customSkillsDir: string;
24
+ installMissingClis: boolean;
25
+ };
26
+ export declare function buildDoctorReport(status: InstallerStatus, input: DoctorInput): DoctorReport;
27
+ export declare function formatDoctorReport(report: DoctorReport): string;
28
+ export {};
@@ -0,0 +1,78 @@
1
+ import { runtimeMeta, } from "./state.js";
2
+ function toolLabel(tool) {
3
+ switch (tool) {
4
+ case "rtk":
5
+ return "RTK";
6
+ case "caveman":
7
+ return "Caveman";
8
+ case "superpowers":
9
+ return "Superpowers";
10
+ case "graphify":
11
+ return "Graphify";
12
+ case "gsd":
13
+ return "GSD";
14
+ case "improve":
15
+ return "Improve";
16
+ case "frontend-skills":
17
+ return "Frontend Skills";
18
+ case "skills":
19
+ return "Custom Skills";
20
+ }
21
+ }
22
+ export function buildDoctorReport(status, input) {
23
+ const issues = [];
24
+ for (const tool of input.selectedTools) {
25
+ const detection = status.tools[tool];
26
+ if (detection.state === "missing") {
27
+ issues.push({
28
+ kind: tool === "skills" ? "skills" : "tool",
29
+ name: toolLabel(tool),
30
+ message: `${toolLabel(tool)} is selected but ${detection.summary}.`,
31
+ });
32
+ }
33
+ }
34
+ for (const runtime of input.selectedRuntimes) {
35
+ const detection = status.runtimes[runtime];
36
+ if (detection.state === "missing") {
37
+ const installHint = input.installMissingClis
38
+ ? "The installer is allowed to install or update it."
39
+ : "Re-run with --install-missing-clis or install it manually.";
40
+ issues.push({
41
+ kind: "runtime",
42
+ name: runtimeMeta[runtime].display,
43
+ message: `${runtimeMeta[runtime].display} is selected but ${detection.summary}. ${installHint}`,
44
+ });
45
+ }
46
+ }
47
+ return {
48
+ command: "doctor",
49
+ ok: issues.length === 0,
50
+ scope: input.scope,
51
+ customSkillsDir: input.customSkillsDir,
52
+ installMissingClis: input.installMissingClis,
53
+ selectedTools: input.selectedTools,
54
+ selectedRuntimes: input.selectedRuntimes,
55
+ status,
56
+ issues,
57
+ };
58
+ }
59
+ export function formatDoctorReport(report) {
60
+ const lines = [
61
+ "Doctor report",
62
+ `Scope: ${report.scope}`,
63
+ `Custom Skills source: ${report.customSkillsDir}`,
64
+ `Selected tools: ${report.selectedTools.join(", ") || "none"}`,
65
+ `Selected runtimes: ${report.selectedRuntimes.join(", ") || "none"}`,
66
+ "",
67
+ ];
68
+ if (report.issues.length === 0) {
69
+ lines.push("No blocking issues found for the selected plan.");
70
+ return lines.join("\n");
71
+ }
72
+ lines.push("Issues:");
73
+ for (const issue of report.issues) {
74
+ lines.push(`- ${issue.name}: ${issue.message}`);
75
+ }
76
+ return lines.join("\n");
77
+ }
78
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type RunResult } from "./system.js";
2
+ import { type ToolLock } from "./tool-lock.js";
3
+ export type LockUpdateItem = {
4
+ name: string;
5
+ source: "npm" | "pypi" | "github" | "github-release";
6
+ current: string;
7
+ latest?: string;
8
+ status: "current" | "update-available" | "unknown";
9
+ error?: string;
10
+ };
11
+ export type LockUpdateReport = {
12
+ command: "update-lock";
13
+ items: LockUpdateItem[];
14
+ };
15
+ type Clients = {
16
+ capture?: (command: string, args?: string[]) => RunResult;
17
+ fetchJson?: (url: string) => Promise<unknown>;
18
+ };
19
+ export declare function buildLockUpdateReport(lock?: ToolLock, clients?: Clients): Promise<LockUpdateReport>;
20
+ export declare function formatLockUpdateReport(report: LockUpdateReport): string;
21
+ export declare function printLockUpdateError(error: unknown): void;
22
+ export {};
@@ -0,0 +1,130 @@
1
+ import { err } from "./logger.js";
2
+ import { capture, fetchJson } from "./system.js";
3
+ import { loadToolLock } from "./tool-lock.js";
4
+ function itemStatus(current, latest) {
5
+ if (!latest)
6
+ return "unknown";
7
+ return current === latest ? "current" : "update-available";
8
+ }
9
+ async function latestNpmVersion(packageName, clients) {
10
+ const result = clients.capture("npm", [
11
+ "view",
12
+ packageName,
13
+ "version",
14
+ "--silent",
15
+ ]);
16
+ if (!result.ok) {
17
+ throw new Error(result.stderr.trim() || `npm view failed for ${packageName}`);
18
+ }
19
+ const version = result.stdout.trim().split(/\r?\n/).at(-1)?.trim();
20
+ if (!version)
21
+ throw new Error(`npm did not return a version for ${packageName}`);
22
+ return version;
23
+ }
24
+ async function latestPyPiVersion(packageName, clients) {
25
+ const response = (await clients.fetchJson(`https://pypi.org/pypi/${encodeURIComponent(packageName)}/json`));
26
+ if (!response.info?.version) {
27
+ throw new Error(`PyPI did not return a version for ${packageName}`);
28
+ }
29
+ return response.info.version;
30
+ }
31
+ async function latestGitHubCommit(repository, clients) {
32
+ const repo = (await clients.fetchJson(`https://api.github.com/repos/${repository}`));
33
+ const branch = repo.default_branch || "main";
34
+ const commit = (await clients.fetchJson(`https://api.github.com/repos/${repository}/commits/${encodeURIComponent(branch)}`));
35
+ if (!commit.sha)
36
+ throw new Error(`GitHub did not return a commit for ${repository}`);
37
+ return commit.sha;
38
+ }
39
+ async function latestGitHubRelease(repository, clients) {
40
+ const release = (await clients.fetchJson(`https://api.github.com/repos/${repository}/releases/latest`));
41
+ if (!release.tag_name) {
42
+ throw new Error(`GitHub did not return a latest release for ${repository}`);
43
+ }
44
+ return release.tag_name;
45
+ }
46
+ async function collectItem(item, resolver) {
47
+ try {
48
+ const latest = await resolver();
49
+ return {
50
+ ...item,
51
+ latest,
52
+ status: itemStatus(item.current, latest),
53
+ };
54
+ }
55
+ catch (error) {
56
+ return {
57
+ ...item,
58
+ status: "unknown",
59
+ error: error instanceof Error ? error.message : String(error),
60
+ };
61
+ }
62
+ }
63
+ export async function buildLockUpdateReport(lock = loadToolLock(), clients = {}) {
64
+ const resolvedClients = {
65
+ capture: clients.capture || capture,
66
+ fetchJson: clients.fetchJson || fetchJson,
67
+ };
68
+ const items = await Promise.all([
69
+ collectItem({
70
+ name: "RTK",
71
+ source: "github-release",
72
+ current: lock.tools.rtk.tag,
73
+ }, () => latestGitHubRelease(lock.tools.rtk.repository, resolvedClients)),
74
+ collectItem({
75
+ name: "Caveman",
76
+ source: "github",
77
+ current: lock.tools.caveman.ref,
78
+ }, () => latestGitHubCommit(lock.tools.caveman.repository, resolvedClients)),
79
+ collectItem({
80
+ name: "Graphify",
81
+ source: "pypi",
82
+ current: lock.tools.graphify.version,
83
+ }, () => latestPyPiVersion(lock.tools.graphify.package, resolvedClients)),
84
+ collectItem({
85
+ name: "GSD",
86
+ source: "npm",
87
+ current: lock.tools.gsd.version,
88
+ }, () => latestNpmVersion(lock.tools.gsd.package, resolvedClients)),
89
+ collectItem({
90
+ name: "Improve",
91
+ source: "github",
92
+ current: lock.tools.improve.ref,
93
+ }, () => latestGitHubCommit(lock.tools.improve.repository, resolvedClients)),
94
+ collectItem({
95
+ name: "Agent Skills CLI",
96
+ source: "npm",
97
+ current: lock.tools.frontendSkills.skillsCli.version,
98
+ }, () => latestNpmVersion(lock.tools.frontendSkills.skillsCli.package, resolvedClients)),
99
+ collectItem({
100
+ name: "Impeccable",
101
+ source: "github",
102
+ current: lock.tools.frontendSkills.impeccable.ref,
103
+ }, () => latestGitHubCommit(lock.tools.frontendSkills.impeccable.repository, resolvedClients)),
104
+ collectItem({
105
+ name: "Taste Skill",
106
+ source: "github",
107
+ current: lock.tools.frontendSkills.tasteSkill.ref,
108
+ }, () => latestGitHubCommit(lock.tools.frontendSkills.tasteSkill.repository, resolvedClients)),
109
+ ...["claude", "codex", "opencode", "gemini"].map((runtime) => collectItem({
110
+ name: `${runtime} CLI`,
111
+ source: "npm",
112
+ current: lock.runtimeClis[runtime].version,
113
+ }, () => latestNpmVersion(lock.runtimeClis[runtime].package, resolvedClients))),
114
+ ]);
115
+ return { command: "update-lock", items };
116
+ }
117
+ export function formatLockUpdateReport(report) {
118
+ const lines = ["External source update report"];
119
+ for (const item of report.items) {
120
+ const latest = item.latest || "unknown";
121
+ const suffix = item.error ? ` (${item.error})` : "";
122
+ lines.push(`- ${item.name}: ${item.current} -> ${latest} [${item.status}]${suffix}`);
123
+ }
124
+ lines.push("", "This command reports candidates only; update tools.lock.json intentionally after reviewing checksums and changelogs.");
125
+ return lines.join("\n");
126
+ }
127
+ export function printLockUpdateError(error) {
128
+ err(error instanceof Error ? error.message : String(error));
129
+ }
130
+ //# sourceMappingURL=lock-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock-update.js","sourceRoot":"","sources":["../../src/lock-update.ts"],"names":[],"mappings":"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"}