githits 0.4.1 → 0.4.2

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.
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "GitHits plugins for Claude Code - code examples from global open source",
9
- "version": "0.4.1"
9
+ "version": "0.4.2"
10
10
  },
11
11
  "plugins": [
12
12
  {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "githits",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "Code examples from global open source for developers and AI assistants",
5
5
  "author": {
6
6
  "name": "GitHits"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "githits",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "Code examples from global open source for developers and AI assistants",
5
5
  "author": {
6
6
  "name": "GitHits"
package/dist/cli.js CHANGED
@@ -49,11 +49,11 @@ import {
49
49
  shouldRunUpdateCheck,
50
50
  startTelemetrySpan,
51
51
  withTelemetrySpan
52
- } from "./shared/chunk-rgvmtzjt.js";
52
+ } from "./shared/chunk-v8sths32.js";
53
53
  import {
54
54
  __require,
55
55
  version
56
- } from "./shared/chunk-f2ah8xnh.js";
56
+ } from "./shared/chunk-jdygt0ra.js";
57
57
 
58
58
  // src/cli.ts
59
59
  import { Command } from "commander";
@@ -411,6 +411,19 @@ function dim(text, useColors) {
411
411
  }
412
412
 
413
413
  // src/shared/pkgseer-registry.ts
414
+ var PKGSEER_REGISTRY_ARGS = [
415
+ "npm",
416
+ "pypi",
417
+ "hex",
418
+ "crates",
419
+ "nuget",
420
+ "maven",
421
+ "zig",
422
+ "vcpkg",
423
+ "packagist",
424
+ "rubygems",
425
+ "go"
426
+ ];
414
427
  var registryMap = {
415
428
  npm: "NPM",
416
429
  pypi: "PYPI",
@@ -420,8 +433,11 @@ var registryMap = {
420
433
  maven: "MAVEN",
421
434
  zig: "ZIG",
422
435
  vcpkg: "VCPKG",
423
- packagist: "PACKAGIST"
436
+ packagist: "PACKAGIST",
437
+ rubygems: "RUBYGEMS",
438
+ go: "GO"
424
439
  };
440
+ var PKGSEER_REGISTRY_LIST = PKGSEER_REGISTRY_ARGS.join(", ");
425
441
  function toPkgseerRegistry(registry) {
426
442
  return registryMap[registry];
427
443
  }
@@ -688,22 +704,12 @@ function isInvalidArgumentError(error2) {
688
704
  return error2.name.startsWith("Invalid") || error2.name.startsWith("Unsupported");
689
705
  }
690
706
  // src/shared/package-spec.ts
691
- var KNOWN_REGISTRIES = [
692
- "npm",
693
- "pypi",
694
- "hex",
695
- "crates",
696
- "nuget",
697
- "maven",
698
- "zig",
699
- "vcpkg",
700
- "packagist"
701
- ];
707
+ var KNOWN_REGISTRIES = PKGSEER_REGISTRY_ARGS;
702
708
 
703
709
  class UnsupportedRegistryError extends Error {
704
710
  attempted;
705
711
  constructor(attempted) {
706
- super(`Unsupported registry "${attempted}". Supported: ${KNOWN_REGISTRIES.join(", ")}.`);
712
+ super(`Unsupported registry "${attempted}". Supported: ${PKGSEER_REGISTRY_LIST}.`);
707
713
  this.attempted = attempted;
708
714
  this.name = "UnsupportedRegistryError";
709
715
  }
@@ -1764,7 +1770,7 @@ function buildListPackageDocsParams(input) {
1764
1770
  }
1765
1771
  const registry = input.registry?.trim().toLowerCase() ?? "";
1766
1772
  if (!isKnownPkgseerRegistryArg(registry)) {
1767
- throw new UnsupportedRegistryError(`Unsupported registry '${input.registry}'. Supported: npm, pypi, hex, crates, nuget, maven, zig, vcpkg, packagist.`);
1773
+ throw new UnsupportedRegistryError(`Unsupported registry '${input.registry}'. Supported: ${PKGSEER_REGISTRY_LIST}.`);
1768
1774
  }
1769
1775
  const params = {
1770
1776
  registry: toPkgseerRegistry(registry),
@@ -2012,9 +2018,11 @@ var SUPPORTED_DEPS_REGISTRIES = new Set([
2012
2018
  "HEX",
2013
2019
  "CRATES",
2014
2020
  "VCPKG",
2015
- "ZIG"
2021
+ "ZIG",
2022
+ "RUBYGEMS",
2023
+ "GO"
2016
2024
  ]);
2017
- var SUPPORTED_DEPS_REGISTRIES_HUMAN = "npm, pypi, hex, crates, vcpkg, and zig";
2025
+ var SUPPORTED_DEPS_REGISTRIES_HUMAN = "npm, pypi, hex, crates, vcpkg, zig, rubygems, and go";
2018
2026
  function supportsDependenciesRegistry(registry) {
2019
2027
  return SUPPORTED_DEPS_REGISTRIES.has(registry);
2020
2028
  }
@@ -2025,7 +2033,7 @@ function buildPackageDependenciesParams(input) {
2025
2033
  }
2026
2034
  const normalisedRegistryArg = input.registry?.trim().toLowerCase() ?? "";
2027
2035
  if (!isKnownPkgseerRegistryArg(normalisedRegistryArg)) {
2028
- throw new UnsupportedRegistryError(`Unsupported registry '${input.registry}'. Supported: npm, pypi, hex, crates, nuget, maven, zig, vcpkg, packagist.`);
2036
+ throw new UnsupportedRegistryError(`Unsupported registry '${input.registry}'. Supported: ${PKGSEER_REGISTRY_LIST}.`);
2029
2037
  }
2030
2038
  const registry = toPkgseerRegistry(normalisedRegistryArg);
2031
2039
  if (!supportsDependenciesRegistry(registry)) {
@@ -2831,7 +2839,7 @@ function buildPackageSummaryParams(input) {
2831
2839
  }
2832
2840
  const normalisedRegistry = input.registry?.trim().toLowerCase() ?? "";
2833
2841
  if (!isKnownPkgseerRegistryArg(normalisedRegistry)) {
2834
- throw new UnsupportedRegistryError(`Unsupported registry '${input.registry}'. Supported: npm, pypi, hex, crates, nuget, maven, zig, vcpkg, packagist.`);
2842
+ throw new UnsupportedRegistryError(`Unsupported registry '${input.registry}'. Supported: ${PKGSEER_REGISTRY_LIST}.`);
2835
2843
  }
2836
2844
  return {
2837
2845
  params: {
@@ -3233,7 +3241,7 @@ function buildPackageVulnerabilitiesParams(input) {
3233
3241
  }
3234
3242
  const normalisedRegistryArg = input.registry?.trim().toLowerCase() ?? "";
3235
3243
  if (!isKnownPkgseerRegistryArg(normalisedRegistryArg)) {
3236
- throw new UnsupportedRegistryError(`Unsupported registry '${input.registry}'. Supported: npm, pypi, hex, crates, nuget, maven, zig, vcpkg, packagist.`);
3244
+ throw new UnsupportedRegistryError(`Unsupported registry '${input.registry}'. Supported: ${PKGSEER_REGISTRY_LIST}.`);
3237
3245
  }
3238
3246
  const registry = toPkgseerRegistry(normalisedRegistryArg);
3239
3247
  if (!supportsVulnerabilitiesRegistry(registry)) {
@@ -4328,6 +4336,7 @@ async function loginFlow(options, deps, output = stdoutLoginOutput) {
4328
4336
  callback = await Promise.race([callbackServer.result, timeoutPromise]);
4329
4337
  if (timeoutId)
4330
4338
  clearTimeout(timeoutId);
4339
+ await callbackServer.close().catch(() => {});
4331
4340
  } catch (error2) {
4332
4341
  if (timeoutId)
4333
4342
  clearTimeout(timeoutId);
@@ -6084,7 +6093,7 @@ function buildCliListFilesParams(input) {
6084
6093
  throw new InvalidPackageSpecError(rewritten);
6085
6094
  }
6086
6095
  }
6087
- var REGISTRY_SPEC_HINT = /^(npm|pypi|hex|crates|nuget|maven|zig|vcpkg|packagist):/i;
6096
+ var REGISTRY_SPEC_HINT = new RegExp(`^(${PKGSEER_REGISTRY_ARGS.join("|")}):`, "i");
6088
6097
  function resolvePositionals(firstArg, secondArg, hasRepoUrl) {
6089
6098
  if (hasRepoUrl) {
6090
6099
  if (secondArg !== undefined) {
@@ -6110,8 +6119,7 @@ and \`githits code grep\`.
6110
6119
  filters intersect on top.
6111
6120
 
6112
6121
  Addressing: <spec> (registry:name[@version]) OR --repo-url <url>
6113
- --git-ref <ref>. Supported registries: npm, pypi, hex, crates,
6114
- vcpkg, zig, nuget, maven, packagist.
6122
+ --git-ref <ref>. Supported registries: ${PKGSEER_REGISTRY_LIST}.
6115
6123
 
6116
6124
  By default each result is a bare path for easy piping; pass
6117
6125
  --verbose to include language / file-type / size annotations.
@@ -6263,7 +6271,7 @@ grep run. --symbol-field hydrates enclosing symbol metadata (appears under each
6263
6271
  match in --verbose output; full payload in --json).`;
6264
6272
  function registerCodeGrepCommand(pkgCommand) {
6265
6273
  return pkgCommand.command("grep").summary("Deterministic text grep over indexed dependency source").description(PKG_GREP_DESCRIPTION).argument("[spec-or-pattern]", "Spec mode: package spec (e.g. npm:express). Repo mode (with --repo-url): the pattern.").argument("[pattern-or-prefix]", "Spec mode: the pattern. Repo mode: optional path-prefix.").argument("[path-prefix]", "Spec mode only: optional path-prefix. Ignored with --repo-url.").option("--repo-url <url>", "Repository URL addressing (requires --git-ref)").option("--git-ref <ref>", "Tag, commit, branch, or HEAD. Required with --repo-url.").option("--path <path>", "Exact file path to grep").option("--glob <glob>", "Glob scope (repeatable)", collectRepeatable2, []).option("--ext <ext>", "Extension filter without leading dot (repeatable)", collectRepeatable2, []).option("--regex", "Interpret the pattern as RE2 regex").option("--case-sensitive", "Enable ASCII case-sensitive matching").option("-C, --context <n>", "Context lines before and after each match (0-10)").option("-B, --before-context <n>", "Context lines before each match (0-10)").option("-A, --after-context <n>", "Context lines after each match (0-10)").option("--exclude-docs", "Skip files classified as documentation").option("--exclude-tests", "Skip files classified as tests").option("--limit <n>", "Max matches to return on this page (1-1000, default 50)").option("--per-file-limit <n>", "Cap matches per file within this page (0-1000, 0 = unlimited)").option("--cursor <cursor>", "Opaque nextCursor from a previous grep result").option("--symbol-field <field>", `Repeatable; surfaces in --json and under each --verbose match. ${GREP_REPO_SYMBOL_FIELDS_NOTE}`, collectRepeatable2, []).option("--wait <ms>", `Indexing wait timeout (0-${MAX_WAIT_TIMEOUT_MS}, default ${DEFAULT_WAIT_TIMEOUT_MS})`).option("-v, --verbose", "Render grouped output with file headers").option("--json", "Emit the JSON envelope").action(async (arg1, arg2, arg3, options) => {
6266
- const { createContainer: createContainer2 } = await import("./shared/chunk-xzq0ecpa.js");
6274
+ const { createContainer: createContainer2 } = await import("./shared/chunk-q2mre780.js");
6267
6275
  const deps = await createContainer2();
6268
6276
  await pkgGrepAction(arg1, arg2, arg3, options, {
6269
6277
  codeNavigationService: deps.codeNavigationService,
@@ -6797,7 +6805,7 @@ function registerExampleCommand(program) {
6797
6805
  });
6798
6806
  }
6799
6807
  async function loadContainer() {
6800
- const { createContainer: createContainer2 } = await import("./shared/chunk-xzq0ecpa.js");
6808
+ const { createContainer: createContainer2 } = await import("./shared/chunk-q2mre780.js");
6801
6809
  return createContainer2();
6802
6810
  }
6803
6811
  // src/commands/feedback.ts
@@ -7969,17 +7977,7 @@ import { z as z4 } from "zod";
7969
7977
  // src/tools/code-navigation-shared.ts
7970
7978
  import { z as z3 } from "zod";
7971
7979
  var structuredCodeTargetSchema = z3.object({
7972
- registry: z3.enum([
7973
- "npm",
7974
- "pypi",
7975
- "hex",
7976
- "crates",
7977
- "nuget",
7978
- "maven",
7979
- "zig",
7980
- "vcpkg",
7981
- "packagist"
7982
- ]).optional().describe("Package registry (npm, pypi, hex, etc.). Required for package scope."),
7980
+ registry: z3.enum(PKGSEER_REGISTRY_ARGS).optional().describe(`Package registry (${PKGSEER_REGISTRY_LIST}). Required for package scope.`),
7983
7981
  package_name: z3.string().max(255).optional().describe("Package name. Required for package scope."),
7984
7982
  version: z3.string().max(100).optional().describe("Package version, e.g. '4.18.2' (defaults to latest). For package scope only."),
7985
7983
  repo_url: z3.string().optional().describe("Repository URL (GitHub). Required for repo scope. Example: https://github.com/expressjs/express"),
@@ -8232,7 +8230,7 @@ function isTextFormat3(format) {
8232
8230
  // src/tools/list-package-docs.ts
8233
8231
  import { z as z6 } from "zod";
8234
8232
  var schema5 = {
8235
- registry: z6.string().describe("Package registry. One of: npm, pypi, hex, crates, nuget, maven, zig, vcpkg, packagist."),
8233
+ registry: z6.string().describe(`Package registry. One of: ${PKGSEER_REGISTRY_LIST}.`),
8236
8234
  package_name: z6.string().describe("Package name (scoped names ok: @types/node)."),
8237
8235
  version: z6.string().optional().describe("Optional package version."),
8238
8236
  limit: z6.number().optional().describe("Max pages to return (1-500, default 100)."),
@@ -8339,7 +8337,7 @@ function resolveAddressing(input) {
8339
8337
  }
8340
8338
  const normalisedRegistryArg = input.registry?.trim().toLowerCase() ?? "";
8341
8339
  if (!isKnownPkgseerRegistryArg(normalisedRegistryArg)) {
8342
- throw new UnsupportedRegistryError(`Unsupported registry '${input.registry}'. Supported: npm, pypi, hex, crates, nuget, maven, zig, vcpkg, packagist.`);
8340
+ throw new UnsupportedRegistryError(`Unsupported registry '${input.registry}'. Supported: ${PKGSEER_REGISTRY_LIST}.`);
8343
8341
  }
8344
8342
  const registry = toPkgseerRegistry(normalisedRegistryArg);
8345
8343
  return { registry, packageName };
@@ -8546,7 +8544,7 @@ function stripAnsi(text) {
8546
8544
 
8547
8545
  // src/tools/package-changelog.ts
8548
8546
  var schema6 = {
8549
- registry: z7.string().optional().describe("Package registry (with `package_name`). Mutually exclusive with `repo_url`. Supported: npm, pypi, hex, crates, vcpkg, zig, nuget, maven, packagist."),
8547
+ registry: z7.string().optional().describe(`Package registry (with \`package_name\`). Mutually exclusive with \`repo_url\`. Supported: ${PKGSEER_REGISTRY_LIST}.`),
8550
8548
  package_name: z7.string().optional().describe("Package name (with `registry`). Scoped names ok (`@types/node`). Mutually exclusive with `repo_url`."),
8551
8549
  repo_url: z7.string().optional().describe("GitHub repository URL (https://…). Mutually exclusive with `registry` + `package_name`. Use when agents have a repo URL without a registry mapping."),
8552
8550
  from_version: z7.string().optional().describe("Start of version range. When set, the response returns every entry between `from_version` and `to_version` (or latest) with no count cap — range mode. Mutually exclusive with `limit`. Tag-style `v`-prefixed inputs are rejected."),
@@ -8556,7 +8554,7 @@ var schema6 = {
8556
8554
  include_bodies: z7.boolean().optional().describe("When false, each entry in `entries.items[]` omits its `body` field. Default true. Set false when you only need the version / date / URL timeline — drops 10 KB+ per entry on large release notes."),
8557
8555
  format: z7.enum(["json", "text", "text-v1"]).optional().describe("Response format. Default `text-v1` is compact for agents. Pass `json` for the structured envelope.")
8558
8556
  };
8559
- var DESCRIPTION6 = "Release notes for a package or GitHub repo, newest-first. Default " + "latest mode returns the ten most recent entries (`limit` 1–50). " + "With `from_version`, returns every entry in the " + "`[from_version, to_version]` range (range mode, no count cap). " + "Address via `registry` + `package_name` or `repo_url` (mutually " + 'exclusive). Response includes optional `source` (`"releases"` / ' + '`"changelog_file"` / `"hexdocs"`) when a concrete changelog source ' + 'exists, `mode` (`"latest"` or `"range"`), ' + 'and entries with markdown body previews. Pass `format: "json"` ' + "for the structured envelope with full markdown bodies. Set " + "`include_bodies: false` for a version / date / URL timeline only. " + "Package-version entries without changelog text succeed with `source` " + "omitted; no-source plus no entries returns `NOT_FOUND`. Supports npm, " + "PyPI, Hex, Crates, vcpkg, Zig, NuGet, Maven, Packagist.";
8557
+ var DESCRIPTION6 = "Release notes for a package or GitHub repo, newest-first. Default " + "latest mode returns the ten most recent entries (`limit` 1–50). " + "With `from_version`, returns every entry in the " + "`[from_version, to_version]` range (range mode, no count cap). " + "Address via `registry` + `package_name` or `repo_url` (mutually " + 'exclusive). Response includes optional `source` (`"releases"` / ' + '`"changelog_file"` / `"hexdocs"`) when a concrete changelog source ' + 'exists, `mode` (`"latest"` or `"range"`), ' + 'and entries with markdown body previews. Pass `format: "json"` ' + "for the structured envelope with full markdown bodies. Set " + "`include_bodies: false` for a version / date / URL timeline only. " + "Package-version entries without changelog text succeed with `source` " + "omitted; no-source plus no entries returns `NOT_FOUND`. Supports npm, " + "PyPI, Hex, Crates, vcpkg, Zig, NuGet, Maven, Packagist, RubyGems, Go.";
8560
8558
  function createPackageChangelogTool(service) {
8561
8559
  return {
8562
8560
  name: "pkg_changelog",
@@ -8621,7 +8619,7 @@ function isTextFormat5(format) {
8621
8619
  // src/tools/package-dependencies.ts
8622
8620
  import { z as z8 } from "zod";
8623
8621
  var schema7 = {
8624
- registry: z8.string().describe("Package registry. Dependency data is available on npm, pypi, hex, crates, vcpkg, and zig."),
8622
+ registry: z8.string().describe(`Package registry. Dependency data is available on ${SUPPORTED_DEPS_REGISTRIES_HUMAN}.`),
8625
8623
  package_name: z8.string().describe("Package name (scoped names ok: @types/node)."),
8626
8624
  version: z8.string().optional().describe("Specific version to inspect. Defaults to latest when omitted. Tag-style inputs with a leading `v` (for example `v4.18.0`) are rejected — pass the canonical version (`4.18.0`)."),
8627
8625
  lifecycle: z8.union([z8.string(), z8.array(z8.string())]).optional().describe("Lifecycle breadth. Omit for runtime-only. Use `runtime` for explicit runtime-only, a concrete non-runtime lifecycle (`development`, `build`, `peer`, `optional`) for runtime plus matching groups, or `all` for runtime plus all available groups. Accepts a single value, a comma-separated string, or an array; `all` cannot be combined with other values. Uppercase is tolerated."),
@@ -8630,7 +8628,7 @@ var schema7 = {
8630
8628
  max_depth: z8.number().int().min(1).max(10).optional().describe("Cap the transitive traversal at this depth (1–10). Omit to get the backend's full graph. Requires `include_transitive: true` — passing `max_depth` without the transitive flag is rejected with `INVALID_ARGUMENT`."),
8631
8629
  format: z8.enum(["json", "text", "text-v1"]).optional().describe("Response format. Default `text-v1` is compact for agents. Pass `json` for the structured envelope.")
8632
8630
  };
8633
- var DESCRIPTION7 = "Analyze a package's dependency graph. Default output is compact " + "text listing direct runtime dependencies with resolved versions; " + 'pass `format: "json"` for the structured envelope. Non-runtime ' + "groups are omitted by default for token efficiency. Use `lifecycle` " + "with a concrete value for runtime plus matching groups, or `all` " + "for runtime plus all available groups. Set " + "`include_transitive: true` to add a `transitive` block with the " + "full install footprint, conflict detection, and circular-" + "dependency flags; layer `include_importers: true` on top when you " + "also need per-package provenance. Supports npm, PyPI, Hex, Crates, " + "vcpkg, and Zig.";
8631
+ var DESCRIPTION7 = "Analyze a package's dependency graph. Default output is compact " + "text listing direct runtime dependencies with resolved versions; " + 'pass `format: "json"` for the structured envelope. Non-runtime ' + "groups are omitted by default for token efficiency. Use `lifecycle` " + "with a concrete value for runtime plus matching groups, or `all` " + "for runtime plus all available groups. Set " + "`include_transitive: true` to add a `transitive` block with the " + "full install footprint, conflict detection, and circular-" + "dependency flags; layer `include_importers: true` on top when you " + "also need per-package provenance. Supports npm, PyPI, Hex, Crates, " + "RubyGems, Go, vcpkg, and Zig.";
8634
8632
  function createPackageDependenciesTool(service) {
8635
8633
  return {
8636
8634
  name: "pkg_deps",
@@ -8701,11 +8699,11 @@ function isTextFormat6(format) {
8701
8699
  // src/tools/package-summary.ts
8702
8700
  import { z as z9 } from "zod";
8703
8701
  var schema8 = {
8704
- registry: z9.string().describe("Package registry. One of: npm, pypi, hex, crates, nuget, maven, zig, vcpkg, packagist."),
8702
+ registry: z9.string().describe(`Package registry. One of: ${PKGSEER_REGISTRY_LIST}.`),
8705
8703
  package_name: z9.string().describe("Package name (scoped names ok: @types/node)."),
8706
8704
  format: z9.enum(["json", "text", "text-v1"]).optional().describe("Response format. Default `text-v1` is compact for agents. Pass `json` for the structured envelope.")
8707
8705
  };
8708
- var DESCRIPTION8 = "Get a package overview — latest version, license, description, " + "repository, downloads, GitHub stars, install command, recent " + "changes, and a count of known vulnerabilities. Use before " + "recommending a package or to orient on what a dependency is. " + 'Default output is compact text; pass `format: "json"` for the ' + "structured envelope. " + "Works across npm, PyPI, Hex, Crates, NuGet, Maven, Packagist, " + "vcpkg, and Zig. Always returns data for the latest published " + "version.";
8706
+ var DESCRIPTION8 = "Get a package overview — latest version, license, description, " + "repository, downloads, GitHub stars, install command, recent " + "changes, and a count of known vulnerabilities. Use before " + "recommending a package or to orient on what a dependency is. " + 'Default output is compact text; pass `format: "json"` for the ' + "structured envelope. " + "Works across npm, PyPI, Hex, Crates, NuGet, Maven, Packagist, " + "RubyGems, Go, vcpkg, and Zig. Always returns data for the latest published " + "version.";
8709
8707
  function createPackageSummaryTool(service) {
8710
8708
  return {
8711
8709
  name: "pkg_info",
@@ -9461,8 +9459,7 @@ Addressing: <spec> (registry:name) OR --repo-url <url>. Source
9461
9459
  (GitHub Releases, CHANGELOG.md, or HexDocs) is shown on the summary
9462
9460
  line.
9463
9461
 
9464
- Package spec: <registry>:<name>. Supported registries: npm, pypi,
9465
- hex, crates, vcpkg, zig, nuget, maven, packagist. \`<spec>@<version>\`
9462
+ Package spec: <registry>:<name>. Supported registries: ${PKGSEER_REGISTRY_LIST}. \`<spec>@<version>\`
9466
9463
  is NOT accepted here — use --to <version> for "entries up to this
9467
9464
  version".`;
9468
9465
  function registerPkgChangelogCommand(pkgCommand) {
@@ -9585,7 +9582,7 @@ groups). Concrete --lifecycle values include runtime plus matching groups.
9585
9582
  conflict detection, and circular-dependency flags.
9586
9583
 
9587
9584
  Package spec: <registry>:<name>[@<version>]. Supported registries:
9588
- npm, pypi, hex, crates, vcpkg, zig. Omit @<version> for the latest
9585
+ npm, pypi, hex, crates, vcpkg, zig, rubygems, go. Omit @<version> for the latest
9589
9586
  release.`;
9590
9587
  function registerPkgDepsCommand(pkgCommand) {
9591
9588
  return pkgCommand.command("deps").summary("Analyze dependencies for a package").description(PKG_DEPS_DESCRIPTION).argument("<spec>", "Package spec, e.g. npm:express or npm:express@4.18.0").option("-l, --lifecycle <phases>", "Dependency lifecycle breadth (runtime, development, build, peer, optional, all; comma-separated for multi-select except all).").option("-t, --transitive", "Include aggregate transitive counts, conflicts, and circular dependencies").option("--depth <n>", "Cap transitive traversal depth (1-10). Omit for the full graph.").option("-v, --verbose", "Show conditionType / selectionMode / environmentConstraints metadata in the groups view").option("--json", "Emit the lean JSON envelope").action(async (spec, options) => {
@@ -9648,8 +9645,7 @@ repository, downloads, GitHub stars, install command, and known
9648
9645
  vulnerabilities. Use before picking a dependency or to orient on what
9649
9646
  a package is.
9650
9647
 
9651
- Package spec: <registry>:<name>. Supported registries: npm, pypi, hex,
9652
- crates, nuget, maven, zig, vcpkg, packagist.
9648
+ Package spec: <registry>:<name>. Supported registries: ${PKGSEER_REGISTRY_LIST}.
9653
9649
 
9654
9650
  Always returns data for the latest published version.`;
9655
9651
  function registerPkgInfoCommand(pkgCommand) {
@@ -9767,7 +9763,7 @@ async function registerPkgCommandGroup(program, options = {}) {
9767
9763
  if (!registration.shouldRegister) {
9768
9764
  return;
9769
9765
  }
9770
- const pkgCommand = program.command("pkg").summary("Package metadata: info, vulnerabilities, dependencies, changelog").description("Inspect package metadata from npm, PyPI, Hex, Crates, NuGet, Maven, Packagist, vcpkg, and Zig: overviews, advisories, dependency graphs, and changelogs. For source-level operations inside a dependency, use `githits code`.");
9766
+ const pkgCommand = program.command("pkg").summary("Package metadata: info, vulnerabilities, dependencies, changelog").description("Inspect package metadata from npm, PyPI, Hex, Crates, NuGet, Maven, Packagist, RubyGems, Go, vcpkg, and Zig: overviews, advisories, dependency graphs, and changelogs. For source-level operations inside a dependency, use `githits code`.");
9771
9767
  registerPkgInfoCommand(pkgCommand);
9772
9768
  registerPkgVulnsCommand(pkgCommand);
9773
9769
  registerPkgDepsCommand(pkgCommand);
@@ -9891,7 +9887,7 @@ function requireSearchService(deps) {
9891
9887
  return deps.codeNavigationService;
9892
9888
  }
9893
9889
  async function loadContainer2() {
9894
- const { createContainer: createContainer2 } = await import("./shared/chunk-xzq0ecpa.js");
9890
+ const { createContainer: createContainer2 } = await import("./shared/chunk-q2mre780.js");
9895
9891
  return createContainer2();
9896
9892
  }
9897
9893
  function parseTargetSpecs(specs) {
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  version
3
- } from "./shared/chunk-f2ah8xnh.js";
3
+ } from "./shared/chunk-jdygt0ra.js";
4
4
  export {
5
5
  version
6
6
  };
@@ -1,6 +1,6 @@
1
1
  import { createRequire } from "node:module";
2
2
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
3
3
  // package.json
4
- var version = "0.4.1";
4
+ var version = "0.4.2";
5
5
 
6
6
  export { __require, version };
@@ -2,8 +2,8 @@ import {
2
2
  createAuthCommandDependencies,
3
3
  createAuthStatusDependencies,
4
4
  createContainer
5
- } from "./chunk-rgvmtzjt.js";
6
- import"./chunk-f2ah8xnh.js";
5
+ } from "./chunk-v8sths32.js";
6
+ import"./chunk-jdygt0ra.js";
7
7
  export {
8
8
  createContainer,
9
9
  createAuthStatusDependencies,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  __require,
3
3
  version
4
- } from "./chunk-f2ah8xnh.js";
4
+ } from "./chunk-jdygt0ra.js";
5
5
 
6
6
  // src/services/app-config-paths.ts
7
7
  var APP_DIR = "githits";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "githits",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "Code examples from global open source for developers and AI assistants.",
5
5
  "mcpServers": {
6
6
  "githits": {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "githits",
3
3
  "description": "CLI companion for GitHits - code examples from global open source for developers and AI assistants",
4
- "version": "0.4.1",
4
+ "version": "0.4.2",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "githits",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "Code examples from global open source for developers and AI assistants",
5
5
  "author": {
6
6
  "name": "GitHits"