codehere 0.2.2 → 0.3.0-rc.10

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.
Files changed (238) hide show
  1. package/README.md +88 -68
  2. package/dist/domain/entities/task.js +4 -4
  3. package/dist/error-handler.js +4 -9
  4. package/dist/index.js +261 -1224
  5. package/dist/infrastructure/config/product-context.js +7 -6
  6. package/dist/infrastructure/hooks/claude-sdk-hook.js +348 -72
  7. package/dist/infrastructure/observability/execution-tracer.js +11 -6
  8. package/dist/infrastructure/orchestration/agent-adapter.js +13 -0
  9. package/dist/infrastructure/orchestration/agent-installer.js +101 -0
  10. package/dist/infrastructure/orchestration/agents-config-seed.js +56 -0
  11. package/dist/infrastructure/orchestration/aider-adapter.js +319 -0
  12. package/dist/infrastructure/orchestration/artifacts-extractor.js +175 -0
  13. package/dist/infrastructure/orchestration/claude-code-adapter.js +352 -0
  14. package/dist/infrastructure/orchestration/codex-adapter.js +310 -0
  15. package/dist/infrastructure/orchestration/conductor-adapter.js +340 -0
  16. package/dist/infrastructure/orchestration/generic-cli-adapter.js +553 -0
  17. package/dist/infrastructure/orchestration/opencode-adapter.js +275 -0
  18. package/dist/infrastructure/orchestration/progress-aggregator.js +189 -0
  19. package/dist/infrastructure/orchestration/readiness.js +106 -0
  20. package/dist/infrastructure/orchestration/session-manager.js +278 -0
  21. package/dist/infrastructure/orchestration/session-persistence.js +109 -0
  22. package/dist/infrastructure/protocols/mcp-helpers.js +10 -30
  23. package/dist/infrastructure/protocols/mcp-server-impl.js +359 -21
  24. package/dist/infrastructure/protocols/probe-port.js +36 -0
  25. package/dist/infrastructure/protocols/ui-page.js +1827 -0
  26. package/dist/infrastructure/security/file-collection.js +115 -0
  27. package/dist/infrastructure/security/trust-scorer.js +301 -56
  28. package/dist/infrastructure/storage/task-repository.js +8 -7
  29. package/dist/monitoring.js +9 -38
  30. package/dist/presentation/cli/commands/help-command.js +96 -139
  31. package/dist/presentation/cli/commands/hook-command.js +17 -24
  32. package/dist/presentation/cli/commands/report-command.js +59 -72
  33. package/dist/presentation/cli/commands/setup-command.js +4 -4
  34. package/dist/presentation/cli/commands/status-command.js +321 -30
  35. package/dist/presentation/cli/commands/trust-command.js +84 -72
  36. package/dist/presentation/cli/error-display.js +17 -21
  37. package/dist/presentation/cli/repl.js +474 -0
  38. package/dist/ui.js +11 -11
  39. package/package.json +24 -62
  40. package/dist/agents/base.js +0 -101
  41. package/dist/agents/orchestrator-model-driven.js +0 -141
  42. package/dist/agents/react-orchestrator-agent.js +0 -54
  43. package/dist/application/agents/execution-agent.js +0 -508
  44. package/dist/application/agents/multi-agent-orchestrator.js +0 -295
  45. package/dist/application/agents/planning-agent.js +0 -433
  46. package/dist/application/agents/validation-agent.js +0 -317
  47. package/dist/application/architectures/plan-and-act.js +0 -242
  48. package/dist/application/index.js +0 -12
  49. package/dist/application/services/agent-factory.js +0 -28
  50. package/dist/application/services/dependency-container.js +0 -596
  51. package/dist/application/services/git-context-service.js +0 -83
  52. package/dist/application/services/intelligent-router.js +0 -934
  53. package/dist/application/services/tool-executor-service.js +0 -94
  54. package/dist/application/use-cases/ask-question-use-case.js +0 -338
  55. package/dist/application/use-cases/edit-file-use-case.js +0 -830
  56. package/dist/application/use-cases/explain-file-use-case.js +0 -50
  57. package/dist/application/use-cases/index-codebase-use-case.js +0 -113
  58. package/dist/application/use-cases/planning-use-case.js +0 -276
  59. package/dist/application/use-cases/react-orchestration-use-case.js +0 -329
  60. package/dist/application/use-cases/reflexion-use-case.js +0 -30
  61. package/dist/application/workflows/deterministic-workflows.js +0 -189
  62. package/dist/ast-parser.js +0 -331
  63. package/dist/cache.js +0 -180
  64. package/dist/chat.js +0 -251
  65. package/dist/code-analysis.js +0 -327
  66. package/dist/context.js +0 -187
  67. package/dist/docs.js +0 -146
  68. package/dist/domain/entities/code-chunk.js +0 -6
  69. package/dist/domain/entities/decision.js +0 -9
  70. package/dist/domain/entities/edit.js +0 -6
  71. package/dist/domain/entities/knowledge-node.js +0 -9
  72. package/dist/domain/entities/knowledge-preservation.js +0 -10
  73. package/dist/domain/entities/memory.js +0 -6
  74. package/dist/domain/entities/pattern.js +0 -7
  75. package/dist/domain/entities/plan.js +0 -6
  76. package/dist/domain/entities/query.js +0 -6
  77. package/dist/domain/errors/embeddings-not-found-error.js +0 -13
  78. package/dist/domain/index.js +0 -19
  79. package/dist/domain/interfaces/ai-service.interface.js +0 -6
  80. package/dist/domain/interfaces/code-analyzer.interface.js +0 -6
  81. package/dist/domain/interfaces/decision-repository.interface.js +0 -9
  82. package/dist/domain/interfaces/embedding-repository.interface.js +0 -6
  83. package/dist/domain/interfaces/knowledge-graph-repository.interface.js +0 -9
  84. package/dist/domain/interfaces/knowledge-preservation-repository.interface.js +0 -8
  85. package/dist/domain/interfaces/memory-repository.interface.js +0 -6
  86. package/dist/domain/interfaces/pattern-repository.interface.js +0 -6
  87. package/dist/domain/interfaces/verification-service.interface.js +0 -6
  88. package/dist/domain/services/cross-team-pattern-sharing.js +0 -125
  89. package/dist/domain/services/decision-recorder.js +0 -223
  90. package/dist/domain/services/decision-retriever.js +0 -133
  91. package/dist/domain/services/environment-mode-manager.js +0 -22
  92. package/dist/domain/services/graded-memory-activation.js +0 -69
  93. package/dist/domain/services/knowledge-access.js +0 -132
  94. package/dist/domain/services/knowledge-extractor.js +0 -247
  95. package/dist/domain/services/knowledge-graph-builder.js +0 -268
  96. package/dist/domain/services/knowledge-graph-query.js +0 -187
  97. package/dist/domain/services/memory-retriever.js +0 -82
  98. package/dist/domain/services/memory-synthesizer.js +0 -91
  99. package/dist/domain/services/pattern-extractor.js +0 -442
  100. package/dist/domain/services/query-intent-classifier.js +0 -140
  101. package/dist/domain/services/react-loop.js +0 -186
  102. package/dist/domain/services/risk-tier-detector.js +0 -78
  103. package/dist/edit.js +0 -319
  104. package/dist/embed.js +0 -459
  105. package/dist/formatter.js +0 -168
  106. package/dist/git.js +0 -198
  107. package/dist/infrastructure/ai/cohere-ai-service.js +0 -607
  108. package/dist/infrastructure/ai/command-r-evaluation.js +0 -206
  109. package/dist/infrastructure/ai/model-config.js +0 -84
  110. package/dist/infrastructure/ai/provider-ai-service.js +0 -477
  111. package/dist/infrastructure/cache/embedding-cache.js +0 -175
  112. package/dist/infrastructure/cache/query-result-cache.js +0 -66
  113. package/dist/infrastructure/cache/response-cache.js +0 -48
  114. package/dist/infrastructure/cache/security-scan-cache.js +0 -47
  115. package/dist/infrastructure/chunking/ast-code-chunker.js +0 -19
  116. package/dist/infrastructure/chunking/code-aware-chunker.js +0 -397
  117. package/dist/infrastructure/context/context-compressor.js +0 -329
  118. package/dist/infrastructure/context/conversation-context.js +0 -128
  119. package/dist/infrastructure/context/session-manager.js +0 -94
  120. package/dist/infrastructure/cost/cost-tracker.js +0 -360
  121. package/dist/infrastructure/file-scanner/file-scanner.js +0 -106
  122. package/dist/infrastructure/governance/nist-ai-rmf.js +0 -292
  123. package/dist/infrastructure/governance/policy-as-code.js +0 -258
  124. package/dist/infrastructure/governance/prompt-to-code-lineage.js +0 -239
  125. package/dist/infrastructure/index.js +0 -7
  126. package/dist/infrastructure/observability/prompt-versioner.js +0 -145
  127. package/dist/infrastructure/protocols/a2a-metadata.js +0 -137
  128. package/dist/infrastructure/protocols/a2a-protocol.js +0 -314
  129. package/dist/infrastructure/protocols/mcp-oauth.js +0 -184
  130. package/dist/infrastructure/protocols/mcp-server.js +0 -333
  131. package/dist/infrastructure/protocols/streaming-handler.js +0 -103
  132. package/dist/infrastructure/providers/cohere-provider.js +0 -444
  133. package/dist/infrastructure/providers/fake-provider.js +0 -130
  134. package/dist/infrastructure/providers/local-llm-provider.js +0 -330
  135. package/dist/infrastructure/providers/model-config.types.js +0 -9
  136. package/dist/infrastructure/providers/model-provider.interface.js +0 -8
  137. package/dist/infrastructure/providers/openai-provider.js +0 -413
  138. package/dist/infrastructure/providers/openrouter-provider.js +0 -399
  139. package/dist/infrastructure/providers/operation-provider-resolver.js +0 -105
  140. package/dist/infrastructure/providers/provider-config-loader.js +0 -120
  141. package/dist/infrastructure/providers/provider-registry.js +0 -88
  142. package/dist/infrastructure/safety/pattern-detector.js +0 -133
  143. package/dist/infrastructure/security/ai-sast-scanner.js +0 -290
  144. package/dist/infrastructure/security/docker-sandbox.js +0 -178
  145. package/dist/infrastructure/security/enhanced-security-gate.js +0 -151
  146. package/dist/infrastructure/security/license-scanner.js +0 -167
  147. package/dist/infrastructure/security/provider-bias-detector.js +0 -164
  148. package/dist/infrastructure/security/sandbox-executor.js +0 -64
  149. package/dist/infrastructure/serialization/toon-serializer.js +0 -119
  150. package/dist/infrastructure/storage/memory-stream-service.js +0 -204
  151. package/dist/infrastructure/storage/plan-repository.js +0 -96
  152. package/dist/infrastructure/storage/sqlite-decision-repository.js +0 -232
  153. package/dist/infrastructure/storage/sqlite-embedding-repository.js +0 -311
  154. package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.js +0 -417
  155. package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.js +0 -230
  156. package/dist/infrastructure/storage/sqlite-memory-repository.js +0 -229
  157. package/dist/infrastructure/storage/sqlite-pattern-repository.js +0 -249
  158. package/dist/infrastructure/storage/task-helpers.js +0 -197
  159. package/dist/infrastructure/telemetry/telemetry-service.js +0 -167
  160. package/dist/infrastructure/ux/appropriate-friction.js +0 -213
  161. package/dist/infrastructure/ux/bi-directional-learning.js +0 -337
  162. package/dist/infrastructure/ux/capability-boundaries.js +0 -42
  163. package/dist/infrastructure/ux/comprehensive-formatter.js +0 -117
  164. package/dist/infrastructure/ux/contextual-feature-discovery.js +0 -10
  165. package/dist/infrastructure/ux/expectation-management.js +0 -327
  166. package/dist/infrastructure/ux/feature-discovery.js +0 -14
  167. package/dist/infrastructure/ux/feedback-prompt.js +0 -45
  168. package/dist/infrastructure/ux/hitl-validation.js +0 -297
  169. package/dist/infrastructure/ux/progress-indicator.js +0 -116
  170. package/dist/infrastructure/ux/progressive-disclosure.js +0 -236
  171. package/dist/infrastructure/ux/review-checkpoint.js +0 -72
  172. package/dist/infrastructure/ux/staged-feature-intro.js +0 -24
  173. package/dist/infrastructure/ux/stream-markdown.js +0 -151
  174. package/dist/infrastructure/ux/syntax-highlighter.js +0 -91
  175. package/dist/infrastructure/ux/team-standards.js +0 -196
  176. package/dist/infrastructure/ux/transparency.js +0 -71
  177. package/dist/infrastructure/validation/agent-feedback.js +0 -55
  178. package/dist/infrastructure/validation/agent-validation-helper.js +0 -137
  179. package/dist/infrastructure/validation/review-handler.js +0 -40
  180. package/dist/infrastructure/validation/summary-aggregator.js +0 -70
  181. package/dist/infrastructure/validation/summary-extractor.js +0 -45
  182. package/dist/infrastructure/validation/trace-summary.js +0 -52
  183. package/dist/infrastructure/verification/verification-service.js +0 -47
  184. package/dist/infrastructure/xai/attention-visualizer.js +0 -172
  185. package/dist/infrastructure/xai/cot-visualizer.js +0 -283
  186. package/dist/infrastructure/xai/decision-tree-log.js +0 -212
  187. package/dist/infrastructure/xai/interactive-xai.js +0 -260
  188. package/dist/infrastructure/xai/uncertainty-quantifier.js +0 -198
  189. package/dist/intelligent-retrieval.js +0 -272
  190. package/dist/intent/classifier.js +0 -2
  191. package/dist/intent/context.js +0 -2
  192. package/dist/iterative-refinement.js +0 -189
  193. package/dist/learning.js +0 -232
  194. package/dist/log.js +0 -31
  195. package/dist/migrate.js +0 -133
  196. package/dist/parallel-processor.js +0 -534
  197. package/dist/planner.js +0 -198
  198. package/dist/policy.js +0 -26
  199. package/dist/presentation/cli/commands/ask-command.js +0 -314
  200. package/dist/presentation/cli/commands/cost-command.js +0 -191
  201. package/dist/presentation/cli/commands/decision-command.js +0 -207
  202. package/dist/presentation/cli/commands/docs-command.js +0 -25
  203. package/dist/presentation/cli/commands/fix-command.js +0 -53
  204. package/dist/presentation/cli/commands/knowledge-command.js +0 -129
  205. package/dist/presentation/cli/commands/learning-dashboard-command.js +0 -183
  206. package/dist/presentation/cli/commands/models-command.js +0 -194
  207. package/dist/presentation/cli/commands/orchestrate-command.js +0 -207
  208. package/dist/presentation/cli/commands/plan-command.js +0 -246
  209. package/dist/presentation/cli/commands/product-command.js +0 -199
  210. package/dist/presentation/cli/commands/react-command.js +0 -181
  211. package/dist/presentation/cli/commands/review-command.js +0 -154
  212. package/dist/presentation/cli/commands/run-command.js +0 -188
  213. package/dist/presentation/cli/commands/smart-command.js +0 -395
  214. package/dist/presentation/cli/commands/suggest-command.js +0 -138
  215. package/dist/presentation/cli/commands/trace-command.js +0 -129
  216. package/dist/presentation/cli/commands/undo-command.js +0 -150
  217. package/dist/query-optimizer.js +0 -205
  218. package/dist/refactor.js +0 -116
  219. package/dist/review.js +0 -206
  220. package/dist/search.js +0 -163
  221. package/dist/session.js +0 -704
  222. package/dist/task-verification.js +0 -336
  223. package/dist/testgen.js +0 -166
  224. package/dist/token-optimizer.js +0 -277
  225. package/dist/tools/bash.js +0 -213
  226. package/dist/tools/edit.js +0 -235
  227. package/dist/tools/executor.js +0 -153
  228. package/dist/tools/git-tool.js +0 -292
  229. package/dist/tools/parser.js +0 -158
  230. package/dist/tools/registry.js +0 -302
  231. package/dist/tools/search.js +0 -100
  232. package/dist/types.js +0 -2
  233. package/dist/utils/check-api-status.js +0 -100
  234. package/dist/utils/diff-parser.js +0 -162
  235. package/dist/verification/backup.js +0 -259
  236. package/dist/verification/compiler.js +0 -264
  237. package/dist/verification/index.js +0 -273
  238. package/dist/verification/test-runner.js +0 -379
