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.
Files changed (235) 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 +253 -1219
  5. package/dist/infrastructure/config/product-context.js +7 -6
  6. package/dist/infrastructure/hooks/claude-sdk-hook.js +335 -63
  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/generic-cli-adapter.js +553 -0
  16. package/dist/infrastructure/orchestration/opencode-adapter.js +275 -0
  17. package/dist/infrastructure/orchestration/progress-aggregator.js +189 -0
  18. package/dist/infrastructure/orchestration/readiness.js +106 -0
  19. package/dist/infrastructure/orchestration/session-manager.js +272 -0
  20. package/dist/infrastructure/orchestration/session-persistence.js +109 -0
  21. package/dist/infrastructure/protocols/mcp-helpers.js +10 -30
  22. package/dist/infrastructure/protocols/mcp-server-impl.js +359 -21
  23. package/dist/infrastructure/protocols/ui-page.js +1827 -0
  24. package/dist/infrastructure/security/file-collection.js +115 -0
  25. package/dist/infrastructure/security/trust-scorer.js +301 -56
  26. package/dist/infrastructure/storage/task-repository.js +8 -7
  27. package/dist/monitoring.js +9 -38
  28. package/dist/presentation/cli/commands/help-command.js +96 -139
  29. package/dist/presentation/cli/commands/hook-command.js +17 -24
  30. package/dist/presentation/cli/commands/report-command.js +59 -72
  31. package/dist/presentation/cli/commands/setup-command.js +4 -4
  32. package/dist/presentation/cli/commands/status-command.js +321 -30
  33. package/dist/presentation/cli/commands/trust-command.js +84 -72
  34. package/dist/presentation/cli/error-display.js +17 -21
  35. package/dist/ui.js +11 -11
  36. package/package.json +24 -62
  37. package/dist/agents/base.js +0 -101
  38. package/dist/agents/orchestrator-model-driven.js +0 -141
  39. package/dist/agents/react-orchestrator-agent.js +0 -54
  40. package/dist/application/agents/execution-agent.js +0 -508
  41. package/dist/application/agents/multi-agent-orchestrator.js +0 -295
  42. package/dist/application/agents/planning-agent.js +0 -433
  43. package/dist/application/agents/validation-agent.js +0 -317
  44. package/dist/application/architectures/plan-and-act.js +0 -242
  45. package/dist/application/index.js +0 -12
  46. package/dist/application/services/agent-factory.js +0 -28
  47. package/dist/application/services/dependency-container.js +0 -596
  48. package/dist/application/services/git-context-service.js +0 -83
  49. package/dist/application/services/intelligent-router.js +0 -934
  50. package/dist/application/services/tool-executor-service.js +0 -94
  51. package/dist/application/use-cases/ask-question-use-case.js +0 -338
  52. package/dist/application/use-cases/edit-file-use-case.js +0 -830
  53. package/dist/application/use-cases/explain-file-use-case.js +0 -50
  54. package/dist/application/use-cases/index-codebase-use-case.js +0 -113
  55. package/dist/application/use-cases/planning-use-case.js +0 -276
  56. package/dist/application/use-cases/react-orchestration-use-case.js +0 -329
  57. package/dist/application/use-cases/reflexion-use-case.js +0 -30
  58. package/dist/application/workflows/deterministic-workflows.js +0 -189
  59. package/dist/ast-parser.js +0 -331
  60. package/dist/cache.js +0 -180
  61. package/dist/chat.js +0 -251
  62. package/dist/code-analysis.js +0 -327
  63. package/dist/context.js +0 -187
  64. package/dist/docs.js +0 -146
  65. package/dist/domain/entities/code-chunk.js +0 -6
  66. package/dist/domain/entities/decision.js +0 -9
  67. package/dist/domain/entities/edit.js +0 -6
  68. package/dist/domain/entities/knowledge-node.js +0 -9
  69. package/dist/domain/entities/knowledge-preservation.js +0 -10
  70. package/dist/domain/entities/memory.js +0 -6
  71. package/dist/domain/entities/pattern.js +0 -7
  72. package/dist/domain/entities/plan.js +0 -6
  73. package/dist/domain/entities/query.js +0 -6
  74. package/dist/domain/errors/embeddings-not-found-error.js +0 -13
  75. package/dist/domain/index.js +0 -19
  76. package/dist/domain/interfaces/ai-service.interface.js +0 -6
  77. package/dist/domain/interfaces/code-analyzer.interface.js +0 -6
  78. package/dist/domain/interfaces/decision-repository.interface.js +0 -9
  79. package/dist/domain/interfaces/embedding-repository.interface.js +0 -6
  80. package/dist/domain/interfaces/knowledge-graph-repository.interface.js +0 -9
  81. package/dist/domain/interfaces/knowledge-preservation-repository.interface.js +0 -8
  82. package/dist/domain/interfaces/memory-repository.interface.js +0 -6
  83. package/dist/domain/interfaces/pattern-repository.interface.js +0 -6
  84. package/dist/domain/interfaces/verification-service.interface.js +0 -6
  85. package/dist/domain/services/cross-team-pattern-sharing.js +0 -125
  86. package/dist/domain/services/decision-recorder.js +0 -223
  87. package/dist/domain/services/decision-retriever.js +0 -133
  88. package/dist/domain/services/environment-mode-manager.js +0 -22
  89. package/dist/domain/services/graded-memory-activation.js +0 -69
  90. package/dist/domain/services/knowledge-access.js +0 -132
  91. package/dist/domain/services/knowledge-extractor.js +0 -247
  92. package/dist/domain/services/knowledge-graph-builder.js +0 -268
  93. package/dist/domain/services/knowledge-graph-query.js +0 -187
  94. package/dist/domain/services/memory-retriever.js +0 -82
  95. package/dist/domain/services/memory-synthesizer.js +0 -91
  96. package/dist/domain/services/pattern-extractor.js +0 -442
  97. package/dist/domain/services/query-intent-classifier.js +0 -140
  98. package/dist/domain/services/react-loop.js +0 -186
  99. package/dist/domain/services/risk-tier-detector.js +0 -78
  100. package/dist/edit.js +0 -319
  101. package/dist/embed.js +0 -459
  102. package/dist/formatter.js +0 -168
  103. package/dist/git.js +0 -198
  104. package/dist/infrastructure/ai/cohere-ai-service.js +0 -607
  105. package/dist/infrastructure/ai/command-r-evaluation.js +0 -206
  106. package/dist/infrastructure/ai/model-config.js +0 -84
  107. package/dist/infrastructure/ai/provider-ai-service.js +0 -477
  108. package/dist/infrastructure/cache/embedding-cache.js +0 -175
  109. package/dist/infrastructure/cache/query-result-cache.js +0 -66
  110. package/dist/infrastructure/cache/response-cache.js +0 -48
  111. package/dist/infrastructure/cache/security-scan-cache.js +0 -47
  112. package/dist/infrastructure/chunking/ast-code-chunker.js +0 -19
  113. package/dist/infrastructure/chunking/code-aware-chunker.js +0 -397
  114. package/dist/infrastructure/context/context-compressor.js +0 -329
  115. package/dist/infrastructure/context/conversation-context.js +0 -128
  116. package/dist/infrastructure/context/session-manager.js +0 -94
  117. package/dist/infrastructure/cost/cost-tracker.js +0 -360
  118. package/dist/infrastructure/file-scanner/file-scanner.js +0 -106
  119. package/dist/infrastructure/governance/nist-ai-rmf.js +0 -292
  120. package/dist/infrastructure/governance/policy-as-code.js +0 -258
  121. package/dist/infrastructure/governance/prompt-to-code-lineage.js +0 -239
  122. package/dist/infrastructure/index.js +0 -7
  123. package/dist/infrastructure/observability/prompt-versioner.js +0 -145
  124. package/dist/infrastructure/protocols/a2a-metadata.js +0 -137
  125. package/dist/infrastructure/protocols/a2a-protocol.js +0 -314
  126. package/dist/infrastructure/protocols/mcp-oauth.js +0 -184
  127. package/dist/infrastructure/protocols/mcp-server.js +0 -333
  128. package/dist/infrastructure/protocols/streaming-handler.js +0 -103
  129. package/dist/infrastructure/providers/cohere-provider.js +0 -444
  130. package/dist/infrastructure/providers/fake-provider.js +0 -130
  131. package/dist/infrastructure/providers/local-llm-provider.js +0 -330
  132. package/dist/infrastructure/providers/model-config.types.js +0 -9
  133. package/dist/infrastructure/providers/model-provider.interface.js +0 -8
  134. package/dist/infrastructure/providers/openai-provider.js +0 -413
  135. package/dist/infrastructure/providers/openrouter-provider.js +0 -399
  136. package/dist/infrastructure/providers/operation-provider-resolver.js +0 -105
  137. package/dist/infrastructure/providers/provider-config-loader.js +0 -120
  138. package/dist/infrastructure/providers/provider-registry.js +0 -88
  139. package/dist/infrastructure/safety/pattern-detector.js +0 -133
  140. package/dist/infrastructure/security/ai-sast-scanner.js +0 -290
  141. package/dist/infrastructure/security/docker-sandbox.js +0 -178
  142. package/dist/infrastructure/security/enhanced-security-gate.js +0 -151
  143. package/dist/infrastructure/security/license-scanner.js +0 -167
  144. package/dist/infrastructure/security/provider-bias-detector.js +0 -164
  145. package/dist/infrastructure/security/sandbox-executor.js +0 -64
  146. package/dist/infrastructure/serialization/toon-serializer.js +0 -119
  147. package/dist/infrastructure/storage/memory-stream-service.js +0 -204
  148. package/dist/infrastructure/storage/plan-repository.js +0 -96
  149. package/dist/infrastructure/storage/sqlite-decision-repository.js +0 -232
  150. package/dist/infrastructure/storage/sqlite-embedding-repository.js +0 -311
  151. package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.js +0 -417
  152. package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.js +0 -230
  153. package/dist/infrastructure/storage/sqlite-memory-repository.js +0 -229
  154. package/dist/infrastructure/storage/sqlite-pattern-repository.js +0 -249
  155. package/dist/infrastructure/storage/task-helpers.js +0 -197
  156. package/dist/infrastructure/telemetry/telemetry-service.js +0 -167
  157. package/dist/infrastructure/ux/appropriate-friction.js +0 -213
  158. package/dist/infrastructure/ux/bi-directional-learning.js +0 -337
  159. package/dist/infrastructure/ux/capability-boundaries.js +0 -42
  160. package/dist/infrastructure/ux/comprehensive-formatter.js +0 -117
  161. package/dist/infrastructure/ux/contextual-feature-discovery.js +0 -10
  162. package/dist/infrastructure/ux/expectation-management.js +0 -327
  163. package/dist/infrastructure/ux/feature-discovery.js +0 -14
  164. package/dist/infrastructure/ux/feedback-prompt.js +0 -45
  165. package/dist/infrastructure/ux/hitl-validation.js +0 -297
  166. package/dist/infrastructure/ux/progress-indicator.js +0 -116
  167. package/dist/infrastructure/ux/progressive-disclosure.js +0 -236
  168. package/dist/infrastructure/ux/review-checkpoint.js +0 -72
  169. package/dist/infrastructure/ux/staged-feature-intro.js +0 -24
  170. package/dist/infrastructure/ux/stream-markdown.js +0 -151
  171. package/dist/infrastructure/ux/syntax-highlighter.js +0 -91
  172. package/dist/infrastructure/ux/team-standards.js +0 -196
  173. package/dist/infrastructure/ux/transparency.js +0 -71
  174. package/dist/infrastructure/validation/agent-feedback.js +0 -55
  175. package/dist/infrastructure/validation/agent-validation-helper.js +0 -137
  176. package/dist/infrastructure/validation/review-handler.js +0 -40
  177. package/dist/infrastructure/validation/summary-aggregator.js +0 -70
  178. package/dist/infrastructure/validation/summary-extractor.js +0 -45
  179. package/dist/infrastructure/validation/trace-summary.js +0 -52
  180. package/dist/infrastructure/verification/verification-service.js +0 -47
  181. package/dist/infrastructure/xai/attention-visualizer.js +0 -172
  182. package/dist/infrastructure/xai/cot-visualizer.js +0 -283
  183. package/dist/infrastructure/xai/decision-tree-log.js +0 -212
  184. package/dist/infrastructure/xai/interactive-xai.js +0 -260
  185. package/dist/infrastructure/xai/uncertainty-quantifier.js +0 -198
  186. package/dist/intelligent-retrieval.js +0 -272
  187. package/dist/intent/classifier.js +0 -2
  188. package/dist/intent/context.js +0 -2
  189. package/dist/iterative-refinement.js +0 -189
  190. package/dist/learning.js +0 -232
  191. package/dist/log.js +0 -31
  192. package/dist/migrate.js +0 -133
  193. package/dist/parallel-processor.js +0 -534
  194. package/dist/planner.js +0 -198
  195. package/dist/policy.js +0 -26
  196. package/dist/presentation/cli/commands/ask-command.js +0 -314
  197. package/dist/presentation/cli/commands/cost-command.js +0 -191
  198. package/dist/presentation/cli/commands/decision-command.js +0 -207
  199. package/dist/presentation/cli/commands/docs-command.js +0 -25
  200. package/dist/presentation/cli/commands/fix-command.js +0 -53
  201. package/dist/presentation/cli/commands/knowledge-command.js +0 -129
  202. package/dist/presentation/cli/commands/learning-dashboard-command.js +0 -183
  203. package/dist/presentation/cli/commands/models-command.js +0 -194
  204. package/dist/presentation/cli/commands/orchestrate-command.js +0 -207
  205. package/dist/presentation/cli/commands/plan-command.js +0 -246
  206. package/dist/presentation/cli/commands/product-command.js +0 -199
  207. package/dist/presentation/cli/commands/react-command.js +0 -181
  208. package/dist/presentation/cli/commands/review-command.js +0 -154
  209. package/dist/presentation/cli/commands/run-command.js +0 -188
  210. package/dist/presentation/cli/commands/smart-command.js +0 -395
  211. package/dist/presentation/cli/commands/suggest-command.js +0 -138
  212. package/dist/presentation/cli/commands/trace-command.js +0 -129
  213. package/dist/presentation/cli/commands/undo-command.js +0 -150
  214. package/dist/query-optimizer.js +0 -205
  215. package/dist/refactor.js +0 -116
  216. package/dist/review.js +0 -206
  217. package/dist/search.js +0 -163
  218. package/dist/session.js +0 -704
  219. package/dist/task-verification.js +0 -336
  220. package/dist/testgen.js +0 -166
  221. package/dist/token-optimizer.js +0 -277
  222. package/dist/tools/bash.js +0 -213
  223. package/dist/tools/edit.js +0 -235
  224. package/dist/tools/executor.js +0 -153
  225. package/dist/tools/git-tool.js +0 -292
  226. package/dist/tools/parser.js +0 -158
  227. package/dist/tools/registry.js +0 -302
  228. package/dist/tools/search.js +0 -100
  229. package/dist/types.js +0 -2
  230. package/dist/utils/check-api-status.js +0 -100
  231. package/dist/utils/diff-parser.js +0 -162
  232. package/dist/verification/backup.js +0 -259
  233. package/dist/verification/compiler.js +0 -264
  234. package/dist/verification/index.js +0 -273
  235. 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;