@martinloop/mcp 0.3.8 → 0.3.9

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 (103) hide show
  1. package/README.md +148 -105
  2. package/dist/resources.js +148 -148
  3. package/dist/server.js +0 -0
  4. package/dist/tools/preflight.d.ts +0 -2
  5. package/dist/tools/preflight.js +2 -42
  6. package/dist/vendor/adapters/openai-compatible.js +6 -6
  7. package/dist/vendor/contracts/index.d.ts +0 -2
  8. package/dist/vendor/contracts/index.js +0 -2
  9. package/dist/vendor/core/index.d.ts +0 -2
  10. package/dist/vendor/core/index.js +0 -2
  11. package/package.json +86 -83
  12. package/server.json +21 -21
  13. package/LICENSE +0 -216
  14. package/dist/vendor/adapters/adapters/src/claude-cli.d.ts +0 -146
  15. package/dist/vendor/adapters/adapters/src/claude-cli.js +0 -1100
  16. package/dist/vendor/adapters/adapters/src/cli-bridge.d.ts +0 -103
  17. package/dist/vendor/adapters/adapters/src/cli-bridge.js +0 -569
  18. package/dist/vendor/adapters/adapters/src/codex-launcher.d.ts +0 -78
  19. package/dist/vendor/adapters/adapters/src/codex-launcher.js +0 -663
  20. package/dist/vendor/adapters/adapters/src/direct-provider.d.ts +0 -10
  21. package/dist/vendor/adapters/adapters/src/direct-provider.js +0 -40
  22. package/dist/vendor/adapters/adapters/src/index.d.ts +0 -8
  23. package/dist/vendor/adapters/adapters/src/index.js +0 -8
  24. package/dist/vendor/adapters/adapters/src/openai-compatible.d.ts +0 -62
  25. package/dist/vendor/adapters/adapters/src/openai-compatible.js +0 -306
  26. package/dist/vendor/adapters/adapters/src/runtime-support.d.ts +0 -17
  27. package/dist/vendor/adapters/adapters/src/runtime-support.js +0 -59
  28. package/dist/vendor/adapters/adapters/src/stub-agent-cli.d.ts +0 -8
  29. package/dist/vendor/adapters/adapters/src/stub-agent-cli.js +0 -40
  30. package/dist/vendor/adapters/adapters/src/stub-direct-provider.d.ts +0 -8
  31. package/dist/vendor/adapters/adapters/src/stub-direct-provider.js +0 -12
  32. package/dist/vendor/adapters/adapters/src/verifier-only.d.ts +0 -9
  33. package/dist/vendor/adapters/adapters/src/verifier-only.js +0 -63
  34. package/dist/vendor/adapters/contracts/src/context-graph.d.ts +0 -48
  35. package/dist/vendor/adapters/contracts/src/context-graph.js +0 -26
  36. package/dist/vendor/adapters/contracts/src/execution-policy.d.ts +0 -78
  37. package/dist/vendor/adapters/contracts/src/execution-policy.js +0 -43
  38. package/dist/vendor/adapters/contracts/src/governance.d.ts +0 -24
  39. package/dist/vendor/adapters/contracts/src/governance.js +0 -11
  40. package/dist/vendor/adapters/contracts/src/identity.d.ts +0 -29
  41. package/dist/vendor/adapters/contracts/src/identity.js +0 -30
  42. package/dist/vendor/adapters/contracts/src/index.d.ts +0 -412
  43. package/dist/vendor/adapters/contracts/src/index.js +0 -225
  44. package/dist/vendor/adapters/contracts/src/operator.d.ts +0 -19
  45. package/dist/vendor/adapters/contracts/src/operator.js +0 -11
  46. package/dist/vendor/adapters/contracts/src/trajectory.d.ts +0 -26
  47. package/dist/vendor/adapters/contracts/src/trajectory.js +0 -27
  48. package/dist/vendor/adapters/core/src/compiler.d.ts +0 -52
  49. package/dist/vendor/adapters/core/src/compiler.js +0 -52
  50. package/dist/vendor/adapters/core/src/context-graph.d.ts +0 -3
  51. package/dist/vendor/adapters/core/src/context-graph.js +0 -371
  52. package/dist/vendor/adapters/core/src/context-integrity.d.ts +0 -26
  53. package/dist/vendor/adapters/core/src/context-integrity.js +0 -80
  54. package/dist/vendor/adapters/core/src/grounding.d.ts +0 -38
  55. package/dist/vendor/adapters/core/src/grounding.js +0 -273
  56. package/dist/vendor/adapters/core/src/identity.d.ts +0 -20
  57. package/dist/vendor/adapters/core/src/identity.js +0 -86
  58. package/dist/vendor/adapters/core/src/index.d.ts +0 -186
  59. package/dist/vendor/adapters/core/src/index.js +0 -1495
  60. package/dist/vendor/adapters/core/src/leash.d.ts +0 -48
  61. package/dist/vendor/adapters/core/src/leash.js +0 -497
  62. package/dist/vendor/adapters/core/src/persistence/compiler.d.ts +0 -18
  63. package/dist/vendor/adapters/core/src/persistence/compiler.js +0 -34
  64. package/dist/vendor/adapters/core/src/persistence/index.d.ts +0 -10
  65. package/dist/vendor/adapters/core/src/persistence/index.js +0 -5
  66. package/dist/vendor/adapters/core/src/persistence/integrity.d.ts +0 -39
  67. package/dist/vendor/adapters/core/src/persistence/integrity.js +0 -252
  68. package/dist/vendor/adapters/core/src/persistence/ledger.d.ts +0 -23
  69. package/dist/vendor/adapters/core/src/persistence/ledger.js +0 -9
  70. package/dist/vendor/adapters/core/src/persistence/memory-store.d.ts +0 -63
  71. package/dist/vendor/adapters/core/src/persistence/memory-store.js +0 -115
  72. package/dist/vendor/adapters/core/src/persistence/runs-reader.d.ts +0 -66
  73. package/dist/vendor/adapters/core/src/persistence/runs-reader.js +0 -140
  74. package/dist/vendor/adapters/core/src/persistence/store.d.ts +0 -89
  75. package/dist/vendor/adapters/core/src/persistence/store.js +0 -125
  76. package/dist/vendor/adapters/core/src/persistence/trace-store.d.ts +0 -85
  77. package/dist/vendor/adapters/core/src/persistence/trace-store.js +0 -125
  78. package/dist/vendor/adapters/core/src/policy-compiler.d.ts +0 -2
  79. package/dist/vendor/adapters/core/src/policy-compiler.js +0 -195
  80. package/dist/vendor/adapters/core/src/policy.d.ts +0 -156
  81. package/dist/vendor/adapters/core/src/policy.js +0 -704
  82. package/dist/vendor/adapters/core/src/repo-analyzer.d.ts +0 -53
  83. package/dist/vendor/adapters/core/src/repo-analyzer.js +0 -263
  84. package/dist/vendor/adapters/core/src/rollback.d.ts +0 -15
  85. package/dist/vendor/adapters/core/src/rollback.js +0 -253
  86. package/dist/vendor/adapters/core/src/routing.d.ts +0 -82
  87. package/dist/vendor/adapters/core/src/routing.js +0 -336
  88. package/dist/vendor/adapters/core/src/test-integrity.d.ts +0 -64
  89. package/dist/vendor/adapters/core/src/test-integrity.js +0 -197
  90. package/dist/vendor/adapters/core/src/trajectory.d.ts +0 -18
  91. package/dist/vendor/adapters/core/src/trajectory.js +0 -295
  92. package/dist/vendor/contracts/delivery.d.ts +0 -47
  93. package/dist/vendor/contracts/delivery.js +0 -18
  94. package/dist/vendor/core/delivery/index.d.ts +0 -6
  95. package/dist/vendor/core/delivery/index.js +0 -4
  96. package/dist/vendor/core/delivery/message-client.d.ts +0 -18
  97. package/dist/vendor/core/delivery/message-client.js +0 -38
  98. package/dist/vendor/core/delivery/message-ledger.d.ts +0 -35
  99. package/dist/vendor/core/delivery/message-ledger.js +0 -97
  100. package/dist/vendor/core/delivery/message-schema.d.ts +0 -16
  101. package/dist/vendor/core/delivery/message-schema.js +0 -111
  102. package/dist/vendor/core/delivery/update-check.d.ts +0 -19
  103. package/dist/vendor/core/delivery/update-check.js +0 -107