package/README.md CHANGED
@@ -1,13 +1,15 @@
1
1
  # codehere
2
2
 
3
- > Know what your AI agent actually did — before your tech lead asks.
3
+ > **Every AI action, traced. Every agent, verified.**
4
4
 
5
5
  [![npm](https://img.shields.io/npm/v/codehere)](https://www.npmjs.com/package/codehere)
6
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow)](LICENSE)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow)](../LICENSE)
7
+ [![Tests](https://img.shields.io/badge/tests-216%2F216-brightgreen)]()
8
+ [![Vulnerabilities](https://img.shields.io/badge/vulnerabilities-0-brightgreen)]()
7
9
 
8
- codehere scans every AI write before it touches your codebase. Works with Claude Code, Cursor, Codex — any AI coding agent.
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
- **Safety features need no API key. AI features work with Anthropic or OpenAI.**
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
- ## 30 seconds to safer AI coding
20
+ Requires Node.js 20+. Open-source MIT.
19
21
 
20
- ```bash
21
- # Activate the safety hook — every AI write gets scanned
22
- codehere hook install
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
- # See what the scanner finds
25
- codehere trust .
35
+ Then:
26
36
 
27
- # Get a shareable audit report
28
- codehere report
37
+ ```bash
38
+ codehere start # opens http://127.0.0.1:3773 in your browser
29
39
  ```
30
40
 
31
- That's it. Every `Bash`, `Edit`, `Write`, and `MultiEdit` call from your AI assistant now goes through a 60+ pattern security scan in under 5ms. Dangerous calls get blocked with a reason. Clean calls execute normally.
41
+ You'll see:
32
42
 
33
- ## What it catches
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
- SQL injection, XSS, command injection, hardcoded secrets, path traversal, SSRF, weak crypto, JWT bypass, eval injection, open redirects, prompt injection, credential theft, destructive operations, supply chain patterns.
48
+ Pick an agent, type a task, hit **Assign**. codehere:
36
49
 
37
- ## AI-powered commands
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
- ```bash
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
- codehere index # build codebase index (once)
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
- Or just type what you want:
59
+ If you only want the audit-and-block layer for AI tools you already use:
50
60
 
51
61
  ```bash
52
- codehere "what vulnerabilities does server.js have"
53
- codehere "explain the auth flow"
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
- codehere routes your query to the right tool automatically.
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
- ## Interactive REPL
70
+ ## Commands
59
71
 
60
- ```bash
61
- codehere # launches the REPL
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
- - Type anything — plain language routes to the right command
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
- ## Safety commands (no API key)
91
+ ## What it catches
70
92
 
71
- | Command | What it does |
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
- ## How the hook works
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
- - `codehere_trust` — score a file or snippet
105
- - `codehere_scan` — scan text for threats
106
- - `codehere_review` — find riskiest files
107
- - `codehere_audit` — read the audit log
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 18+
112
- - For AI commands: `ANTHROPIC_API_KEY` or `OPENAI_API_KEY`
113
- - For safety features: nothing — works out of the box
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"; // HITL mode - inspection/approval
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"; // User cancelled task
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"; // High risk - explicit warning + confirmation
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"; // Full internet access (explicit opt-in)
49
+ EnvironmentMode["INTERNET"] = "internet";
50
50
  })(EnvironmentMode || (EnvironmentMode = {}));
51
51
  /**
52
52
  * Review Status
@@ -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, } = options;
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 // 30 seconds
176
- ) {
171
+ resetTimeout = 30000) {
177
172
  this.threshold = threshold;
178
173
  this.timeout = timeout;
179
174
  this.resetTimeout = resetTimeout;