codeprobe 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +406 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +104 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/ab.d.ts +7 -0
- package/dist/commands/ab.d.ts.map +1 -0
- package/dist/commands/ab.js +230 -0
- package/dist/commands/ab.js.map +1 -0
- package/dist/commands/agents.d.ts +10 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +326 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/autotest.d.ts +10 -0
- package/dist/commands/autotest.d.ts.map +1 -0
- package/dist/commands/autotest.js +408 -0
- package/dist/commands/autotest.js.map +1 -0
- package/dist/commands/benchmark.d.ts +6 -0
- package/dist/commands/benchmark.d.ts.map +1 -0
- package/dist/commands/benchmark.js +215 -0
- package/dist/commands/benchmark.js.map +1 -0
- package/dist/commands/check.d.ts +10 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +333 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/context.d.ts +16 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +219 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/cost.d.ts +9 -0
- package/dist/commands/cost.d.ts.map +1 -0
- package/dist/commands/cost.js +142 -0
- package/dist/commands/cost.js.map +1 -0
- package/dist/commands/dashboard.d.ts +10 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +462 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/diff.d.ts +6 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/diff.js +118 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/doctor.d.ts +12 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +203 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/explain.d.ts +7 -0
- package/dist/commands/explain.d.ts.map +1 -0
- package/dist/commands/explain.js +164 -0
- package/dist/commands/explain.js.map +1 -0
- package/dist/commands/flaky.d.ts +10 -0
- package/dist/commands/flaky.d.ts.map +1 -0
- package/dist/commands/flaky.js +141 -0
- package/dist/commands/flaky.js.map +1 -0
- package/dist/commands/generateClaudeMd.d.ts +11 -0
- package/dist/commands/generateClaudeMd.d.ts.map +1 -0
- package/dist/commands/generateClaudeMd.js +278 -0
- package/dist/commands/generateClaudeMd.js.map +1 -0
- package/dist/commands/generateRules.d.ts +11 -0
- package/dist/commands/generateRules.d.ts.map +1 -0
- package/dist/commands/generateRules.js +413 -0
- package/dist/commands/generateRules.js.map +1 -0
- package/dist/commands/heatmap.d.ts +7 -0
- package/dist/commands/heatmap.d.ts.map +1 -0
- package/dist/commands/heatmap.js +117 -0
- package/dist/commands/heatmap.js.map +1 -0
- package/dist/commands/history.d.ts +13 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +113 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/hooks.d.ts +9 -0
- package/dist/commands/hooks.d.ts.map +1 -0
- package/dist/commands/hooks.js +199 -0
- package/dist/commands/hooks.js.map +1 -0
- package/dist/commands/improve.d.ts +7 -0
- package/dist/commands/improve.d.ts.map +1 -0
- package/dist/commands/improve.js +192 -0
- package/dist/commands/improve.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +270 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/installHook.d.ts +9 -0
- package/dist/commands/installHook.d.ts.map +1 -0
- package/dist/commands/installHook.js +78 -0
- package/dist/commands/installHook.js.map +1 -0
- package/dist/commands/lint.d.ts +6 -0
- package/dist/commands/lint.d.ts.map +1 -0
- package/dist/commands/lint.js +237 -0
- package/dist/commands/lint.js.map +1 -0
- package/dist/commands/map.d.ts +9 -0
- package/dist/commands/map.d.ts.map +1 -0
- package/dist/commands/map.js +114 -0
- package/dist/commands/map.js.map +1 -0
- package/dist/commands/mcp.d.ts +6 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +151 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/models.d.ts +9 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +89 -0
- package/dist/commands/models.js.map +1 -0
- package/dist/commands/pack.d.ts +10 -0
- package/dist/commands/pack.d.ts.map +1 -0
- package/dist/commands/pack.js +248 -0
- package/dist/commands/pack.js.map +1 -0
- package/dist/commands/recommend.d.ts +10 -0
- package/dist/commands/recommend.d.ts.map +1 -0
- package/dist/commands/recommend.js +472 -0
- package/dist/commands/recommend.js.map +1 -0
- package/dist/commands/regression.d.ts +10 -0
- package/dist/commands/regression.d.ts.map +1 -0
- package/dist/commands/regression.js +212 -0
- package/dist/commands/regression.js.map +1 -0
- package/dist/commands/repl.d.ts +9 -0
- package/dist/commands/repl.d.ts.map +1 -0
- package/dist/commands/repl.js +245 -0
- package/dist/commands/repl.js.map +1 -0
- package/dist/commands/scan.d.ts +10 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/scan.js +352 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/commands/score.d.ts +10 -0
- package/dist/commands/score.d.ts.map +1 -0
- package/dist/commands/score.js +192 -0
- package/dist/commands/score.js.map +1 -0
- package/dist/commands/security.d.ts +10 -0
- package/dist/commands/security.d.ts.map +1 -0
- package/dist/commands/security.js +211 -0
- package/dist/commands/security.js.map +1 -0
- package/dist/commands/simulate.d.ts +7 -0
- package/dist/commands/simulate.d.ts.map +1 -0
- package/dist/commands/simulate.js +149 -0
- package/dist/commands/simulate.js.map +1 -0
- package/dist/commands/summary.d.ts +9 -0
- package/dist/commands/summary.d.ts.map +1 -0
- package/dist/commands/summary.js +271 -0
- package/dist/commands/summary.js.map +1 -0
- package/dist/commands/test.d.ts +9 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +219 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/ui.d.ts +8 -0
- package/dist/commands/ui.d.ts.map +1 -0
- package/dist/commands/ui.js +222 -0
- package/dist/commands/ui.js.map +1 -0
- package/dist/commands/validate.d.ts +7 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +254 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/commands/workflow.d.ts +39 -0
- package/dist/commands/workflow.d.ts.map +1 -0
- package/dist/commands/workflow.js +309 -0
- package/dist/commands/workflow.js.map +1 -0
- package/dist/core/__tests__/contextAnalyzer.test.d.ts +2 -0
- package/dist/core/__tests__/contextAnalyzer.test.d.ts.map +1 -0
- package/dist/core/__tests__/contextAnalyzer.test.js +48 -0
- package/dist/core/__tests__/contextAnalyzer.test.js.map +1 -0
- package/dist/core/__tests__/promptLinter.test.d.ts +2 -0
- package/dist/core/__tests__/promptLinter.test.d.ts.map +1 -0
- package/dist/core/__tests__/promptLinter.test.js +74 -0
- package/dist/core/__tests__/promptLinter.test.js.map +1 -0
- package/dist/core/__tests__/promptRunner.test.d.ts +2 -0
- package/dist/core/__tests__/promptRunner.test.d.ts.map +1 -0
- package/dist/core/__tests__/promptRunner.test.js +84 -0
- package/dist/core/__tests__/promptRunner.test.js.map +1 -0
- package/dist/core/__tests__/securityScanner.test.d.ts +2 -0
- package/dist/core/__tests__/securityScanner.test.d.ts.map +1 -0
- package/dist/core/__tests__/securityScanner.test.js +39 -0
- package/dist/core/__tests__/securityScanner.test.js.map +1 -0
- package/dist/core/agentTracer.d.ts +21 -0
- package/dist/core/agentTracer.d.ts.map +1 -0
- package/dist/core/agentTracer.js +355 -0
- package/dist/core/agentTracer.js.map +1 -0
- package/dist/core/anthropicClient.d.ts +26 -0
- package/dist/core/anthropicClient.d.ts.map +1 -0
- package/dist/core/anthropicClient.js +62 -0
- package/dist/core/anthropicClient.js.map +1 -0
- package/dist/core/benchmarkRunner.d.ts +25 -0
- package/dist/core/benchmarkRunner.d.ts.map +1 -0
- package/dist/core/benchmarkRunner.js +182 -0
- package/dist/core/benchmarkRunner.js.map +1 -0
- package/dist/core/contextAnalyzer.d.ts +19 -0
- package/dist/core/contextAnalyzer.d.ts.map +1 -0
- package/dist/core/contextAnalyzer.js +221 -0
- package/dist/core/contextAnalyzer.js.map +1 -0
- package/dist/core/contextPacker.d.ts +26 -0
- package/dist/core/contextPacker.d.ts.map +1 -0
- package/dist/core/contextPacker.js +358 -0
- package/dist/core/contextPacker.js.map +1 -0
- package/dist/core/datasetRunner.d.ts +10 -0
- package/dist/core/datasetRunner.d.ts.map +1 -0
- package/dist/core/datasetRunner.js +130 -0
- package/dist/core/datasetRunner.js.map +1 -0
- package/dist/core/doctorRunner.d.ts +24 -0
- package/dist/core/doctorRunner.d.ts.map +1 -0
- package/dist/core/doctorRunner.js +278 -0
- package/dist/core/doctorRunner.js.map +1 -0
- package/dist/core/hookScanner.d.ts +24 -0
- package/dist/core/hookScanner.d.ts.map +1 -0
- package/dist/core/hookScanner.js +226 -0
- package/dist/core/hookScanner.js.map +1 -0
- package/dist/core/mcpScanner.d.ts +22 -0
- package/dist/core/mcpScanner.d.ts.map +1 -0
- package/dist/core/mcpScanner.js +290 -0
- package/dist/core/mcpScanner.js.map +1 -0
- package/dist/core/modelRegistry.d.ts +35 -0
- package/dist/core/modelRegistry.d.ts.map +1 -0
- package/dist/core/modelRegistry.js +97 -0
- package/dist/core/modelRegistry.js.map +1 -0
- package/dist/core/promptDiff.d.ts +25 -0
- package/dist/core/promptDiff.d.ts.map +1 -0
- package/dist/core/promptDiff.js +130 -0
- package/dist/core/promptDiff.js.map +1 -0
- package/dist/core/promptExplainer.d.ts +17 -0
- package/dist/core/promptExplainer.d.ts.map +1 -0
- package/dist/core/promptExplainer.js +334 -0
- package/dist/core/promptExplainer.js.map +1 -0
- package/dist/core/promptImprover.d.ts +19 -0
- package/dist/core/promptImprover.d.ts.map +1 -0
- package/dist/core/promptImprover.js +260 -0
- package/dist/core/promptImprover.js.map +1 -0
- package/dist/core/promptLinter.d.ts +24 -0
- package/dist/core/promptLinter.d.ts.map +1 -0
- package/dist/core/promptLinter.js +319 -0
- package/dist/core/promptLinter.js.map +1 -0
- package/dist/core/promptRunner.d.ts +31 -0
- package/dist/core/promptRunner.d.ts.map +1 -0
- package/dist/core/promptRunner.js +427 -0
- package/dist/core/promptRunner.js.map +1 -0
- package/dist/core/providers/anthropic.d.ts +10 -0
- package/dist/core/providers/anthropic.d.ts.map +1 -0
- package/dist/core/providers/anthropic.js +26 -0
- package/dist/core/providers/anthropic.js.map +1 -0
- package/dist/core/providers/base.d.ts +22 -0
- package/dist/core/providers/base.d.ts.map +1 -0
- package/dist/core/providers/base.js +2 -0
- package/dist/core/providers/base.js.map +1 -0
- package/dist/core/providers/factory.d.ts +7 -0
- package/dist/core/providers/factory.d.ts.map +1 -0
- package/dist/core/providers/factory.js +42 -0
- package/dist/core/providers/factory.js.map +1 -0
- package/dist/core/providers/google.d.ts +10 -0
- package/dist/core/providers/google.d.ts.map +1 -0
- package/dist/core/providers/google.js +47 -0
- package/dist/core/providers/google.js.map +1 -0
- package/dist/core/providers/openai.d.ts +19 -0
- package/dist/core/providers/openai.d.ts.map +1 -0
- package/dist/core/providers/openai.js +54 -0
- package/dist/core/providers/openai.js.map +1 -0
- package/dist/core/regressionRunner.d.ts +11 -0
- package/dist/core/regressionRunner.d.ts.map +1 -0
- package/dist/core/regressionRunner.js +116 -0
- package/dist/core/regressionRunner.js.map +1 -0
- package/dist/core/repositorySimulator.d.ts +17 -0
- package/dist/core/repositorySimulator.d.ts.map +1 -0
- package/dist/core/repositorySimulator.js +104 -0
- package/dist/core/repositorySimulator.js.map +1 -0
- package/dist/core/scorer.d.ts +30 -0
- package/dist/core/scorer.d.ts.map +1 -0
- package/dist/core/scorer.js +317 -0
- package/dist/core/scorer.js.map +1 -0
- package/dist/core/securityScanner.d.ts +23 -0
- package/dist/core/securityScanner.d.ts.map +1 -0
- package/dist/core/securityScanner.js +216 -0
- package/dist/core/securityScanner.js.map +1 -0
- package/dist/core/skillValidator.d.ts +41 -0
- package/dist/core/skillValidator.d.ts.map +1 -0
- package/dist/core/skillValidator.js +235 -0
- package/dist/core/skillValidator.js.map +1 -0
- package/dist/core/testHistory.d.ts +44 -0
- package/dist/core/testHistory.d.ts.map +1 -0
- package/dist/core/testHistory.js +91 -0
- package/dist/core/testHistory.js.map +1 -0
- package/dist/tokenizers/claudeTokenizer.d.ts +26 -0
- package/dist/tokenizers/claudeTokenizer.d.ts.map +1 -0
- package/dist/tokenizers/claudeTokenizer.js +83 -0
- package/dist/tokenizers/claudeTokenizer.js.map +1 -0
- package/dist/types/agent.d.ts +26 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +5 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/config.d.ts +30 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +5 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/context.d.ts +77 -0
- package/dist/types/context.d.ts.map +1 -0
- package/dist/types/context.js +5 -0
- package/dist/types/context.js.map +1 -0
- package/dist/types/dataset.d.ts +26 -0
- package/dist/types/dataset.d.ts.map +1 -0
- package/dist/types/dataset.js +5 -0
- package/dist/types/dataset.js.map +1 -0
- package/dist/types/diagnostics.d.ts +31 -0
- package/dist/types/diagnostics.d.ts.map +1 -0
- package/dist/types/diagnostics.js +5 -0
- package/dist/types/diagnostics.js.map +1 -0
- package/dist/types/prompt.d.ts +53 -0
- package/dist/types/prompt.d.ts.map +1 -0
- package/dist/types/prompt.js +5 -0
- package/dist/types/prompt.js.map +1 -0
- package/dist/types/results.d.ts +42 -0
- package/dist/types/results.d.ts.map +1 -0
- package/dist/types/results.js +5 -0
- package/dist/types/results.js.map +1 -0
- package/dist/ui/dashboard.d.ts +57 -0
- package/dist/ui/dashboard.d.ts.map +1 -0
- package/dist/ui/dashboard.js +644 -0
- package/dist/ui/dashboard.js.map +1 -0
- package/dist/utils/__tests__/hashing.test.d.ts +2 -0
- package/dist/utils/__tests__/hashing.test.d.ts.map +1 -0
- package/dist/utils/__tests__/hashing.test.js +28 -0
- package/dist/utils/__tests__/hashing.test.js.map +1 -0
- package/dist/utils/__tests__/output.test.d.ts +2 -0
- package/dist/utils/__tests__/output.test.d.ts.map +1 -0
- package/dist/utils/__tests__/output.test.js +62 -0
- package/dist/utils/__tests__/output.test.js.map +1 -0
- package/dist/utils/cache.d.ts +29 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +87 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/config.d.ts +15 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +61 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/errors.d.ts +43 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +83 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/fs.d.ts +44 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +119 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/hashing.d.ts +13 -0
- package/dist/utils/hashing.d.ts.map +1 -0
- package/dist/utils/hashing.js +18 -0
- package/dist/utils/hashing.js.map +1 -0
- package/dist/utils/logger.d.ts +32 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +76 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/output.d.ts +34 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +99 -0
- package/dist/utils/output.js.map +1 -0
- package/dist/utils/paths.d.ts +33 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +51 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/spinner.d.ts +23 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +79 -0
- package/dist/utils/spinner.js.map +1 -0
- package/package.json +60 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 claude-test contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
# codeprobe
|
|
2
|
+
|
|
3
|
+
**DevTools for AI Coding — Context Engineering Toolkit for Claude, Cursor, Copilot, and more**
|
|
4
|
+
|
|
5
|
+
`codeprobe` is a developer toolkit for testing, analyzing, and optimizing AI coding workflows. It helps you write better prompts, understand your repository's context footprint, and build production-grade AI pipelines with any major LLM provider. Works with Claude Code, Cursor, GitHub Copilot, Windsurf, Aider, and other AI coding tools.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Why Context Engineering Matters
|
|
10
|
+
|
|
11
|
+
Claude's effectiveness depends on what you put in the context window. Most developers waste context on irrelevant files, oversized prompts, or poorly structured instructions. `codeprobe` gives you the tools to measure, analyze, and optimize every token you send to Claude.
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install -g codeprobe
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Quickstart
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Instant dashboard — just run codeprobe
|
|
23
|
+
codeprobe
|
|
24
|
+
|
|
25
|
+
# Full project scan in one command
|
|
26
|
+
codeprobe scan
|
|
27
|
+
|
|
28
|
+
# Set up starter files and config
|
|
29
|
+
codeprobe init
|
|
30
|
+
|
|
31
|
+
# Run prompt tests
|
|
32
|
+
codeprobe test
|
|
33
|
+
|
|
34
|
+
# Analyze your repo's context footprint
|
|
35
|
+
codeprobe context
|
|
36
|
+
|
|
37
|
+
# Generate a CLAUDE.md from repo analysis
|
|
38
|
+
codeprobe generate-claudemd
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## How It Works
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Just type codeprobe — instant dashboard
|
|
45
|
+
codeprobe
|
|
46
|
+
|
|
47
|
+
# Full project scan in one command
|
|
48
|
+
codeprobe scan
|
|
49
|
+
|
|
50
|
+
# Quick summary
|
|
51
|
+
codeprobe summary
|
|
52
|
+
|
|
53
|
+
# CI/CD gate — one command, clear pass/fail
|
|
54
|
+
codeprobe check
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
codeprobe is designed to be useful immediately. No setup required for context analysis — just run it in any project directory.
|
|
58
|
+
|
|
59
|
+
## Core Commands
|
|
60
|
+
|
|
61
|
+
| Command | Description |
|
|
62
|
+
|---------|-------------|
|
|
63
|
+
| `init` | Create starter folders, example prompts, and config |
|
|
64
|
+
| `test [path]` | Run prompt tests with assertions |
|
|
65
|
+
| `diff <a> <b>` | Compare two prompt specs |
|
|
66
|
+
| `context [path]` | Analyze repository context usage and token counts |
|
|
67
|
+
| `simulate [path]` | Simulate whether a repo fits into Claude context windows |
|
|
68
|
+
| `pack [path]` | Build an optimized context packing plan |
|
|
69
|
+
| `benchmark [path]` | Benchmark prompts across Anthropic models |
|
|
70
|
+
| `agents [path]` | Scan for Claude-related workflow assets |
|
|
71
|
+
| `hooks [path]` | Detect hook configurations |
|
|
72
|
+
| `mcp [path]` | Detect MCP server configurations |
|
|
73
|
+
| `lint [path]` | Lint prompt specs for quality problems |
|
|
74
|
+
| `improve <file>` | Suggest prompt improvements |
|
|
75
|
+
| `map [path]` | Produce a repository context map |
|
|
76
|
+
| `heatmap [path]` | Show token-heavy files and hot spots |
|
|
77
|
+
| `explain <file>` | Explain prompt weaknesses and likely failures |
|
|
78
|
+
| `validate [path]` | Validate prompt specs and Claude assets |
|
|
79
|
+
| `security [path]` | Run prompt security and injection checks |
|
|
80
|
+
| `doctor` | Diagnose environment readiness |
|
|
81
|
+
| `repl` | Interactive prompt playground |
|
|
82
|
+
| `generate-claudemd` | Generate a CLAUDE.md from repo analysis |
|
|
83
|
+
| `workflow [path]` | Detect agentic workflow patterns (tasks, plans, lessons) |
|
|
84
|
+
| `check [path]` | CI-friendly gate — run all validations, exit 0 or 1 |
|
|
85
|
+
| `summary [path]` | Quick one-screen project overview |
|
|
86
|
+
| `install-hook` | Install a Claude Code hook for prompt testing |
|
|
87
|
+
|
|
88
|
+
## Prompt Testing
|
|
89
|
+
|
|
90
|
+
Write prompt specs as YAML files:
|
|
91
|
+
|
|
92
|
+
```yaml
|
|
93
|
+
name: summarize
|
|
94
|
+
description: Summarize text into 3 bullet points
|
|
95
|
+
model: claude-sonnet-4-6
|
|
96
|
+
|
|
97
|
+
system: |
|
|
98
|
+
You are a concise summarizer. Always respond with exactly 3 bullet points.
|
|
99
|
+
|
|
100
|
+
prompt: |
|
|
101
|
+
Summarize the following text in exactly 3 bullet points:
|
|
102
|
+
{{input}}
|
|
103
|
+
|
|
104
|
+
tests:
|
|
105
|
+
- name: basic
|
|
106
|
+
input: |
|
|
107
|
+
Claude Code is an agentic coding tool that lives in your terminal.
|
|
108
|
+
It understands your codebase, can edit files, and run commands.
|
|
109
|
+
expect:
|
|
110
|
+
contains:
|
|
111
|
+
- Claude Code
|
|
112
|
+
regex:
|
|
113
|
+
- "^- "
|
|
114
|
+
|
|
115
|
+
- name: from-file
|
|
116
|
+
inputFile: ./fixtures/article.txt
|
|
117
|
+
expect:
|
|
118
|
+
contains:
|
|
119
|
+
- context
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Run tests:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
codeprobe test prompts/
|
|
126
|
+
|
|
127
|
+
# With watch mode
|
|
128
|
+
codeprobe test --watch
|
|
129
|
+
|
|
130
|
+
# With caching
|
|
131
|
+
codeprobe test --cache
|
|
132
|
+
|
|
133
|
+
# JSON output for CI
|
|
134
|
+
codeprobe test --json
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Assertions
|
|
138
|
+
|
|
139
|
+
| Type | Description |
|
|
140
|
+
|------|-------------|
|
|
141
|
+
| `contains` | Output must include all specified strings |
|
|
142
|
+
| `notContains` | Output must not include any specified strings |
|
|
143
|
+
| `regex` | Output must match all patterns |
|
|
144
|
+
| `equals` | Output must exactly equal the string |
|
|
145
|
+
| `jsonSchema` | Output must validate against JSON Schema |
|
|
146
|
+
|
|
147
|
+
### Dataset Testing
|
|
148
|
+
|
|
149
|
+
Test prompts against JSONL datasets:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
codeprobe test prompts/summarize.prompt.yaml --dataset datasets/sample.jsonl
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Dataset format (one JSON object per line):
|
|
156
|
+
|
|
157
|
+
```json
|
|
158
|
+
{"input": "Text to summarize...", "expected": "key phrase"}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Context Engineering
|
|
162
|
+
|
|
163
|
+
This is where `codeprobe` stands apart. These commands help you understand, measure, and optimize what goes into Claude's context window.
|
|
164
|
+
|
|
165
|
+
### Analyze Context
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
codeprobe context .
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Shows scanned files, total bytes, estimated tokens, extension breakdown, largest files, and fit estimates for 200k and 1M windows.
|
|
172
|
+
|
|
173
|
+
### Simulate Context Fit
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
codeprobe simulate .
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Estimates whether your repository fits into Claude's context window with reserved budget for system prompts and tools.
|
|
180
|
+
|
|
181
|
+
### Pack Context
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
codeprobe pack . --target 1m --optimize
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Builds an optimized context packing plan: which files to include first, which to summarize, which to exclude. Budget breakdown across system prompt, core files, docs, and tool metadata.
|
|
188
|
+
|
|
189
|
+
### Context Map
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
codeprobe map .
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Token distribution by directory — see where your context budget goes.
|
|
196
|
+
|
|
197
|
+
### Token Heatmap
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
codeprobe heatmap . --top 20
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Identifies the files consuming the most tokens in your repository.
|
|
204
|
+
|
|
205
|
+
## Claude Asset Detection
|
|
206
|
+
|
|
207
|
+
Scan repositories for Claude-related workflow assets.
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
# Find all Claude assets (CLAUDE.md, .claude/, skills, hooks, MCP configs)
|
|
211
|
+
codeprobe agents .
|
|
212
|
+
|
|
213
|
+
# Detect hook configurations
|
|
214
|
+
codeprobe hooks .
|
|
215
|
+
|
|
216
|
+
# Find MCP server definitions
|
|
217
|
+
codeprobe mcp .
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## Prompt Quality
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
# Lint prompts for common issues
|
|
224
|
+
codeprobe lint prompts/
|
|
225
|
+
|
|
226
|
+
# Get improvement suggestions
|
|
227
|
+
codeprobe improve prompts/summarize.prompt.yaml
|
|
228
|
+
|
|
229
|
+
# Explain potential weaknesses
|
|
230
|
+
codeprobe explain prompts/summarize.prompt.yaml
|
|
231
|
+
|
|
232
|
+
# Security checks for injection risks
|
|
233
|
+
codeprobe security prompts/
|
|
234
|
+
|
|
235
|
+
# Validate prompt spec structure
|
|
236
|
+
codeprobe validate .
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
## Configuration
|
|
240
|
+
|
|
241
|
+
Create `codeprobe.config.yaml` in your project root:
|
|
242
|
+
|
|
243
|
+
```yaml
|
|
244
|
+
defaultModel: claude-sonnet-4-6
|
|
245
|
+
defaultContextTarget: 1m
|
|
246
|
+
|
|
247
|
+
ignorePaths:
|
|
248
|
+
- node_modules
|
|
249
|
+
- .git
|
|
250
|
+
- dist
|
|
251
|
+
- build
|
|
252
|
+
- coverage
|
|
253
|
+
|
|
254
|
+
caching: true
|
|
255
|
+
|
|
256
|
+
contextBudgets:
|
|
257
|
+
systemPrompt: 10
|
|
258
|
+
coreFiles: 50
|
|
259
|
+
docs: 20
|
|
260
|
+
toolMeta: 10
|
|
261
|
+
|
|
262
|
+
benchmarkDefaults:
|
|
263
|
+
models:
|
|
264
|
+
- claude-sonnet-4-6
|
|
265
|
+
- claude-opus-4-6
|
|
266
|
+
runs: 3
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
## CI Integration
|
|
270
|
+
|
|
271
|
+
The simplest CI setup is a single command:
|
|
272
|
+
|
|
273
|
+
```yaml
|
|
274
|
+
- name: Install codeprobe
|
|
275
|
+
run: npm install -g codeprobe
|
|
276
|
+
|
|
277
|
+
- name: Run all checks
|
|
278
|
+
run: codeprobe check --json
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
`codeprobe check` runs tests, lint, security, and validation in one shot. Exit code 0 means all clear, 1 means issues found.
|
|
282
|
+
|
|
283
|
+
For more granular control, run individual commands:
|
|
284
|
+
|
|
285
|
+
```yaml
|
|
286
|
+
- name: Validate prompts
|
|
287
|
+
run: codeprobe validate --json
|
|
288
|
+
|
|
289
|
+
- name: Run prompt tests
|
|
290
|
+
run: codeprobe test --json
|
|
291
|
+
|
|
292
|
+
- name: Lint prompts
|
|
293
|
+
run: codeprobe lint --json
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
`codeprobe` exits with non-zero codes on failures, making it CI-friendly.
|
|
297
|
+
|
|
298
|
+
## Claude Code Integration
|
|
299
|
+
|
|
300
|
+
### Context Engineering for Claude Code
|
|
301
|
+
|
|
302
|
+
codeprobe helps you optimize your project for Claude Code:
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
# Analyze how much of your repo fits in Claude's context
|
|
306
|
+
codeprobe context .
|
|
307
|
+
|
|
308
|
+
# Get a packing plan -- what to include in CLAUDE.md
|
|
309
|
+
codeprobe pack . --target 200k
|
|
310
|
+
|
|
311
|
+
# Generate a CLAUDE.md from repo analysis
|
|
312
|
+
codeprobe generate-claudemd
|
|
313
|
+
|
|
314
|
+
# See which files consume the most tokens
|
|
315
|
+
codeprobe heatmap . --top 20
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
### Hooks
|
|
319
|
+
|
|
320
|
+
Run prompt tests automatically when working with Claude Code:
|
|
321
|
+
|
|
322
|
+
```bash
|
|
323
|
+
# Install a hook for Claude Code
|
|
324
|
+
codeprobe install-hook
|
|
325
|
+
|
|
326
|
+
# Or configure manually in .claude/settings.json
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
Example `.claude/settings.json`:
|
|
330
|
+
|
|
331
|
+
```json
|
|
332
|
+
{
|
|
333
|
+
"hooks": {
|
|
334
|
+
"PreCommit": [
|
|
335
|
+
{
|
|
336
|
+
"command": "codeprobe test --json",
|
|
337
|
+
"description": "Run prompt regression tests"
|
|
338
|
+
}
|
|
339
|
+
]
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### Live Mode
|
|
345
|
+
|
|
346
|
+
Test prompts against the real Claude API:
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
export ANTHROPIC_API_KEY=sk-ant-...
|
|
350
|
+
npm install @anthropic-ai/sdk
|
|
351
|
+
codeprobe test --mode live
|
|
352
|
+
codeprobe benchmark prompts/my-prompt.yaml
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
See [Claude Code Integration Guide](docs/claude-code-integration.md) for the full setup guide.
|
|
356
|
+
|
|
357
|
+
## AI Tool Detection
|
|
358
|
+
|
|
359
|
+
codeprobe detects configuration files for all major AI coding tools:
|
|
360
|
+
|
|
361
|
+
```bash
|
|
362
|
+
codeprobe agents .
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
Supported tools: Claude Code, Cursor, Windsurf, GitHub Copilot, Aider, Continue.dev, Cline, OpenAI Codex CLI.
|
|
366
|
+
|
|
367
|
+
### Agentic Workflow Analysis
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
codeprobe workflow .
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
Detects task tracking (todo.md), self-improvement loops (lessons.md), plan files, and AI tool configurations.
|
|
374
|
+
|
|
375
|
+
## Multi-Provider Support
|
|
376
|
+
|
|
377
|
+
codeprobe supports models from all major AI providers:
|
|
378
|
+
|
|
379
|
+
| Provider | Models | API Key |
|
|
380
|
+
|----------|--------|---------|
|
|
381
|
+
| Anthropic | Claude Opus 4.6, Sonnet 4.6, Haiku 4.5 | `ANTHROPIC_API_KEY` |
|
|
382
|
+
| OpenAI | GPT-4.1, GPT-4o, o3, o4-mini | `OPENAI_API_KEY` |
|
|
383
|
+
| Google | Gemini 2.5 Pro, Gemini 2.5 Flash | `GOOGLE_API_KEY` |
|
|
384
|
+
| DeepSeek | DeepSeek V3, DeepSeek R1 | `DEEPSEEK_API_KEY` |
|
|
385
|
+
| Qwen | Qwen 3 235B, Qwen 3 32B | `DASHSCOPE_API_KEY` |
|
|
386
|
+
| Mistral | Codestral, Mistral Large | `MISTRAL_API_KEY` |
|
|
387
|
+
| Meta | Llama 4 Maverick, Llama 4 Scout | Via OpenAI-compatible API |
|
|
388
|
+
| Local | Ollama, vLLM | No key needed |
|
|
389
|
+
|
|
390
|
+
Context engineering features (context, simulate, pack, map, heatmap) work offline without any API key.
|
|
391
|
+
|
|
392
|
+
## Examples
|
|
393
|
+
|
|
394
|
+
See the `examples/` directory for:
|
|
395
|
+
|
|
396
|
+
- `basic-test.prompt.yaml` — Simple prompt testing
|
|
397
|
+
- `with-dataset.prompt.yaml` — Dataset-based evaluation
|
|
398
|
+
- `context-analysis.md` — Example context analysis output
|
|
399
|
+
|
|
400
|
+
## Contributing
|
|
401
|
+
|
|
402
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.
|
|
403
|
+
|
|
404
|
+
## License
|
|
405
|
+
|
|
406
|
+
MIT
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* codeprobe — DevTools for AI Coding
|
|
4
|
+
* Context engineering toolkit for Claude, Cursor, Copilot, and more.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
import { registerInitCommand } from './commands/init.js';
|
|
8
|
+
import { registerTestCommand } from './commands/test.js';
|
|
9
|
+
import { registerDiffCommand } from './commands/diff.js';
|
|
10
|
+
import { registerContextCommand } from './commands/context.js';
|
|
11
|
+
import { registerSimulateCommand } from './commands/simulate.js';
|
|
12
|
+
import { registerPackCommand } from './commands/pack.js';
|
|
13
|
+
import { registerBenchmarkCommand } from './commands/benchmark.js';
|
|
14
|
+
import { registerAgentsCommand } from './commands/agents.js';
|
|
15
|
+
import { registerHooksCommand } from './commands/hooks.js';
|
|
16
|
+
import { registerMcpCommand } from './commands/mcp.js';
|
|
17
|
+
import { registerLintCommand } from './commands/lint.js';
|
|
18
|
+
import { registerImproveCommand } from './commands/improve.js';
|
|
19
|
+
import { registerMapCommand } from './commands/map.js';
|
|
20
|
+
import { registerHeatmapCommand } from './commands/heatmap.js';
|
|
21
|
+
import { registerExplainCommand } from './commands/explain.js';
|
|
22
|
+
import { registerValidateCommand } from './commands/validate.js';
|
|
23
|
+
import { registerSecurityCommand } from './commands/security.js';
|
|
24
|
+
import { registerDoctorCommand } from './commands/doctor.js';
|
|
25
|
+
import { registerReplCommand } from './commands/repl.js';
|
|
26
|
+
import { registerGenerateClaudeMdCommand } from './commands/generateClaudeMd.js';
|
|
27
|
+
import { registerInstallHookCommand } from './commands/installHook.js';
|
|
28
|
+
import { registerWorkflowCommand } from './commands/workflow.js';
|
|
29
|
+
import { registerModelsCommand } from './commands/models.js';
|
|
30
|
+
import { registerUiCommand } from './commands/ui.js';
|
|
31
|
+
import { registerDashboardCommand } from './commands/dashboard.js';
|
|
32
|
+
import { registerCostCommand } from './commands/cost.js';
|
|
33
|
+
import { registerGenerateRulesCommand } from './commands/generateRules.js';
|
|
34
|
+
import { registerRegressionCommand } from './commands/regression.js';
|
|
35
|
+
import { registerHistoryCommand } from './commands/history.js';
|
|
36
|
+
import { registerAutotestCommand } from './commands/autotest.js';
|
|
37
|
+
import { registerRecommendCommand } from './commands/recommend.js';
|
|
38
|
+
import { registerAbCommand } from './commands/ab.js';
|
|
39
|
+
import { registerScoreCommand } from './commands/score.js';
|
|
40
|
+
import { registerFlakyCommand } from './commands/flaky.js';
|
|
41
|
+
import { registerScanCommand } from './commands/scan.js';
|
|
42
|
+
import { registerCheckCommand } from './commands/check.js';
|
|
43
|
+
import { registerSummaryCommand } from './commands/summary.js';
|
|
44
|
+
import { handleError } from './utils/errors.js';
|
|
45
|
+
const program = new Command();
|
|
46
|
+
program
|
|
47
|
+
.name('codeprobe')
|
|
48
|
+
.version('0.1.0')
|
|
49
|
+
.description('DevTools for AI Coding — context engineering toolkit for Claude, Cursor, Copilot, and more')
|
|
50
|
+
.addHelpText('after', `
|
|
51
|
+
Examples:
|
|
52
|
+
$ codeprobe Dashboard (default)
|
|
53
|
+
$ codeprobe scan Full project analysis
|
|
54
|
+
$ codeprobe test Run prompt tests
|
|
55
|
+
$ codeprobe context . Analyze token usage
|
|
56
|
+
$ codeprobe cost . Estimate API costs
|
|
57
|
+
$ codeprobe generate-rules Generate AI tool configs
|
|
58
|
+
|
|
59
|
+
Quick start:
|
|
60
|
+
$ codeprobe init && codeprobe scan
|
|
61
|
+
`);
|
|
62
|
+
registerInitCommand(program);
|
|
63
|
+
registerTestCommand(program);
|
|
64
|
+
registerDiffCommand(program);
|
|
65
|
+
registerContextCommand(program);
|
|
66
|
+
registerSimulateCommand(program);
|
|
67
|
+
registerPackCommand(program);
|
|
68
|
+
registerBenchmarkCommand(program);
|
|
69
|
+
registerAgentsCommand(program);
|
|
70
|
+
registerHooksCommand(program);
|
|
71
|
+
registerMcpCommand(program);
|
|
72
|
+
registerLintCommand(program);
|
|
73
|
+
registerImproveCommand(program);
|
|
74
|
+
registerMapCommand(program);
|
|
75
|
+
registerHeatmapCommand(program);
|
|
76
|
+
registerExplainCommand(program);
|
|
77
|
+
registerValidateCommand(program);
|
|
78
|
+
registerSecurityCommand(program);
|
|
79
|
+
registerDoctorCommand(program);
|
|
80
|
+
registerReplCommand(program);
|
|
81
|
+
registerGenerateClaudeMdCommand(program);
|
|
82
|
+
registerInstallHookCommand(program);
|
|
83
|
+
registerWorkflowCommand(program);
|
|
84
|
+
registerModelsCommand(program);
|
|
85
|
+
registerUiCommand(program);
|
|
86
|
+
registerDashboardCommand(program);
|
|
87
|
+
registerCostCommand(program);
|
|
88
|
+
registerGenerateRulesCommand(program);
|
|
89
|
+
registerRegressionCommand(program);
|
|
90
|
+
registerHistoryCommand(program);
|
|
91
|
+
registerAutotestCommand(program);
|
|
92
|
+
registerRecommendCommand(program);
|
|
93
|
+
registerAbCommand(program);
|
|
94
|
+
registerScoreCommand(program);
|
|
95
|
+
registerFlakyCommand(program);
|
|
96
|
+
registerScanCommand(program);
|
|
97
|
+
registerCheckCommand(program);
|
|
98
|
+
registerSummaryCommand(program);
|
|
99
|
+
// Smart default: if no command given, run dashboard on current directory
|
|
100
|
+
if (process.argv.length === 2) {
|
|
101
|
+
process.argv.push('dashboard', '.');
|
|
102
|
+
}
|
|
103
|
+
program.parseAsync(process.argv).catch(handleError);
|
|
104
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `codeprobe ab <prompt-a> <prompt-b>` — A/B test two prompt specs against the
|
|
3
|
+
* same test inputs and compare results side by side.
|
|
4
|
+
*/
|
|
5
|
+
import { Command } from 'commander';
|
|
6
|
+
export declare function registerAbCommand(program: Command): void;
|
|
7
|
+
//# sourceMappingURL=ab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ab.d.ts","sourceRoot":"","sources":["../../src/commands/ab.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2JpC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkJxD"}
|