codehere 0.2.2 → 0.3.0-rc.1
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/README.md +88 -68
- package/dist/domain/entities/task.js +4 -4
- package/dist/error-handler.js +4 -9
- package/dist/index.js +253 -1219
- package/dist/infrastructure/config/product-context.js +7 -6
- package/dist/infrastructure/hooks/claude-sdk-hook.js +335 -63
- package/dist/infrastructure/observability/execution-tracer.js +11 -6
- package/dist/infrastructure/orchestration/agent-adapter.js +13 -0
- package/dist/infrastructure/orchestration/agent-installer.js +101 -0
- package/dist/infrastructure/orchestration/agents-config-seed.js +56 -0
- package/dist/infrastructure/orchestration/aider-adapter.js +319 -0
- package/dist/infrastructure/orchestration/artifacts-extractor.js +175 -0
- package/dist/infrastructure/orchestration/claude-code-adapter.js +352 -0
- package/dist/infrastructure/orchestration/codex-adapter.js +310 -0
- package/dist/infrastructure/orchestration/generic-cli-adapter.js +553 -0
- package/dist/infrastructure/orchestration/opencode-adapter.js +275 -0
- package/dist/infrastructure/orchestration/progress-aggregator.js +189 -0
- package/dist/infrastructure/orchestration/readiness.js +106 -0
- package/dist/infrastructure/orchestration/session-manager.js +272 -0
- package/dist/infrastructure/orchestration/session-persistence.js +109 -0
- package/dist/infrastructure/protocols/mcp-helpers.js +10 -30
- package/dist/infrastructure/protocols/mcp-server-impl.js +359 -21
- package/dist/infrastructure/protocols/ui-page.js +1827 -0
- package/dist/infrastructure/security/file-collection.js +115 -0
- package/dist/infrastructure/security/trust-scorer.js +301 -56
- package/dist/infrastructure/storage/task-repository.js +8 -7
- package/dist/monitoring.js +9 -38
- package/dist/presentation/cli/commands/help-command.js +96 -139
- package/dist/presentation/cli/commands/hook-command.js +17 -24
- package/dist/presentation/cli/commands/report-command.js +59 -72
- package/dist/presentation/cli/commands/setup-command.js +4 -4
- package/dist/presentation/cli/commands/status-command.js +321 -30
- package/dist/presentation/cli/commands/trust-command.js +84 -72
- package/dist/presentation/cli/error-display.js +17 -21
- package/dist/ui.js +11 -11
- package/package.json +24 -62
- package/dist/agents/base.js +0 -101
- package/dist/agents/orchestrator-model-driven.js +0 -141
- package/dist/agents/react-orchestrator-agent.js +0 -54
- package/dist/application/agents/execution-agent.js +0 -508
- package/dist/application/agents/multi-agent-orchestrator.js +0 -295
- package/dist/application/agents/planning-agent.js +0 -433
- package/dist/application/agents/validation-agent.js +0 -317
- package/dist/application/architectures/plan-and-act.js +0 -242
- package/dist/application/index.js +0 -12
- package/dist/application/services/agent-factory.js +0 -28
- package/dist/application/services/dependency-container.js +0 -596
- package/dist/application/services/git-context-service.js +0 -83
- package/dist/application/services/intelligent-router.js +0 -934
- package/dist/application/services/tool-executor-service.js +0 -94
- package/dist/application/use-cases/ask-question-use-case.js +0 -338
- package/dist/application/use-cases/edit-file-use-case.js +0 -830
- package/dist/application/use-cases/explain-file-use-case.js +0 -50
- package/dist/application/use-cases/index-codebase-use-case.js +0 -113
- package/dist/application/use-cases/planning-use-case.js +0 -276
- package/dist/application/use-cases/react-orchestration-use-case.js +0 -329
- package/dist/application/use-cases/reflexion-use-case.js +0 -30
- package/dist/application/workflows/deterministic-workflows.js +0 -189
- package/dist/ast-parser.js +0 -331
- package/dist/cache.js +0 -180
- package/dist/chat.js +0 -251
- package/dist/code-analysis.js +0 -327
- package/dist/context.js +0 -187
- package/dist/docs.js +0 -146
- package/dist/domain/entities/code-chunk.js +0 -6
- package/dist/domain/entities/decision.js +0 -9
- package/dist/domain/entities/edit.js +0 -6
- package/dist/domain/entities/knowledge-node.js +0 -9
- package/dist/domain/entities/knowledge-preservation.js +0 -10
- package/dist/domain/entities/memory.js +0 -6
- package/dist/domain/entities/pattern.js +0 -7
- package/dist/domain/entities/plan.js +0 -6
- package/dist/domain/entities/query.js +0 -6
- package/dist/domain/errors/embeddings-not-found-error.js +0 -13
- package/dist/domain/index.js +0 -19
- package/dist/domain/interfaces/ai-service.interface.js +0 -6
- package/dist/domain/interfaces/code-analyzer.interface.js +0 -6
- package/dist/domain/interfaces/decision-repository.interface.js +0 -9
- package/dist/domain/interfaces/embedding-repository.interface.js +0 -6
- package/dist/domain/interfaces/knowledge-graph-repository.interface.js +0 -9
- package/dist/domain/interfaces/knowledge-preservation-repository.interface.js +0 -8
- package/dist/domain/interfaces/memory-repository.interface.js +0 -6
- package/dist/domain/interfaces/pattern-repository.interface.js +0 -6
- package/dist/domain/interfaces/verification-service.interface.js +0 -6
- package/dist/domain/services/cross-team-pattern-sharing.js +0 -125
- package/dist/domain/services/decision-recorder.js +0 -223
- package/dist/domain/services/decision-retriever.js +0 -133
- package/dist/domain/services/environment-mode-manager.js +0 -22
- package/dist/domain/services/graded-memory-activation.js +0 -69
- package/dist/domain/services/knowledge-access.js +0 -132
- package/dist/domain/services/knowledge-extractor.js +0 -247
- package/dist/domain/services/knowledge-graph-builder.js +0 -268
- package/dist/domain/services/knowledge-graph-query.js +0 -187
- package/dist/domain/services/memory-retriever.js +0 -82
- package/dist/domain/services/memory-synthesizer.js +0 -91
- package/dist/domain/services/pattern-extractor.js +0 -442
- package/dist/domain/services/query-intent-classifier.js +0 -140
- package/dist/domain/services/react-loop.js +0 -186
- package/dist/domain/services/risk-tier-detector.js +0 -78
- package/dist/edit.js +0 -319
- package/dist/embed.js +0 -459
- package/dist/formatter.js +0 -168
- package/dist/git.js +0 -198
- package/dist/infrastructure/ai/cohere-ai-service.js +0 -607
- package/dist/infrastructure/ai/command-r-evaluation.js +0 -206
- package/dist/infrastructure/ai/model-config.js +0 -84
- package/dist/infrastructure/ai/provider-ai-service.js +0 -477
- package/dist/infrastructure/cache/embedding-cache.js +0 -175
- package/dist/infrastructure/cache/query-result-cache.js +0 -66
- package/dist/infrastructure/cache/response-cache.js +0 -48
- package/dist/infrastructure/cache/security-scan-cache.js +0 -47
- package/dist/infrastructure/chunking/ast-code-chunker.js +0 -19
- package/dist/infrastructure/chunking/code-aware-chunker.js +0 -397
- package/dist/infrastructure/context/context-compressor.js +0 -329
- package/dist/infrastructure/context/conversation-context.js +0 -128
- package/dist/infrastructure/context/session-manager.js +0 -94
- package/dist/infrastructure/cost/cost-tracker.js +0 -360
- package/dist/infrastructure/file-scanner/file-scanner.js +0 -106
- package/dist/infrastructure/governance/nist-ai-rmf.js +0 -292
- package/dist/infrastructure/governance/policy-as-code.js +0 -258
- package/dist/infrastructure/governance/prompt-to-code-lineage.js +0 -239
- package/dist/infrastructure/index.js +0 -7
- package/dist/infrastructure/observability/prompt-versioner.js +0 -145
- package/dist/infrastructure/protocols/a2a-metadata.js +0 -137
- package/dist/infrastructure/protocols/a2a-protocol.js +0 -314
- package/dist/infrastructure/protocols/mcp-oauth.js +0 -184
- package/dist/infrastructure/protocols/mcp-server.js +0 -333
- package/dist/infrastructure/protocols/streaming-handler.js +0 -103
- package/dist/infrastructure/providers/cohere-provider.js +0 -444
- package/dist/infrastructure/providers/fake-provider.js +0 -130
- package/dist/infrastructure/providers/local-llm-provider.js +0 -330
- package/dist/infrastructure/providers/model-config.types.js +0 -9
- package/dist/infrastructure/providers/model-provider.interface.js +0 -8
- package/dist/infrastructure/providers/openai-provider.js +0 -413
- package/dist/infrastructure/providers/openrouter-provider.js +0 -399
- package/dist/infrastructure/providers/operation-provider-resolver.js +0 -105
- package/dist/infrastructure/providers/provider-config-loader.js +0 -120
- package/dist/infrastructure/providers/provider-registry.js +0 -88
- package/dist/infrastructure/safety/pattern-detector.js +0 -133
- package/dist/infrastructure/security/ai-sast-scanner.js +0 -290
- package/dist/infrastructure/security/docker-sandbox.js +0 -178
- package/dist/infrastructure/security/enhanced-security-gate.js +0 -151
- package/dist/infrastructure/security/license-scanner.js +0 -167
- package/dist/infrastructure/security/provider-bias-detector.js +0 -164
- package/dist/infrastructure/security/sandbox-executor.js +0 -64
- package/dist/infrastructure/serialization/toon-serializer.js +0 -119
- package/dist/infrastructure/storage/memory-stream-service.js +0 -204
- package/dist/infrastructure/storage/plan-repository.js +0 -96
- package/dist/infrastructure/storage/sqlite-decision-repository.js +0 -232
- package/dist/infrastructure/storage/sqlite-embedding-repository.js +0 -311
- package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.js +0 -417
- package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.js +0 -230
- package/dist/infrastructure/storage/sqlite-memory-repository.js +0 -229
- package/dist/infrastructure/storage/sqlite-pattern-repository.js +0 -249
- package/dist/infrastructure/storage/task-helpers.js +0 -197
- package/dist/infrastructure/telemetry/telemetry-service.js +0 -167
- package/dist/infrastructure/ux/appropriate-friction.js +0 -213
- package/dist/infrastructure/ux/bi-directional-learning.js +0 -337
- package/dist/infrastructure/ux/capability-boundaries.js +0 -42
- package/dist/infrastructure/ux/comprehensive-formatter.js +0 -117
- package/dist/infrastructure/ux/contextual-feature-discovery.js +0 -10
- package/dist/infrastructure/ux/expectation-management.js +0 -327
- package/dist/infrastructure/ux/feature-discovery.js +0 -14
- package/dist/infrastructure/ux/feedback-prompt.js +0 -45
- package/dist/infrastructure/ux/hitl-validation.js +0 -297
- package/dist/infrastructure/ux/progress-indicator.js +0 -116
- package/dist/infrastructure/ux/progressive-disclosure.js +0 -236
- package/dist/infrastructure/ux/review-checkpoint.js +0 -72
- package/dist/infrastructure/ux/staged-feature-intro.js +0 -24
- package/dist/infrastructure/ux/stream-markdown.js +0 -151
- package/dist/infrastructure/ux/syntax-highlighter.js +0 -91
- package/dist/infrastructure/ux/team-standards.js +0 -196
- package/dist/infrastructure/ux/transparency.js +0 -71
- package/dist/infrastructure/validation/agent-feedback.js +0 -55
- package/dist/infrastructure/validation/agent-validation-helper.js +0 -137
- package/dist/infrastructure/validation/review-handler.js +0 -40
- package/dist/infrastructure/validation/summary-aggregator.js +0 -70
- package/dist/infrastructure/validation/summary-extractor.js +0 -45
- package/dist/infrastructure/validation/trace-summary.js +0 -52
- package/dist/infrastructure/verification/verification-service.js +0 -47
- package/dist/infrastructure/xai/attention-visualizer.js +0 -172
- package/dist/infrastructure/xai/cot-visualizer.js +0 -283
- package/dist/infrastructure/xai/decision-tree-log.js +0 -212
- package/dist/infrastructure/xai/interactive-xai.js +0 -260
- package/dist/infrastructure/xai/uncertainty-quantifier.js +0 -198
- package/dist/intelligent-retrieval.js +0 -272
- package/dist/intent/classifier.js +0 -2
- package/dist/intent/context.js +0 -2
- package/dist/iterative-refinement.js +0 -189
- package/dist/learning.js +0 -232
- package/dist/log.js +0 -31
- package/dist/migrate.js +0 -133
- package/dist/parallel-processor.js +0 -534
- package/dist/planner.js +0 -198
- package/dist/policy.js +0 -26
- package/dist/presentation/cli/commands/ask-command.js +0 -314
- package/dist/presentation/cli/commands/cost-command.js +0 -191
- package/dist/presentation/cli/commands/decision-command.js +0 -207
- package/dist/presentation/cli/commands/docs-command.js +0 -25
- package/dist/presentation/cli/commands/fix-command.js +0 -53
- package/dist/presentation/cli/commands/knowledge-command.js +0 -129
- package/dist/presentation/cli/commands/learning-dashboard-command.js +0 -183
- package/dist/presentation/cli/commands/models-command.js +0 -194
- package/dist/presentation/cli/commands/orchestrate-command.js +0 -207
- package/dist/presentation/cli/commands/plan-command.js +0 -246
- package/dist/presentation/cli/commands/product-command.js +0 -199
- package/dist/presentation/cli/commands/react-command.js +0 -181
- package/dist/presentation/cli/commands/review-command.js +0 -154
- package/dist/presentation/cli/commands/run-command.js +0 -188
- package/dist/presentation/cli/commands/smart-command.js +0 -395
- package/dist/presentation/cli/commands/suggest-command.js +0 -138
- package/dist/presentation/cli/commands/trace-command.js +0 -129
- package/dist/presentation/cli/commands/undo-command.js +0 -150
- package/dist/query-optimizer.js +0 -205
- package/dist/refactor.js +0 -116
- package/dist/review.js +0 -206
- package/dist/search.js +0 -163
- package/dist/session.js +0 -704
- package/dist/task-verification.js +0 -336
- package/dist/testgen.js +0 -166
- package/dist/token-optimizer.js +0 -277
- package/dist/tools/bash.js +0 -213
- package/dist/tools/edit.js +0 -235
- package/dist/tools/executor.js +0 -153
- package/dist/tools/git-tool.js +0 -292
- package/dist/tools/parser.js +0 -158
- package/dist/tools/registry.js +0 -302
- package/dist/tools/search.js +0 -100
- package/dist/types.js +0 -2
- package/dist/utils/check-api-status.js +0 -100
- package/dist/utils/diff-parser.js +0 -162
- package/dist/verification/backup.js +0 -259
- package/dist/verification/compiler.js +0 -264
- package/dist/verification/index.js +0 -273
- package/dist/verification/test-runner.js +0 -379
package/README.md
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
# codehere
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> **Every AI action, traced. Every agent, verified.**
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/codehere)
|
|
6
|
-
[](LICENSE)
|
|
6
|
+
[](../LICENSE)
|
|
7
|
+
[]()
|
|
8
|
+
[]()
|
|
7
9
|
|
|
8
|
-
codehere
|
|
10
|
+
codehere is **a PM for your AI coding agents.** Delegate a task. codehere picks the right specialist (Claude Code, Codex, Aider, or OpenCode), wraps every action in the safety hook, audits everything, and hands you a plain-English report with a **trust score on every file changed**.
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
One manager, many specialists, everything traceable.
|
|
11
13
|
|
|
12
14
|
## Install
|
|
13
15
|
|
|
@@ -15,84 +17,87 @@ codehere scans every AI write before it touches your codebase. Works with Claude
|
|
|
15
17
|
npm install -g codehere
|
|
16
18
|
```
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
Requires Node.js 20+. Open-source MIT.
|
|
19
21
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
## Quick start
|
|
23
|
+
|
|
24
|
+
### Delegate a task to an AI agent
|
|
25
|
+
|
|
26
|
+
Make sure at least one of the four supported agents is installed:
|
|
27
|
+
|
|
28
|
+
| Agent | Install |
|
|
29
|
+
|---|---|
|
|
30
|
+
| Claude Code | `npm install -g @anthropic-ai/claude-code` |
|
|
31
|
+
| Codex CLI | `npm install -g @openai/codex` |
|
|
32
|
+
| Aider | `brew install aider` |
|
|
33
|
+
| OpenCode | `curl -fsSL https://opencode.ai/install \| bash` |
|
|
23
34
|
|
|
24
|
-
|
|
25
|
-
codehere trust .
|
|
35
|
+
Then:
|
|
26
36
|
|
|
27
|
-
|
|
28
|
-
codehere
|
|
37
|
+
```bash
|
|
38
|
+
codehere start # opens http://127.0.0.1:3773 in your browser
|
|
29
39
|
```
|
|
30
40
|
|
|
31
|
-
|
|
41
|
+
You'll see:
|
|
32
42
|
|
|
33
|
-
|
|
43
|
+
- **Today's activity** · "47 AI actions · 3 blocked · avg trust 91 · 4 agents"
|
|
44
|
+
- **A task intake** with three starter prompts you can click
|
|
45
|
+
- **A cwd field** pre-filled with where you ran `codehere start`
|
|
46
|
+
- **An agent dropdown** showing which of the four are installed (and a one-click Install button for the others)
|
|
34
47
|
|
|
35
|
-
|
|
48
|
+
Pick an agent, type a task, hit **Assign**. codehere:
|
|
36
49
|
|
|
37
|
-
|
|
50
|
+
1. Spawns the agent with the right headless flags
|
|
51
|
+
2. Streams the steps back as readable progress · *"Read src/auth.ts · Edit src/auth.ts · Run npm test"*
|
|
52
|
+
3. Runs every tool call through the codehere safety hook — you see *"🛡 5 safe · 0 blocked"* grow live
|
|
53
|
+
4. On completion, hands you a **Final report**: files changed with `+/-` lines, trust score per file, test pass/fail, token usage
|
|
38
54
|
|
|
39
|
-
|
|
40
|
-
export ANTHROPIC_API_KEY=sk-ant-... # or OPENAI_API_KEY
|
|
55
|
+
Everything is logged to `~/.codehere/audit/`. One feed, every agent, every action.
|
|
41
56
|
|
|
42
|
-
|
|
43
|
-
codehere ask "how does auth work?" # ask about your code
|
|
44
|
-
codehere explain src/api.ts # explain a file
|
|
45
|
-
codehere fix src/api.ts "add validation" # AI fix with safety check
|
|
46
|
-
codehere plan "refactor auth to JWT" # plan complex tasks
|
|
47
|
-
```
|
|
57
|
+
### Just the safety hook (no agents required)
|
|
48
58
|
|
|
49
|
-
|
|
59
|
+
If you only want the audit-and-block layer for AI tools you already use:
|
|
50
60
|
|
|
51
61
|
```bash
|
|
52
|
-
codehere
|
|
53
|
-
codehere
|
|
62
|
+
codehere hook install # activates the PreToolUse hook in your global ~/.claude/settings.json
|
|
63
|
+
codehere trust . # static trust scan of the current directory
|
|
64
|
+
codehere report # generates a shareable markdown audit report
|
|
65
|
+
codehere status # quick dashboard · sessions, blocks, trust trends
|
|
54
66
|
```
|
|
55
67
|
|
|
56
|
-
|
|
68
|
+
The hook intercepts every `Bash`, `Edit`, `Write`, `MultiEdit`, and `NotebookEdit` call from any Claude Code session running on your machine, runs it through the trust-scorer pattern bank in under 5 ms, blocks anything matching the destructive / credential / injection patterns, and appends every decision to a tamper-evident JSONL audit log.
|
|
57
69
|
|
|
58
|
-
##
|
|
70
|
+
## Commands
|
|
59
71
|
|
|
60
|
-
```
|
|
61
|
-
codehere
|
|
72
|
+
```
|
|
73
|
+
codehere start · launch the task intake web UI at :3773
|
|
74
|
+
codehere task <prompt> · spawn a task from the CLI (requires `start` running)
|
|
75
|
+
codehere kill <sessionId> · kill a running task
|
|
76
|
+
codehere serve · start as MCP server for Claude Desktop, Cursor, etc.
|
|
77
|
+
codehere status · dashboard · sessions, blocked calls, audit trends
|
|
78
|
+
codehere trust [path] · static trust scan · score 0-100, grade A-F
|
|
79
|
+
codehere report · generate a shareable markdown audit report
|
|
80
|
+
codehere hook · install/uninstall/inspect the PreToolUse safety hook
|
|
81
|
+
codehere setup · interactive first-run setup wizard
|
|
82
|
+
codehere config · manage configuration and preferences
|
|
83
|
+
codehere health · system health check
|
|
84
|
+
codehere help · show help (use --all for hidden commands)
|
|
85
|
+
codehere completion <shell> · generate bash/zsh/fish completion script
|
|
86
|
+
codehere scan-tool · internal · used by the hook system, not by users
|
|
62
87
|
```
|
|
63
88
|
|
|
64
|
-
-
|
|
65
|
-
- Type `/` to see all 27 commands with descriptions
|
|
66
|
-
- Arrow keys navigate the palette, Tab completes
|
|
67
|
-
- `trust .`, `status`, `explain src/auth.ts` work with or without `/`
|
|
89
|
+
`codehere --help` for full options on each. `codehere status --weekly` produces a shareable 7-day agent-activity recap. `codehere status --export jsonl > audit.jsonl` exports the raw audit feed.
|
|
68
90
|
|
|
69
|
-
##
|
|
91
|
+
## What it catches
|
|
70
92
|
|
|
71
|
-
|
|
72
|
-
|---|---|
|
|
73
|
-
| `codehere hook install` | Activate pre-execution safety hook |
|
|
74
|
-
| `codehere trust [path]` | Security scan — score 0-100, grade A-F |
|
|
75
|
-
| `codehere trust --ci` | Exit 1 on critical findings (for CI pipelines) |
|
|
76
|
-
| `codehere report` | Markdown audit report (shareable) |
|
|
77
|
-
| `codehere report --simple` | Plain English for non-technical readers |
|
|
78
|
-
| `codehere status` | Dashboard: scans, blocks, recent activity |
|
|
79
|
-
| `codehere health` | System health check |
|
|
80
|
-
| `codehere serve` | Start as MCP server for Claude Desktop / Cursor |
|
|
93
|
+
The trust scorer + safety hook detect 60+ patterns across:
|
|
81
94
|
|
|
82
|
-
|
|
95
|
+
- SQL injection · XSS · command injection · path traversal · SSRF
|
|
96
|
+
- Hardcoded secrets · weak crypto · JWT bypass · open redirects
|
|
97
|
+
- Eval injection · prompt injection · credential theft
|
|
98
|
+
- Destructive operations · supply-chain patterns
|
|
83
99
|
|
|
84
|
-
|
|
85
|
-
Your AI assistant → runs a command
|
|
86
|
-
↓
|
|
87
|
-
codehere intercepts (PreToolUse hook)
|
|
88
|
-
↓
|
|
89
|
-
60+ pattern scan in < 5ms
|
|
90
|
-
↓
|
|
91
|
-
Clean? → executes normally
|
|
92
|
-
Dangerous? → blocked with reason
|
|
93
|
-
↓
|
|
94
|
-
Everything logged to ~/.codehere/audit/
|
|
95
|
-
```
|
|
100
|
+
Every blocked call is logged with the reason; every allowed call is logged with the trust score.
|
|
96
101
|
|
|
97
102
|
## MCP server
|
|
98
103
|
|
|
@@ -100,18 +105,33 @@ Everything logged to ~/.codehere/audit/
|
|
|
100
105
|
codehere serve
|
|
101
106
|
```
|
|
102
107
|
|
|
103
|
-
Exposes 4 tools to any MCP client (Claude Desktop, Cursor, etc.):
|
|
104
|
-
|
|
105
|
-
- `
|
|
106
|
-
- `
|
|
107
|
-
- `
|
|
108
|
+
Exposes 4 read-only tools to any MCP client (Claude Desktop, Cursor, Zed, Continue, Cline, etc.):
|
|
109
|
+
|
|
110
|
+
- `codehere_trust` · score a file or code snippet
|
|
111
|
+
- `codehere_scan` · scan text for injection / threat patterns
|
|
112
|
+
- `codehere_review` · scan a directory and return riskiest files
|
|
113
|
+
- `codehere_audit` · read the local hook audit log
|
|
114
|
+
|
|
115
|
+
`codehere serve --show-config` prints the JSON block to paste into Claude Desktop's MCP settings.
|
|
116
|
+
|
|
117
|
+
## Architecture, story, and contribution
|
|
118
|
+
|
|
119
|
+
For depth beyond this README:
|
|
120
|
+
|
|
121
|
+
- **[CODEHERE.md](../CODEHERE.md)** · product spec · positioning, six-ring adoption funnel, F0–F6 foundations, defensibility, GTM, revenue model
|
|
122
|
+
- **[EXPERIENCE.md](../EXPERIENCE.md)** · the human story · how engineering teams, CISOs, and regulated-industry buyers adopt codehere
|
|
123
|
+
- **[AUDIT.md](../AUDIT.md)** · pre-publish audit report · methodology, findings, remediation
|
|
124
|
+
- **[CONTRIBUTING.md](../CONTRIBUTING.md)** · how to contribute · setup, commit discipline, testing philosophy
|
|
125
|
+
- **[SECURITY.md](../SECURITY.md)** · responsible disclosure · `security@codehere.uk`
|
|
126
|
+
- **[CODE_OF_CONDUCT.md](../CODE_OF_CONDUCT.md)** · community standards
|
|
127
|
+
- **[CHANGELOG.md](../CHANGELOG.md)** · per-version release notes
|
|
108
128
|
|
|
109
129
|
## Requirements
|
|
110
130
|
|
|
111
|
-
- Node.js
|
|
112
|
-
-
|
|
113
|
-
-
|
|
131
|
+
- **Node.js 20+** (pinned in `.nvmrc` and `engines.node`)
|
|
132
|
+
- **macOS or Linux** · Windows via WSL works for development; native Windows is on the v0.4 roadmap
|
|
133
|
+
- **Optional but recommended:** at least one supported agent (Claude Code, Codex, Aider, or OpenCode) installed before running `codehere start`
|
|
114
134
|
|
|
115
135
|
## License
|
|
116
136
|
|
|
117
|
-
MIT
|
|
137
|
+
MIT · see [LICENSE](../LICENSE).
|
|
@@ -13,7 +13,7 @@ export var TaskMode;
|
|
|
13
13
|
TaskMode["SUGGEST"] = "suggest";
|
|
14
14
|
TaskMode["PLAN"] = "plan";
|
|
15
15
|
TaskMode["RUN"] = "run";
|
|
16
|
-
TaskMode["REVIEW"] = "review";
|
|
16
|
+
TaskMode["REVIEW"] = "review";
|
|
17
17
|
})(TaskMode || (TaskMode = {}));
|
|
18
18
|
/**
|
|
19
19
|
* Task Status - Current lifecycle state
|
|
@@ -28,7 +28,7 @@ export var TaskStatus;
|
|
|
28
28
|
TaskStatus["NEEDS_REVIEW"] = "needs_review";
|
|
29
29
|
TaskStatus["APPROVED"] = "approved";
|
|
30
30
|
TaskStatus["REJECTED"] = "rejected";
|
|
31
|
-
TaskStatus["CANCELLED"] = "cancelled";
|
|
31
|
+
TaskStatus["CANCELLED"] = "cancelled";
|
|
32
32
|
})(TaskStatus || (TaskStatus = {}));
|
|
33
33
|
/**
|
|
34
34
|
* Risk Tier - Risk level for operation
|
|
@@ -37,7 +37,7 @@ export var RiskTier;
|
|
|
37
37
|
(function (RiskTier) {
|
|
38
38
|
RiskTier["T1"] = "t1";
|
|
39
39
|
RiskTier["T2"] = "t2";
|
|
40
|
-
RiskTier["T3"] = "t3";
|
|
40
|
+
RiskTier["T3"] = "t3";
|
|
41
41
|
})(RiskTier || (RiskTier = {}));
|
|
42
42
|
/**
|
|
43
43
|
* Environment Mode - Data access boundaries
|
|
@@ -46,7 +46,7 @@ export var EnvironmentMode;
|
|
|
46
46
|
(function (EnvironmentMode) {
|
|
47
47
|
EnvironmentMode["LOCAL"] = "local";
|
|
48
48
|
EnvironmentMode["ORG"] = "org";
|
|
49
|
-
EnvironmentMode["INTERNET"] = "internet";
|
|
49
|
+
EnvironmentMode["INTERNET"] = "internet";
|
|
50
50
|
})(EnvironmentMode || (EnvironmentMode = {}));
|
|
51
51
|
/**
|
|
52
52
|
* Review Status
|
package/dist/error-handler.js
CHANGED
|
@@ -101,11 +101,7 @@ export function isRetryable(error) {
|
|
|
101
101
|
if (errorType === ErrorType.RATE_LIMIT) {
|
|
102
102
|
return false;
|
|
103
103
|
}
|
|
104
|
-
return [
|
|
105
|
-
ErrorType.RETRYABLE,
|
|
106
|
-
ErrorType.NETWORK,
|
|
107
|
-
ErrorType.API_ERROR,
|
|
108
|
-
].includes(errorType);
|
|
104
|
+
return [ErrorType.RETRYABLE, ErrorType.NETWORK, ErrorType.API_ERROR].includes(errorType);
|
|
109
105
|
}
|
|
110
106
|
/**
|
|
111
107
|
* Calculate exponential backoff delay
|
|
@@ -120,7 +116,7 @@ export function calculateBackoff(attempt, baseDelay = 1000, maxDelay = 60000) {
|
|
|
120
116
|
* Retry with exponential backoff
|
|
121
117
|
*/
|
|
122
118
|
export async function retryWithBackoff(operation, options = {}) {
|
|
123
|
-
const { maxRetries = 5, baseDelay = 1000, maxDelay = 60000, operationName = 'operation', onRetry
|
|
119
|
+
const { maxRetries = 5, baseDelay = 1000, maxDelay = 60000, operationName = 'operation', onRetry } = options;
|
|
124
120
|
let lastError;
|
|
125
121
|
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
126
122
|
try {
|
|
@@ -148,7 +144,7 @@ export async function retryWithBackoff(operation, options = {}) {
|
|
|
148
144
|
if (onRetry) {
|
|
149
145
|
onRetry(attempt + 1, error);
|
|
150
146
|
}
|
|
151
|
-
await new Promise(resolve => setTimeout(resolve, delay));
|
|
147
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
152
148
|
}
|
|
153
149
|
}
|
|
154
150
|
// All retries exhausted
|
|
@@ -172,8 +168,7 @@ export class CircuitBreaker {
|
|
|
172
168
|
lastFailureTime = 0;
|
|
173
169
|
state = 'CLOSED';
|
|
174
170
|
constructor(threshold = 5, timeout = 60000, // 1 minute
|
|
175
|
-
resetTimeout = 30000
|
|
176
|
-
) {
|
|
171
|
+
resetTimeout = 30000) {
|
|
177
172
|
this.threshold = threshold;
|
|
178
173
|
this.timeout = timeout;
|
|
179
174
|
this.resetTimeout = resetTimeout;
|