diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 812cafd..4e11080 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -1,62 +1,22 @@ { "$schema": "https://anthropic.com/claude-code/marketplace.schema.json", "name": "glean-plugins", - "version": "2.0.0", - "description": "Official Glean plugins for Claude Code - enterprise knowledge integration", + "version": "3.0.0", + "description": "Official Glean plugins for Claude Code — enterprise knowledge, search, people, code, and meetings.", "owner": { "name": "Glean", "email": "steve.calvert@glean.com" }, "plugins": [ { - "name": "glean-core", - "source": "./plugins/glean-core", - "description": "Core Glean MCP integration - shared skills, tool guidance, and configuration. Required foundation for all other Glean plugins." - }, - { - "name": "glean-search", - "source": "./plugins/glean-search", - "description": "Enterprise search across documents, Slack, email, and other sources via Glean." - }, - { - "name": "glean-people", - "source": "./plugins/glean-people", - "description": "Find experts, understand org structure, and identify stakeholders via Glean." - }, - { - "name": "glean-meetings", - "source": "./plugins/glean-meetings", - "description": "Meeting intelligence - analyze transcripts, prepare for meetings, and catch up after time off." - }, - { - "name": "glean-docs", - "source": "./plugins/glean-docs", - "description": "Document intelligence - analyze docs, verify specs, and onboard to new areas." - }, - { - "name": "glean-code", - "source": "./plugins/glean-code", - "description": "Cross-repository code exploration - search code across your org, find examples, and discover similar implementations." + "name": "glean", + "source": "./plugins/glean", + "description": "Official Glean plugin — search documents, Slack, and email; explore code across repos; find experts and stakeholders; prep for meetings and onboarding." }, { "name": "glean-dev-docs", "source": "./plugins/glean-dev-docs", - "description": "Access Glean's developer documentation - search API references, SDK guides, and integration tutorials." - }, - { - "name": "glean-skills", - "source": "./plugins/glean-skills", - "description": "Discover and create Claude Code skills from work patterns." - }, - { - "name": "glean-productivity", - "source": "./plugins/glean-productivity", - "description": "Personal productivity - daily briefings, weekly summaries, and activity analysis via Glean." - }, - { - "name": "glean-project", - "source": "./plugins/glean-project", - "description": "Project intelligence - generate comprehensive handoff documents when transitioning ownership." + "description": "Search the public Glean developer documentation — APIs, SDKs, MCP, and integration guides for building with Glean." } ] } diff --git a/.claude/agents/plugin-reviewer.md b/.claude/agents/plugin-reviewer.md deleted file mode 100644 index 1da3cf4..0000000 --- a/.claude/agents/plugin-reviewer.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -name: plugin-reviewer -description: Reviews a newly created or modified plugin for structural completeness, frontmatter validity, marketplace registration, README documentation, and version alignment. Use after completing plugin work and before committing or creating a PR. -tools: Read, Glob, Bash ---- - -# Plugin Reviewer - -You are a plugin quality reviewer for the glean-claude-plugins marketplace repository. - -When invoked, you receive the name of a plugin (e.g. `glean-foo`) and review it against all required standards. Work through each check below and report findings at the end. - -## Review Checklist - -### 1. Run the automated validator - -```bash -node scripts/validate-plugins.mjs -``` - -If there are errors, report them and stop — do not continue with the remaining checks. - -### 2. Check marketplace registration - -Read `.claude-plugin/marketplace.json`. Verify: -- Plugin appears in the `plugins` array -- `name` matches the directory name under `plugins/` -- `source` is `"./plugins/"` -- `description` is present and non-empty - -### 3. Check plugin.json completeness - -Read `plugins//.claude-plugin/plugin.json`. Verify: -- `name`, `version`, `description`, `author`, `license` are all present -- `version` matches the version in `.claude-plugin/marketplace.json` -- `author.email` is set - -### 4. Check README exists and covers key sections - -Read `plugins//README.md`. Verify it contains: -- Plugin description -- Installation instructions -- What's included (commands, skills, and/or agents) -- Requirements section - -### 5. Check main README.md is updated - -Read the root `README.md`. Verify: -- Plugin appears in the plugins table -- Plugin install command is present in the Quick Start section - -### 6. Check .release-it.json bumper coverage - -Read `.release-it.json`. Verify the `@release-it/bumper.out` array includes an entry for: -``` -plugins//.claude-plugin/plugin.json -``` - -If it is missing, this is a **critical** finding — the plugin version will silently drift on the next release. - -### 7. Check skill/command/agent frontmatter - -For each `.md` file in `plugins//skills/`, `plugins//commands/`, and `plugins//agents/`: -- Verify YAML frontmatter is present (`---` delimiters) -- Verify `name` and `description` fields are set -- Verify `description` is specific enough to trigger correctly - -## Output Format - -**Plugin:** `` - -**Result:** PASS or FAIL - -If FAIL, list findings grouped by severity: -- **Critical:** issues that break functionality or cause version drift -- **Warning:** issues that reduce quality or discoverability -- **Suggestion:** nice-to-have improvements - -Keep it concise. Lead with the most important issues. diff --git a/.claude/settings.json b/.claude/settings.json deleted file mode 100644 index de08ba3..0000000 --- a/.claude/settings.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "hooks": { - "PostToolUse": [ - { - "matcher": "Edit|Write", - "hooks": [ - { - "type": "command", - "command": "node scripts/validate-plugins.mjs 2>&1 | tail -30" - } - ] - } - ] - } -} diff --git a/.claude/skills/glean-plugin-checklist/SKILL.md b/.claude/skills/glean-plugin-checklist/SKILL.md deleted file mode 100644 index edf7306..0000000 --- a/.claude/skills/glean-plugin-checklist/SKILL.md +++ /dev/null @@ -1,181 +0,0 @@ ---- -name: glean-plugin-checklist -description: Use when creating, adding, or modifying plugins in this Glean Claude Plugins marketplace repository. Triggers on "create plugin", "add plugin", "new plugin", "plugin checklist", "marketplace", or when working with plugin.json, marketplace.json, or the plugins/ directory. Ensures all required files are updated correctly. ---- - -# Glean Plugin Marketplace Checklist - -This skill provides the checklist for correctly adding or modifying plugins in the glean-claude-plugins marketplace repository. - -## Repository Structure - -``` -glean-claude-plugins/ -├── .claude-plugin/ -│ └── marketplace.json # CRITICAL: Plugin registry - must list all plugins -├── plugins/ -│ └── / -│ ├── .claude-plugin/ -│ │ └── plugin.json # Plugin manifest with version -│ ├── README.md # Plugin documentation -│ ├── commands/ # Slash commands -│ ├── skills/ # Auto-triggered skills -│ └── agents/ # Autonomous agents -├── README.md # Main repo README - must list all plugins -└── package.json # NPM package with version -``` - -## Adding a New Plugin Checklist - -When creating a new plugin, you MUST complete ALL of these steps: - -### 1. Create Plugin Directory Structure - -```bash -mkdir -p plugins//.claude-plugin -mkdir -p plugins//commands -mkdir -p plugins//skills -mkdir -p plugins//agents -``` - -### 2. Create plugin.json (REQUIRED) - -Path: `plugins//.claude-plugin/plugin.json` - -```json -{ - "name": "", - "version": "", - "description": ". Requires glean-core.", - "author": { - "name": "Glean", - "email": "steve.calvert@glean.com", - "url": "https://glean.com" - }, - "homepage": "https://docs.glean.com/administration/platform/mcp/about", - "repository": "https://github.com/gleanwork/claude-plugins", - "license": "MIT", - "keywords": ["glean", "mcp", ""] -} -``` - -**CRITICAL**: The version MUST match the version in `.claude-plugin/marketplace.json`. - -### 3. Add to marketplace.json (REQUIRED) - -Path: `.claude-plugin/marketplace.json` - -Add entry to the `plugins` array: - -```json -{ - "name": "", - "source": "./plugins/", - "description": "" -} -``` - -### 4. Create Plugin README.md (REQUIRED) - -Path: `plugins//README.md` - -Include: -- Plugin description -- Prerequisites (usually "Requires glean-core") -- Available commands -- Available skills -- Available agents -- Usage examples - -### 5. Update Main README.md (REQUIRED) - -Path: `README.md` - -Update THREE sections: - -**a) Quick Start section** - Add install command: -```markdown -/plugin install -``` - -**b) Plugins table** - Add row: -```markdown -| **[](plugins/)** | | [README](plugins//README.md) | -``` - -**c) "Which Plugin Do I Need?" section** - Add use case: -```markdown -| | `glean-core` + `` | -``` - -## Version Management - -All plugins should have the same version as the marketplace: - -1. Check current version: `jq '.version' .claude-plugin/marketplace.json` -2. Set plugin version to match in `plugins//.claude-plugin/plugin.json` - -When releasing a new version: -1. Update `.claude-plugin/marketplace.json` version -2. Update `package.json` version -3. Update ALL `plugins/*/.claude-plugin/plugin.json` versions - -### 6. Add to .release-it.json bumper (REQUIRED) - -Path: `.release-it.json` - -Add an entry to the `plugins["@release-it/bumper"].out` array, after the last existing entry: - -```json -{ - "file": "plugins//.claude-plugin/plugin.json", - "path": "version" -} -``` - -**If you skip this step**, the plugin version will fall behind the marketplace version on every future release. This failure is silent — no error will be thrown and no CI check will catch it. - -Verify the entry was added: - -```bash -node .claude/skills/glean-plugin-checklist/scripts/check-bumper.mjs -``` - -## Verification Commands - -After adding a plugin, verify with: - -```bash -# Check marketplace.json is valid JSON -jq . .claude-plugin/marketplace.json - -# List all plugins in marketplace -jq -r '.plugins[].name' .claude-plugin/marketplace.json - -# Check all plugin versions match -for p in plugins/*/.claude-plugin/plugin.json; do - echo "$p: $(jq -r '.version' "$p")" -done - -# Check README mentions the plugin -grep "" README.md - -# Check .release-it.json bumper includes the plugin -node .claude/skills/glean-plugin-checklist/scripts/check-bumper.mjs -``` - -## Common Mistakes to Avoid - -1. **Forgetting marketplace.json** - Plugin won't appear in marketplace -2. **Version mismatch** - Can cause installation issues -3. **Missing README update** - Users won't know plugin exists -4. **Wrong source path** - Use `./plugins/` not `plugins/` - -## Using plugin-dev:create-plugin - -The `/plugin-dev:create-plugin` command can help scaffold the plugin, but you MUST still: -1. Add to `.claude-plugin/marketplace.json` manually -2. Update the main `README.md` manually -3. Ensure versions match - -Always run the verification commands after using `/plugin-dev:create-plugin`. diff --git a/.claude/skills/glean-plugin-checklist/scripts/check-bumper.mjs b/.claude/skills/glean-plugin-checklist/scripts/check-bumper.mjs deleted file mode 100644 index 1494c5a..0000000 --- a/.claude/skills/glean-plugin-checklist/scripts/check-bumper.mjs +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env node -// Check if a plugin is registered in the .release-it.json bumper. -// Usage: node scripts/check-bumper.mjs -// Exit code 0 = found, 1 = missing - -import { readFileSync } from 'fs'; - -const pluginName = process.argv[2]; -if (!pluginName) { - console.error('Usage: node scripts/check-bumper.mjs '); - process.exit(1); -} - -const config = JSON.parse(readFileSync('.release-it.json', 'utf8')); -const found = config.plugins['@release-it/bumper'].out.some( - o => o.file.includes(pluginName) -); - -if (found) { - console.log('in bumper: ok'); -} else { - console.error(`MISSING from bumper: add plugins/${pluginName}/.claude-plugin/plugin.json to .release-it.json`); - process.exit(1); -} diff --git a/.claude/skills/release-workflow/SKILL.md b/.claude/skills/release-workflow/SKILL.md deleted file mode 100644 index 6816e35..0000000 --- a/.claude/skills/release-workflow/SKILL.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -name: release-workflow -description: Use when preparing or executing a release for the glean-claude-plugins marketplace. Triggers on "release", "bump version", "publish", "npm run release", "new version", or when the user wants to cut a new plugin version. -disable-model-invocation: true ---- - -# Release Workflow - -Follow these steps in order. Do not skip steps. - -## Pre-flight checks - -**Step 1: Verify all plugin versions are in sync** - -Run: -```bash -for p in plugins/*/.claude-plugin/plugin.json; do - echo "$p: $(node -e "console.log(JSON.parse(require('fs').readFileSync('$p','utf8')).version)")" -done -``` - -All versions must match the current marketplace version in `.claude-plugin/marketplace.json`. -If any are out of sync, fix them before proceeding and commit the fix separately. - -**Step 2: Validate plugin structure** - -Run: -```bash -node scripts/validate-plugins.mjs -``` - -All plugins must pass validation. Fix any errors before proceeding. - -**Step 3: Verify working tree is clean** - -Run: -```bash -git status -``` - -Expected: `nothing to commit, working tree clean` - -## Run the release - -**Step 4: Run release-it** - -```bash -npm run release -``` - -This will: -- Prompt for the next version (patch/minor/major) -- Update `package.json`, `.claude-plugin/marketplace.json`, and ALL `plugins/*/.claude-plugin/plugin.json` via the bumper -- Generate/update `CHANGELOG.md` from conventional commits -- Create a git tag `v` -- Commit with message `chore: release v` - -**Step 5: Post-release verification** - -Run: -```bash -for p in plugins/*/.claude-plugin/plugin.json; do - echo "$p: $(node -e "console.log(JSON.parse(require('fs').readFileSync('$p','utf8')).version)")" -done -``` - -All 10 plugin versions should show the new version number. - -**Step 6: Push tag and commits** - -```bash -git push && git push --tags -``` - -## Plugins covered by the bumper (bumped automatically) - -- `plugins/glean-core` -- `plugins/glean-search` -- `plugins/glean-people` -- `plugins/glean-meetings` -- `plugins/glean-docs` -- `plugins/glean-code` -- `plugins/glean-dev-docs` -- `plugins/glean-skills` -- `plugins/glean-productivity` -- `plugins/glean-project` - -**Adding a new plugin?** You MUST add its `plugin.json` path to the `@release-it/bumper` `out` array in `.release-it.json`, or its version will silently drift on the next release. diff --git a/.github/workflows/validate-plugins.yml b/.github/workflows/validate-plugins.yml deleted file mode 100644 index f158bec..0000000 --- a/.github/workflows/validate-plugins.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Validate Plugins - -on: - push: - branches: [main] - pull_request: - branches: [main] - -jobs: - validate: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-node@v4 - with: - node-version: '20' - - - name: Install dependencies - run: npm install - - - name: Validate plugin structure - run: node scripts/validate-plugins.mjs diff --git a/.pluginpack/claude.json b/.pluginpack/claude.json new file mode 100644 index 0000000..9b75631 --- /dev/null +++ b/.pluginpack/claude.json @@ -0,0 +1,64 @@ +{ + "version": 1, + "target": "claude", + "files": [ + ".claude-plugin/marketplace.json", + "README.md", + "plugins/glean-dev-docs/.claude-plugin/plugin.json", + "plugins/glean-dev-docs/CHANGELOG.md", + "plugins/glean-dev-docs/LICENSE", + "plugins/glean-dev-docs/README.md", + "plugins/glean-dev-docs/skills/dev-docs-guide/SKILL.md", + "plugins/glean/.claude-plugin/plugin.json", + "plugins/glean/CHANGELOG.md", + "plugins/glean/LICENSE", + "plugins/glean/README.md", + "plugins/glean/agents/activity-analyzer.md", + "plugins/glean/agents/codebase-navigator.md", + "plugins/glean/agents/doc-reader.md", + "plugins/glean/agents/enterprise-searcher.md", + "plugins/glean/agents/meeting-analyzer.md", + "plugins/glean/agents/people-finder.md", + "plugins/glean/agents/plan-prep-researcher.md", + "plugins/glean/agents/project-synthesizer.md", + "plugins/glean/agents/skill-generator.md", + "plugins/glean/agents/work-pattern-analyzer.md", + "plugins/glean/skills/catch-up/SKILL.md", + "plugins/glean/skills/code-owners/SKILL.md", + "plugins/glean/skills/codebase-context/SKILL.md", + "plugins/glean/skills/connect-glean/SKILL.md", + "plugins/glean/skills/find-examples/SKILL.md", + "plugins/glean/skills/find-expert/SKILL.md", + "plugins/glean/skills/meeting-prep/SKILL.md", + "plugins/glean/skills/onboarding/SKILL.md", + "plugins/glean/skills/plan-prep/SKILL.md", + "plugins/glean/skills/project-awareness/SKILL.md", + "plugins/glean/skills/project-handoff/SKILL.md", + "plugins/glean/skills/search/SKILL.md", + "plugins/glean/skills/similar-code/SKILL.md", + "plugins/glean/skills/skill-creation-guide/SKILL.md", + "plugins/glean/skills/stakeholders/SKILL.md", + "plugins/glean/skills/using-glean-code/SKILL.md", + "plugins/glean/skills/using-glean-code/reference/exploration.md", + "plugins/glean/skills/using-glean-code/reference/plan-prep.md", + "plugins/glean/skills/using-glean-productivity/SKILL.md", + "plugins/glean/skills/using-glean-productivity/reference/activity.md", + "plugins/glean/skills/using-glean-productivity/reference/priorities.md", + "plugins/glean/skills/using-glean/SKILL.md", + "plugins/glean/skills/using-glean/reference/agents-as-tools.md", + "plugins/glean/skills/using-glean/reference/chat.md", + "plugins/glean/skills/using-glean/reference/code-search.md", + "plugins/glean/skills/using-glean/reference/employee-search.md", + "plugins/glean/skills/using-glean/reference/gmail-search.md", + "plugins/glean/skills/using-glean/reference/knowledge-graph.md", + "plugins/glean/skills/using-glean/reference/meeting-lookup.md", + "plugins/glean/skills/using-glean/reference/memory.md", + "plugins/glean/skills/using-glean/reference/outlook-search.md", + "plugins/glean/skills/using-glean/reference/read-document.md", + "plugins/glean/skills/using-glean/reference/search.md", + "plugins/glean/skills/using-glean/reference/synthesis.md", + "plugins/glean/skills/using-glean/reference/user-activity.md", + "plugins/glean/skills/using-glean/reference/vetting.md", + "plugins/glean/skills/verify-rfc/SKILL.md" + ] +} diff --git a/.release-it.json b/.release-it.json deleted file mode 100644 index fe713cd..0000000 --- a/.release-it.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "$schema": "https://unpkg.com/release-it/schema/release-it.json", - "git": { - "commitMessage": "chore: release v${version}", - "tagName": "v${version}" - }, - "github": { - "release": true - }, - "npm": false, - "plugins": { - "@release-it/conventional-changelog": { - "preset": { - "name": "conventionalcommits" - }, - "infile": "CHANGELOG.md" - }, - "@release-it/bumper": { - "out": [ - { - "file": "package.json", - "path": "version" - }, - { - "file": ".claude-plugin/marketplace.json", - "path": "version" - }, - { - "file": "plugins/glean-core/.claude-plugin/plugin.json", - "path": "version" - }, - { - "file": "plugins/glean-search/.claude-plugin/plugin.json", - "path": "version" - }, - { - "file": "plugins/glean-people/.claude-plugin/plugin.json", - "path": "version" - }, - { - "file": "plugins/glean-meetings/.claude-plugin/plugin.json", - "path": "version" - }, - { - "file": "plugins/glean-docs/.claude-plugin/plugin.json", - "path": "version" - }, - { - "file": "plugins/glean-code/.claude-plugin/plugin.json", - "path": "version" - }, - { - "file": "plugins/glean-dev-docs/.claude-plugin/plugin.json", - "path": "version" - }, - { - "file": "plugins/glean-skills/.claude-plugin/plugin.json", - "path": "version" - }, - { - "file": "plugins/glean-productivity/.claude-plugin/plugin.json", - "path": "version" - }, - { - "file": "plugins/glean-project/.claude-plugin/plugin.json", - "path": "version" - } - ] - } - } -} diff --git a/README.md b/README.md index 55cf2e1..9e4cba4 100644 --- a/README.md +++ b/README.md @@ -1,59 +1,71 @@ # Glean Plugins for Claude Code -[![GA](https://img.shields.io/badge/-GA-F6F3EB?style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0yNC4zMDA2IDIuOTU0MjdMMjAuNzY1NiAwLjE5OTk1MUwxNy45MDI4IDMuOTk1MjdDMTMuNTY1MyAxLjkzNDk1IDguMjMwMTkgMy4wODQzOSA1LjE5Mzk0IDcuMDA5ODNDMS42NTg4OCAxMS41NjQyIDIuNDgzIDE4LjExMzggNy4wMzczOCAyMS42NDg5QzguNzcyMzggMjIuOTkzNSAxMC43ODkzIDIzLjcwOTIgMTIuODI3OSAyMy44MTc3QzE2LjE0NjEgMjQuMDEyOCAxOS41MDc3IDIyLjYyNDggMjEuNjc2NSAxOS44MDU1QzI0LjczNDQgMTUuODggMjQuNTE3NSAxMC40MTQ4IDIxLjQ1OTYgNi43Mjc4OUwyNC4zMDA2IDIuOTU0MjdaTTE4LjExOTcgMTcuMDUxMkMxNi4xMDI4IDE5LjYzMiAxMi4zNzI1IDIwLjEwOTEgOS43NzAwMSAxOC4wOTIyQzcuMTg5MTkgMTYuMDc1MiA2LjcxMjA3IDEyLjMyMzMgOC43MjkwMSA5Ljc0MjQ2QzkuNzA0OTQgOC40ODQ1OCAxMS4xMTQ2IDcuNjgyMTQgMTIuNjc2MSA3LjQ4Njk2QzEzLjA0NDggNy40NDM1OCAxMy40MTM1IDcuNDIxOSAxMy43ODIyIDcuNDQzNThDMTQuOTc1IDcuNTA4NjUgMTYuMTI0NCA3Ljk0MjM5IDE3LjA3ODcgOC42Nzk3N0MxOS42NTk1IDEwLjcxODQgMjAuMTM2NiAxNC40NzAzIDE4LjExOTcgMTcuMDUxMloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0yNC41MTc2IDIxLjY5MjJDMjMuOTMyIDIyLjQ1MTMgMjMuMjgxNCAyMy4xMjM2IDIyLjU2NTcgMjMuNzUyNUMyMS44NzE3IDI0LjMzODEgMjEuMTEyNyAyNC44ODAzIDIwLjMxMDIgMjUuMzM1N0MxOS41Mjk1IDI1Ljc2OTUgMTguNjgzNyAyNi4xMzgyIDE3LjgzNzggMjYuNDIwMUMxNi45OTIgMjYuNzAyIDE2LjEwMjggMjYuODk3MiAxNS4yMTM3IDI3LjAwNTdDMTQuMzI0NSAyNy4xMTQxIDEzLjQzNTMgMjcuMTU3NSAxMi41MjQ0IDI3LjA5MjRDMTEuNjEzNSAyNy4wMjczIDEwLjcyNDMgMjYuODc1NSA5Ljg1Njg0IDI2LjY1ODdMOS42NjE2NSAyNy4zNzQzTDguNzcyNDYgMzAuOTk2MkM5LjkwMDIxIDMxLjI5OTggMTEuMDQ5NyAzMS40NzMzIDEyLjIyMDggMzEuNTZDMTIuMjY0MiAzMS41NiAxMi4zMjkyIDMxLjU2IDEyLjM3MjYgMzEuNTZDMTMuNTAwMyAzMS42MjUxIDE0LjY0OTggMzEuNTgxNyAxNS43NTU4IDMxLjQ1MTZDMTYuOTI3IDMxLjI5OTggMTguMDk4MSAzMS4wMzk1IDE5LjIyNTggMzAuNjcwOEMyMC4zNTM2IDMwLjMwMjIgMjEuNDU5NyAyOS44MjUgMjIuNTAwNyAyOS4yMzk1QzIzLjU2MzQgMjguNjUzOSAyNC41NjEgMjcuOTM4MiAyNS40OTM1IDI3LjE1NzVDMjYuNDQ3OCAyNi4zNTUgMjcuMzE1MyAyNS40NDQyIDI4LjA3NDQgMjQuNDQ2NUMyOC4xODI4IDI0LjMxNjQgMjguMjY5NSAyNC4xNjQ2IDI4LjM3OCAyNC4wMTI4TDI0Ljc3NzkgMjEuMzQ1MkMyNC42Njk0IDIxLjQ1MzcgMjQuNjA0NCAyMS41ODM4IDI0LjUxNzYgMjEuNjkyMloiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPg==&labelColor=343CED)](https://github.com/gleanwork/.github/blob/main/docs/repository-stability.md#ga) +> **Generated repository.** Built from +> [gleanwork/agent-plugins](https://github.com/gleanwork/agent-plugins) via +> [pluginpack](https://github.com/gleanwork/pluginpack). Don't hand-edit managed +> files here — changes are made in `agent-plugins` and synced down automatically. -Official Glean plugins for [Claude Code](https://claude.com/claude-code), enabling enterprise knowledge integration directly in your development workflow. +Official Glean plugins for [Claude Code](https://claude.com/claude-code) — +enterprise knowledge, search, people, code, and meetings, right in your +development workflow. -## Quick Start +## ⚠️ v3.0.0 — plugins consolidated (one-time migration) -```bash -# Add the Glean marketplace +The nine area-specific plugins (`glean-core`, `glean-search`, `glean-people`, +`glean-meetings`, `glean-docs`, `glean-code`, `glean-skills`, +`glean-productivity`, `glean-project`) are now a **single `glean` plugin**. Same +skills and agents — they auto-trigger by task, so there's no per-area install +anymore. `glean-dev-docs` is unchanged. + +Claude Code doesn't auto-migrate renamed plugins, so the old ones will show +**`failed to load`** after you refresh the marketplace. Switch once: + +``` +/plugin marketplace remove glean-plugins /plugin marketplace add gleanwork/claude-plugins +/plugin install glean@glean-plugins +/plugin install glean-dev-docs@glean-plugins +``` + +Restart Claude Code if prompted. `glean` carries everything the old plugins did. + +
Prefer to migrate plugin-by-plugin? -# Install core (required) -/plugin install glean-core - -# Install feature plugins you need -/plugin install glean-search -/plugin install glean-meetings -/plugin install glean-people -/plugin install glean-docs -/plugin install glean-code -/plugin install glean-skills -/plugin install glean-productivity -/plugin install glean-project - -# Configure your Glean connection -/glean-core:mcp-setup ``` +/plugin marketplace update glean-plugins +/plugin uninstall glean-core@glean-plugins +/plugin uninstall glean-search@glean-plugins +/plugin uninstall glean-people@glean-plugins +/plugin uninstall glean-meetings@glean-plugins +/plugin uninstall glean-docs@glean-plugins +/plugin uninstall glean-code@glean-plugins +/plugin uninstall glean-skills@glean-plugins +/plugin uninstall glean-productivity@glean-plugins +/plugin uninstall glean-project@glean-plugins +/plugin install glean@glean-plugins +``` + +(`glean-dev-docs` stays as-is.) + +
+ +## Quick start (new install) + +``` +/plugin marketplace add gleanwork/claude-plugins +/plugin install glean@glean-plugins +/plugin install glean-dev-docs@glean-plugins +``` + +Then connect a Glean MCP server — ask Claude to "set up Glean" and the `glean` +plugin's `connect-glean` skill walks you through it. Skills auto-trigger by task. ## Plugins -| Plugin | Description | Docs | -|--------|-------------|------| -| **[glean-core](plugins/glean-core)** | Foundation plugin with MCP setup, skills, and agents. **Required by all other plugins.** | [README](plugins/glean-core/README.md) | -| **[glean-search](plugins/glean-search)** | Enterprise search across docs, Slack, email, and more | [README](plugins/glean-search/README.md) | -| **[glean-meetings](plugins/glean-meetings)** | Meeting prep, catch-up, and transcript analysis | [README](plugins/glean-meetings/README.md) | -| **[glean-people](plugins/glean-people)** | Find experts and identify stakeholders | [README](plugins/glean-people/README.md) | -| **[glean-docs](plugins/glean-docs)** | RFC verification and team onboarding | [README](plugins/glean-docs/README.md) | -| **[glean-code](plugins/glean-code)** | Cross-repo code exploration and examples | [README](plugins/glean-code/README.md) | -| **[glean-skills](plugins/glean-skills)** | Discover and create skills from Glean work patterns | [README](plugins/glean-skills/README.md) | -| **[glean-productivity](plugins/glean-productivity)** | Daily briefings, weekly summaries, and activity synthesis | [README](plugins/glean-productivity/README.md) | -| **[glean-project](plugins/glean-project)** | Project context and handoff documentation | [README](plugins/glean-project/README.md) | - -## Which Plugin Do I Need? - -| I want to... | Install | -|--------------|---------| -| Search company docs, Slack, wikis | `glean-core` + `glean-search` | -| Prepare for meetings or catch up after PTO | `glean-core` + `glean-meetings` | -| Find who knows about a topic | `glean-core` + `glean-people` | -| Verify specs match implementation | `glean-core` + `glean-docs` | -| Find code examples across repos | `glean-core` + `glean-code` | -| Create skills from my work patterns | `glean-core` + `glean-skills` | -| Get daily briefings or weekly summaries | `glean-core` + `glean-productivity` | -| Get project context or create handoffs | `glean-core` + `glean-project` | -| All of the above | Install all plugins | +| Plugin | Description | +|--------|-------------| +| **[glean](plugins/glean)** | Enterprise knowledge — search docs/Slack/email, cross-repo code exploration, people & experts, meeting prep & catch-up, onboarding, productivity. | +| **[glean-dev-docs](plugins/glean-dev-docs)** | Search Glean's public developer documentation — APIs, SDKs, MCP, and integration guides. | ## Requirements diff --git a/RELEASING.md b/RELEASING.md deleted file mode 100644 index b55f441..0000000 --- a/RELEASING.md +++ /dev/null @@ -1,36 +0,0 @@ -# Releasing - -To release a new version: - -```bash -npm run release -- patch # 0.7.4 → 0.7.5 -npm run release -- minor # 0.7.4 → 0.8.0 -npm run release -- major # 0.7.4 → 1.0.0 -``` - -This bumps versions in: -- `package.json` -- `.claude-plugin/marketplace.json` -- All `plugins/*/.claude-plugin/plugin.json` files - -Then creates a commit and git tag, and pushes to the remote repository. - -## Preview Mode - -Preview changes without executing: - -```bash -npm run release -- --dry-run -``` - -## Manual Version Bump - -If you need to bump versions manually, update all of these files: -- `package.json` - root version -- `.claude-plugin/marketplace.json` - marketplace version -- `plugins/glean-core/.claude-plugin/plugin.json` -- `plugins/glean-search/.claude-plugin/plugin.json` -- `plugins/glean-meetings/.claude-plugin/plugin.json` -- `plugins/glean-people/.claude-plugin/plugin.json` -- `plugins/glean-docs/.claude-plugin/plugin.json` -- `plugins/glean-code/.claude-plugin/plugin.json` diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index bc1dc49..0000000 --- a/package-lock.json +++ /dev/null @@ -1,3659 +0,0 @@ -{ - "name": "@gleanwork/claude-plugins", - "version": "0.13.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "@gleanwork/claude-plugins", - "version": "0.13.0", - "license": "MIT", - "devDependencies": { - "@release-it/bumper": "^7.0.5", - "@release-it/conventional-changelog": "^10.0.2", - "release-it": "^19.0.6", - "yaml": "^2.7.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@conventional-changelog/git-client": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-2.5.1.tgz", - "integrity": "sha512-lAw7iA5oTPWOLjiweb7DlGEMDEvzqzLLa6aWOly2FSZ64IwLE8T458rC+o+WvI31Doz6joM7X2DoNog7mX8r4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@simple-libs/child-process-utils": "^1.0.0", - "@simple-libs/stream-utils": "^1.1.0", - "semver": "^7.5.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "conventional-commits-filter": "^5.0.0", - "conventional-commits-parser": "^6.1.0" - }, - "peerDependenciesMeta": { - "conventional-commits-filter": { - "optional": true - }, - "conventional-commits-parser": { - "optional": true - } - } - }, - "node_modules/@iarna/toml": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-3.0.0.tgz", - "integrity": "sha512-td6ZUkz2oS3VeleBcN+m//Q6HlCFCPrnI0FZhrt/h4XqLEdOyYp2u21nd8MdsR+WJy5r9PTDaHTDDfhf4H4l6Q==", - "dev": true, - "license": "ISC" - }, - "node_modules/@inquirer/ansi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", - "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/checkbox": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", - "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/confirm": { - "version": "5.1.21", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", - "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/editor": { - "version": "4.2.23", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", - "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/external-editor": "^1.0.3", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/expand": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", - "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/external-editor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", - "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/external-editor/node_modules/iconv-lite": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", - "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/@inquirer/figures": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", - "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/input": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", - "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/number": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", - "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/password": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", - "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/prompts": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", - "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/checkbox": "^4.3.2", - "@inquirer/confirm": "^5.1.21", - "@inquirer/editor": "^4.2.23", - "@inquirer/expand": "^4.0.23", - "@inquirer/input": "^4.3.1", - "@inquirer/number": "^3.0.23", - "@inquirer/password": "^4.0.23", - "@inquirer/rawlist": "^4.1.11", - "@inquirer/search": "^3.2.2", - "@inquirer/select": "^4.4.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/rawlist": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", - "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/search": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", - "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/select": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", - "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodeutils/defaults-deep": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@nodeutils/defaults-deep/-/defaults-deep-1.1.0.tgz", - "integrity": "sha512-gG44cwQovaOFdSR02jR9IhVRpnDP64VN6JdjYJTfNz4J4fWn7TQnmrf22nSjRqlwlxPcW8PL/L3KbJg3tdwvpg==", - "dev": true, - "license": "ISC", - "dependencies": { - "lodash": "^4.15.0" - } - }, - "node_modules/@octokit/auth-token": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz", - "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/core": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz", - "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@octokit/auth-token": "^6.0.0", - "@octokit/graphql": "^9.0.3", - "@octokit/request": "^10.0.6", - "@octokit/request-error": "^7.0.2", - "@octokit/types": "^16.0.0", - "before-after-hook": "^4.0.0", - "universal-user-agent": "^7.0.0" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/endpoint": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.2.tgz", - "integrity": "sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^16.0.0", - "universal-user-agent": "^7.0.2" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/graphql": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz", - "integrity": "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/request": "^10.0.6", - "@octokit/types": "^16.0.0", - "universal-user-agent": "^7.0.0" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/openapi-types": { - "version": "27.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", - "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-13.2.1.tgz", - "integrity": "sha512-Tj4PkZyIL6eBMYcG/76QGsedF0+dWVeLhYprTmuFVVxzDW7PQh23tM0TP0z+1MvSkxB29YFZwnUX+cXfTiSdyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^15.0.1" - }, - "engines": { - "node": ">= 20" - }, - "peerDependencies": { - "@octokit/core": ">=6" - } - }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-26.0.0.tgz", - "integrity": "sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-15.0.2.tgz", - "integrity": "sha512-rR+5VRjhYSer7sC51krfCctQhVTmjyUMAaShfPB8mscVa8tSoLyon3coxQmXu0ahJoLVWl8dSGD/3OGZlFV44Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^26.0.0" - } - }, - "node_modules/@octokit/plugin-request-log": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-6.0.0.tgz", - "integrity": "sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - }, - "peerDependencies": { - "@octokit/core": ">=6" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-16.1.1.tgz", - "integrity": "sha512-VztDkhM0ketQYSh5Im3IcKWFZl7VIrrsCaHbDINkdYeiiAsJzjhS2xRFCSJgfN6VOcsoW4laMtsmf3HcNqIimg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^15.0.1" - }, - "engines": { - "node": ">= 20" - }, - "peerDependencies": { - "@octokit/core": ">=6" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-26.0.0.tgz", - "integrity": "sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-15.0.2.tgz", - "integrity": "sha512-rR+5VRjhYSer7sC51krfCctQhVTmjyUMAaShfPB8mscVa8tSoLyon3coxQmXu0ahJoLVWl8dSGD/3OGZlFV44Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^26.0.0" - } - }, - "node_modules/@octokit/request": { - "version": "10.0.7", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.7.tgz", - "integrity": "sha512-v93h0i1yu4idj8qFPZwjehoJx4j3Ntn+JhXsdJrG9pYaX6j/XRz2RmasMUHtNgQD39nrv/VwTWSqK0RNXR8upA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^11.0.2", - "@octokit/request-error": "^7.0.2", - "@octokit/types": "^16.0.0", - "fast-content-type-parse": "^3.0.0", - "universal-user-agent": "^7.0.2" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/request-error": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.0.tgz", - "integrity": "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^16.0.0" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/rest": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-22.0.0.tgz", - "integrity": "sha512-z6tmTu9BTnw51jYGulxrlernpsQYXpui1RK21vmXn8yF5bp6iX16yfTtJYGK5Mh1qDkvDOmp2n8sRMcQmR8jiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/core": "^7.0.2", - "@octokit/plugin-paginate-rest": "^13.0.1", - "@octokit/plugin-request-log": "^6.0.0", - "@octokit/plugin-rest-endpoint-methods": "^16.0.0" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", - "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^27.0.0" - } - }, - "node_modules/@phun-ky/typeof": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@phun-ky/typeof/-/typeof-2.0.3.tgz", - "integrity": "sha512-oeQJs1aa8Ghke8JIK9yuq/+KjMiaYeDZ38jx7MhkXncXlUKjqQ3wEm2X3qCKyjo+ZZofZj+WsEEiqkTtRuE2xQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^20.9.0 || >=22.0.0", - "npm": ">=10.8.2" - }, - "funding": { - "url": "https://github.com/phun-ky/typeof?sponsor=1" - } - }, - "node_modules/@release-it/bumper": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@release-it/bumper/-/bumper-7.0.5.tgz", - "integrity": "sha512-HCFMqDHreLYg4jjTWL//pW1GzZZMn3p7HDbwS2y7y5m0L6p8hEaOEixC3tEzwyVV7VP1VGjqxMvxfa360q8+Tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@iarna/toml": "^3.0.0", - "cheerio": "^1.0.0", - "detect-indent": "7.0.1", - "fast-glob": "^3.3.3", - "ini": "^5.0.0", - "js-yaml": "^4.1.0", - "lodash-es": "^4.17.21", - "semver": "^7.7.1" - }, - "engines": { - "node": "^20.9.0 || >=22.0.0" - }, - "peerDependencies": { - "release-it": ">=18.0.0 || >=19.0.0" - } - }, - "node_modules/@release-it/conventional-changelog": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@release-it/conventional-changelog/-/conventional-changelog-10.0.2.tgz", - "integrity": "sha512-Ny+IK4LAwybv5zJrPbOd1Vz1eChk2TIlD5owahmPonqw+LghdLhXrPPGSfzY5XSBqTgUE/6DBlRRpgPK6yk/GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@conventional-changelog/git-client": "^2.5.1", - "concat-stream": "^2.0.0", - "conventional-changelog": "^7.1.1", - "conventional-changelog-angular": "^8.1.0", - "conventional-changelog-conventionalcommits": "^9.1.0", - "conventional-recommended-bump": "^11.2.0", - "semver": "^7.7.3" - }, - "engines": { - "node": "^20.12.0 || >=22.0.0" - }, - "peerDependencies": { - "release-it": "^18.0.0 || ^19.0.0" - } - }, - "node_modules/@simple-libs/child-process-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@simple-libs/child-process-utils/-/child-process-utils-1.0.1.tgz", - "integrity": "sha512-3nWd8irxvDI6v856wpPCHZ+08iQR0oHTZfzAZmnbsLzf+Sf1odraP6uKOHDZToXq3RPRV/LbqGVlSCogm9cJjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@simple-libs/stream-utils": "^1.1.0", - "@types/node": "^22.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://ko-fi.com/dangreen" - } - }, - "node_modules/@simple-libs/stream-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@simple-libs/stream-utils/-/stream-utils-1.1.0.tgz", - "integrity": "sha512-6rsHTjodIn/t90lv5snQjRPVtOosM7Vp0AKdrObymq45ojlgVwnpAqdc+0OBBrpEiy31zZ6/TKeIVqV1HwvnuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "^22.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://ko-fi.com/dangreen" - } - }, - "node_modules/@tootallnate/quickjs-emscripten": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", - "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "22.19.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.2.tgz", - "integrity": "sha512-LPM2G3Syo1GLzXLGJAKdqoU35XvrWzGJ21/7sgZTUpbkBaOasTj8tjwn6w+hCkqaa1TfJ/w67rJSwYItlJ2mYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/parse-path": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@types/parse-path/-/parse-path-7.0.3.tgz", - "integrity": "sha512-LriObC2+KYZD3FzCrgWGv/qufdUy4eXrxcLgQMfYXgPbLIecKIsVBaQgUPmxSSLcjmYbDTQbMgr6qr6l/eb7Bg==", - "dev": true, - "license": "MIT" - }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", - "dev": true, - "license": "MIT" - }, - "node_modules/ast-types": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/async-retry": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", - "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "retry": "0.13.1" - } - }, - "node_modules/basic-ftp": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", - "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/before-after-hook": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz", - "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true, - "license": "ISC" - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "run-applescript": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/c12": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/c12/-/c12-3.3.1.tgz", - "integrity": "sha512-LcWQ01LT9tkoUINHgpIOv3mMs+Abv7oVCrtpMRi1PaapVEpWoMga5WuT7/DqFTu7URP9ftbOmimNw1KNIGh9DQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^4.0.3", - "confbox": "^0.2.2", - "defu": "^6.1.4", - "dotenv": "^17.2.3", - "exsolve": "^1.0.7", - "giget": "^2.0.0", - "jiti": "^2.6.1", - "ohash": "^2.0.11", - "pathe": "^2.0.3", - "perfect-debounce": "^2.0.0", - "pkg-types": "^2.3.0", - "rc9": "^2.1.2" - }, - "peerDependencies": { - "magicast": "^0.3.5" - }, - "peerDependenciesMeta": { - "magicast": { - "optional": true - } - } - }, - "node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chardet": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", - "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cheerio": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.2.tgz", - "integrity": "sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "encoding-sniffer": "^0.2.1", - "htmlparser2": "^10.0.0", - "parse5": "^7.3.0", - "parse5-htmlparser2-tree-adapter": "^7.1.0", - "parse5-parser-stream": "^7.1.2", - "undici": "^7.12.0", - "whatwg-mimetype": "^4.0.0" - }, - "engines": { - "node": ">=20.18.1" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/ci-info": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", - "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/citty": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", - "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "consola": "^3.2.3" - } - }, - "node_modules/cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-spinners": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.3.0.tgz", - "integrity": "sha512-/+40ljC3ONVnYIttjMWrlL51nItDAbBrq2upN8BPyvGU/2n5Oxw3tbNwORCaNuNqLJnxGqOfjUuhsv7l5Q4IsQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 12" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "dev": true, - "engines": [ - "node >= 6.0" - ], - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/confbox": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", - "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/consola": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", - "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.18.0 || >=16.10.0" - } - }, - "node_modules/conventional-changelog": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-7.1.1.tgz", - "integrity": "sha512-rlqa8Lgh8YzT3Akruk05DR79j5gN9NCglHtJZwpi6vxVeaoagz+84UAtKQj/sT+RsfGaZkt3cdFCjcN6yjr5sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@conventional-changelog/git-client": "^2.5.1", - "@types/normalize-package-data": "^2.4.4", - "conventional-changelog-preset-loader": "^5.0.0", - "conventional-changelog-writer": "^8.2.0", - "conventional-commits-parser": "^6.2.0", - "fd-package-json": "^2.0.0", - "meow": "^13.0.0", - "normalize-package-data": "^7.0.0" - }, - "bin": { - "conventional-changelog": "dist/cli/index.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/conventional-changelog-angular": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.1.0.tgz", - "integrity": "sha512-GGf2Nipn1RUCAktxuVauVr1e3r8QrLP/B0lEUsFktmGqc3ddbQkhoJZHJctVU829U1c6mTSWftrVOCHaL85Q3w==", - "dev": true, - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/conventional-changelog-conventionalcommits": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-9.1.0.tgz", - "integrity": "sha512-MnbEysR8wWa8dAEvbj5xcBgJKQlX/m0lhS8DsyAAWDHdfs2faDJxTgzRYlRYpXSe7UiKrIIlB4TrBKU9q9DgkA==", - "dev": true, - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/conventional-changelog-preset-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-5.0.0.tgz", - "integrity": "sha512-SetDSntXLk8Jh1NOAl1Gu5uLiCNSYenB5tm0YVeZKePRIgDW9lQImromTwLa3c/Gae298tsgOM+/CYT9XAl0NA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/conventional-changelog-writer": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.2.0.tgz", - "integrity": "sha512-Y2aW4596l9AEvFJRwFGJGiQjt2sBYTjPD18DdvxX9Vpz0Z7HQ+g1Z+6iYDAm1vR3QOJrDBkRHixHK/+FhkR6Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "conventional-commits-filter": "^5.0.0", - "handlebars": "^4.7.7", - "meow": "^13.0.0", - "semver": "^7.5.2" - }, - "bin": { - "conventional-changelog-writer": "dist/cli/index.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/conventional-commits-filter": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz", - "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/conventional-commits-parser": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.2.1.tgz", - "integrity": "sha512-20pyHgnO40rvfI0NGF/xiEoFMkXDtkF8FwHvk5BokoFoCuTQRI8vrNCNFWUOfuolKJMm1tPCHc8GgYEtr1XRNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "meow": "^13.0.0" - }, - "bin": { - "conventional-commits-parser": "dist/cli/index.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/conventional-recommended-bump": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-11.2.0.tgz", - "integrity": "sha512-lqIdmw330QdMBgfL0e6+6q5OMKyIpy4OZNmepit6FS3GldhkG+70drZjuZ0A5NFpze5j85dlYs3GabQXl6sMHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@conventional-changelog/git-client": "^2.5.1", - "conventional-changelog-preset-loader": "^5.0.0", - "conventional-commits-filter": "^5.0.0", - "conventional-commits-parser": "^6.1.0", - "meow": "^13.0.0" - }, - "bin": { - "conventional-recommended-bump": "dist/cli/index.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", - "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/default-browser": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz", - "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==", - "dev": true, - "license": "MIT", - "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", - "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/defu": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", - "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", - "dev": true, - "license": "MIT" - }, - "node_modules/degenerator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", - "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ast-types": "^0.13.4", - "escodegen": "^2.1.0", - "esprima": "^4.0.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/destr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", - "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", - "dev": true, - "license": "MIT" - }, - "node_modules/detect-indent": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-7.0.1.tgz", - "integrity": "sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - } - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dotenv": { - "version": "17.2.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz", - "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/encoding-sniffer": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", - "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "^0.6.3", - "whatwg-encoding": "^3.1.1" - }, - "funding": { - "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eta": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eta/-/eta-4.0.1.tgz", - "integrity": "sha512-0h0oBEsF6qAJU7eu9ztvJoTo8D2PAq/4FvXVIQA1fek3WOTe6KPsVJycekG1+g1N6mfpblkheoGwaUhMtnlH4A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/bgub/eta?sponsor=1" - } - }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/exsolve": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", - "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-content-type-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz", - "integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fd-package-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fd-package-json/-/fd-package-json-2.0.0.tgz", - "integrity": "sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "walk-up-path": "^4.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", - "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-uri": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", - "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^6.0.2", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/giget": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/giget/-/giget-2.0.0.tgz", - "integrity": "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "citty": "^0.1.6", - "consola": "^3.4.0", - "defu": "^6.1.4", - "node-fetch-native": "^1.6.6", - "nypm": "^0.6.0", - "pathe": "^2.0.3" - }, - "bin": { - "giget": "dist/cli.mjs" - } - }, - "node_modules/git-up": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/git-up/-/git-up-8.1.1.tgz", - "integrity": "sha512-FDenSF3fVqBYSaJoYy1KSc2wosx0gCvKP+c+PRBht7cAaiCeQlBtfBDX9vgnNOHmdePlSFITVcn4pFfcgNvx3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-ssh": "^1.4.0", - "parse-url": "^9.2.0" - } - }, - "node_modules/git-url-parse": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-16.1.0.tgz", - "integrity": "sha512-cPLz4HuK86wClEW7iDdeAKcCVlWXmrLpb2L+G9goW0Z1dtpNS6BXXSOckUTlJT/LDQViE1QZKstNORzHsLnobw==", - "dev": true, - "license": "MIT", - "dependencies": { - "git-up": "^8.1.0" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/hosted-git-info": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz", - "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/htmlparser2": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", - "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.1", - "entities": "^6.0.0" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=16.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/ini": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-5.0.0.tgz", - "integrity": "sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/inquirer": { - "version": "12.9.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.9.6.tgz", - "integrity": "sha512-603xXOgyfxhuis4nfnWaZrMaotNT0Km9XwwBNWUKbIDqeCY89jGr2F9YPEMiNhU6XjIP4VoWISMBFfcc5NgrTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.0", - "@inquirer/core": "^10.2.2", - "@inquirer/prompts": "^7.8.6", - "@inquirer/type": "^3.0.8", - "mute-stream": "^2.0.0", - "run-async": "^4.0.5", - "rxjs": "^7.8.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/ip-address": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", - "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-interactive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", - "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-ssh": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.1.tgz", - "integrity": "sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "protocols": "^2.0.1" - } - }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/issue-parser": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz", - "integrity": "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.capitalize": "^4.2.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.uniqby": "^4.7.0" - }, - "engines": { - "node": "^18.17 || >=20.6.1" - } - }, - "node_modules/jiti": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.capitalize": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", - "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.uniqby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", - "dev": true, - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz", - "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-unicode-supported": "^2.0.0", - "yoctocolors": "^2.1.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/macos-release": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-3.4.0.tgz", - "integrity": "sha512-wpGPwyg/xrSp4H4Db4xYSeAr6+cFQGHfspHzDUdYxswDnUW0L5Ov63UuJiSr8NMSpyaChO4u1n0MXUvVPtrN6A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mimic-function": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/new-github-release-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/new-github-release-url/-/new-github-release-url-2.0.0.tgz", - "integrity": "sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^2.5.1" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/node-fetch-native": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", - "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-package-data": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-7.0.1.tgz", - "integrity": "sha512-linxNAT6M0ebEYZOx2tO6vBEFsVgnPpv+AVjk0wJHfaUIbq31Jm3T6vvZaarnOeWDh8ShnwXuaAyM7WT3RzErA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^8.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/nypm": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.2.tgz", - "integrity": "sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==", - "dev": true, - "license": "MIT", - "dependencies": { - "citty": "^0.1.6", - "consola": "^3.4.2", - "pathe": "^2.0.3", - "pkg-types": "^2.3.0", - "tinyexec": "^1.0.1" - }, - "bin": { - "nypm": "dist/cli.mjs" - }, - "engines": { - "node": "^14.16.0 || >=16.10.0" - } - }, - "node_modules/ohash": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", - "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/onetime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-function": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", - "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "wsl-utils": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-9.0.0.tgz", - "integrity": "sha512-m0pg2zscbYgWbqRR6ABga5c3sZdEon7bSgjnlXC64kxtxLOyjRcbbUkLj7HFyy/FTD+P2xdBWu8snGhYI0jc4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^5.6.2", - "cli-cursor": "^5.0.0", - "cli-spinners": "^3.2.0", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^2.1.0", - "log-symbols": "^7.0.1", - "stdin-discarder": "^0.2.2", - "string-width": "^8.1.0", - "strip-ansi": "^7.1.2" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-name": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-6.1.0.tgz", - "integrity": "sha512-zBd1G8HkewNd2A8oQ8c6BN/f/c9EId7rSUueOLGu28govmUctXmM+3765GwsByv9nYUdrLqHphXlYIc86saYsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "macos-release": "^3.3.0", - "windows-release": "^6.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pac-proxy-agent": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", - "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tootallnate/quickjs-emscripten": "^0.23.0", - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "get-uri": "^6.0.1", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.6", - "pac-resolver": "^7.0.1", - "socks-proxy-agent": "^8.0.5" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/pac-resolver": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", - "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", - "dev": true, - "license": "MIT", - "dependencies": { - "degenerator": "^5.0.0", - "netmask": "^2.0.2" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/parse-path": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.1.0.tgz", - "integrity": "sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "protocols": "^2.0.0" - } - }, - "node_modules/parse-url": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-9.2.0.tgz", - "integrity": "sha512-bCgsFI+GeGWPAvAiUv63ZorMeif3/U0zaXABGJbOWt5OH2KCaPHF6S+0ok4aqM9RuIPGyZdx9tR9l13PsW4AYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/parse-path": "^7.0.0", - "parse-path": "^7.0.0" - }, - "engines": { - "node": ">=14.13.0" - } - }, - "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", - "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "domhandler": "^5.0.3", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-parser-stream": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", - "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", - "dev": true, - "license": "MIT", - "dependencies": { - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/perfect-debounce": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-2.0.0.tgz", - "integrity": "sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==", - "dev": true, - "license": "MIT" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-types": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", - "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", - "dev": true, - "license": "MIT", - "dependencies": { - "confbox": "^0.2.2", - "exsolve": "^1.0.7", - "pathe": "^2.0.3" - } - }, - "node_modules/protocols": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.2.tgz", - "integrity": "sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/proxy-agent": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", - "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.6", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.1.0", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.5" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true, - "license": "MIT" - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/rc9": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz", - "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==", - "dev": true, - "license": "MIT", - "dependencies": { - "defu": "^6.1.4", - "destr": "^2.0.3" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/release-it": { - "version": "19.0.6", - "resolved": "https://registry.npmjs.org/release-it/-/release-it-19.0.6.tgz", - "integrity": "sha512-XTCNZ2mV9wjASQmc2bcQjA+ImJiFMijbFSyQE6lDmP1Plq17acjYaoY5FmJb5Lh/Nv4UDwfRlKQMv1DvHFKf1g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/webpro" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/webpro" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "@nodeutils/defaults-deep": "1.1.0", - "@octokit/rest": "22.0.0", - "@phun-ky/typeof": "2.0.3", - "async-retry": "1.3.3", - "c12": "3.3.1", - "ci-info": "^4.3.0", - "eta": "4.0.1", - "git-url-parse": "16.1.0", - "inquirer": "12.9.6", - "issue-parser": "7.0.1", - "lodash.merge": "4.6.2", - "mime-types": "3.0.1", - "new-github-release-url": "2.0.0", - "open": "10.2.0", - "ora": "9.0.0", - "os-name": "6.1.0", - "proxy-agent": "6.5.0", - "semver": "7.7.2", - "tinyglobby": "0.2.15", - "undici": "6.21.3", - "url-join": "5.0.0", - "wildcard-match": "5.1.4", - "yargs-parser": "21.1.1" - }, - "bin": { - "release-it": "bin/release-it.js" - }, - "engines": { - "node": "^20.12.0 || >=22.0.0" - } - }, - "node_modules/release-it/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/release-it/node_modules/undici": { - "version": "6.21.3", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.3.tgz", - "integrity": "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.17" - } - }, - "node_modules/restore-cursor": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", - "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^7.0.0", - "signal-exit": "^4.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/run-applescript": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", - "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-async": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-4.0.6.tgz", - "integrity": "sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", - "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ip-address": "^10.0.1", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", - "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "socks": "^2.8.3" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.22", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", - "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/stdin-discarder": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", - "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz", - "integrity": "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.3.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tinyexec": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", - "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, - "node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/uglify-js": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/undici": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.16.0.tgz", - "integrity": "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.18.1" - } - }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/universal-user-agent": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz", - "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==", - "dev": true, - "license": "ISC" - }, - "node_modules/url-join": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", - "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/walk-up-path": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-4.0.0.tgz", - "integrity": "sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==", - "dev": true, - "license": "ISC", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wildcard-match": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/wildcard-match/-/wildcard-match-5.1.4.tgz", - "integrity": "sha512-wldeCaczs8XXq7hj+5d/F38JE2r7EXgb6WQDM84RVwxy81T/sxB5e9+uZLK9Q9oNz1mlvjut+QtvgaOQFPVq/g==", - "dev": true, - "license": "ISC" - }, - "node_modules/windows-release": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-6.1.0.tgz", - "integrity": "sha512-1lOb3qdzw6OFmOzoY0nauhLG72TpWtb5qgYPiSh/62rjc1XidBSDio2qw0pwHh17VINF217ebIkZJdFLZFn9SA==", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^8.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wsl-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", - "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-wsl": "^3.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", - "dev": true, - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yoctocolors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", - "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yoctocolors-cjs": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", - "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 1f4caa7..0000000 --- a/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "@gleanwork/claude-plugins", - "version": "2.0.0", - "description": "Official Glean plugins for Claude Code - enterprise knowledge integration", - "keywords": [ - "glean", - "claude", - "claude-code", - "plugin", - "mcp", - "enterprise-search", - "knowledge-management" - ], - "homepage": "https://docs.glean.com/mcp", - "bugs": { - "url": "https://github.com/gleanwork/claude-plugins/issues" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/gleanwork/claude-plugins.git" - }, - "license": "MIT", - "author": { - "name": "Glean", - "email": "support@glean.com", - "url": "https://glean.com" - }, - "type": "module", - "scripts": { - "release": "release-it" - }, - "files": [ - ".claude-plugin/**/*", - "plugins/**/*", - "README.md", - "LICENSE" - ], - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org" - }, - "engines": { - "node": ">=18" - }, - "devDependencies": { - "@release-it/bumper": "^7.0.5", - "@release-it/conventional-changelog": "^10.0.2", - "release-it": "^19.0.6", - "yaml": "^2.7.0" - } -} diff --git a/plugins/glean-code/.claude-plugin/plugin.json b/plugins/glean-code/.claude-plugin/plugin.json deleted file mode 100644 index 0b831c1..0000000 --- a/plugins/glean-code/.claude-plugin/plugin.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "glean-code", - "version": "2.0.0", - "description": "Cross-repository code exploration - search code across your org, find examples, identify code owners, and discover similar implementations via Glean. Requires glean-core.", - "author": { - "name": "Glean", - "email": "steve.calvert@glean.com", - "url": "https://glean.com" - }, - "homepage": "https://docs.glean.com/administration/platform/mcp/about", - "repository": "https://github.com/gleanwork/claude-plugins", - "license": "MIT", - "keywords": [ - "glean", - "mcp", - "code-search", - "cross-repo", - "engineering", - "code-exploration", - "planning" - ] -} diff --git a/plugins/glean-code/README.md b/plugins/glean-code/README.md deleted file mode 100644 index fc55824..0000000 --- a/plugins/glean-code/README.md +++ /dev/null @@ -1,85 +0,0 @@ -# Glean Code - -**Cross-repository code exploration — search code across your org, find examples, and discover similar implementations.** - -Leverage Glean's code search to explore beyond your local repository. - -## Prerequisites - -Requires [glean-core](../glean-core) to be installed first. - -## Installation - -```bash -claude plugin install glean-core # if not already installed -claude plugin install glean-code -``` - -## What's included - -### Skill - -- **`using-glean-code`** — Auto-triggers on cross-repo code questions ("how is X implemented", "where is the code for", "find similar code", "how do other teams handle Y"). The skill teaches the workflow; the canonical `code_search` tool reference lives in `glean-core` (see [`using-glean/reference/code-search.md`](../glean-core/skills/using-glean/reference/code-search.md)). - - Reference files under [`skills/using-glean-code/reference/`](skills/using-glean-code/reference/): - - | File | Covers | - |---|---| - | `exploration.md` | Workflow for exploring an unfamiliar system across repos | - | `plan-prep.md` | Gathering enterprise context before entering plan mode | - -### Agents - -- **codebase-navigator** — Navigates internal repositories to find implementations and patterns -- **plan-prep-researcher** — Gathers design docs, implementations, stakeholders, and related systems for planning - -### Commands - -- `/glean-code:codebase-context ` — Get architectural context from internal repos -- `/glean-code:find-examples ` — Find usage examples across the org -- `/glean-code:code-owners ` — Identify who owns/maintains code areas -- `/glean-code:similar-code ` — Find similar implementations across repos -- `/glean-code:plan-prep ` — Research enterprise context before entering plan mode - -## Example usage - -```bash -# Get context before working on a system -/glean-code:codebase-context payments service -/glean-code:codebase-context auth middleware - -# Find examples of how others use an API -/glean-code:find-examples AuthClient -/glean-code:find-examples retry logic - -# Find who to talk to -/glean-code:code-owners billing module -/glean-code:code-owners src/auth - -# Find prior art before building something -/glean-code:similar-code rate limiting -/glean-code:similar-code caching layer - -# Research enterprise context before planning -/glean-code:plan-prep Add authentication to API -/glean-code:plan-prep Refactor payment service -/glean-code:plan-prep Implement webhooks -``` - -## Key differentiator - -**Local search tools only see your current repo.** Glean Code searches across ALL repositories in your organization. This enables: - -- Finding examples: "How do other teams handle authentication?" -- Understanding systems: "What repos touch the billing service?" -- Finding owners: "Who's actively working on payments?" -- Avoiding duplication: "Has someone already built a rate limiter?" - -## Works for monorepos and multi-repo - -Whether your company uses a monorepo or multiple repositories, Glean Code searches across everything that's indexed. - -## Support - -- Documentation: https://docs.glean.com/mcp -- Issues: https://github.com/gleanwork/claude-plugins/issues diff --git a/plugins/glean-code/commands/code-owners.md b/plugins/glean-code/commands/code-owners.md deleted file mode 100644 index 0868363..0000000 --- a/plugins/glean-code/commands/code-owners.md +++ /dev/null @@ -1,212 +0,0 @@ ---- -description: Identify who owns/maintains code areas -argument-hint: Component, service, or file path (e.g., "billing module", "src/auth") ---- - -# Code Owners - -Identify who owns, maintains, or has expertise in a specific code area. - -## Input - -**Component:** `$ARGUMENTS` - -If the input is empty or literal "$ARGUMENTS", show brief usage with 2-3 examples, then stop. Otherwise continue. - ---- - -**Finding owners for:** $ARGUMENTS - -## Why This Matters - -Knowing who to talk to is often the first step to understanding a system: -- Get answers to questions faster -- Find the right reviewer for changes -- Understand the history of decisions -- Identify stakeholders for migrations - ---- - -## Core Principles - -- **Multi-signal identification**: Code + docs + org structure = complete picture -- **Recency matters**: Active maintainers are more useful than historical authors -- **Be skeptical**: Just having commits doesn't mean they're the right contact -- **Quality over quantity**: 2-3 right people beats 10 tangential names - ---- - -## Process - -### Phase 1: Find Recent Contributors - -**Actions**: -Search for who's been actively working on this code: - -``` -code_search "$ARGUMENTS owner:* updated:past_month" -code_search "$ARGUMENTS from:* updated:past_3_months" -``` - -### Phase 2: Find Historical Authors - -Look for original authors and significant contributors: - -``` -code_search "$ARGUMENTS owner:* after:2023-01-01" -``` - -### Phase 3: Find Related Documentation Authors - -People who wrote the docs often have deep knowledge: - -``` -search "$ARGUMENTS design doc OR architecture owner:*" -search "$ARGUMENTS RFC owner:*" -``` - -### Phase 4: Cross-Reference with Org Info - -Get current roles and contact info: - -``` -employee_search "[contributor names]" -``` - -### Phase 5: Vet Each Candidate (CRITICAL) - -**Goal**: Filter to people who can actually help - BE SKEPTICAL - -For each person found, evaluate: - -**Active Ownership Test** -- Are they actively maintaining this code? -- ✅ ACTIVE OWNER: Multiple commits in past 3 months, reviews PRs -- ⚠️ SEMI-ACTIVE: Occasional activity, still relevant -- 📚 HISTORICAL: Built it but no longer maintains -- ❌ REJECT: Single commit, tangential involvement - -**Current Relevance Test** -- Are they still in a position to help? -- ✅ CURRENT: Same team, same area -- ⚠️ MOVED: Changed teams but retains context -- ❌ REJECT: Left company, completely different area now - -**Knowledge Depth Test** -- Do they have real knowledge or just happened to touch the code? -- ✅ DEEP: Wrote design docs, significant PRs, named in CODEOWNERS -- ⚠️ MODERATE: Regular contributor, knows the code -- ❌ REJECT: Minor commits, typo fixes, one-off changes - -**Contact Appropriateness Test** -- Is it appropriate to contact them about this? -- ✅ YES: Owns the code, expects questions -- ⚠️ MAYBE: Good knowledge but busy/senior - suggest alternatives first -- ❌ NO: Would be surprised to be contacted about this - -### Phase 6: Present Vetted Ownership Map - -**Actions**: -Present the ownership map: - -```markdown -# Code Ownership: [Component] - -## Vetting Summary -| Candidates Found | Active Owners | Historical | Rejected | -|------------------|---------------|------------|----------| -| [X] | [Y] | [Z] | [W] | - -## Primary Contacts (Recommended) -These are your best contacts based on activity and expertise: - -### 1. [Name] - [Title] -**Confidence**: High -- **Why**: Most active contributor, [X] commits in past month -- **Good for**: Day-to-day questions, PR reviews -- **Last active**: [date] -- **Contact**: [email] - -### 2. [Name] - [Title] -**Confidence**: High -- **Why**: Wrote original design doc, still reviews PRs -- **Good for**: Architecture questions, historical context -- **Last active**: [date] -- **Contact**: [email] - -## Secondary Contacts -These people have context but are less ideal as first contact: - -| Name | Role | Why Secondary | Contact | -|------|------|---------------|---------| -| [Name] | [Title] | Moved to [team] but retains context | [email] | - -## Historical Contributors -People who built this but have moved on - use only for historical context: - -| Name | Contribution | Current Role | Last Active | -|------|--------------|--------------|-------------| -| [Name] | Original author | Now on [team] | [date] | - -## Team Ownership -If there's a clear team that owns this: -- **Team**: [team name] -- **Manager**: [name] -- **Slack channel**: [channel] (may be faster than individual outreach) - -## Rejected Candidates -| Name | Reason | -|------|--------| -| [Name] | Single commit - typo fix only | -| [Name] | Left company | -| [Name] | Tangential involvement only | - -## Notes -- [Any relevant context about ownership transitions] -- [Known gaps or areas without clear ownership] -``` - ---- - -## If No Clear Owners Found - -This is important information - be clear about it: - -```markdown -# Code Ownership: [Component] - -## Ownership Unclear - -I couldn't identify clear owners for this component. - -**What I searched:** -- Recent commits: [results] -- CODEOWNERS: [results] -- Design docs: [results] - -**Possible explanations:** -- Ownership may be implicit within a team -- Code may be unmaintained/legacy -- Different naming conventions may be in use - -**Suggested next steps:** -1. Check the repository's CODEOWNERS or MAINTAINERS file directly -2. Look at recent PR reviewers as a proxy -3. Ask in [relevant Slack channel] -4. Check with team lead in adjacent area: [suggestion] -``` - ---- - -## Troubleshooting - -### No Results Found -If searches return no results: -- Try broader search terms (e.g., parent directory name) -- Check if the component name matches repository naming -- Try alternative names or acronyms - -### Ownership Unclear -If no clear owners are found: -- This is valuable information - report it clearly -- Don't pad with weak candidates to seem comprehensive diff --git a/plugins/glean-code/commands/find-examples.md b/plugins/glean-code/commands/find-examples.md deleted file mode 100644 index e8486c2..0000000 --- a/plugins/glean-code/commands/find-examples.md +++ /dev/null @@ -1,224 +0,0 @@ ---- -description: Find usage examples of APIs/patterns across the org -argument-hint: API, library, or pattern name (e.g., "AuthClient", "retry logic") ---- - -# Find Examples - -Search across all repositories to find usage examples of an API, library, or pattern. - -## Input - -**API/Pattern:** `$ARGUMENTS` - -If the input is empty or literal "$ARGUMENTS", show brief usage with 2-3 examples, then stop. Otherwise continue. - ---- - -**Looking for examples of:** $ARGUMENTS - -## Why This Matters - -Before implementing something, it's valuable to see how other teams have done it. This helps you: -- Follow established conventions -- Avoid reinventing the wheel -- Learn from others' patterns -- Identify shared libraries you might use - ---- - -## Core Principles - -- **Prioritize recency**: Recent examples are more likely to follow current best practices -- **Show context**: Code snippets without context aren't helpful -- **Be skeptical**: Not every match is a good example -- **Quality over quantity**: 3 excellent examples beats 10 mediocre ones - ---- - -## Process - -### Phase 1: Search for Usage - -**Actions**: -Search for the API/pattern across the organization: - -``` -code_search "$ARGUMENTS import OR require" -code_search "$ARGUMENTS usage example" -code_search "$ARGUMENTS implementation" -``` - -### Phase 2: Find Different Approaches - -Look for variations in how it's used: - -``` -code_search "$ARGUMENTS config OR configuration" -code_search "$ARGUMENTS test OR spec" -``` - -### Phase 3: Find Documentation - -Search for any guides or documentation: - -``` -search "$ARGUMENTS how to use OR getting started" -search "$ARGUMENTS best practices OR guidelines" -``` - -### Phase 4: Vet Each Example (CRITICAL) - -**Goal**: Filter to high-quality examples - BE SKEPTICAL - -For each code example found, evaluate: - -**Quality Test** -- Is this actually a good example to follow? -- ✅ INCLUDE: Clean code, well-structured, tested, recent -- ⚠️ CAUTION: Works but has issues (note them) -- ❌ REJECT: Hacky, deprecated, anti-pattern, prototype/throwaway code - -**Recency Test** -- Is this current? -- ✅ INCLUDE: Updated in past 6 months -- ⚠️ CAUTION: 6-12 months old - may be outdated -- ❌ REJECT: 12+ months old with no activity (likely outdated patterns) - -**Context Test** -- Is this a real usage or just noise? -- ✅ INCLUDE: Production code, tests, well-maintained projects -- ❌ REJECT: Experiments, abandoned PRs, copy-pasted boilerplate, generated code - -**Relevance Test** -- Is this the same use case? -- ✅ INCLUDE: Similar context to what user needs -- ⚠️ NOTE: Different context but still instructive -- ❌ REJECT: Just happens to use the same API for unrelated purpose - -**Anti-Pattern Signals - REJECT or WARN**: -- Large try/catch blocks swallowing errors -- Commented-out code -- TODO comments indicating known issues -- Files in `/deprecated/`, `/old/`, `/legacy/` paths -- Tests that are skipped -- Code with no recent commits in repo - -### Phase 5: Present Vetted Examples - -**Actions**: -Format vetted findings: - -```markdown -# Usage Examples: [API/Pattern] - -## Summary -| Examples Found | High Quality | Cautionary | Rejected | -|----------------|--------------|------------|----------| -| [X] | [Y] | [Z] | [W] | - -## Official Documentation -[Only if actually found] -- **[Doc title]** ([link]) - [what it covers] - -## Recommended Examples - -### Example 1: [Repo/Team Name] ⭐ Recommended -**Quality**: High - [why this is a good example] -**File:** [path] ([link]) -**Last Updated**: [date] - -**Context:** [brief description of how they use it] - -\`\`\`[language] -[relevant code snippet] -\`\`\` - -**Why this is good:** -- [specific positive patterns] -- [what makes this exemplary] - -### Example 2: [Repo/Team Name] -**Quality**: Good -**File:** [path] ([link]) -**Last Updated**: [date] - -**Context:** [description] - -\`\`\`[language] -[relevant code snippet] -\`\`\` - -## Examples With Caveats -[Only include if they're still useful despite issues] - -### [Repo/Team Name] - Use With Caution -**File:** [path] ([link]) -**Caveat:** [What to watch out for] - -\`\`\`[language] -[relevant code snippet] -\`\`\` - -**What to copy**: [The good parts] -**What to avoid**: [The problematic parts] - -## Common Patterns Observed -1. **[Pattern]**: Used in [X] high-quality examples - [description] - -## Anti-Patterns to Avoid -[If you found examples of what NOT to do] -- **[Anti-pattern]**: Seen in [X], but [why it's bad] - -## Shared Libraries -[If there's a shared library, strongly recommend it] -- **[library name]** ([link]) - Use this instead of rolling your own - -## Who to Ask -| Name | Why | -|------|-----| -| [Name] | Wrote the recommended example | -``` - ---- - -## If No Good Examples Found - -Be honest: - -```markdown -# Usage Examples: [API/Pattern] - -## No High-Quality Examples Found - -I searched for examples of [API/Pattern] but didn't find examples I'd recommend following. - -**What I found:** -- [X] matches, but all were [outdated/low quality/different context] - -**This could mean:** -- This is a new API with limited adoption -- Different terminology is used internally -- Teams roll their own instead of using a standard - -**Suggested next steps:** -1. Check the [API/library] official documentation directly -2. Ask in [relevant Slack channel] -3. Consider: Is there a reason this isn't widely used? -``` - ---- - -## Troubleshooting - -### No Examples Found -If searches return no results: -- Try alternative names for the API/pattern -- Search for the underlying technology instead -- Note the gap so user knows it's not widely used - -### Too Many Examples -If too many results appear: -- Apply vetting criteria strictly -- Prioritize by recency and quality signals -- Only include examples you'd actually recommend diff --git a/plugins/glean-code/commands/plan-prep.md b/plugins/glean-code/commands/plan-prep.md deleted file mode 100644 index a620964..0000000 --- a/plugins/glean-code/commands/plan-prep.md +++ /dev/null @@ -1,275 +0,0 @@ ---- -description: Research enterprise context before entering plan mode -argument-hint: Task description or problem statement (e.g., "Add authentication to API", "Refactor payment service") ---- - -# Planning Preparation - -Research enterprise context before entering plan mode by gathering design docs, similar implementations, stakeholders, and related systems. - -## Input - -**Task:** `$ARGUMENTS` - -If the input is empty or literal "$ARGUMENTS", show brief usage with 2-3 examples, then stop. Otherwise continue. - ---- - -**Planning for:** $ARGUMENTS - ---- - -## Why This Matters - -Better planning comes from enterprise context: -- **Design Decisions**: Understand what was tried before, why it worked or didn't -- **Similar Implementations**: Find proven patterns and learn from past approaches -- **Stakeholders**: Identify who needs to be involved or who has relevant knowledge -- **Related Systems**: Understand dependencies and integration points -- **Proven Patterns**: Learn from how other teams solved similar problems - ---- - -## Process - -### Phase 1: Search for Design & Architecture - -**Actions**: -Find design documents, RFCs, and architectural decisions related to your task: - -``` -search "$ARGUMENTS architecture OR design doc" -search "$ARGUMENTS RFC OR proposal" -search "$ARGUMENTS pattern OR best practice" -``` - -Look for: -- Existing design decisions that apply -- Architectural patterns already in use -- Why past decisions were made -- Rejected approaches and lessons learned - -### Phase 2: Find Code Implementations & Patterns - -**Actions**: -Search for similar implementations across the codebase: - -``` -code_search "$ARGUMENTS implementation OR pattern" -code_search "[related systems from Phase 1] updated:past_month" -``` - -Look for: -- How other teams solved similar problems -- Existing code you can learn from -- Patterns that are already in use -- Quality and maintenance level of examples - -### Phase 3: Identify Stakeholders & Owners - -**Actions**: -Find who's actively working on related systems: - -``` -code_search "[relevant systems] owner:* updated:past_month" -employee_search "[systems and names identified]" -``` - -Look for: -- Active code owners and maintainers -- People with recent commits in related areas -- Team leads and architects -- Documentation authors - -### Phase 4: Find Related Systems - -**Actions**: -Identify upstream and downstream dependencies: - -``` -code_search "[main system] calls OR depends OR imports" -code_search "[main system] updated:past_month" -``` - -Look for: -- Systems that will be affected -- Dependencies and integration points -- Existing integrations to learn from -- Systems to coordinate with - -### Phase 5: Vet All Research (CRITICAL) - -**Goal**: Filter to genuinely useful context - BE SKEPTICAL - -For each piece of research, evaluate: - -**Relevance Test** -- Does this actually apply to your task? -- ✅ RELEVANT: Directly applicable -- ⚠️ RELATED: Similar context but different use case -- ❌ TANGENTIAL: Keyword match only - reject - -**Currency Test** -- Is this information still accurate? -- ✅ CURRENT: Updated in past 6 months -- ⚠️ AGING: 6-12 months old - note with caution -- ❌ STALE: 12+ months old - likely outdated, reject - -**Authority Test** -- Is this authoritative information? -- ✅ OFFICIAL: Approved RFC, official design doc -- ⚠️ INFORMAL: Team wiki, notes, proposals -- ❌ OUTDATED: Rejected ideas, abandoned work - -**Quality Test** -- Is this good guidance to follow? -- ✅ GOOD: Well-reasoned, documented, proven -- ⚠️ ACCEPTABLE: Works but has tradeoffs -- ❌ POOR: Hacky, experimental, unproven - -### Phase 6: Generate Planning Context Report - -**Actions**: -Present vetted research findings organized by category: - -```markdown -# Planning Context: [Task] - -## Design & Architecture -**What you need to know about related architectural decisions:** - -### Current Standards & Patterns -| Pattern | Description | Source | Updated | -|---------|-------------|--------|---------| -| [pattern] | [what it is and why] | [doc link] | [date] ✅ | - -### Relevant Design Documents -| Document | Type | Key Takeaway | Updated | -|----------|------|--------------|---------| -| [Title] | RFC | [1-2 sentence summary] | [date] ✅ | - -### Previous Decisions & Context -- **[Topic]**: [Why was decision X made? Lessons learned?] (source: [link]) -- **[Topic]**: [What was tried before? Results?] - -## Implementations & Patterns -**Proven approaches and code examples to learn from:** - -### Recommended Examples -| Location | What It Does | Why It's Good | Status | -|----------|--------------|---------------|--------| -| [repo/path] | [brief description] | [Why recommend this] | Active ✅ | - -### Pattern Summary -- **[Pattern name]**: Used in [systems], benefits: [why] -- **[Pattern name]**: Alternative approach in [systems] - -## Stakeholders & Ownership -**Key people and teams involved in this area:** - -### Active Owners (Your Best Contacts) -| Name | Role | Involvement | Contact | -|------|------|-------------|---------| -| [Name] | [Title] | Most active in [system], [X] commits past month | [email] | - -### Teams & Channels -- **Primary Team**: [team name] -- **Slack Channel**: [#channel] for questions/collaboration -- **Code Owners**: [CODEOWNERS or maintainers file reference] - -## Related Systems -**What else this affects or depends on:** - -- **Upstream Systems** (call your code): [systems that depend on this] -- **Downstream Systems** (you call): [systems this depends on] -- **Integration Points**: [key APIs or contracts to understand] - -## Key Insights -**Synthesized findings and critical context:** - -- [Important observation or constraint] -- [Risk or opportunity to consider] -- [Proven pattern or anti-pattern] -- [Stakeholders who must be involved] - -## Sources & Links -**All citations for verification:** - -| Document/Link | Type | Relevance | Currency | -|---------------|------|-----------|----------| -| [Title](URL) | RFC | [how it applies] | Updated [date] ✅ | - ---- - -## Ready to Plan? - -You now have enterprise context for your planning work. You can: -1. Enter plan mode with this research visible -2. Explore any findings deeper by clicking sources -3. Identify stakeholders to involve in the planning -4. Reference proven patterns and decisions - -The plan will be better informed by organizational knowledge. -``` - ---- - -## If Limited Context Found - -Don't pad with weak results: - -```markdown -# Planning Context: [Task] - -## Limited Research Available - -I found limited enterprise context on this specific task. - -**What I searched:** -- Design docs and RFCs related to [task] -- Similar implementations in codebase -- Related systems and owners - -**What I found:** -- [X] design docs (most recent: [date]) -- [Y] code implementations (status: [active/aging/stale]) -- [Z] related systems - -**Gaps:** -- No recent design documents -- Limited prior art to reference -- [Other gaps] - -**What this means:** -This may be a new problem area, or documentation may not be centralized. - -**Suggested next steps:** -1. Check with [suggested team/expert] about prior attempts -2. Look for [alternative search terms or systems] -3. Once you design your approach, you can then refine it with the team -4. Enter plan mode to design your initial approach, then validate with stakeholders -``` - ---- - -## Troubleshooting - -### No Results Found -If searches return no results: -- Try broader or alternative terms -- Look for related system names or acronyms -- Check if this area might not be documented in Glean - -### Conflicting Information -If you find contradictory guidance: -- Note the discrepancy clearly -- Check dates - prefer more recent sources -- This often means you should talk to stakeholders directly -- Include this in your planning context - -### Too Many Results -If results are overwhelming: -- Filter by recency (prefer sources updated in past 6 months) -- Focus on authoritative sources (RFCs, official docs) -- Identify 3-4 most relevant findings -- Quality over quantity diff --git a/plugins/glean-code/commands/similar-code.md b/plugins/glean-code/commands/similar-code.md deleted file mode 100644 index 260ed88..0000000 --- a/plugins/glean-code/commands/similar-code.md +++ /dev/null @@ -1,243 +0,0 @@ ---- -description: Find similar implementations across repos -argument-hint: Pattern, feature, or problem (e.g., "rate limiting", "retry logic") ---- - -# Similar Code - -Search for similar implementations across the organization to find prior art, alternative approaches, or shared solutions. - -## Input - -**Pattern:** `$ARGUMENTS` - -If the input is empty or literal "$ARGUMENTS", show brief usage with 2-3 examples, then stop. Otherwise continue. - ---- - -**Looking for similar implementations of:** $ARGUMENTS - -## Why This Matters - -Before building something, check if it already exists: -- Find shared libraries you can use -- Learn from others' approaches -- Avoid duplicating effort -- Identify patterns to follow (or avoid) - ---- - -## Core Principles - -- **Find the blessed path**: Look for official/platform solutions first -- **Compare approaches**: Different solutions have different tradeoffs -- **Be skeptical**: Not every implementation is worth following -- **Quality over quantity**: 3 vetted implementations beats 10 random matches - ---- - -## Process - -### Phase 1: Search for Direct Implementations - -**Actions**: -Look for the pattern/feature across all repos: - -``` -code_search "$ARGUMENTS implementation" -code_search "$ARGUMENTS handler OR service" -code_search "$ARGUMENTS util OR helper" -``` - -### Phase 2: Search for Alternative Terms - -The same concept might be named differently: - -``` -code_search "[synonym 1] implementation" -code_search "[synonym 2] service" -``` - -For example, "rate limiting" might also be called "throttling", "quota", "backpressure". - -### Phase 3: Find Shared Libraries - -Look for centralized implementations: - -``` -code_search "$ARGUMENTS package OR library" -search "$ARGUMENTS shared library OR common" -``` - -### Phase 4: Find Related Discussions - -Search for design discussions about this pattern: - -``` -search "$ARGUMENTS design doc OR RFC" -search "$ARGUMENTS best practices OR guidelines" -``` - -### Phase 5: Vet Each Implementation (CRITICAL) - -**Goal**: Filter to implementations worth following - BE SKEPTICAL - -For each implementation found, evaluate: - -**Quality Test** -- Is this actually good code to follow? -- ✅ RECOMMENDED: Clean, tested, well-maintained, follows best practices -- ⚠️ ACCEPTABLE: Works but has caveats -- ❌ REJECT: Hacky, untested, deprecated, anti-pattern - -**Maintenance Test** -- Is this actively maintained? -- ✅ ACTIVE: Commits in past 3 months, active PR reviews -- ⚠️ SLOWING: Last commit 3-12 months ago -- ❌ STALE: No activity in 12+ months - likely outdated - -**Adoption Test** -- Is this actually used or an abandoned experiment? -- ✅ PRODUCTION: Deployed, actively used -- ⚠️ LIMITED: Small usage, may have issues -- ❌ REJECT: Experiments, prototypes, abandoned PRs - -**Ownership Test** -- Is there someone maintaining this? -- ✅ OWNED: Clear maintainer, responds to issues -- ⚠️ UNCLEAR: Works but no clear owner -- ❌ ORPHANED: No owner, no maintenance - -**Anti-Pattern Signals - REJECT or WARN**: -- In `/deprecated/`, `/old/`, `/legacy/` paths -- Large commented-out sections -- TODOs indicating known issues -- Skipped tests -- Copy-pasted boilerplate -- No tests at all - -### Phase 6: Present Vetted Comparison - -**Actions**: -Present comparison of vetted implementations: - -```markdown -# Similar Implementations: [Pattern] - -## Vetting Summary -| Implementations Found | Recommended | Acceptable | Rejected | -|-----------------------|-------------|------------|----------| -| [X] | [Y] | [Z] | [W] | - -## Recommended Solution -If there's an official or widely-used solution: -- **Library**: [name] ([link]) -- **Maintained by**: [team/person] -- **Status**: Active, [X] commits in past month -- **Recommendation**: ⭐ Use this instead of building your own - -## Vetted Implementations - -### ⭐ Implementation 1: [Repo Name] - RECOMMENDED -**Quality**: High -**Location:** [path] ([link]) -**Last Updated**: [date] -**Maintainer**: [person/team] - -**Approach:** [brief description] - -**Why recommended:** -- [specific positive pattern] -- [why this is well-done] - -**Caveats:** [any limitations] - -### Implementation 2: [Repo Name] - ACCEPTABLE -**Quality**: Good with caveats -**Location:** [path] ([link]) -**Last Updated**: [date] - -**Approach:** [brief description] - -**Pros:** -- [advantage] - -**Cons:** -- [limitation - be specific] - -### Implementation 3: [Repo Name] - USE WITH CAUTION -**Quality**: Acceptable but dated -**Location:** [path] ([link]) -**Last Updated**: [date] ⚠️ - -**Caveat:** [Why to be careful] - -## Rejected Implementations -| Repo | Reason | -|------|--------| -| [repo] | No commits in 18 months, likely outdated | -| [repo] | Prototype code, never production-ready | -| [repo] | Known issues in TODO comments | - -## Pattern Analysis -| Pattern | Used By | Quality | Recommendation | -|---------|---------|---------|----------------| -| [Pattern A] | [X] repos | Good | Follow this approach | -| [Pattern B] | [Y] repos | Mixed | Avoid unless [condition] | - -## Anti-Patterns to Avoid -[If you found examples of what NOT to do] -- **[Anti-pattern]**: Found in [repo], problematic because [reason] - -## Recommendations - -1. **Best option**: Use [recommended implementation] because [reason] -2. **If that doesn't fit**: Consider [alternative] for [use case] -3. **Avoid**: Don't follow [anti-pattern] approach - -## Related Documentation -- **[RFC/Design doc]** ([link]) - [summary] -``` - ---- - -## If No Good Implementations Found - -Be honest - this is valuable information: - -```markdown -# Similar Implementations: [Pattern] - -## No Recommended Implementations Found - -I searched for implementations of [pattern] but didn't find any I'd recommend following. - -**What I found:** -- [X] matches, but all were [outdated/low quality/abandoned] - -**This could mean:** -- This problem may not have a standard solution internally -- Teams may be using external libraries instead -- Naming conventions may differ - -**Suggested next steps:** -1. Check for external libraries: [suggestions] -2. Ask in [relevant Slack channel] about approaches -3. If building new, consider making it a shared library -``` - ---- - -## Troubleshooting - -### No Implementations Found -If searches return no results: -- Try synonyms (e.g., "rate limiting" → "throttling") -- Search for the problem, not just the solution name -- Check for external library usage - -### Too Many Implementations -If many solutions exist: -- Apply vetting criteria strictly -- Focus on most recently maintained -- Note duplication as potential consolidation opportunity diff --git a/plugins/glean-code/skills/using-glean-code/SKILL.md b/plugins/glean-code/skills/using-glean-code/SKILL.md deleted file mode 100644 index f2e3e1f..0000000 --- a/plugins/glean-code/skills/using-glean-code/SKILL.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -name: using-glean-code -description: Search and analyze internal source code across the user's organization's repositories. Use when the user asks how something is implemented, where the code for a system lives, who has been working on a codebase, or wants to find similar patterns across teams — i.e., questions that need visibility beyond the local working directory. -when_to_use: | - Trigger phrases include "how is X implemented", "where is the code for", "find the implementation of", "what repos contain", "who wrote the code for", "how do other teams handle", "find similar code to", "examples of using", "prior art for". - - Don't use this skill for code in the current working directory — prefer local Grep / Glob. Don't use it for design docs (use the `using-glean` skill's `search` reference) or for finding people without code context (use the `using-glean` skill's `employee-search` reference). ---- - -# Using Glean for Code Exploration - -Glean indexes source code across the user's organization's connected repositories. Local tools (`Grep`, `Glob`, `Read`) see only the current repo; this skill is for everything else. - -## When to reach for this - -- **Finding the system** — "Where does our payments code live?" -- **Finding the patterns** — "How do other teams handle rate limiting?" -- **Finding the people** — combining code authorship with `employee_search` reveals real owners (not just titled ones) -- **Prior art before designing** — see [reference/plan-prep.md](reference/plan-prep.md) for the research-before-plan workflow - -## The tool you'll mostly use - -This skill drives the `code_search` MCP tool. For full param shape, inline filter syntax, and pitfalls (quoting names, the `app:` filter not applying, recency caveats), read [`using-glean/reference/code-search.md`](../../../../glean-core/skills/using-glean/reference/code-search.md) in the `glean-core` plugin. That's the canonical reference; this skill carries the *workflow* on top. - -For this skill's own workflow patterns, see: - -- [reference/exploration.md](reference/exploration.md) — exploring an unfamiliar system across repos: what to search for, what to filter, what to present -- [reference/plan-prep.md](reference/plan-prep.md) — gathering enterprise context before entering plan mode for architectural / strategic work - -## Vetting - -Not every match is worth surfacing. Code in `legacy/`, `deprecated/`, `archive/`, abandoned repos, or files with extensive `TODO/FIXME` comments will mislead the user. Apply the criteria in [`using-glean/reference/vetting.md`](../../../../glean-core/skills/using-glean/reference/vetting.md) and prefer 3 high-quality matches over 10 unfiltered ones. - -## Output expectations - -When presenting code findings: - -1. **Cite each file with its full URL** so the user can open it directly -2. **Note last-update date** when a result depends on currency (active patterns vs. archaeological digs) -3. **Group by repo** when results span many repos — it shows the user the shape of the answer -4. **Flag drift** when implementations disagree across teams — don't pretend consensus exists if it doesn't - -## Related commands - -- `/glean-code:codebase-context ` — structured architecture rundown for an unfamiliar system -- `/glean-code:similar-code ` — find similar implementations -- `/glean-code:find-examples ` — usage examples -- `/glean-code:code-owners ` — maintainers and contributors -- `/glean-code:plan-prep ` — the workflow described in [reference/plan-prep.md](reference/plan-prep.md) diff --git a/plugins/glean-core/.claude-plugin/plugin.json b/plugins/glean-core/.claude-plugin/plugin.json deleted file mode 100644 index 92a1d7a..0000000 --- a/plugins/glean-core/.claude-plugin/plugin.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "glean-core", - "version": "2.0.0", - "description": "Core Glean MCP integration - provides shared skills, tool guidance, and MCP configuration. Required foundation for all other Glean plugins.", - "author": { - "name": "Glean", - "email": "steve.calvert@glean.com", - "url": "https://glean.com" - }, - "homepage": "https://docs.glean.com/administration/platform/mcp/about", - "repository": "https://github.com/gleanwork/claude-plugins", - "license": "MIT", - "keywords": [ - "glean", - "mcp", - "enterprise-search", - "core", - "foundation" - ] -} diff --git a/plugins/glean-core/README.md b/plugins/glean-core/README.md deleted file mode 100644 index 356b31f..0000000 --- a/plugins/glean-core/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# Glean Core - -**Required foundation for all Glean plugins.** - -Provides the canonical skill for using Glean's MCP tools, plus the commands and hook that configure your Glean MCP server connection. - -## Installation - -```bash -claude plugin install glean-core -``` - -## What's included - -### Skill - -- **`using-glean`** — Auto-triggers when the user asks about anything in enterprise systems (documents, people, meetings, internal code, email, the user's own activity, structured memory, the knowledge graph). The skill teaches Claude how to map the user's question to the right Glean MCP tool and links to per-tool reference files. - - Reference files live under [`skills/using-glean/reference/`](skills/using-glean/reference/) and are loaded only when needed: - - | File | Covers | - |---|---| - | `search.md` | The `search` tool: structured params, filters, pitfalls | - | `chat.md` | The `chat` tool: when synthesis beats raw search | - | `code-search.md` | The `code_search` tool: inline filters, query patterns | - | `employee-search.md` | The `employee_search` tool: people, teams, org structure | - | `meeting-lookup.md` | The `meeting_lookup` tool: dates, transcripts, peer calendars | - | `gmail-search.md` | The `gmail_search` tool (Google Workspace email) | - | `outlook-search.md` | The `outlook_search` tool (Microsoft 365 email) | - | `read-document.md` | The `read_document` tool: full content by URL | - | `user-activity.md` | The `user_activity` tool: the user's own work history | - | `memory.md` | `read_memory` + `memory_schema` | - | `knowledge-graph.md` | `knowledge_graph_query` + `knowledge_graph_schema` | - | `agents-as-tools.md` | Discovering and invoking dynamic Glean platform agents | - | `synthesis.md` | Combining multiple tools for cross-source answers | - | `vetting.md` | Source quality, freshness, authority — before presenting | - -### Commands - -- `/glean-core:mcp-setup` — Configure your Glean MCP server connection -- `/glean-core:status` — Check MCP connection status - -### Hooks - -- **SessionStart** — Automatically checks MCP configuration on session start - -## Requirements - -- Claude Code CLI -- Glean MCP server configured (run `/glean-core:mcp-setup` to configure) - -## Next steps - -After installing glean-core, install the feature plugins you need: - -| Plugin | Purpose | -|---|---| -| [glean-search](../glean-search) | Quick enterprise search workflow | -| [glean-people](../glean-people) | People discovery and expertise workflows | -| [glean-meetings](../glean-meetings) | Meeting catch-up and prep workflows | -| [glean-docs](../glean-docs) | Onboarding and RFC verification workflows | -| [glean-code](../glean-code) | Cross-repo code exploration | -| [glean-productivity](../glean-productivity) | Personal activity, priorities, briefings | -| [glean-project](../glean-project) | Project status and handoff | -| [glean-skills](../glean-skills) | Generate new Claude Code skills from your work patterns | -| [glean-dev-docs](../glean-dev-docs) | Glean platform / SDK documentation | - -## Support - -- Documentation: https://docs.glean.com/mcp -- Issues: https://github.com/gleanwork/claude-plugins/issues diff --git a/plugins/glean-core/commands/mcp-setup.md b/plugins/glean-core/commands/mcp-setup.md deleted file mode 100644 index a7f181c..0000000 --- a/plugins/glean-core/commands/mcp-setup.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -description: Configure a Glean MCP server connection -allowed-tools: [Bash, AskUserQuestion] ---- - -# Glean MCP Server Setup - -Help the user configure a Glean MCP server for Claude Code. This command can be run multiple times to add multiple servers. - -## Setup Flow - -Guide the user through these steps interactively using AskUserQuestion: - -### Step 1: Get Server URL - -Ask the user for their Glean server URL. Explain that they can find it at . The URL will look something like `https://acme-be.glean.com` or `https://be-4f5226e2.glean.com`. - -### Step 2: Get Server Name - -Ask the user for the server name they want to connect to. Explain that their Glean administrator should have provided this. Common examples include `default`, but server names are organization-specific. - -### Step 3: Get Friendly Name - -Ask what friendly name to use for this server in Claude Code. Suggest: - -- `glean` if this is their only server -- `glean-[server-name]` if adding multiple (e.g., `glean-default`, `glean-code`) - -### Step 4: Configure MCP Server - -Once you have all three values, construct and run the command: - -```bash -claude mcp add [friendly-name] [server-url]/mcp/[server-name] --transport http --scope user -``` - -Where `[server-url]` is the URL from Step 1 (e.g., `https://acme-be.glean.com` or `https://be-4f5226e2.glean.com`). - -### Step 5: Confirm Success - -After running the command: - -1. Confirm the server was added successfully -2. Remind the user to restart Claude Code to activate the new server -3. Explain that they'll be prompted to authenticate on first use (OAuth) -4. Offer to run `/glean-core:mcp-setup` again if they want to add another server - -## Important Notes - -- The URL format is: `[server-url]/mcp/[server-name]` -- Find your server URL at -- Transport must be `http` (Glean MCP is a remote server) -- Scope should be `user` for personal configuration -- Claude Code handles OAuth authentication automatically on first tool use diff --git a/plugins/glean-core/commands/status.md b/plugins/glean-core/commands/status.md deleted file mode 100644 index e7b8fb7..0000000 --- a/plugins/glean-core/commands/status.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -description: Check Glean MCP server connection status -allowed-tools: [Bash] ---- - -# Glean Connection Status - -Check the status of configured Glean MCP servers. - -## Steps - -### 1. List Configured MCP Servers - -Run: -```bash -claude mcp list -``` - -### 2. Analyze Results - -Look for any servers with URLs matching `glean.com/mcp` in the output. - -### 3. Report Status - -**If Glean servers are found:** -- List each Glean server by name -- Show the URL for each -- Confirm they are configured for HTTP transport - -**If no Glean servers are found:** -- Inform the user that no Glean MCP servers are configured -- Suggest running `/glean-core:mcp-setup` to configure one -- Provide a brief explanation of what Glean MCP enables - -### 4. Test Connectivity (Optional) - -If the user wants to verify the connection is working, suggest they try a simple search. Remind them that on first use, they'll be prompted to authenticate via OAuth. - -## Example Output Format - -``` -Glean MCP Status: - -Configured Servers: - - glean: https://acme-be.glean.com/mcp/default (http) - - glean-code: https://acme-be.glean.com/mcp/code-search (http) - -Status: Ready (authentication will be prompted on first use) -``` - -Or if none configured: - -``` -Glean MCP Status: - -No Glean MCP servers configured. - -Run /glean-core:mcp-setup to configure a Glean MCP server. -``` diff --git a/plugins/glean-core/hooks/hooks.json b/plugins/glean-core/hooks/hooks.json deleted file mode 100644 index af6bb4d..0000000 --- a/plugins/glean-core/hooks/hooks.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "description": "Glean plugin hooks for session initialization", - "hooks": { - "SessionStart": [ - { - "matcher": "*", - "hooks": [ - { - "type": "command", - "command": "bash ${CLAUDE_PLUGIN_ROOT}/scripts/session-start.sh", - "timeout": 15 - } - ] - } - ] - } -} diff --git a/plugins/glean-core/scripts/session-start.sh b/plugins/glean-core/scripts/session-start.sh deleted file mode 100755 index 026e085..0000000 --- a/plugins/glean-core/scripts/session-start.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash -set -euo pipefail - -# Get the directory where this script is located -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -PLUGIN_ROOT="$(dirname "$SCRIPT_DIR")" -TEMPLATES_DIR="$SCRIPT_DIR/templates" - -# Read version from plugin.json -VERSION=$(grep '"version"' "$PLUGIN_ROOT/.claude-plugin/plugin.json" 2>/dev/null | head -1 | cut -d'"' -f4 || echo "unknown") - -# Convert a template file to JSON systemMessage format -# Reads the file, substitutes variables, and escapes it for JSON string output -output_json() { - local template_file="$1" - local content - content=$(cat "$template_file") - - # Substitute version placeholder - content="${content//\{\{VERSION\}\}/$VERSION}" - - # Escape for JSON: backslashes, quotes, and convert newlines to \n - local escaped - escaped=$(printf '%s' "$content" | sed 's/\\/\\\\/g; s/"/\\"/g' | awk '{printf "%s\\n", $0}' | sed 's/\\n$//') - - printf '{\n "systemMessage": "%s"\n}\n' "$escaped" -} - -# Check if any Glean MCP servers are configured -if node -e "const c=require('$HOME/.claude.json'); process.exit(Object.keys(c.mcpServers||{}).some(k=>k.toLowerCase().includes('glean'))?0:1)" 2>/dev/null; then - exit 0 -else - output_json "$TEMPLATES_DIR/session-unconfigured.txt" -fi diff --git a/plugins/glean-core/scripts/templates/session-configured.txt b/plugins/glean-core/scripts/templates/session-configured.txt deleted file mode 100644 index 70404ef..0000000 --- a/plugins/glean-core/scripts/templates/session-configured.txt +++ /dev/null @@ -1,3 +0,0 @@ -Glean (v{{VERSION}}) - Work AI is connected. - -Type /glean- to discover available commands. diff --git a/plugins/glean-core/scripts/templates/session-unconfigured.txt b/plugins/glean-core/scripts/templates/session-unconfigured.txt deleted file mode 100644 index dd8074e..0000000 --- a/plugins/glean-core/scripts/templates/session-unconfigured.txt +++ /dev/null @@ -1,3 +0,0 @@ -Glean (v{{VERSION}}) is installed but no MCP server is configured. - -Run /glean-core:mcp-setup to connect to your Glean instance. diff --git a/plugins/glean-dev-docs/.claude-plugin/plugin.json b/plugins/glean-dev-docs/.claude-plugin/plugin.json index 1d18f01..9183fbb 100644 --- a/plugins/glean-dev-docs/.claude-plugin/plugin.json +++ b/plugins/glean-dev-docs/.claude-plugin/plugin.json @@ -1,21 +1,13 @@ { "name": "glean-dev-docs", - "version": "2.0.0", - "description": "Access Glean's developer documentation - search API references, SDK guides, and integration tutorials via the Glean Developer Docs MCP Server.", + "version": "3.0.0", + "description": "Search the public Glean developer documentation — APIs, SDKs, MCP, and integration guides for building with Glean.", "author": { "name": "Glean", "email": "steve.calvert@glean.com", "url": "https://glean.com" }, - "homepage": "https://developers.glean.com", - "repository": "https://github.com/gleanwork/claude-plugins", - "license": "MIT", - "keywords": [ - "glean", - "mcp", - "developer-docs", - "api", - "sdk", - "documentation" - ] + "homepage": "https://docs.glean.com/administration/platform/mcp/about", + "repository": "https://github.com/gleanwork/agent-plugins", + "license": "MIT" } diff --git a/plugins/glean-dev-docs/CHANGELOG.md b/plugins/glean-dev-docs/CHANGELOG.md new file mode 100644 index 0000000..c27e8e0 --- /dev/null +++ b/plugins/glean-dev-docs/CHANGELOG.md @@ -0,0 +1,43 @@ +# Changelog + +## 3.0.0 (2026-06-14) + +### Features + +* add connect-glean skill for Glean MCP setup ([45e6864](https://github.com/gleanwork/agent-plugins/commit/45e6864dd672aec90362e54d2c86891e04ffec7d)) +* consolidate Glean agent plugins ([67c689e](https://github.com/gleanwork/agent-plugins/commit/67c689e0e6a5b008e35423638af9494e9a1c5c1f)) +* consolidate sources, add skills authoring + project-handoff, scaffold release-it ([c79492c](https://github.com/gleanwork/agent-plugins/commit/c79492c9dc8fab8cd2c5aec4f098df488c09dce7)) +* unify skills into one source compiled to one plugin per target ([0f60738](https://github.com/gleanwork/agent-plugins/commit/0f607387890a735fffc94b1742d2dd8debaa7a54)) + +### Bug Fixes + +* bump create-github-app-token to v3 (Node 24) ([eb6183d](https://github.com/gleanwork/agent-plugins/commit/eb6183ddc294b965e87dc740cf09dd5b4705557b)) +* pin node-version in publish workflow ([d3c91af](https://github.com/gleanwork/agent-plugins/commit/d3c91afd984d9f17981af7cc5a97eaca9c6bddc2)) +* pin pluginpack-action by full commit SHA ([7624de5](https://github.com/gleanwork/agent-plugins/commit/7624de574a3864456bf398b8afedf4b453c965d2)) +* read App ID from variable or secret ([0f02ecc](https://github.com/gleanwork/agent-plugins/commit/0f02ecc4465e56e8eefef2a4e0f0c2044771be3c)) +* rev package.json on release via release-it ([9b36785](https://github.com/gleanwork/agent-plugins/commit/9b36785a38278d2e7f4f79f6ac52499ccec030a9)) +* use client-id for create-github-app-token v3 ([1f949a3](https://github.com/gleanwork/agent-plugins/commit/1f949a3e5a5acab9ef3ca7ca511307b55c50ce75)) + +## [2.1.1](https://github.com/gleanwork/cursor-plugins/compare/v2.1.0...v2.1.1) (2026-03-17) + +## [2.1.0](https://github.com/gleanwork/cursor-plugins/compare/v2.0.0...v2.1.0) (2026-02-26) + +### Features + +* update plugin category and keywords for Cursor marketplace ([7991c0e](https://github.com/gleanwork/cursor-plugins/commit/7991c0eeb31bac044d7750973c36ee9973e34a02)) + +## [2.0.0](https://github.com/gleanwork/cursor-plugins/compare/v1.0.0...v2.0.0) (2026-02-25) + +## 1.0.0 (2026-02-21) + +All notable changes to this project will be documented in this file. + +## 0.1.0 (Unreleased) + +### Features + +- **glean-core**: Foundation plugin with 6 skills, 2 rules, and 2 commands +- **glean-search**: Enterprise search agent and command +- **glean-code**: Cross-repo code exploration with 2 agents and 5 commands +- **glean-people**: People finder agent and stakeholder discovery commands +- Validation script and CI workflow diff --git a/plugins/glean-dev-docs/LICENSE b/plugins/glean-dev-docs/LICENSE new file mode 100644 index 0000000..feafbe9 --- /dev/null +++ b/plugins/glean-dev-docs/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2024 Glean Technologies, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/plugins/glean-dev-docs/README.md b/plugins/glean-dev-docs/README.md index 500d15e..3d4fbc0 100644 --- a/plugins/glean-dev-docs/README.md +++ b/plugins/glean-dev-docs/README.md @@ -1,31 +1,33 @@ # Glean Developer Docs -Access Glean's developer documentation from Claude Code. +Search the public [Glean developer documentation](https://docs.glean.com) — APIs, SDKs, +MCP, authentication, indexing, and integration guides for building *with* Glean. + +This is a separate, focused plugin for people building on the Glean platform. For +searching your own company's internal knowledge, use the main **Glean** plugin instead. ## Setup -```bash -/glean-dev-docs:setup -``` +### 1. Install the plugin + +Install from your host's plugin marketplace (Claude Code or Cursor). + +### 2. Configure the Glean Dev Docs MCP server -## Usage +This plugin uses the public Glean Developer Docs MCP server. See your host's MCP +setup to add it; no Glean account is required. -Once configured, ask naturally about Glean development: -- "How do I authenticate with the Glean API?" -- "Show me Python SDK examples for search" -- "What MCP tools does Glean provide?" +## What's Included -The skill auto-triggers and uses `docs_search` + `docs_fetch` to find answers. +A single skill that auto-triggers when you ask about building with Glean — API +syntax, SDK usage, MCP setup, indexing, authentication, and platform integration. +It searches the public developer documentation and returns cited answers. -## MCP Server +## Support -- **URL**: https://developers.glean.com/mcp -- **Transport**: HTTP -- **Auth**: None (public docs) +- [Glean Developer Documentation](https://docs.glean.com) +- [GitHub Issues](https://github.com/gleanwork/agent-plugins/issues) -## vs Other Glean Plugins +## License -| Plugin | Purpose | Requires | -|--------|---------|----------| -| **glean-dev-docs** | Public developer documentation | None | -| glean-core | Enterprise knowledge | Glean account | +MIT — see [LICENSE](LICENSE) for details. diff --git a/plugins/glean-dev-docs/skills/dev-docs-guide/SKILL.md b/plugins/glean-dev-docs/skills/dev-docs-guide/SKILL.md index c94a1c8..90393f5 100644 --- a/plugins/glean-dev-docs/skills/dev-docs-guide/SKILL.md +++ b/plugins/glean-dev-docs/skills/dev-docs-guide/SKILL.md @@ -1,10 +1,6 @@ --- name: dev-docs-guide -description: Search the public Glean developer documentation for API, SDK, MCP, authentication, indexing, and integration details. Use when the user is building with Glean rather than searching internal company knowledge. -when_to_use: | - Trigger phrases include "Glean API", "Glean SDK", "integrate with Glean", "Glean MCP setup", "indexing API", "Glean REST", "Glean Python SDK", "Glean JavaScript SDK", "how do I authenticate with Glean", "Glean platform docs". - - Don't use this for searching internal company knowledge — that's the `using-glean` skill in `glean-core`. This skill is for the public Glean platform documentation. +description: Search the public Glean developer documentation for API, SDK, MCP, authentication, indexing, and integration details. Use when the user is building with Glean rather than searching internal company knowledge — trigger phrases include Glean API, Glean SDK, integrate with Glean, indexing API, Glean Python or JavaScript SDK, and how to authenticate with Glean. Don't use it for internal company knowledge, which the using-glean skill covers. --- # Glean Developer Documentation Guide @@ -18,7 +14,7 @@ This skill uses two tools (refer to them by their bare names): - `docs_search` — search across the public Glean developer documentation - `docs_fetch` — get the full content of a documentation page by URL -If these tools aren't visible in the active inventory, the user hasn't configured the Glean Dev Docs MCP server. Suggest `/glean-dev-docs:setup`. +If these tools aren't visible in the active inventory, the user hasn't configured the Glean Dev Docs MCP server for this host — point them at their host's Glean Dev Docs MCP setup. ## When to use @@ -52,4 +48,4 @@ This skill is for **public developer documentation**: - How to build with Glean APIs / SDKs - MCP configuration guides -For **internal company data** (Slack, email, internal docs), use the `using-glean` skill in `glean-core` instead. +For **internal company data** (Slack, email, internal docs), use the `using-glean` skill instead. diff --git a/plugins/glean-docs/.claude-plugin/plugin.json b/plugins/glean-docs/.claude-plugin/plugin.json deleted file mode 100644 index 67a9a81..0000000 --- a/plugins/glean-docs/.claude-plugin/plugin.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "glean-docs", - "version": "2.0.0", - "description": "Document intelligence - analyze docs, verify specs against implementation, and onboard to new areas via Glean. Requires glean-core.", - "author": { - "name": "Glean", - "email": "steve.calvert@glean.com", - "url": "https://glean.com" - }, - "homepage": "https://docs.glean.com/administration/platform/mcp/about", - "repository": "https://github.com/gleanwork/claude-plugins", - "license": "MIT", - "keywords": [ - "glean", - "mcp", - "documents", - "rfc", - "specs", - "onboarding" - ] -} diff --git a/plugins/glean-docs/README.md b/plugins/glean-docs/README.md deleted file mode 100644 index aa44434..0000000 --- a/plugins/glean-docs/README.md +++ /dev/null @@ -1,55 +0,0 @@ -# Glean Docs - -**Document intelligence — analyze docs, verify specs against implementation, and onboard to new areas.** - -Deep analysis of enterprise documents and specifications. - -## Prerequisites - -Requires [glean-core](../glean-core) to be installed first. - -## Installation - -```bash -claude plugin install glean-core # if not already installed -claude plugin install glean-docs -``` - -## What's included - -### Skills - -- **`verify-rfc`** — Auto-triggers on "verify the RFC", "compare design doc to implementation", "is the spec implemented", "what's drifted from the RFC". Invokable as `/glean-docs:verify-rfc `. -- **`onboarding`** — Auto-triggers on "onboard me on", "get me up to speed on", "intro to [team]", "I'm new to". Invokable as `/glean-docs:onboarding `. - -### Agent - -- **doc-reader** — Reads and analyzes enterprise documents to extract key information, requirements, or structured summaries. - -## Example usage - -```bash -# Verify specs against code -/glean-docs:verify-rfc authentication RFC -/glean-docs:verify-rfc payments API design doc - -# Onboard to a new area -/glean-docs:onboarding payments team -/glean-docs:onboarding search infrastructure - -# Skills auto-trigger on natural-language asks -"Summarize the key requirements from the API spec" -"What does the design doc say about error handling?" -``` - -## Features - -- **RFC verification** — compare specs to implementation, find gaps -- **Onboarding** — curated introduction to a team or project -- **Document analysis** — extract requirements, decisions, and key points -- **Cross-reference** — connect docs to code and people - -## Support - -- Documentation: https://docs.glean.com/mcp -- Issues: https://github.com/gleanwork/claude-plugins/issues diff --git a/plugins/glean-meetings/.claude-plugin/plugin.json b/plugins/glean-meetings/.claude-plugin/plugin.json deleted file mode 100644 index dd825ea..0000000 --- a/plugins/glean-meetings/.claude-plugin/plugin.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "glean-meetings", - "version": "2.0.0", - "description": "Meeting intelligence - analyze transcripts, prepare for meetings, and catch up after time off via Glean. Requires glean-core.", - "author": { - "name": "Glean", - "email": "steve.calvert@glean.com", - "url": "https://glean.com" - }, - "homepage": "https://docs.glean.com/administration/platform/mcp/about", - "repository": "https://github.com/gleanwork/claude-plugins", - "license": "MIT", - "keywords": [ - "glean", - "mcp", - "meetings", - "transcripts", - "calendar", - "catch-up" - ] -} diff --git a/plugins/glean-meetings/README.md b/plugins/glean-meetings/README.md deleted file mode 100644 index 6850828..0000000 --- a/plugins/glean-meetings/README.md +++ /dev/null @@ -1,55 +0,0 @@ -# Glean Meetings - -**Meeting intelligence — analyze transcripts, prepare for meetings, and catch up after time off.** - -Get more value from your meetings with AI-powered analysis. - -## Prerequisites - -Requires [glean-core](../glean-core) to be installed first. - -## Installation - -```bash -claude plugin install glean-core # if not already installed -claude plugin install glean-meetings -``` - -## What's included - -### Skills - -- **`meeting-prep`** — Auto-triggers on "prep for my meeting", "context for the [meeting]", "1:1 prep with", "what should I know before". Invokable as `/glean-meetings:meeting-prep `. -- **`catch-up`** — Auto-triggers on "what did I miss", "catch me up", "I'm back from PTO", "summarize while I was away". Invokable as `/glean-meetings:catch-up