agentpack-cli 0.3.24__tar.gz → 0.3.25__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/PKG-INFO +20 -6
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/README.md +19 -5
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/pyproject.toml +1 -1
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/__init__.py +1 -1
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/cli.py +2 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/ci_cmd.py +3 -1
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/release_check.py +33 -0
- agentpack_cli-0.3.25/src/agentpack/commands/upgrade.py +38 -0
- agentpack_cli-0.3.25/src/agentpack/data/codex_plugin/.codex-plugin/plugin.json +36 -0
- agentpack_cli-0.3.25/src/agentpack/data/codex_plugin/skills/agentpack-pack.md +30 -0
- agentpack_cli-0.3.25/src/agentpack/data/codex_plugin/skills/agentpack-refresh.md +29 -0
- agentpack_cli-0.3.25/src/agentpack/data/codex_plugin/skills/agentpack-review.md +32 -0
- agentpack_cli-0.3.25/src/agentpack/data/codex_plugin/skills/agentpack-route.md +24 -0
- agentpack_cli-0.3.25/src/agentpack/data/codex_plugin/skills/agentpack.md +29 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/installers/codex.py +62 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/integrations/agents.py +5 -1
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/.gitignore +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/LICENSE +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/adapters/__init__.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/adapters/antigravity.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/adapters/base.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/adapters/claude.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/adapters/codex.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/adapters/cursor.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/adapters/detect.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/adapters/generic.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/adapters/windsurf.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/analysis/__init__.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/analysis/dependency_graph.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/analysis/go_imports.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/analysis/java_imports.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/analysis/js_ts_imports.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/analysis/monorepo.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/analysis/naming_signals.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/analysis/python_ast.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/analysis/python_imports.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/analysis/ranking.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/analysis/repo_map.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/analysis/role_inference.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/analysis/rust_imports.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/analysis/symbols.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/analysis/task_classifier.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/analysis/tests.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/application/__init__.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/application/pack_service.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/__init__.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/_shared.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/benchmark.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/claude_cmd.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/compress_output.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/dashboard.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/dev_check.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/diagnose_selection.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/diff.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/doctor.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/eval_cmd.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/explain.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/guard.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/hook_cmd.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/ignore_cmd.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/init.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/install.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/learn.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/mcp_cmd.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/memory.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/migrate.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/monitor.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/next_cmd.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/pack.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/perf.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/quickstart.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/release_cmd.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/repair.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/retrieve.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/route.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/scan.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/skills.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/start_cmd.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/state_cmd.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/stats.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/status.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/summarize.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/task_cmd.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/threads.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/tune.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/verify_wheel.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/watch.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/workflow_cmd.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/commands/wrap.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/__init__.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/bootstrap.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/cache.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/changed_paths.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/config.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/context_pack.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/diff.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/evals.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/execution_state.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/git.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/git_hooks.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/global_install.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/ignore.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/loop_protocol.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/merkle.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/models.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/modes.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/pack_registry.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/redactor.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/scanner.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/snapshot.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/task_freshness.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/thread_context.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/token_estimator.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/core/vscode_tasks.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/dashboard/__init__.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/dashboard/collectors.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/dashboard/models.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/dashboard/renderers.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/data/agentpack.md +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/installers/__init__.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/installers/antigravity.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/installers/claude.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/installers/cursor.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/installers/windsurf.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/integrations/__init__.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/integrations/git_hooks.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/integrations/global_install.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/integrations/platform.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/integrations/vscode_tasks.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/learning/__init__.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/learning/collector.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/learning/extractor.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/learning/feedback.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/learning/lesson_ranker.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/learning/models.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/learning/provider.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/learning/quality.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/learning/renderers.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/learning/skill_map.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/mcp_server.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/output_compression/__init__.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/output_compression/core.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/renderers/__init__.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/renderers/compact.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/renderers/markdown.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/renderers/receipts.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/router/__init__.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/router/discovery.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/router/models.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/router/parser.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/router/prompt_builder.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/router/scoring.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/router/service.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/router/skills_index.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/session/__init__.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/session/events.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/session/state.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/summaries/__init__.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/summaries/base.py +0 -0
- {agentpack_cli-0.3.24 → agentpack_cli-0.3.25}/src/agentpack/summaries/offline.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentpack-cli
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.25
|
|
4
4
|
Summary: Local context engine for AI coding agents that ranks relevant repo files and builds compact task-focused context packs for Claude Code, Codex, Cursor, Windsurf, MCP, and CI workflows.
|
|
5
5
|
Project-URL: Homepage, https://github.com/vishal2612200/agentpack
|
|
6
6
|
Project-URL: Documentation, https://vishal2612200.github.io/agentpack/
|
|
@@ -61,7 +61,9 @@ Description-Content-Type: text/markdown
|
|
|
61
61
|
|
|
62
62
|
<p align="center">
|
|
63
63
|
<a href="https://pypi.org/project/agentpack-cli/"><img alt="PyPI version" src="https://img.shields.io/pypi/v/agentpack-cli.svg"></a>
|
|
64
|
+
<a href="https://pepy.tech/projects/agentpack-cli"><img alt="PyPI downloads" src="https://static.pepy.tech/personalized-badge/agentpack-cli?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads"></a>
|
|
64
65
|
<a href="https://www.npmjs.com/package/@vishal2612200/agentpack"><img alt="npm version" src="https://img.shields.io/npm/v/@vishal2612200/agentpack.svg"></a>
|
|
66
|
+
<a href="https://www.npmjs.com/package/@vishal2612200/agentpack"><img alt="npm downloads" src="https://img.shields.io/npm/dm/@vishal2612200/agentpack.svg"></a>
|
|
65
67
|
<a href="https://github.com/vishal2612200/agentpack/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/vishal2612200/agentpack/actions/workflows/ci.yml/badge.svg"></a>
|
|
66
68
|
<a href="https://opensource.org/licenses/MIT"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg"></a>
|
|
67
69
|
</p>
|
|
@@ -69,6 +71,8 @@ Description-Content-Type: text/markdown
|
|
|
69
71
|
<p align="center">
|
|
70
72
|
<code>local preflight</code>
|
|
71
73
|
<code>ranked files</code>
|
|
74
|
+
<code>skill routing</code>
|
|
75
|
+
<code>warm cache</code>
|
|
72
76
|
<code>tests + commands</code>
|
|
73
77
|
<code>receipts</code>
|
|
74
78
|
<code>no cloud index</code>
|
|
@@ -83,6 +87,7 @@ AgentPack does the repo-orientation pass first.
|
|
|
83
87
|
```text
|
|
84
88
|
agentpack route --task "fix auth token expiry"
|
|
85
89
|
-> files that probably matter
|
|
90
|
+
-> skills and rules that fit the task
|
|
86
91
|
-> tests that probably prove it
|
|
87
92
|
-> rules, commands, warnings
|
|
88
93
|
-> compact context before the agent edits
|
|
@@ -101,7 +106,9 @@ No cloud index. No embeddings. No model calls for scan/rank/pack. Just local rep
|
|
|
101
106
|
|
|
102
107
|
It is not a repo dump. It is not a second brain. It is not a promise that your agent will be right.
|
|
103
108
|
|
|
104
|
-
It is a preflight map: likely files, likely tests,
|
|
109
|
+
It is a preflight map: likely files, likely tests, the right local skill or rule, commands, warnings, and a compact pack your agent can inspect before touching code.
|
|
110
|
+
|
|
111
|
+
The first run builds local summaries and repo signals. Later runs reuse that cache, so agents do less repeat discovery and spend more of their budget on the actual change.
|
|
105
112
|
|
|
106
113
|
## Quick Start
|
|
107
114
|
|
|
@@ -145,6 +152,7 @@ agentpack route --task "fix billing webhook retry handling"
|
|
|
145
152
|
```
|
|
146
153
|
|
|
147
154
|
AgentPack returns likely files, tests, rules, commands, and warnings without changing source files.
|
|
155
|
+
It also recommends matching skills or agent rules when the task points at a known workflow, framework, language, or repo convention.
|
|
148
156
|
|
|
149
157
|
Build context pack next:
|
|
150
158
|
|
|
@@ -154,13 +162,16 @@ agentpack pack --task auto
|
|
|
154
162
|
```
|
|
155
163
|
|
|
156
164
|
AgentPack writes local context under `.agentpack/`, including selected files, omitted-file receipts, freshness checks, and token stats.
|
|
165
|
+
It reuses cached file summaries and snapshot metadata so repeated packs do not start from zero.
|
|
157
166
|
|
|
158
167
|
## What AgentPack Gives Your Agent
|
|
159
168
|
|
|
160
169
|
- ranked files for current task
|
|
170
|
+
- skill and rule routing for current task
|
|
161
171
|
- likely tests and commands
|
|
162
172
|
- repo rules and agent instructions
|
|
163
173
|
- compact context pack under budget
|
|
174
|
+
- cached summaries for faster repeated orientation
|
|
164
175
|
- omitted-file receipts for review
|
|
165
176
|
- freshness warnings when task or git state changes
|
|
166
177
|
- local benchmark data when selected context misses real changed files
|
|
@@ -229,7 +240,8 @@ See [`docs/agent-plugins.md`](docs/agent-plugins.md) and [`docs/codex-plugin.md`
|
|
|
229
240
|
| Repo dumpers | Dump selected or all files | AgentPack ranks files by task |
|
|
230
241
|
| Coding agents | Edit code | AgentPack prepares context before editing |
|
|
231
242
|
| IDE search | Finds files on demand | AgentPack pre-routes before agent starts |
|
|
232
|
-
| Skills/rules | Change agent behavior | AgentPack
|
|
243
|
+
| Skills/rules | Change agent behavior | AgentPack routes the matching skill or rule for the task |
|
|
244
|
+
| Cache warmers | Speed repeated scans | AgentPack reuses summaries and snapshots inside the context workflow |
|
|
233
245
|
|
|
234
246
|
## When To Use It
|
|
235
247
|
|
|
@@ -241,6 +253,8 @@ Use AgentPack when:
|
|
|
241
253
|
- CI or PR review needs reproducible context
|
|
242
254
|
- agents waste tool calls opening irrelevant files
|
|
243
255
|
- tasks often miss tests, config, generated rules, or repo conventions
|
|
256
|
+
- teams have useful skills/rules but agents do not reliably pick the right one
|
|
257
|
+
- repeated agent sessions keep rediscovering the same repo structure
|
|
244
258
|
|
|
245
259
|
Do not use AgentPack when:
|
|
246
260
|
|
|
@@ -252,9 +266,9 @@ Do not use AgentPack when:
|
|
|
252
266
|
|
|
253
267
|
## How It Works
|
|
254
268
|
|
|
255
|
-
AgentPack scans repo locally, combines filename, git, config, dependency, summary, and benchmark signals, ranks likely files for task, then renders a compact context pack.
|
|
269
|
+
AgentPack scans repo locally, builds and reuses file summaries, indexes local skills and rules, combines filename, git, config, dependency, summary, and benchmark signals, ranks likely files for task, then renders a compact context pack.
|
|
256
270
|
|
|
257
|
-
It can expose same workflow through CLI, markdown files, MCP tools, hooks, and CI.
|
|
271
|
+
It can expose the same workflow through CLI, markdown files, MCP tools, hooks, plugins, and CI.
|
|
258
272
|
|
|
259
273
|
Deep dive: [`docs/architecture.md`](docs/architecture.md), [`docs/how-agentpack-works.md`](docs/how-agentpack-works.md), and [`docs/commands.md`](docs/commands.md).
|
|
260
274
|
|
|
@@ -307,7 +321,7 @@ pipx ensurepath
|
|
|
307
321
|
|
|
308
322
|
## Status
|
|
309
323
|
|
|
310
|
-
Alpha: `0.3.
|
|
324
|
+
Alpha: `0.3.25`.
|
|
311
325
|
|
|
312
326
|
Works, tested, and used in real sessions. Python and JavaScript/TypeScript have strongest support. APIs may change before 1.0.
|
|
313
327
|
|
|
@@ -14,7 +14,9 @@
|
|
|
14
14
|
|
|
15
15
|
<p align="center">
|
|
16
16
|
<a href="https://pypi.org/project/agentpack-cli/"><img alt="PyPI version" src="https://img.shields.io/pypi/v/agentpack-cli.svg"></a>
|
|
17
|
+
<a href="https://pepy.tech/projects/agentpack-cli"><img alt="PyPI downloads" src="https://static.pepy.tech/personalized-badge/agentpack-cli?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads"></a>
|
|
17
18
|
<a href="https://www.npmjs.com/package/@vishal2612200/agentpack"><img alt="npm version" src="https://img.shields.io/npm/v/@vishal2612200/agentpack.svg"></a>
|
|
19
|
+
<a href="https://www.npmjs.com/package/@vishal2612200/agentpack"><img alt="npm downloads" src="https://img.shields.io/npm/dm/@vishal2612200/agentpack.svg"></a>
|
|
18
20
|
<a href="https://github.com/vishal2612200/agentpack/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/vishal2612200/agentpack/actions/workflows/ci.yml/badge.svg"></a>
|
|
19
21
|
<a href="https://opensource.org/licenses/MIT"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg"></a>
|
|
20
22
|
</p>
|
|
@@ -22,6 +24,8 @@
|
|
|
22
24
|
<p align="center">
|
|
23
25
|
<code>local preflight</code>
|
|
24
26
|
<code>ranked files</code>
|
|
27
|
+
<code>skill routing</code>
|
|
28
|
+
<code>warm cache</code>
|
|
25
29
|
<code>tests + commands</code>
|
|
26
30
|
<code>receipts</code>
|
|
27
31
|
<code>no cloud index</code>
|
|
@@ -36,6 +40,7 @@ AgentPack does the repo-orientation pass first.
|
|
|
36
40
|
```text
|
|
37
41
|
agentpack route --task "fix auth token expiry"
|
|
38
42
|
-> files that probably matter
|
|
43
|
+
-> skills and rules that fit the task
|
|
39
44
|
-> tests that probably prove it
|
|
40
45
|
-> rules, commands, warnings
|
|
41
46
|
-> compact context before the agent edits
|
|
@@ -54,7 +59,9 @@ No cloud index. No embeddings. No model calls for scan/rank/pack. Just local rep
|
|
|
54
59
|
|
|
55
60
|
It is not a repo dump. It is not a second brain. It is not a promise that your agent will be right.
|
|
56
61
|
|
|
57
|
-
It is a preflight map: likely files, likely tests,
|
|
62
|
+
It is a preflight map: likely files, likely tests, the right local skill or rule, commands, warnings, and a compact pack your agent can inspect before touching code.
|
|
63
|
+
|
|
64
|
+
The first run builds local summaries and repo signals. Later runs reuse that cache, so agents do less repeat discovery and spend more of their budget on the actual change.
|
|
58
65
|
|
|
59
66
|
## Quick Start
|
|
60
67
|
|
|
@@ -98,6 +105,7 @@ agentpack route --task "fix billing webhook retry handling"
|
|
|
98
105
|
```
|
|
99
106
|
|
|
100
107
|
AgentPack returns likely files, tests, rules, commands, and warnings without changing source files.
|
|
108
|
+
It also recommends matching skills or agent rules when the task points at a known workflow, framework, language, or repo convention.
|
|
101
109
|
|
|
102
110
|
Build context pack next:
|
|
103
111
|
|
|
@@ -107,13 +115,16 @@ agentpack pack --task auto
|
|
|
107
115
|
```
|
|
108
116
|
|
|
109
117
|
AgentPack writes local context under `.agentpack/`, including selected files, omitted-file receipts, freshness checks, and token stats.
|
|
118
|
+
It reuses cached file summaries and snapshot metadata so repeated packs do not start from zero.
|
|
110
119
|
|
|
111
120
|
## What AgentPack Gives Your Agent
|
|
112
121
|
|
|
113
122
|
- ranked files for current task
|
|
123
|
+
- skill and rule routing for current task
|
|
114
124
|
- likely tests and commands
|
|
115
125
|
- repo rules and agent instructions
|
|
116
126
|
- compact context pack under budget
|
|
127
|
+
- cached summaries for faster repeated orientation
|
|
117
128
|
- omitted-file receipts for review
|
|
118
129
|
- freshness warnings when task or git state changes
|
|
119
130
|
- local benchmark data when selected context misses real changed files
|
|
@@ -182,7 +193,8 @@ See [`docs/agent-plugins.md`](docs/agent-plugins.md) and [`docs/codex-plugin.md`
|
|
|
182
193
|
| Repo dumpers | Dump selected or all files | AgentPack ranks files by task |
|
|
183
194
|
| Coding agents | Edit code | AgentPack prepares context before editing |
|
|
184
195
|
| IDE search | Finds files on demand | AgentPack pre-routes before agent starts |
|
|
185
|
-
| Skills/rules | Change agent behavior | AgentPack
|
|
196
|
+
| Skills/rules | Change agent behavior | AgentPack routes the matching skill or rule for the task |
|
|
197
|
+
| Cache warmers | Speed repeated scans | AgentPack reuses summaries and snapshots inside the context workflow |
|
|
186
198
|
|
|
187
199
|
## When To Use It
|
|
188
200
|
|
|
@@ -194,6 +206,8 @@ Use AgentPack when:
|
|
|
194
206
|
- CI or PR review needs reproducible context
|
|
195
207
|
- agents waste tool calls opening irrelevant files
|
|
196
208
|
- tasks often miss tests, config, generated rules, or repo conventions
|
|
209
|
+
- teams have useful skills/rules but agents do not reliably pick the right one
|
|
210
|
+
- repeated agent sessions keep rediscovering the same repo structure
|
|
197
211
|
|
|
198
212
|
Do not use AgentPack when:
|
|
199
213
|
|
|
@@ -205,9 +219,9 @@ Do not use AgentPack when:
|
|
|
205
219
|
|
|
206
220
|
## How It Works
|
|
207
221
|
|
|
208
|
-
AgentPack scans repo locally, combines filename, git, config, dependency, summary, and benchmark signals, ranks likely files for task, then renders a compact context pack.
|
|
222
|
+
AgentPack scans repo locally, builds and reuses file summaries, indexes local skills and rules, combines filename, git, config, dependency, summary, and benchmark signals, ranks likely files for task, then renders a compact context pack.
|
|
209
223
|
|
|
210
|
-
It can expose same workflow through CLI, markdown files, MCP tools, hooks, and CI.
|
|
224
|
+
It can expose the same workflow through CLI, markdown files, MCP tools, hooks, plugins, and CI.
|
|
211
225
|
|
|
212
226
|
Deep dive: [`docs/architecture.md`](docs/architecture.md), [`docs/how-agentpack-works.md`](docs/how-agentpack-works.md), and [`docs/commands.md`](docs/commands.md).
|
|
213
227
|
|
|
@@ -260,7 +274,7 @@ pipx ensurepath
|
|
|
260
274
|
|
|
261
275
|
## Status
|
|
262
276
|
|
|
263
|
-
Alpha: `0.3.
|
|
277
|
+
Alpha: `0.3.25`.
|
|
264
278
|
|
|
265
279
|
Works, tested, and used in real sessions. Python and JavaScript/TypeScript have strongest support. APIs may change before 1.0.
|
|
266
280
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "agentpack-cli"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.25"
|
|
4
4
|
description = "Local context engine for AI coding agents that ranks relevant repo files and builds compact task-focused context packs for Claude Code, Codex, Cursor, Windsurf, MCP, and CI workflows."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -42,6 +42,7 @@ from agentpack.commands import (
|
|
|
42
42
|
task_cmd,
|
|
43
43
|
threads,
|
|
44
44
|
tune,
|
|
45
|
+
upgrade,
|
|
45
46
|
verify_wheel,
|
|
46
47
|
watch,
|
|
47
48
|
wrap,
|
|
@@ -95,6 +96,7 @@ for mod in [
|
|
|
95
96
|
diagnose_selection,
|
|
96
97
|
eval_cmd,
|
|
97
98
|
tune,
|
|
99
|
+
upgrade,
|
|
98
100
|
watch,
|
|
99
101
|
claude_cmd,
|
|
100
102
|
benchmark,
|
|
@@ -79,6 +79,8 @@ jobs:
|
|
|
79
79
|
if: github.event_name == 'push'
|
|
80
80
|
steps:
|
|
81
81
|
- uses: actions/checkout@v4
|
|
82
|
+
with:
|
|
83
|
+
fetch-depth: 0
|
|
82
84
|
- uses: actions/setup-python@v5
|
|
83
85
|
with:
|
|
84
86
|
python-version: "3.11"
|
|
@@ -86,5 +88,5 @@ jobs:
|
|
|
86
88
|
with:
|
|
87
89
|
node-version: "20"
|
|
88
90
|
- run: python -m pip install -e ".[dev]" build
|
|
89
|
-
- run: python -m agentpack.cli release-check
|
|
91
|
+
- run: python -m agentpack.cli release-check --profile auto
|
|
90
92
|
"""
|
|
@@ -145,11 +145,44 @@ def _pytest_args_for_profile(root: Path, profile: str) -> list[str]:
|
|
|
145
145
|
|
|
146
146
|
|
|
147
147
|
def _changed_files(root: Path) -> list[str]:
|
|
148
|
+
ci_changed = _github_event_changed_files(root)
|
|
149
|
+
if ci_changed:
|
|
150
|
+
return ci_changed
|
|
148
151
|
tracked = _git_lines(root, ["git", "diff", "--name-only", "HEAD", "--"])
|
|
149
152
|
untracked = _git_lines(root, ["git", "ls-files", "--others", "--exclude-standard"])
|
|
150
153
|
return sorted(set(tracked + untracked))
|
|
151
154
|
|
|
152
155
|
|
|
156
|
+
def _github_event_changed_files(root: Path) -> list[str]:
|
|
157
|
+
event_path = os.environ.get("GITHUB_EVENT_PATH")
|
|
158
|
+
event_name = os.environ.get("GITHUB_EVENT_NAME", "")
|
|
159
|
+
if not event_path:
|
|
160
|
+
return []
|
|
161
|
+
try:
|
|
162
|
+
payload = json.loads(Path(event_path).read_text(encoding="utf-8"))
|
|
163
|
+
except (OSError, json.JSONDecodeError):
|
|
164
|
+
return []
|
|
165
|
+
if not isinstance(payload, dict):
|
|
166
|
+
return []
|
|
167
|
+
|
|
168
|
+
base = ""
|
|
169
|
+
head = ""
|
|
170
|
+
if event_name == "push":
|
|
171
|
+
base = str(payload.get("before") or "")
|
|
172
|
+
head = str(payload.get("after") or os.environ.get("GITHUB_SHA") or "")
|
|
173
|
+
elif event_name == "pull_request":
|
|
174
|
+
pull_request = payload.get("pull_request")
|
|
175
|
+
if isinstance(pull_request, dict):
|
|
176
|
+
base_ref = pull_request.get("base")
|
|
177
|
+
head_ref = pull_request.get("head")
|
|
178
|
+
if isinstance(base_ref, dict) and isinstance(head_ref, dict):
|
|
179
|
+
base = str(base_ref.get("sha") or "")
|
|
180
|
+
head = str(head_ref.get("sha") or "")
|
|
181
|
+
if not base or not head or set(base) == {"0"}:
|
|
182
|
+
return []
|
|
183
|
+
return _git_lines(root, ["git", "diff", "--name-only", base, head, "--"])
|
|
184
|
+
|
|
185
|
+
|
|
153
186
|
def _git_lines(root: Path, command: list[str]) -> list[str]:
|
|
154
187
|
result = subprocess.run(command, cwd=root, capture_output=True, text=True)
|
|
155
188
|
if result.returncode != 0:
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import typer
|
|
4
|
+
|
|
5
|
+
from agentpack.commands._shared import console, _root
|
|
6
|
+
from agentpack.commands.install import _install_slash_command, _print_install_results
|
|
7
|
+
from agentpack.integrations.agents import SUPPORTED_AGENTS, expand_agents, install_agent_integration
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def register(app: typer.Typer) -> None:
|
|
11
|
+
@app.command()
|
|
12
|
+
def upgrade(
|
|
13
|
+
agent: str = typer.Option(
|
|
14
|
+
"auto",
|
|
15
|
+
"--agent",
|
|
16
|
+
help=f"Agent integration to refresh after package upgrade ({' | '.join(SUPPORTED_AGENTS)}).",
|
|
17
|
+
),
|
|
18
|
+
) -> None:
|
|
19
|
+
"""Refresh the detected AgentPack IDE/agent integration after upgrading the package."""
|
|
20
|
+
root = _root()
|
|
21
|
+
if agent not in SUPPORTED_AGENTS:
|
|
22
|
+
console.print(f"[yellow]Unknown agent: {agent}. Supported: {', '.join(SUPPORTED_AGENTS)}[/]")
|
|
23
|
+
raise typer.Exit(1)
|
|
24
|
+
|
|
25
|
+
agents = expand_agents(agent, root)
|
|
26
|
+
if agent == "auto":
|
|
27
|
+
console.print(f"[dim]Auto-detected agent: {agents[0]}[/]")
|
|
28
|
+
|
|
29
|
+
for selected in agents:
|
|
30
|
+
console.print(f"\n[bold]{selected}[/]")
|
|
31
|
+
results = install_agent_integration(
|
|
32
|
+
root,
|
|
33
|
+
selected,
|
|
34
|
+
install_slash_command=_install_slash_command,
|
|
35
|
+
)
|
|
36
|
+
_print_install_results(selected, results)
|
|
37
|
+
|
|
38
|
+
console.print("\n[bold green]Upgrade integration refresh complete.[/]")
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "agentpack",
|
|
3
|
+
"version": "0.3.25",
|
|
4
|
+
"description": "Thin Codex plugin for AgentPack ranked repo context.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "AgentPack",
|
|
7
|
+
"url": "https://github.com/vishal2612200/agentpack"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/vishal2612200/agentpack/blob/main/docs/codex-plugin.md",
|
|
10
|
+
"repository": "https://github.com/vishal2612200/agentpack",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"agentpack",
|
|
14
|
+
"codex",
|
|
15
|
+
"context",
|
|
16
|
+
"coding-agents"
|
|
17
|
+
],
|
|
18
|
+
"skills": "./skills/",
|
|
19
|
+
"interface": {
|
|
20
|
+
"displayName": "AgentPack",
|
|
21
|
+
"shortDescription": "Start Codex with ranked repo context.",
|
|
22
|
+
"longDescription": "AgentPack is a local context engine, not a coding agent. This plugin gives Codex lightweight commands for routing tasks, refreshing context packs, and reviewing diffs with the existing local AgentPack CLI or MCP tools.",
|
|
23
|
+
"developerName": "AgentPack",
|
|
24
|
+
"category": "Productivity",
|
|
25
|
+
"capabilities": [
|
|
26
|
+
"Interactive"
|
|
27
|
+
],
|
|
28
|
+
"websiteURL": "https://github.com/vishal2612200/agentpack",
|
|
29
|
+
"defaultPrompt": [
|
|
30
|
+
"@agentpack-route fix auth token expiry",
|
|
31
|
+
"@agentpack-pack fix auth token expiry",
|
|
32
|
+
"@agentpack-review"
|
|
33
|
+
],
|
|
34
|
+
"brandColor": "#1F6FEB"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentpack-pack
|
|
3
|
+
description: Generate a local AgentPack context pack for Codex before editing.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# AgentPack Pack
|
|
7
|
+
|
|
8
|
+
Use when the user invokes `@agentpack-pack <task>` or asks Codex to prepare full AgentPack context.
|
|
9
|
+
|
|
10
|
+
AgentPack prepares context. It does not prove correctness and does not replace code review or tests.
|
|
11
|
+
|
|
12
|
+
## Steps
|
|
13
|
+
|
|
14
|
+
1. Write the task:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
agentpack task set "<task>"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
2. Generate fresh context:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
agentpack pack --task auto
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
3. Read `.agentpack/context.md`.
|
|
27
|
+
4. Inspect selected files before editing.
|
|
28
|
+
5. Use normal repo search if selected files miss obvious tests, config, routes, or callers.
|
|
29
|
+
|
|
30
|
+
If AgentPack MCP is available, prefer the pack or context MCP tool and use markdown as fallback.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentpack-refresh
|
|
3
|
+
description: Refresh AgentPack context when task, git state, or repo files changed.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# AgentPack Refresh
|
|
7
|
+
|
|
8
|
+
Use when the user invokes `@agentpack-refresh`, context looks stale, or task/git state changed.
|
|
9
|
+
|
|
10
|
+
## Steps
|
|
11
|
+
|
|
12
|
+
1. Run the guarded refresh path:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
agentpack guard --agent codex --repair-stale --refresh-context
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
2. If the task changed, update it first:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
agentpack task set "<task>"
|
|
22
|
+
agentpack guard --agent codex --repair-stale --refresh-context
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
3. Read `.agentpack/context.md` after refresh.
|
|
26
|
+
4. Warn if context still appears stale or task text does not match.
|
|
27
|
+
5. Treat the pack as a map, not proof of correctness.
|
|
28
|
+
|
|
29
|
+
Prefer AgentPack MCP refresh/get-context behavior when available.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentpack-review
|
|
3
|
+
description: Review Codex edits with git diff and AgentPack benchmark capture guidance.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# AgentPack Review
|
|
7
|
+
|
|
8
|
+
Use when the user invokes `@agentpack-review` after edits.
|
|
9
|
+
|
|
10
|
+
Do not claim correctness unless relevant checks actually ran.
|
|
11
|
+
|
|
12
|
+
## Steps
|
|
13
|
+
|
|
14
|
+
1. Inspect current diff:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
git diff --stat
|
|
18
|
+
git diff
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
2. Look for missed tests, config files, callers, broad unrelated diffs, or generated files.
|
|
22
|
+
3. Run or recommend the smallest relevant checks.
|
|
23
|
+
4. When the diff represents a completed task, suggest benchmark capture:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
agentpack benchmark capture --since main --task "<task>"
|
|
27
|
+
agentpack benchmark --misses
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
5. Report validation exactly: passed, failed, or not run.
|
|
31
|
+
|
|
32
|
+
AgentPack benchmark capture records file-selection evidence. It does not prove the code is correct.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentpack-route
|
|
3
|
+
description: Run read-only AgentPack task routing for ranked files, tests, rules, commands, and warnings.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# AgentPack Route
|
|
7
|
+
|
|
8
|
+
Use when the user invokes `@agentpack-route <task>`.
|
|
9
|
+
|
|
10
|
+
This is read-only. Do not write `.agentpack/context.md` and do not edit source files from route output alone.
|
|
11
|
+
|
|
12
|
+
## Steps
|
|
13
|
+
|
|
14
|
+
1. Run:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
agentpack route --task "<task>"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
2. Return ranked files, likely tests, rules or skills, suggested commands, and warnings.
|
|
21
|
+
3. Tell Codex to verify selected files with actual code before editing.
|
|
22
|
+
4. If the task needs fuller context, suggest `@agentpack-pack <task>`.
|
|
23
|
+
|
|
24
|
+
If AgentPack MCP is available, prefer the equivalent route task tool.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentpack
|
|
3
|
+
description: Explain AgentPack status and choose the next local context step in a Codex session.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# AgentPack
|
|
7
|
+
|
|
8
|
+
Use when the user invokes `@agentpack` or asks whether AgentPack context is ready.
|
|
9
|
+
|
|
10
|
+
AgentPack is not a coding agent. AgentPack is a local context engine that helps Codex start with ranked repo context.
|
|
11
|
+
|
|
12
|
+
## Steps
|
|
13
|
+
|
|
14
|
+
1. Check whether `.agentpack/context.md` exists.
|
|
15
|
+
2. If it exists, inspect its freshness block and task summary before editing.
|
|
16
|
+
3. If context is missing or stale, suggest `@agentpack-route <task>` for read-only orientation or `@agentpack-pack <task>` for a context pack.
|
|
17
|
+
4. Tell Codex to treat selected files as a starting map, not proof of correctness.
|
|
18
|
+
5. Use normal repo search when AgentPack output looks incomplete.
|
|
19
|
+
|
|
20
|
+
## Local commands
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
agentpack status
|
|
24
|
+
agentpack route --task "<task>"
|
|
25
|
+
agentpack task set "<task>"
|
|
26
|
+
agentpack pack --task auto
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Prefer AgentPack MCP tools when available: route first, then fetch full context only when needed.
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
|
+
import os
|
|
4
5
|
import re
|
|
6
|
+
import shutil
|
|
7
|
+
from importlib import resources
|
|
5
8
|
from pathlib import Path
|
|
6
9
|
|
|
10
|
+
from agentpack import __version__
|
|
7
11
|
from agentpack.integrations.git_hooks import install_git_hooks
|
|
8
12
|
|
|
9
13
|
_AGENTPACK_BLOCK = """\
|
|
@@ -108,3 +112,61 @@ class CodexInstaller:
|
|
|
108
112
|
hook_results = install_git_hooks(root, agent="auto")
|
|
109
113
|
results.update({f"git:{k}": v for k, v in hook_results.items()})
|
|
110
114
|
return results
|
|
115
|
+
|
|
116
|
+
def install_codex_plugin(self, *, codex_home: Path | None = None) -> dict[str, str]:
|
|
117
|
+
"""Install AgentPack's thin Codex plugin package into the local Codex cache."""
|
|
118
|
+
source = _codex_plugin_source()
|
|
119
|
+
target = _codex_plugin_target(codex_home)
|
|
120
|
+
action = _copy_tree_if_changed(source, target)
|
|
121
|
+
return {str(target): action}
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def _codex_plugin_target(codex_home: Path | None = None) -> Path:
|
|
125
|
+
root = codex_home or Path(os.environ.get("CODEX_HOME", "~/.codex")).expanduser()
|
|
126
|
+
return root / "plugins" / "cache" / "local" / "agentpack" / __version__
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def _codex_plugin_source() -> Path:
|
|
130
|
+
checkout_source = Path(__file__).resolve().parents[3] / "src" / "agentpack" / "data" / "codex_plugin"
|
|
131
|
+
if checkout_source.exists():
|
|
132
|
+
return checkout_source
|
|
133
|
+
return Path(str(resources.files("agentpack").joinpath("data", "codex_plugin")))
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def _copy_tree_if_changed(source: Path, target: Path) -> str:
|
|
137
|
+
if not source.exists():
|
|
138
|
+
raise FileNotFoundError(f"AgentPack Codex plugin assets not found: {source}")
|
|
139
|
+
existed = target.exists()
|
|
140
|
+
changed = False
|
|
141
|
+
for source_file in sorted(path for path in source.rglob("*") if path.is_file()):
|
|
142
|
+
relative = source_file.relative_to(source)
|
|
143
|
+
target_file = target / relative
|
|
144
|
+
try:
|
|
145
|
+
current = target_file.read_bytes()
|
|
146
|
+
except OSError:
|
|
147
|
+
current = None
|
|
148
|
+
desired = source_file.read_bytes()
|
|
149
|
+
if current != desired:
|
|
150
|
+
target_file.parent.mkdir(parents=True, exist_ok=True)
|
|
151
|
+
target_file.write_bytes(desired)
|
|
152
|
+
changed = True
|
|
153
|
+
if existed:
|
|
154
|
+
_remove_stale_files(source, target)
|
|
155
|
+
elif not target.exists():
|
|
156
|
+
shutil.copytree(source, target)
|
|
157
|
+
changed = True
|
|
158
|
+
if not existed:
|
|
159
|
+
return "created"
|
|
160
|
+
return "updated" if changed else "unchanged"
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def _remove_stale_files(source: Path, target: Path) -> None:
|
|
164
|
+
expected = {path.relative_to(source) for path in source.rglob("*") if path.is_file()}
|
|
165
|
+
for target_file in sorted((path for path in target.rglob("*") if path.is_file()), reverse=True):
|
|
166
|
+
if target_file.relative_to(target) not in expected:
|
|
167
|
+
target_file.unlink()
|
|
168
|
+
for directory in sorted((path for path in target.rglob("*") if path.is_dir()), reverse=True):
|
|
169
|
+
try:
|
|
170
|
+
directory.rmdir()
|
|
171
|
+
except OSError:
|
|
172
|
+
pass
|
|
@@ -83,7 +83,11 @@ def install_agent_integration(
|
|
|
83
83
|
|
|
84
84
|
if agent == "codex":
|
|
85
85
|
installer = CodexInstaller()
|
|
86
|
-
|
|
86
|
+
plugin_result = installer.install_codex_plugin()
|
|
87
|
+
results = {
|
|
88
|
+
"AGENTS.md": installer.patch_agents_md(root),
|
|
89
|
+
"~/.codex/plugins/cache/local/agentpack": next(iter(plugin_result.values())),
|
|
90
|
+
}
|
|
87
91
|
if not global_install:
|
|
88
92
|
results.update(installer.install_auto_repack(root))
|
|
89
93
|
return results
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|