package/README.md CHANGED
@@ -1,153 +1,196 @@
1
- # MCP Registry
1
+ # MartinLoop MCP
2
2
 
3
- The MCP registry provides MCP clients with a list of MCP servers, like an app store for MCP servers.
3
+ <div align="center">
4
+ <img src="https://raw.githubusercontent.com/Keesan12/martin-loop/main/docs/assets/martinloop-logo.png" alt="MartinLoop" width="240">
4
5
 
5
- [**📤 Publish my MCP server**](docs/modelcontextprotocol-io/quickstart.mdx) | [**⚡️ Live API docs**](https://registry.modelcontextprotocol.io/docs) | [**👀 Ecosystem vision**](docs/design/ecosystem-vision.md) | 📖 **[Full documentation](./docs)**
6
+ **Stop runaway loops, bad code, and token waste.**
6
7
 
7
- ## Development Status
8
+ The governed MCP runtime for Claude Code, Codex, Gemini CLI, Cursor, and autonomous coding agents.
8
9
 
9
- **2025-10-24 update**: The Registry API has entered an **API freeze (v0.1)** 🎉. For the next month or more, the API will remain stable with no breaking changes, allowing integrators to confidently implement support. This freeze applies to v0.1 while development continues on v0. We'll use this period to validate the API in real-world integrations and gather feedback to shape v1 for general availability. Thank you to everyone for your contributions and patience—your involvement has been key to getting us here!
10
+ [![npm version](https://img.shields.io/npm/v/@martinloop/mcp?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@martinloop/mcp)
11
+ [![npm downloads](https://img.shields.io/npm/dm/@martinloop/mcp?style=flat-square&label=downloads)](https://www.npmjs.com/package/@martinloop/mcp)
12
+ [![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-blue?style=flat-square&logo=apache)](https://github.com/Keesan12/martin-loop/blob/main/LICENSE)
13
+ [![Node](https://img.shields.io/badge/node-%3E%3D20-3c873a?style=flat-square&logo=nodedotjs&logoColor=white)](#requirements)
14
+ [![Glama score](https://glama.ai/mcp/servers/Keesan12/martin-loop/badges/score.svg)](https://glama.ai/mcp/servers/Keesan12/martin-loop)
15
+ </div>
10
16
 
11
- **2025-09-08 update**: The registry has launched in preview 🎉 ([announcement blog post](https://blog.modelcontextprotocol.io/posts/2025-09-08-mcp-registry-preview/)). While the system is now more stable, this is still a preview release and breaking changes or data resets may occur. A general availability (GA) release will follow later. We'd love your feedback in [GitHub discussions](https://github.com/modelcontextprotocol/registry/discussions/new?category=ideas) or in the [#registry-dev Discord](https://discord.com/channels/1358869848138059966/1369487942862504016) ([joining details here](https://modelcontextprotocol.io/community/communication)).
17
+ AI coding agents can write code. MartinLoop decides whether they are allowed to keep spending, whether the result is actually verified, and what evidence must remain for review.
12
18
 
13
- Registry Working Group:
14
- - **Tadas Antanavicius** (PulseMCP) [@tadasant](https://github.com/tadasant)
15
- - **Radoslav (Rado) Dimitrov** (Stacklok) [@rdimitrov](https://github.com/rdimitrov)
16
- - **Bob Dickinson** (TeamSpark) [@BobDickinson](https://github.com/BobDickinson)
17
- - **Preeti (Pree) Dewani** (Ravenmail) [@pree-dew](https://github.com/pree-dew)
19
+ It wraps agent execution with:
18
20
 
19
- ## Contributing
21
+ - hard USD, token, iteration, time, command, and file-change limits
22
+ - verifier gates that must pass before completion
23
+ - allowed and denied path contracts
24
+ - preflight checks before any execution or spend
25
+ - durable pause, continue, and cancel receipts
26
+ - failure triage, run dossiers, evaluations, and PR-review evidence
20
27
 
21
- We use multiple channels for collaboration - see [modelcontextprotocol.io/community/communication](https://modelcontextprotocol.io/community/communication).
28
+ ## Connect in one command
22
29
 
23
- Often (but not always) ideas flow through this pipeline:
30
+ | Host | Command |
31
+ | --- | --- |
32
+ | Claude Code | `claude mcp add martin-loop -- npx -y @martinloop/mcp` |
33
+ | Codex | `codex mcp add martin-loop -- npx -y @martinloop/mcp` |
34
+ | Gemini CLI | `gemini mcp add martin-loop -- npx -y @martinloop/mcp` |
35
+ | Any stdio MCP host | `npx -y @martinloop/mcp` |
24
36
 
25
- - **[Discord](https://modelcontextprotocol.io/community/communication)** - Real-time community discussions
26
- - **[Discussions](https://github.com/modelcontextprotocol/registry/discussions)** - Propose and discuss product/technical requirements
27
- - **[Issues](https://github.com/modelcontextprotocol/registry/issues)** - Track well-scoped technical work
28
- - **[Pull Requests](https://github.com/modelcontextprotocol/registry/pulls)** - Contribute work towards issues
37
+ Windows Claude Code:
29
38
 
30
- ### Quick start:
31
-
32
- #### Pre-requisites
39
+ ```sh
40
+ claude mcp add --transport stdio --scope user martin-loop -- cmd /c npx -y @martinloop/mcp
41
+ ```
33
42
 
34
- - **Docker**
35
- - **Go 1.24.x**
36
- - **ko** - Container image builder for Go ([installation instructions](https://ko.build/install/))
37
- - **golangci-lint v2.4.0**
43
+ No API key is required to start and inspect the server. Live execution requires a supported coding-agent CLI and its normal authentication.
38
44
 
39
- #### Running the server
45
+ ## Why agents use MartinLoop
40
46
 
41
- ```bash
42
- # Start full development environment
43
- make dev-compose
44
- ```
47
+ | Uncontrolled agent run | Governed MartinLoop run |
48
+ | --- | --- |
49
+ | The agent decides when it is done | Your verifier decides whether completion is valid |
50
+ | Retries continue until the user notices | Hard budgets and stop conditions prevent open-ended spend |
51
+ | Scope drifts across the repository | Allowed and denied paths constrain writes |
52
+ | The final answer hides failed attempts | The dossier preserves attempts, costs, verification, and artifacts |
53
+ | Process control is ephemeral | Pause, continue, and cancel actions leave durable receipts |
54
+ | “Probably fixed” becomes accepted | Missing, failed, contradicted, or unknown verification stays incomplete |
45
55
 
46
- This starts the registry at [`localhost:8080`](http://localhost:8080) with PostgreSQL. The database uses ephemeral storage and is reset each time you restart the containers, ensuring a clean state for development and testing.
56
+ MartinLoop is not another coding agent. It is the enforcement and evidence layer around the agents you already use.
47
57
 
48
- **Note:** The registry uses [ko](https://ko.build) to build container images. The `make dev-compose` command automatically builds the registry image with ko and loads it into your local Docker daemon before starting the services.
58
+ ## Agent operating contract
49
59
 
50
- By default, the registry seeds from the production API with a filtered subset of servers (to keep startup fast). This ensures your local environment mirrors production behavior and all seed data passes validation. For offline development you can seed from a file without validation with `MCP_REGISTRY_SEED_FROM=data/seed.json MCP_REGISTRY_ENABLE_REGISTRY_VALIDATION=false make dev-compose`.
60
+ Use this sequence for governed coding work:
51
61
 
52
- The setup can be configured with environment variables in [docker-compose.yml](./docker-compose.yml) - see [.env.example](./.env.example) for a reference.
62
+ ```text
63
+ martin_doctor
64
+ → martin_estimate
65
+ → martin_plan
66
+ → martin_preflight
67
+ → martin_run
68
+ → martin_dossier
69
+ → martin_eval
70
+ ```
53
71
 
54
- <details>
55
- <summary>Alternative: Running a pre-built Docker image</summary>
72
+ ### Rules for agents
56
73
 
57
- Pre-built Docker images are automatically published to GitHub Container Registry. Note that the image does not bundle PostgreSQL, so you need to run your own and point the registry at it via `MCP_REGISTRY_DATABASE_URL` (see [docker-compose.yml](./docker-compose.yml) for a working example):
74
+ 1. Start with `martin_doctor` to inspect the environment and run store.
75
+ 2. Call `martin_estimate` before spending.
76
+ 3. Keep the same objective and compatible scope through estimate, plan, preflight, and run.
77
+ 4. Prefer read-only tools until execution is explicitly authorized.
78
+ 5. Treat failed, contradicted, missing, or unknown verification as incomplete.
79
+ 6. Use `martin://agent/next-step` or `martin://guides/agent-start` when the next action is unclear.
80
+ 7. Do not use `martin_create_pr` with `execute: true` unless the user has explicitly authorized a GitHub write.
58
81
 
59
- ```bash
60
- # Run latest stable release
61
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:latest
82
+ `martin_run` intentionally hard-blocks until the required doctor, estimate, plan, and preflight receipts exist for the same task.
62
83
 
63
- # Run latest from main branch (continuous deployment)
64
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main
84
+ ## What a governed run looks like
65
85
 
66
- # Run specific release version
67
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:v1.0.0
86
+ ```text
87
+ User objective:
88
+ "Fix the auth regression. Budget: $3. Verify: npm test."
68
89
 
69
- # Run development build from main branch
70
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main-20250906-abc123d
90
+ doctor checks environment, CLI availability, and run storage
91
+ estimate predicts route, spend, and pre-work burn without spending
92
+ plan defines scope, verifier proposal, policy pack, and risk
93
+ preflight validates the contract before execution
94
+ run executes inside budget, scope, policy, and verifier gates
95
+ dossier returns attempts, cost, verification, artifacts, and evidence paths
96
+ eval grades completion, verifier health, risk, and reviewability
71
97
  ```
72
98
 
73
- **Available tags:**
74
- - **Releases**: `latest`, `v1.0.0`, `v1.1.0`, etc.
75
- - **Continuous**: `main` (latest main branch build)
76
- - **Development**: `main-<date>-<sha>` (specific commit builds)
99
+ Every attempt is bounded by the run contract. A confident model answer does not override a failed verifier.
77
100
 
78
- </details>
101
+ ## Proof, not promises
79
102
 
80
- #### Publishing a server
103
+ This real governed run spent `$0.51` against a `$3.00` budget. The verifier passed and the receipt integrity was signed. MartinLoop still kept the result at `EVIDENCE_BOUNDARY` because rollback evidence had not been recorded.
81
104
 
82
- To publish a server, we've built a simple CLI. You can use it with:
105
+ <div align="center">
106
+ <img src="https://raw.githubusercontent.com/Keesan12/martin-loop/main/docs/assets/proof-receipt-live-governed.png" alt="MartinLoop governed run receipt showing spend, budget, verifier result, integrity, and evidence boundary" width="720">
107
+ </div>
83
108
 
84
- ```bash
85
- # Build the latest CLI
86
- make publisher
109
+ Inspect the example receipt:
87
110
 
88
- # Use it!
89
- ./bin/mcp-publisher --help
90
- ```
111
+ - [Markdown receipt](https://github.com/Keesan12/martin-loop/blob/main/docs/examples/proof-receipts/live-governed-run-receipt.md)
112
+ - [JSON receipt](https://github.com/Keesan12/martin-loop/blob/main/docs/examples/proof-receipts/live-governed-run-receipt.json)
91
113
 
92
- See [the publisher guide](./docs/modelcontextprotocol-io/quickstart.mdx) for more details.
114
+ ## Tool surface
93
115
 
94
- #### Other commands
116
+ ### Governed workflow
95
117
 
96
- ```bash
97
- # Run lint, unit tests and integration tests
98
- make check
99
- ```
118
+ - `martin_doctor` — inspect environment readiness; expected first call
119
+ - `martin_estimate` — estimate cost and route without spending
120
+ - `martin_plan` — produce scoped plan, verifier proposal, policy pack, and risk
121
+ - `martin_preflight` — validate readiness before execution
122
+ - `martin_run` — execute a governed coding task
123
+ - `martin_pause` — record a durable pause request
124
+ - `martin_continue` — record a durable resume request
125
+ - `martin_cancel` — record a durable cancellation request
100
126
 
101
- There are also a few more helpful commands for development. Run `make help` to learn more, or look in [Makefile](./Makefile).
127
+ ### Inspection and review
102
128
 
103
- <!--
104
- For Claude and other AI tools: Always prefer make targets over custom commands where possible.
105
- -->
129
+ - `martin_status`, `martin_logs`, `martin_inspect`
130
+ - `martin_list_runs`, `martin_triage_runs`
131
+ - `martin_get_run`, `martin_get_attempt`, `martin_get_verification_results`
132
+ - `martin_run_dossier`, `martin_dossier`, `martin_eval`
133
+ - `martin_pr_summary`, `martin_create_pr`, `martin_review_pr`
106
134
 
107
- ## Architecture
135
+ ### Read-only resources
108
136
 
109
- ### Project Structure
137
+ The server exposes run summaries, receipts, budget status, verifier evidence, policies, health, agent guidance, and repository-risk context through `martin://` resources, including:
110
138
 
139
+ ```text
140
+ martin://runs/latest
141
+ martin://runs/latest/summary
142
+ martin://runs/latest/receipt
143
+ martin://runs/latest/budget-status
144
+ martin://runs/latest/verifier-evidence
145
+ martin://runs/recent
146
+ martin://server/health
147
+ martin://policies/current
148
+ martin://agent/next-step
149
+ martin://guides/agent-start
150
+ martin://repo/risk-map
111
151
  ```
112
- ├── cmd/ # Application entry points
113
- │ └── publisher/ # Server publishing tool
114
- ├── data/ # Seed data
115
- ├── deploy/ # Deployment configuration (Pulumi)
116
- ├── docs/ # Documentation
117
- ├── internal/ # Private application code
118
- │ ├── api/ # HTTP handlers and routing
119
- │ ├── auth/ # Authentication (GitHub OAuth, JWT, namespace blocking)
120
- │ ├── config/ # Configuration management
121
- │ ├── database/ # Data persistence (PostgreSQL)
122
- │ ├── service/ # Business logic
123
- │ ├── telemetry/ # Metrics and monitoring
124
- │ └── validators/ # Input validation
125
- ├── pkg/ # Public packages
126
- │ ├── api/ # API types and structures
127
- │ │ └── v0/ # Version 0 API types
128
- │ └── model/ # Data models for server.json
129
- ├── scripts/ # Development and testing scripts
130
- ├── tests/ # Integration tests
131
- └── tools/ # CLI tools and utilities
132
- └── validate-*.sh # Schema validation tools
152
+
153
+ Use resources when the agent needs context without side effects.
154
+
155
+ ## Configuration profiles
156
+
157
+ Generate host config tuned to the minimum surface needed:
158
+
159
+ ```sh
160
+ npx martin-loop mcp print-config --host claude --profile minimal
161
+ npx martin-loop mcp print-config --host claude --profile diagnostic
162
+ npx martin-loop mcp print-config --host claude --profile full-local
163
+ npx martin-loop mcp print-config --host claude --profile github-review
133
164
  ```
134
165
 
135
- ### Authentication
166
+ - `minimal` — core run and inspection path
167
+ - `diagnostic` — adds doctor and triage surfaces
168
+ - `full-local` — all local tools
169
+ - `github-review` — adds PR evidence and review workflow
170
+
171
+ ## Trust boundaries
172
+
173
+ - Cost and token values include provenance: actual, estimated, or unavailable.
174
+ - A verifier proves only the commands you configured, not every product requirement.
175
+ - Receipt integrity must be verified before evidence is trusted externally.
176
+ - Unknown or missing evidence never passes silently.
177
+ - MartinLoop does not guarantee that an agent will produce correct code; it makes execution bounded, verification explicit, and failure reviewable.
136
178
 
137
- Publishing supports multiple authentication methods:
138
- - **GitHub OAuth** - For publishing by logging into GitHub
139
- - **GitHub OIDC** - For publishing from GitHub Actions
140
- - **DNS verification** - For proving ownership of a domain and its subdomains
141
- - **HTTP verification** - For proving ownership of a domain
179
+ ## Requirements
142
180
 
143
- The registry validates namespace ownership when publishing. E.g. to publish...:
144
- - `io.github.domdomegg/my-cool-mcp` you must login to GitHub as `domdomegg`, or be in a GitHub Action on domdomegg's repos
145
- - `me.adamjones/my-cool-mcp` you must prove ownership of `adamjones.me` via DNS or HTTP challenge
181
+ - Node.js 20+
182
+ - One supported coding-agent CLI for live execution: Claude Code, Codex, Gemini CLI, or an OpenAI-compatible route
183
+ - Git repository for rollback-aware and changed-file workflows
146
184
 
147
- ## Community Projects
185
+ ## Links
148
186
 
149
- Check out [community projects](docs/community-projects.md) to explore notable registry-related work created by the community.
187
+ - [Glama server page](https://glama.ai/mcp/servers/Keesan12/martin-loop)
188
+ - [npm: @martinloop/mcp](https://www.npmjs.com/package/@martinloop/mcp)
189
+ - [GitHub source and issues](https://github.com/Keesan12/martin-loop)
190
+ - [MCP setup guide](https://github.com/Keesan12/martin-loop/blob/main/docs/getting-started/mcp.md)
191
+ - [MCP tool reference](https://github.com/Keesan12/martin-loop/blob/main/docs/reference/mcp-tools.md)
192
+ - [martinloop.com](https://martinloop.com)
150
193
 
151
- ## More documentation
194
+ ## License
152
195
 
153
- See the [documentation](./docs) for more details if your question has not been answered here!
196
+ Apache-2.0.
package/dist/resources.js CHANGED
@@ -769,174 +769,174 @@ function inferAgentNextStep(loop, verification) {
769
769
  }
770
770
  function buildMcpUsageGuide(runsRoot) {
771
771
  const metadata = buildMartinDiscoveryMetadata(MARTIN_MCP_PACKAGE_VERSION);
772
- return `# Martin Loop MCP Usage
773
-
774
- Discovery revision: \`${metadata.discoveryRevision}\`
775
- Server version: \`${metadata.serverVersion}\`
776
- Runs root: \`${runsRoot}\`
777
-
778
- Martin Loop exposes governed coding workflows over MCP. Use the server health and run-store views to decide when to preflight, execute, inspect, or escalate.
779
-
780
- ## Recommended Flow
781
-
782
- 1. Read \`${MARTIN_STATIC_RESOURCE_URIS.serverHealth}\` or call \`martin_doctor\` to confirm the environment and run-store visibility.
783
- 2. Use the \`martin_governed_coding_kickoff\` prompt to frame a governed coding request.
784
- 3. Call \`martin_preflight\` before \`martin_run\` when the task or safety envelope is non-trivial.
785
- 4. After execution, inspect \`${MARTIN_STATIC_RESOURCE_URIS.recentRuns}\`, \`martin://runs/{loopId}\`, and \`martin://runs/{loopId}/verification\`.
786
- 5. For low-context agents, read \`${MARTIN_STATIC_RESOURCE_URIS.agentNextStep}\`, \`${MARTIN_STATIC_RESOURCE_URIS.latestSummary}\`, or \`${MARTIN_STATIC_RESOURCE_URIS.latestReceipt}\` before asking for full JSON. Treat \`${MARTIN_STATIC_RESOURCE_URIS.latestProofCard}\` as an optional derived view.
787
- 6. Read \`${MARTIN_STATIC_RESOURCE_URIS.triage}\` or call \`martin_triage_runs\` to prioritize which run needs attention first.
788
- 7. Use \`martin_debug_failed_run\` when a loop exits failed, budget-bound, or escalated.
789
-
790
- ## Current Martin MCP Surface
791
-
792
- - Tools: \`martin_run\`, \`martin_inspect\`, \`martin_status\`, \`martin_doctor\`, \`martin_preflight\`, \`martin_list_runs\`, \`martin_triage_runs\`, \`martin_get_run\`, \`martin_get_attempt\`, \`martin_get_verification_results\`, \`martin_run_dossier\`
793
- - Static resources: \`${MARTIN_STATIC_RESOURCE_URIS.serverHealth}\`, \`${MARTIN_STATIC_RESOURCE_URIS.recentRuns}\`, \`${MARTIN_STATIC_RESOURCE_URIS.triage}\`, \`${MARTIN_STATIC_RESOURCE_URIS.latestSummary}\`, \`${MARTIN_STATIC_RESOURCE_URIS.latestReceipt}\`, \`${MARTIN_STATIC_RESOURCE_URIS.latestProofCard}\`, \`${MARTIN_STATIC_RESOURCE_URIS.latestBudgetStatus}\`, \`${MARTIN_STATIC_RESOURCE_URIS.latestVerifierEvidence}\`, \`${MARTIN_STATIC_RESOURCE_URIS.latestRollbackEvidence}\`, \`${MARTIN_STATIC_RESOURCE_URIS.agentNextStep}\`, \`${MARTIN_STATIC_RESOURCE_URIS.mcpUsageGuide}\`, \`${MARTIN_STATIC_RESOURCE_URIS.agentStartGuide}\`, \`${MARTIN_STATIC_RESOURCE_URIS.publishReadinessGuide}\`
794
- - Resource templates: \`martin://runs/{loopId}\`, \`martin://runs/{loopId}/attempts/{attemptIndex}\`, \`martin://runs/{loopId}/verification\`
795
- - Prompts: \`martin_start\`, \`martin_preflight\`, \`martin_triage\`, \`martin_resume\`, \`martin_prove\`, \`martin_release_check\`, \`martin_governed_coding_kickoff\`, \`martin_debug_failed_run\`, \`martin_publish_readiness_review\`, \`martin_triage_run_store\`
796
-
797
- ## Notes
798
-
799
- - Discovery helpers read the existing Martin run-store; they do not create new schema.
800
- - Verification history is derived from persisted \`verification.completed\` evidence in loop records and ledgers.
801
- - Attempt inspection stays aligned with the same loop selectors used by \`martin_status\` and \`martin_inspect\`.
772
+ return `# Martin Loop MCP Usage
773
+
774
+ Discovery revision: \`${metadata.discoveryRevision}\`
775
+ Server version: \`${metadata.serverVersion}\`
776
+ Runs root: \`${runsRoot}\`
777
+
778
+ Martin Loop exposes governed coding workflows over MCP. Use the server health and run-store views to decide when to preflight, execute, inspect, or escalate.
779
+
780
+ ## Recommended Flow
781
+
782
+ 1. Read \`${MARTIN_STATIC_RESOURCE_URIS.serverHealth}\` or call \`martin_doctor\` to confirm the environment and run-store visibility.
783
+ 2. Use the \`martin_governed_coding_kickoff\` prompt to frame a governed coding request.
784
+ 3. Call \`martin_preflight\` before \`martin_run\` when the task or safety envelope is non-trivial.
785
+ 4. After execution, inspect \`${MARTIN_STATIC_RESOURCE_URIS.recentRuns}\`, \`martin://runs/{loopId}\`, and \`martin://runs/{loopId}/verification\`.
786
+ 5. For low-context agents, read \`${MARTIN_STATIC_RESOURCE_URIS.agentNextStep}\`, \`${MARTIN_STATIC_RESOURCE_URIS.latestSummary}\`, or \`${MARTIN_STATIC_RESOURCE_URIS.latestReceipt}\` before asking for full JSON. Treat \`${MARTIN_STATIC_RESOURCE_URIS.latestProofCard}\` as an optional derived view.
787
+ 6. Read \`${MARTIN_STATIC_RESOURCE_URIS.triage}\` or call \`martin_triage_runs\` to prioritize which run needs attention first.
788
+ 7. Use \`martin_debug_failed_run\` when a loop exits failed, budget-bound, or escalated.
789
+
790
+ ## Current Martin MCP Surface
791
+
792
+ - Tools: \`martin_run\`, \`martin_inspect\`, \`martin_status\`, \`martin_doctor\`, \`martin_preflight\`, \`martin_list_runs\`, \`martin_triage_runs\`, \`martin_get_run\`, \`martin_get_attempt\`, \`martin_get_verification_results\`, \`martin_run_dossier\`
793
+ - Static resources: \`${MARTIN_STATIC_RESOURCE_URIS.serverHealth}\`, \`${MARTIN_STATIC_RESOURCE_URIS.recentRuns}\`, \`${MARTIN_STATIC_RESOURCE_URIS.triage}\`, \`${MARTIN_STATIC_RESOURCE_URIS.latestSummary}\`, \`${MARTIN_STATIC_RESOURCE_URIS.latestReceipt}\`, \`${MARTIN_STATIC_RESOURCE_URIS.latestProofCard}\`, \`${MARTIN_STATIC_RESOURCE_URIS.latestBudgetStatus}\`, \`${MARTIN_STATIC_RESOURCE_URIS.latestVerifierEvidence}\`, \`${MARTIN_STATIC_RESOURCE_URIS.latestRollbackEvidence}\`, \`${MARTIN_STATIC_RESOURCE_URIS.agentNextStep}\`, \`${MARTIN_STATIC_RESOURCE_URIS.mcpUsageGuide}\`, \`${MARTIN_STATIC_RESOURCE_URIS.agentStartGuide}\`, \`${MARTIN_STATIC_RESOURCE_URIS.publishReadinessGuide}\`
794
+ - Resource templates: \`martin://runs/{loopId}\`, \`martin://runs/{loopId}/attempts/{attemptIndex}\`, \`martin://runs/{loopId}/verification\`
795
+ - Prompts: \`martin_start\`, \`martin_preflight\`, \`martin_triage\`, \`martin_resume\`, \`martin_prove\`, \`martin_release_check\`, \`martin_governed_coding_kickoff\`, \`martin_debug_failed_run\`, \`martin_publish_readiness_review\`, \`martin_triage_run_store\`
796
+
797
+ ## Notes
798
+
799
+ - Discovery helpers read the existing Martin run-store; they do not create new schema.
800
+ - Verification history is derived from persisted \`verification.completed\` evidence in loop records and ledgers.
801
+ - Attempt inspection stays aligned with the same loop selectors used by \`martin_status\` and \`martin_inspect\`.
802
802
  `;
803
803
  }
804
804
  function buildAgentStartGuide(runsRoot) {
805
805
  const metadata = buildMartinDiscoveryMetadata(MARTIN_MCP_PACKAGE_VERSION);
806
- return `# Agent Start Here
807
-
808
- Discovery revision: \`${metadata.discoveryRevision}\`
809
- Server version: \`${metadata.serverVersion}\`
810
- Runs root: \`${runsRoot}\`
811
-
812
- Use Martin Loop as the local governor before you spend agent tokens or retry a failed coding loop.
813
-
814
- ## Cheap Default Flow
815
-
816
- 1. Read \`${MARTIN_STATIC_RESOURCE_URIS.agentNextStep}\` first. It is the smallest "what should I do now?" payload.
817
- 2. If no runs exist, call \`martin_doctor\`, then \`martin_preflight\`.
818
- 3. If a run exists, read \`${MARTIN_STATIC_RESOURCE_URIS.latestSummary}\` before reading full run JSON.
819
- 4. If the verifier failed, use prompt \`martin_debug_failed_run\` or \`martin_triage\`.
820
- 5. If you need a shareable receipt, read \`${MARTIN_STATIC_RESOURCE_URIS.latestReceipt}\` first. Generate or inspect \`${MARTIN_STATIC_RESOURCE_URIS.latestProofCard}\` only when a visual artifact is explicitly required.
821
-
822
- ## Install Profiles
823
-
824
- - \`minimal\` (default): doctor, preflight, list, triage, dossier. Good for low tool bloat.
825
- - \`diagnostic\`: read-only inspection tools for debugging without execution.
826
- - \`full-local\`: all local tools, including \`martin_run\`.
827
- - \`github-review\`: review-oriented local profile for PR drafting and reviewer evidence.
828
- - \`starter\` and \`full\`: compatibility aliases.
829
-
830
- ## Copy-Paste Agent Rule
831
-
832
- Before running or retrying an autonomous coding task, call Martin. Prefer compact resources first, then full dossiers only when the compact receipt says more evidence is needed. Never claim success unless Martin shows verifier-backed completion or a clear blocked reason.
806
+ return `# Agent Start Here
807
+
808
+ Discovery revision: \`${metadata.discoveryRevision}\`
809
+ Server version: \`${metadata.serverVersion}\`
810
+ Runs root: \`${runsRoot}\`
811
+
812
+ Use Martin Loop as the local governor before you spend agent tokens or retry a failed coding loop.
813
+
814
+ ## Cheap Default Flow
815
+
816
+ 1. Read \`${MARTIN_STATIC_RESOURCE_URIS.agentNextStep}\` first. It is the smallest "what should I do now?" payload.
817
+ 2. If no runs exist, call \`martin_doctor\`, then \`martin_preflight\`.
818
+ 3. If a run exists, read \`${MARTIN_STATIC_RESOURCE_URIS.latestSummary}\` before reading full run JSON.
819
+ 4. If the verifier failed, use prompt \`martin_debug_failed_run\` or \`martin_triage\`.
820
+ 5. If you need a shareable receipt, read \`${MARTIN_STATIC_RESOURCE_URIS.latestReceipt}\` first. Generate or inspect \`${MARTIN_STATIC_RESOURCE_URIS.latestProofCard}\` only when a visual artifact is explicitly required.
821
+
822
+ ## Install Profiles
823
+
824
+ - \`minimal\` (default): doctor, preflight, list, triage, dossier. Good for low tool bloat.
825
+ - \`diagnostic\`: read-only inspection tools for debugging without execution.
826
+ - \`full-local\`: all local tools, including \`martin_run\`.
827
+ - \`github-review\`: review-oriented local profile for PR drafting and reviewer evidence.
828
+ - \`starter\` and \`full\`: compatibility aliases.
829
+
830
+ ## Copy-Paste Agent Rule
831
+
832
+ Before running or retrying an autonomous coding task, call Martin. Prefer compact resources first, then full dossiers only when the compact receipt says more evidence is needed. Never claim success unless Martin shows verifier-backed completion or a clear blocked reason.
833
833
  `;
834
834
  }
835
835
  function buildCommandMapGuide(runsRoot) {
836
836
  const metadata = buildMartinDiscoveryMetadata(MARTIN_MCP_PACKAGE_VERSION);
837
- return `# Martin Command Map
838
-
839
- Discovery revision: \`${metadata.discoveryRevision}\`
840
- Server version: \`${metadata.serverVersion}\`
841
- Runs root: \`${runsRoot}\`
842
-
843
- Use this guide when an IDE or agent needs to know which Martin surface to call next.
844
-
845
- ## Default Governed Sequence
846
-
847
- 1. \`martin_doctor\` — confirm environment and visibility.
848
- 2. \`martin_plan\` — propose the bounded approach without spending a run.
849
- 3. \`martin_preflight\` — turn the plan into an explicit contract.
850
- 4. \`martin_run\` — execute only after the contract is safe.
851
- 5. \`martin_dossier\` — inspect what happened and what Martin prevented.
852
- 6. \`martin_eval\` — convert the result into review posture when needed.
853
-
854
- ## When To Use Which Surface
855
-
856
- - Need the smallest next action: \`${MARTIN_STATIC_RESOURCE_URIS.agentNextStep}\`
857
- - Need a quick receipt: \`${MARTIN_STATIC_RESOURCE_URIS.latestSummary}\`
858
- - Need the structured receipt source of truth: \`${MARTIN_STATIC_RESOURCE_URIS.latestReceipt}\`
859
- - Need an optional visual proof object: \`${MARTIN_STATIC_RESOURCE_URIS.latestProofCard}\`
860
- - Need a full run review: \`martin_dossier\`
861
- - Need to decide whether to retry: \`martin_triage_runs\`
862
- - Need IDE setup guidance: \`${MARTIN_STATIC_RESOURCE_URIS.ideOnboardingGuide}\`
837
+ return `# Martin Command Map
838
+
839
+ Discovery revision: \`${metadata.discoveryRevision}\`
840
+ Server version: \`${metadata.serverVersion}\`
841
+ Runs root: \`${runsRoot}\`
842
+
843
+ Use this guide when an IDE or agent needs to know which Martin surface to call next.
844
+
845
+ ## Default Governed Sequence
846
+
847
+ 1. \`martin_doctor\` — confirm environment and visibility.
848
+ 2. \`martin_plan\` — propose the bounded approach without spending a run.
849
+ 3. \`martin_preflight\` — turn the plan into an explicit contract.
850
+ 4. \`martin_run\` — execute only after the contract is safe.
851
+ 5. \`martin_dossier\` — inspect what happened and what Martin prevented.
852
+ 6. \`martin_eval\` — convert the result into review posture when needed.
853
+
854
+ ## When To Use Which Surface
855
+
856
+ - Need the smallest next action: \`${MARTIN_STATIC_RESOURCE_URIS.agentNextStep}\`
857
+ - Need a quick receipt: \`${MARTIN_STATIC_RESOURCE_URIS.latestSummary}\`
858
+ - Need the structured receipt source of truth: \`${MARTIN_STATIC_RESOURCE_URIS.latestReceipt}\`
859
+ - Need an optional visual proof object: \`${MARTIN_STATIC_RESOURCE_URIS.latestProofCard}\`
860
+ - Need a full run review: \`martin_dossier\`
861
+ - Need to decide whether to retry: \`martin_triage_runs\`
862
+ - Need IDE setup guidance: \`${MARTIN_STATIC_RESOURCE_URIS.ideOnboardingGuide}\`
863
863
  `;
864
864
  }
865
865
  function buildIdeOnboardingGuide(runsRoot) {
866
866
  const metadata = buildMartinDiscoveryMetadata(MARTIN_MCP_PACKAGE_VERSION);
867
- return `# Martin IDE Onboarding
868
-
869
- Discovery revision: \`${metadata.discoveryRevision}\`
870
- Server version: \`${metadata.serverVersion}\`
871
- Runs root: \`${runsRoot}\`
872
-
873
- Use this guide after the MCP server is installed so the host naturally uses MartinLoop during real work.
874
-
875
- ## IDE Default Flow
876
-
877
- 1. Read \`${MARTIN_STATIC_RESOURCE_URIS.agentStartGuide}\`
878
- 2. Read \`${MARTIN_STATIC_RESOURCE_URIS.operatingRulesGuide}\`
879
- 3. Use prompt \`martin_start\` or \`martin_governed_coding_kickoff\`
880
- 4. Call \`martin_doctor\`
881
- 5. Call \`martin_plan\`
882
- 6. Call \`martin_preflight\`
883
- 7. Only then call \`martin_run\`
884
-
885
- ## Goal
886
-
887
- MartinLoop should become the normal path for coding work in the host, not a manual extra step the human has to remember.
867
+ return `# Martin IDE Onboarding
868
+
869
+ Discovery revision: \`${metadata.discoveryRevision}\`
870
+ Server version: \`${metadata.serverVersion}\`
871
+ Runs root: \`${runsRoot}\`
872
+
873
+ Use this guide after the MCP server is installed so the host naturally uses MartinLoop during real work.
874
+
875
+ ## IDE Default Flow
876
+
877
+ 1. Read \`${MARTIN_STATIC_RESOURCE_URIS.agentStartGuide}\`
878
+ 2. Read \`${MARTIN_STATIC_RESOURCE_URIS.operatingRulesGuide}\`
879
+ 3. Use prompt \`martin_start\` or \`martin_governed_coding_kickoff\`
880
+ 4. Call \`martin_doctor\`
881
+ 5. Call \`martin_plan\`
882
+ 6. Call \`martin_preflight\`
883
+ 7. Only then call \`martin_run\`
884
+
885
+ ## Goal
886
+
887
+ MartinLoop should become the normal path for coding work in the host, not a manual extra step the human has to remember.
888
888
  `;
889
889
  }
890
890
  function buildOperatingRulesGuide(runsRoot) {
891
891
  const metadata = buildMartinDiscoveryMetadata(MARTIN_MCP_PACKAGE_VERSION);
892
- return `# Martin Operating Rules
893
-
894
- Discovery revision: \`${metadata.discoveryRevision}\`
895
- Server version: \`${metadata.serverVersion}\`
896
- Runs root: \`${runsRoot}\`
897
-
898
- Use these rules inside the IDE or MCP host as the default MartinLoop operating posture.
899
-
900
- ## Required Sequence Before Real Work
901
-
902
- 1. \`martin_doctor\`
903
- 2. \`martin_plan\`
904
- 3. \`martin_preflight\`
905
- 4. \`martin_run\`
906
- 5. \`martin_dossier\`
907
-
908
- ## Enforcement Rule
909
-
910
- Do not execute real coding work through MartinLoop until doctor and preflight have both been used for the current task.
911
-
912
- ## Completion Rule
913
-
914
- Do not claim success until MartinLoop shows verifier-backed completion or an explicit blocked reason backed by evidence.
892
+ return `# Martin Operating Rules
893
+
894
+ Discovery revision: \`${metadata.discoveryRevision}\`
895
+ Server version: \`${metadata.serverVersion}\`
896
+ Runs root: \`${runsRoot}\`
897
+
898
+ Use these rules inside the IDE or MCP host as the default MartinLoop operating posture.
899
+
900
+ ## Required Sequence Before Real Work
901
+
902
+ 1. \`martin_doctor\`
903
+ 2. \`martin_plan\`
904
+ 3. \`martin_preflight\`
905
+ 4. \`martin_run\`
906
+ 5. \`martin_dossier\`
907
+
908
+ ## Enforcement Rule
909
+
910
+ Do not execute real coding work through MartinLoop until doctor and preflight have both been used for the current task.
911
+
912
+ ## Completion Rule
913
+
914
+ Do not claim success until MartinLoop shows verifier-backed completion or an explicit blocked reason backed by evidence.
915
915
  `;
916
916
  }
917
917
  function buildPublishReadinessGuide(runsRoot) {
918
918
  const metadata = buildMartinDiscoveryMetadata(MARTIN_MCP_PACKAGE_VERSION);
919
- return `# Martin MCP Publish Readiness
920
-
921
- Discovery revision: \`${metadata.discoveryRevision}\`
922
- Server version: \`${metadata.serverVersion}\`
923
- Runs root: \`${runsRoot}\`
924
-
925
- Use this guide when reviewing whether the public MCP package is ready to publish, promote, or hand off for registry submission.
926
-
927
- ## Review Areas
928
-
929
- 1. Environment health: confirm \`${MARTIN_STATIC_RESOURCE_URIS.serverHealth}\` shows a sane working directory, runs root, and engine availability for the target mode.
930
- 2. Discovery surface: verify tools, prompts, static resources, and resource templates are all discoverable and named consistently.
931
- 3. Run evidence: inspect \`${MARTIN_STATIC_RESOURCE_URIS.recentRuns}\` and, when relevant, \`martin://runs/{loopId}/verification\` to confirm verification outcomes are explainable from persisted data.
932
- 4. Packaging lane: run the MCP package test, build, and smoke-pack commands before calling the package publish-ready.
933
- 5. Findings-first reporting: call out missing schema, integration gaps, triage-critical runs, and verification blockers before summarizing strengths.
934
-
935
- ## Evidence Expectations
936
-
937
- - Prefer concrete run IDs, attempt indices, and verification summaries over vague statements.
938
- - Distinguish local package validation from live registry readiness.
939
- - If a discovery helper exists but is not yet wired into the server, report that as an integration gap instead of treating the capability as fully shipped.
919
+ return `# Martin MCP Publish Readiness
920
+
921
+ Discovery revision: \`${metadata.discoveryRevision}\`
922
+ Server version: \`${metadata.serverVersion}\`
923
+ Runs root: \`${runsRoot}\`
924
+
925
+ Use this guide when reviewing whether the public MCP package is ready to publish, promote, or hand off for registry submission.
926
+
927
+ ## Review Areas
928
+
929
+ 1. Environment health: confirm \`${MARTIN_STATIC_RESOURCE_URIS.serverHealth}\` shows a sane working directory, runs root, and engine availability for the target mode.
930
+ 2. Discovery surface: verify tools, prompts, static resources, and resource templates are all discoverable and named consistently.
931
+ 3. Run evidence: inspect \`${MARTIN_STATIC_RESOURCE_URIS.recentRuns}\` and, when relevant, \`martin://runs/{loopId}/verification\` to confirm verification outcomes are explainable from persisted data.
932
+ 4. Packaging lane: run the MCP package test, build, and smoke-pack commands before calling the package publish-ready.
933
+ 5. Findings-first reporting: call out missing schema, integration gaps, triage-critical runs, and verification blockers before summarizing strengths.
934
+
935
+ ## Evidence Expectations
936
+
937
+ - Prefer concrete run IDs, attempt indices, and verification summaries over vague statements.
938
+ - Distinguish local package validation from live registry readiness.
939
+ - If a discovery helper exists but is not yet wired into the server, report that as an integration gap instead of treating the capability as fully shipped.
940
940
  `;
941
941
  }
942
942
  async function buildModeStatusResource() {
package/dist/server.js CHANGED
File without changes