@synctek/forgeos 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +177 -268
- package/dist/cli/commands/evidence.d.ts.map +1 -1
- package/dist/cli/commands/evidence.js +18 -0
- package/dist/cli/commands/evidence.js.map +1 -1
- package/dist/cli/commands/federation.d.ts +9 -4
- package/dist/cli/commands/federation.d.ts.map +1 -1
- package/dist/cli/commands/federation.js +73 -30
- package/dist/cli/commands/federation.js.map +1 -1
- package/dist/cli/commands/gate.d.ts.map +1 -1
- package/dist/cli/commands/gate.js +23 -0
- package/dist/cli/commands/gate.js.map +1 -1
- package/dist/cli/commands/review.d.ts.map +1 -1
- package/dist/cli/commands/review.js +25 -0
- package/dist/cli/commands/review.js.map +1 -1
- package/dist/mcp/handlers.js +17 -0
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/shared/types.d.ts +15 -1
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/trust/index.d.ts +1 -1
- package/dist/trust/index.js +1 -1
- package/package.json +11 -6
- package/dist/client.d.ts +0 -46
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -146
- package/dist/client.js.map +0 -1
- package/dist/handlers.d.ts +0 -11
- package/dist/handlers.d.ts.map +0 -1
- package/dist/handlers.js +0 -424
- package/dist/handlers.js.map +0 -1
- package/dist/http-server.d.ts +0 -25
- package/dist/http-server.d.ts.map +0 -1
- package/dist/http-server.js +0 -246
- package/dist/http-server.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -40
- package/dist/index.js.map +0 -1
- package/dist/tools.d.ts +0 -944
- package/dist/tools.d.ts.map +0 -1
- package/dist/tools.js +0 -513
- package/dist/tools.js.map +0 -1
- package/dist/types.d.ts +0 -183
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,109 +1,84 @@
|
|
|
1
|
-
# @synctek/forgeos
|
|
1
|
+
# @synctek/forgeos
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
[ForgeOS](https://synctek.io/forgeos) governance engine.
|
|
3
|
+
**The governance OS for agentic software teams.**
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
ForgeOS is a **persistent governance, memory, and trust layer** that any AI plugs into. It is not an AI. It is not an orchestrator. Your AI (Claude Code, Codex, Cursor, or any MCP-compatible agent) provides the judgment. ForgeOS provides the enforcement — structured gates that block premature releases, a Shared Mind that accumulates institutional knowledge across every session, and a tamper-evident ledger that proves every decision was made and reviewed correctly.
|
|
8
|
+
|
|
9
|
+
Session 100 is smarter than session 1 because ForgeOS feeds every past regression, gate failure, anti-pattern, and fix recipe back into your AI's context before it acts.
|
|
11
10
|
|
|
12
11
|
---
|
|
13
12
|
|
|
14
|
-
##
|
|
13
|
+
## Why ForgeOS
|
|
15
14
|
|
|
16
|
-
|
|
15
|
+
- **Governance gates** — Risk-scored gate pipelines (intent → design → implementation → verification → hardening → release) block releases that skip required reviews or lack evidence. Gates are not advisory; they are enforced.
|
|
16
|
+
- **Shared Mind** — Institutional memory that persists across sessions. Patterns, anti-patterns, and fix recipes accumulate automatically. Every AI session inherits what past sessions learned.
|
|
17
|
+
- **Ed25519 trust ledger** — Every gate promotion, evidence submission, and review verdict is signed and hash-chained. Decisions are tamper-evident and attributable.
|
|
18
|
+
- **Federation** — Knowledge learned by one team propagates to all teams in your organization. One fix discovered in your payment module becomes a system-wide prevention.
|
|
19
|
+
- **Works with any AI** — ForgeOS exposes 21 MCP tools. If your AI client speaks MCP, it works with ForgeOS. No ForgeOS-specific AI model required.
|
|
17
20
|
|
|
18
|
-
|
|
19
|
-
npx -y @synctek/forgeos-mcp
|
|
20
|
-
```
|
|
21
|
+
---
|
|
21
22
|
|
|
22
|
-
|
|
23
|
+
## Install
|
|
23
24
|
|
|
24
25
|
```bash
|
|
25
|
-
|
|
26
|
+
npm install -g @synctek/forgeos
|
|
26
27
|
```
|
|
27
28
|
|
|
29
|
+
Requires Node.js 18+. One command installs three binaries: `forge` (CLI), `forgeos-mcp` (stdio MCP server), `forgeos-mcp-http` (HTTP MCP server).
|
|
30
|
+
|
|
28
31
|
---
|
|
29
32
|
|
|
30
|
-
##
|
|
33
|
+
## Usage
|
|
34
|
+
|
|
35
|
+
### Path 1: MCP — for AI agents (Claude Code, Cursor, etc.)
|
|
36
|
+
|
|
37
|
+
Add ForgeOS to your MCP client configuration. No install required for the MCP server itself — `npx` handles it.
|
|
31
38
|
|
|
32
|
-
|
|
39
|
+
**Claude Code** (`~/.claude/mcp.json` or project-level `.mcp.json`):
|
|
33
40
|
|
|
34
41
|
```json
|
|
35
42
|
{
|
|
36
43
|
"mcpServers": {
|
|
37
44
|
"forgeos": {
|
|
38
45
|
"command": "npx",
|
|
39
|
-
"args": ["-y", "@synctek/forgeos
|
|
46
|
+
"args": ["-y", "@synctek/forgeos"],
|
|
40
47
|
"env": {
|
|
41
|
-
"
|
|
42
|
-
"
|
|
48
|
+
"FORGE_API_KEY": "your-api-key",
|
|
49
|
+
"FORGE_ENGINE_URL": "https://api.forgeos.synctek.io"
|
|
43
50
|
}
|
|
44
51
|
}
|
|
45
52
|
}
|
|
46
53
|
}
|
|
47
54
|
```
|
|
48
55
|
|
|
49
|
-
|
|
56
|
+
**Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
|
|
50
57
|
|
|
51
58
|
```json
|
|
52
59
|
{
|
|
53
60
|
"mcpServers": {
|
|
54
61
|
"forgeos": {
|
|
55
62
|
"command": "npx",
|
|
56
|
-
"args": ["-y", "@synctek/forgeos
|
|
63
|
+
"args": ["-y", "@synctek/forgeos"],
|
|
57
64
|
"env": {
|
|
58
|
-
"
|
|
59
|
-
"
|
|
65
|
+
"FORGE_API_KEY": "your-api-key",
|
|
66
|
+
"FORGE_ENGINE_URL": "https://api.forgeos.synctek.io"
|
|
60
67
|
}
|
|
61
68
|
}
|
|
62
69
|
}
|
|
63
70
|
}
|
|
64
71
|
```
|
|
65
72
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
## HTTP/SSE Mode
|
|
73
|
+
Once configured, your AI can call `forge_init`, `forge_create_initiative`, `forge_propose_changeset`, and all other ForgeOS tools directly from within a session.
|
|
69
74
|
|
|
70
|
-
|
|
71
|
-
of stdio. Each request carries its own Bearer token — no shared state between
|
|
72
|
-
callers.
|
|
75
|
+
**HTTP/SSE mode** (for remote deployments or multi-tenant scenarios):
|
|
73
76
|
|
|
74
77
|
```bash
|
|
75
|
-
# Start the HTTP server (default port 8401)
|
|
76
|
-
npx -y @synctek/forgeos-mcp forgeos-mcp-http
|
|
77
|
-
|
|
78
|
-
# Or after installing globally:
|
|
79
|
-
npm install -g @synctek/forgeos-mcp
|
|
78
|
+
# Start the HTTP MCP server (default port 8401)
|
|
80
79
|
forgeos-mcp-http
|
|
81
80
|
```
|
|
82
81
|
|
|
83
|
-
### Endpoints
|
|
84
|
-
|
|
85
|
-
| Method | Path | Description |
|
|
86
|
-
|----------|-----------|------------------------------------------|
|
|
87
|
-
| `POST` | `/mcp` | StreamableHTTP main channel (JSON-RPC) |
|
|
88
|
-
| `GET` | `/mcp` | SSE fallback (server-to-client events) |
|
|
89
|
-
| `DELETE` | `/mcp` | Session cleanup |
|
|
90
|
-
| `GET` | `/health` | Liveness probe — no auth required |
|
|
91
|
-
|
|
92
|
-
### Calling the HTTP endpoint
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
# Health check
|
|
96
|
-
curl http://localhost:8401/health
|
|
97
|
-
|
|
98
|
-
# MCP request with Bearer token
|
|
99
|
-
curl -X POST http://localhost:8401/mcp \
|
|
100
|
-
-H "Authorization: Bearer your-api-key" \
|
|
101
|
-
-H "Content-Type: application/json" \
|
|
102
|
-
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### Connecting an MCP client to the HTTP endpoint
|
|
106
|
-
|
|
107
82
|
```json
|
|
108
83
|
{
|
|
109
84
|
"mcpServers": {
|
|
@@ -118,266 +93,200 @@ curl -X POST http://localhost:8401/mcp \
|
|
|
118
93
|
}
|
|
119
94
|
```
|
|
120
95
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
## Configuration
|
|
124
|
-
|
|
125
|
-
| Environment Variable | Default | Description |
|
|
126
|
-
|------------------------|--------------------------|-----------------------------------------------------|
|
|
127
|
-
| `FORGEOS_API_KEY` | _(empty)_ | API key sent as `X-ForgeOS-API-Key` header |
|
|
128
|
-
| `FORGEOS_ENGINE_URL` | `http://localhost:8400` | Base URL of the ForgeOS engine |
|
|
129
|
-
| `MCP_HTTP_PORT` | `8401` | Port for the HTTP/SSE server |
|
|
130
|
-
| `RATE_LIMIT_MAX` | `60` | Max requests per window (HTTP mode) |
|
|
131
|
-
| `RATE_LIMIT_WINDOW_MS` | `60000` | Rate limit window in milliseconds (HTTP mode) |
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## Tools Reference
|
|
136
|
-
|
|
137
|
-
All tools return JSON. Errors surface as `{ "ok": false, "error": "..." }`.
|
|
138
|
-
|
|
139
|
-
### `forge_init`
|
|
140
|
-
|
|
141
|
-
Initialize a ForgeOS governance session. Returns project state, active work,
|
|
142
|
-
governance rules, and workflow runbook. Call on every session start.
|
|
143
|
-
|
|
144
|
-
| Parameter | Type | Required | Description |
|
|
145
|
-
|----------------|----------|----------|----------------------------------|
|
|
146
|
-
| `project_id` | `string` | Yes | Project to initialize |
|
|
147
|
-
| `developer_id` | `string` | No | Developer identifier (default: `local`) |
|
|
148
|
-
|
|
149
|
-
---
|
|
150
|
-
|
|
151
|
-
### `forge_create_initiative`
|
|
152
|
-
|
|
153
|
-
Create a new initiative to track a piece of work. Returns the initiative with
|
|
154
|
-
a generated ID.
|
|
155
|
-
|
|
156
|
-
| Parameter | Type | Required | Description |
|
|
157
|
-
|---------------|----------|----------|-----------------------------------------|
|
|
158
|
-
| `project_id` | `string` | Yes | Project ID |
|
|
159
|
-
| `title` | `string` | Yes | Initiative title |
|
|
160
|
-
| `description` | `string` | Yes | What this initiative accomplishes |
|
|
161
|
-
| `priority` | `string` | No | `low` \| `medium` \| `high` \| `critical` (default: `medium`) |
|
|
162
|
-
|
|
163
|
-
---
|
|
164
|
-
|
|
165
|
-
### `forge_propose_changeset`
|
|
166
|
-
|
|
167
|
-
Propose a changeset for an initiative. The engine computes a risk score and
|
|
168
|
-
determines required gates, reviewer roles, and evidence. Returns the changeset
|
|
169
|
-
with a full gate pipeline.
|
|
170
|
-
|
|
171
|
-
| Parameter | Type | Required | Description |
|
|
172
|
-
|--------------------|------------|----------|------------------------------------|
|
|
173
|
-
| `project_id` | `string` | Yes | Project ID |
|
|
174
|
-
| `initiative_id` | `string` | Yes | Parent initiative |
|
|
175
|
-
| `description` | `string` | Yes | What changed and why |
|
|
176
|
-
| `files_changed` | `string[]` | Yes | File paths that changed |
|
|
177
|
-
| `modules_affected` | `string[]` | Yes | Module/area names affected |
|
|
178
|
-
| `branch` | `string` | No | Git branch name |
|
|
179
|
-
|
|
180
|
-
---
|
|
181
|
-
|
|
182
|
-
### `forge_get_profile`
|
|
183
|
-
|
|
184
|
-
Fetch a reviewer persona profile for subagent injection. When a `project_id`
|
|
185
|
-
is provided, the profile is enriched with Shared Mind patterns from prior
|
|
186
|
-
reviews. Use the returned `system_prompt` as the subagent's instructions.
|
|
187
|
-
|
|
188
|
-
| Parameter | Type | Required | Description |
|
|
189
|
-
|--------------------|------------|----------|---------------------------------------------------------|
|
|
190
|
-
| `role` | `string` | Yes | `architect` \| `qa_test` \| `security` \| `performance` \| `reliability` \| `accessibility` \| `docs_release` |
|
|
191
|
-
| `project_id` | `string` | No | Project for contextualization |
|
|
192
|
-
| `team_id` | `string` | No | Team ID for Shared Mind context (default: `default`) |
|
|
193
|
-
| `modules_affected` | `string[]` | No | Modules to focus on |
|
|
194
|
-
| `files_changed` | `string[]` | No | Files to focus on |
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
### `forge_submit_evidence`
|
|
96
|
+
### Path 2: CLI — for humans and CI
|
|
199
97
|
|
|
200
|
-
|
|
201
|
-
|
|
98
|
+
```bash
|
|
99
|
+
forge --help
|
|
100
|
+
```
|
|
202
101
|
|
|
203
|
-
|
|
204
|
-
|----------------|------------|----------|-----------------------------------------------------------------------------------------------|
|
|
205
|
-
| `project_id` | `string` | Yes | Project ID |
|
|
206
|
-
| `changeset_id` | `string` | Yes | Changeset ID |
|
|
207
|
-
| `type` | `string` | Yes | `unit_test` \| `coverage` \| `lint` \| `security_scan` \| `benchmark` \| `migration_plan` \| `ux_snapshot` \| `a11y_audit` \| `ai_review` |
|
|
208
|
-
| `summary` | `string` | Yes | Summary of the evidence |
|
|
209
|
-
| `file_refs` | `string[]` | No | File references |
|
|
102
|
+
Common workflows:
|
|
210
103
|
|
|
211
|
-
|
|
104
|
+
```bash
|
|
105
|
+
# Start a new governance session for a project
|
|
106
|
+
forge session start --project my-saas-app
|
|
212
107
|
|
|
213
|
-
|
|
108
|
+
# Create an initiative to track a piece of work
|
|
109
|
+
forge initiative create --project my-saas-app --title "Add payment retry logic"
|
|
214
110
|
|
|
215
|
-
|
|
216
|
-
|
|
111
|
+
# Propose a changeset; engine computes risk and required gates
|
|
112
|
+
forge changeset propose --project my-saas-app --initiative INIT-001 \
|
|
113
|
+
--files "src/payments/retry.ts,src/payments/webhook.ts"
|
|
217
114
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
| `project_id` | `string` | Yes | Project ID |
|
|
221
|
-
| `changeset_id` | `string` | Yes | Changeset ID |
|
|
222
|
-
| `role` | `string` | Yes | Reviewer role (e.g. `security`, `architect`) |
|
|
223
|
-
| `status` | `string` | Yes | `approved` \| `blocked` \| `pending` |
|
|
224
|
-
| `notes` | `string` | Yes | Review summary |
|
|
225
|
-
| `findings` | `object[]` | Yes | Structured findings (see below) |
|
|
115
|
+
# Check gate status
|
|
116
|
+
forge gate status --project my-saas-app --changeset CS-001
|
|
226
117
|
|
|
227
|
-
|
|
118
|
+
# Submit test evidence to satisfy a gate requirement
|
|
119
|
+
forge evidence submit --project my-saas-app --changeset CS-001 \
|
|
120
|
+
--type unit_test --summary "All 42 payment retry tests pass"
|
|
228
121
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
| `severity` | `string` | Yes | `pass` \| `warning` \| `concern` \| `fail` |
|
|
233
|
-
| `observation` | `string` | Yes | What was observed |
|
|
234
|
-
| `recommendation` | `string` | No | Suggested fix |
|
|
122
|
+
# Query Shared Mind for relevant patterns before reviewing
|
|
123
|
+
forge mind query --context "payment retry exponential backoff"
|
|
124
|
+
```
|
|
235
125
|
|
|
236
126
|
---
|
|
237
127
|
|
|
238
|
-
|
|
128
|
+
## What ForgeOS provides vs. what your AI provides
|
|
239
129
|
|
|
240
|
-
|
|
241
|
-
|
|
130
|
+
| Capability | ForgeOS | Your AI |
|
|
131
|
+
|---|---|---|
|
|
132
|
+
| Governance gate enforcement | Yes — hard blocks | — |
|
|
133
|
+
| Risk scoring for changesets | Yes — engine-computed | — |
|
|
134
|
+
| Institutional memory (cross-session) | Yes — Shared Mind | No — ephemeral per session |
|
|
135
|
+
| Ed25519 signed audit ledger | Yes | — |
|
|
136
|
+
| Federation across teams | Yes | — |
|
|
137
|
+
| Code judgment and analysis | — | Yes |
|
|
138
|
+
| Review recommendations | — | Yes |
|
|
139
|
+
| Test generation | — | Yes |
|
|
140
|
+
| Natural language reasoning | — | Yes |
|
|
242
141
|
|
|
243
|
-
|
|
244
|
-
|----------------|----------|----------|----------------|
|
|
245
|
-
| `project_id` | `string` | Yes | Project ID |
|
|
246
|
-
| `changeset_id` | `string` | Yes | Changeset ID |
|
|
142
|
+
Your AI reasons. ForgeOS remembers, enforces, and proves.
|
|
247
143
|
|
|
248
144
|
---
|
|
249
145
|
|
|
250
|
-
|
|
146
|
+
## How it works
|
|
251
147
|
|
|
252
|
-
|
|
253
|
-
|
|
148
|
+
```
|
|
149
|
+
Your codebase (local)
|
|
150
|
+
│
|
|
151
|
+
▼
|
|
152
|
+
Your AI agent ──(MCP tools)──► ForgeOS MCP server ──(REST)──► ForgeOS engine
|
|
153
|
+
(Claude, Codex, forgeos-mcp (stdio) (local or hosted)
|
|
154
|
+
Cursor, etc.) forgeos-mcp-http (SSE)
|
|
155
|
+
│
|
|
156
|
+
▼
|
|
157
|
+
Shared Mind ◄── Federation
|
|
158
|
+
Trust ledger
|
|
159
|
+
Gate pipeline
|
|
160
|
+
```
|
|
254
161
|
|
|
255
|
-
|
|
256
|
-
|----------------|----------|----------|-------------------------------------------------------------------------------------------------|
|
|
257
|
-
| `project_id` | `string` | Yes | Project ID |
|
|
258
|
-
| `changeset_id` | `string` | Yes | Changeset ID |
|
|
259
|
-
| `gate_id` | `string` | Yes | `intent` \| `design` \| `implementation` \| `verification` \| `hardening` \| `release` |
|
|
260
|
-
| `promoted_by` | `string` | No | Who is promoting (default: `local_agent`) |
|
|
162
|
+
The engine runs locally (self-hosted) or on Synctek-hosted infrastructure. Your source code never leaves your machine — the engine receives only metadata: file paths, module names, changeset descriptions, review verdicts. Federation uses a fail-closed privacy scrubber before any data propagates across team boundaries.
|
|
261
163
|
|
|
262
164
|
---
|
|
263
165
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
Check if a changeset is ready to release. Returns `can_release` status and any
|
|
267
|
-
remaining blockers.
|
|
268
|
-
|
|
269
|
-
| Parameter | Type | Required | Description |
|
|
270
|
-
|----------------|----------|----------|----------------|
|
|
271
|
-
| `project_id` | `string` | Yes | Project ID |
|
|
272
|
-
| `changeset_id` | `string` | Yes | Changeset ID |
|
|
273
|
-
|
|
274
|
-
---
|
|
166
|
+
## MCP Tools Reference
|
|
275
167
|
|
|
276
|
-
|
|
168
|
+
All tools return JSON. Errors surface as `{ "ok": false, "error": "..." }`.
|
|
277
169
|
|
|
278
|
-
|
|
279
|
-
|
|
170
|
+
| Tool | Description |
|
|
171
|
+
|---|---|
|
|
172
|
+
| `forge_init` | Initialize a governance session. Returns project state, active work, governance rules, workflow runbook, and setup scorecard. Call at session start. |
|
|
173
|
+
| `forge_create_project` | Create a new ForgeOS project — the top-level container for initiatives, changesets, and governance workflows. |
|
|
174
|
+
| `forge_quickstart` | Create a sandbox project and run a complete governance cycle in seconds. Ideal for first-time setup and verification. |
|
|
175
|
+
| `forge_discover` | Analyze your repo's tech stack and get a recommended governance configuration, preset, and CI hints. |
|
|
176
|
+
| `forge_get_presets` | List available governance presets: Startup, Enterprise, Regulated, Mobile Release QA. |
|
|
177
|
+
| `forge_configure_project_gates` | Apply a governance preset or custom gate template to a project. Sets which gates are required and what evidence satisfies each. |
|
|
178
|
+
| `forge_scorecard` | Check setup completeness. Shows which onboarding steps are done and what to do next. |
|
|
179
|
+
| `forge_create_initiative` | Create an initiative to track a piece of work. Returns the initiative with a generated ID. |
|
|
180
|
+
| `forge_get_workflow` | Get the current workflow state for an initiative — current step, what is needed next, overall progress. |
|
|
181
|
+
| `forge_workflow_template` | Get copy-paste workflow templates for common scenarios: bugfix, feature, hotfix, release candidate. |
|
|
182
|
+
| `forge_propose_changeset` | Propose a changeset. Engine computes a risk score and determines required gates, reviewer roles, and evidence requirements. |
|
|
183
|
+
| `forge_recommend_gates` | Get a gate recommendation for a changeset based on risk analysis — recommended gates, minimum gates, and rationale. |
|
|
184
|
+
| `forge_get_context` | Get comprehensive context for a changeset: SharedMind patterns, quality warnings, past regressions, and relevant lessons. Call before submitting evidence or reviews. |
|
|
185
|
+
| `forge_check_gates` | Get the gate pipeline status for a changeset — which gates are passed, pending, or failed, and what is needed to advance. |
|
|
186
|
+
| `forge_promote_gate` | Promote a gate to passed status. All evidence and reviewer requirements must be satisfied. Advances the pipeline. |
|
|
187
|
+
| `forge_release_check` | Check if a changeset is ready to release. Returns `can_release` status and any remaining blockers. |
|
|
188
|
+
| `forge_submit_evidence` | Submit evidence (test results, scan outputs, coverage reports, benchmarks) for a changeset. Auto-populates gate requirements. |
|
|
189
|
+
| `forge_submit_review` | Submit a complete review with structured findings and a verdict (`approved` / `blocked` / `pending`). |
|
|
190
|
+
| `forge_get_profile` | Fetch a reviewer persona (architect, security, qa_test, performance, reliability, accessibility, docs_release) enriched with Shared Mind patterns. Returns a `system_prompt` for subagent injection. |
|
|
191
|
+
| `forge_query_mind` | Search the Shared Mind for patterns, anti-patterns, and lessons relevant to a given context or domain. |
|
|
192
|
+
| `forge_observe` | Record a pattern, anti-pattern, fix recipe, architecture decision, or lesson to the Shared Mind. |
|
|
193
|
+
|
|
194
|
+
### Typical AI agent workflow
|
|
280
195
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
196
|
+
```
|
|
197
|
+
forge_init → bootstrap session, receive runbook and state
|
|
198
|
+
forge_create_initiative → create initiative, get initiative_id
|
|
199
|
+
forge_propose_changeset → propose work, receive risk score + gate pipeline
|
|
200
|
+
forge_get_context → pull SharedMind context before reviewing
|
|
201
|
+
forge_get_profile → fetch reviewer persona enriched with past patterns
|
|
202
|
+
(run subagent review using the returned system_prompt)
|
|
203
|
+
forge_submit_evidence → submit test results, scan output, coverage
|
|
204
|
+
forge_submit_review → record reviewer verdict and findings
|
|
205
|
+
forge_check_gates → inspect gate pipeline status
|
|
206
|
+
forge_promote_gate → advance gates as evidence accumulates
|
|
207
|
+
forge_release_check → confirm all gates cleared before shipping
|
|
208
|
+
forge_observe → record lessons back to Shared Mind
|
|
209
|
+
```
|
|
286
210
|
|
|
287
211
|
---
|
|
288
212
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
| `
|
|
297
|
-
| `
|
|
298
|
-
| `
|
|
299
|
-
| `
|
|
300
|
-
| `
|
|
301
|
-
| `
|
|
213
|
+
## CLI Commands Reference
|
|
214
|
+
|
|
215
|
+
The `forge` binary exposes 14 command groups:
|
|
216
|
+
|
|
217
|
+
| Group | Description |
|
|
218
|
+
|---|---|
|
|
219
|
+
| `forge project` | Create, list, and configure projects |
|
|
220
|
+
| `forge initiative` | Create and manage initiatives |
|
|
221
|
+
| `forge changeset` | Propose changesets, view risk analysis |
|
|
222
|
+
| `forge gate` | Check status, promote gates, view pipeline |
|
|
223
|
+
| `forge evidence` | Submit and list evidence for changesets |
|
|
224
|
+
| `forge review` | Submit reviews, list reviewer verdicts |
|
|
225
|
+
| `forge session` | Start and manage governance sessions |
|
|
226
|
+
| `forge mind` | Query and write to the Shared Mind |
|
|
227
|
+
| `forge trust` | Inspect trust scores, verify ledger signatures |
|
|
228
|
+
| `forge federation` | Manage cross-team knowledge federation |
|
|
229
|
+
| `forge analyze` | Analyze changesets, modules, and risk |
|
|
230
|
+
| `forge score` | View quality scores and trust metrics |
|
|
231
|
+
| `forge build` | Build and deployment governance workflows |
|
|
232
|
+
| `forge outcome` | Track and report on initiative outcomes |
|
|
233
|
+
|
|
234
|
+
Run `forge <group> --help` for subcommands.
|
|
302
235
|
|
|
303
236
|
---
|
|
304
237
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
Get the current workflow state for an initiative. Shows which step the
|
|
308
|
-
developer is on, what is needed next, and overall progress.
|
|
309
|
-
|
|
310
|
-
| Parameter | Type | Required | Description |
|
|
311
|
-
|-----------------|----------|----------|----------------|
|
|
312
|
-
| `initiative_id` | `string` | Yes | Initiative ID |
|
|
238
|
+
## Configuration
|
|
313
239
|
|
|
314
|
-
|
|
240
|
+
| Variable | Default | Description |
|
|
241
|
+
|---|---|---|
|
|
242
|
+
| `FORGE_API_KEY` | _(empty)_ | API key for the ForgeOS engine |
|
|
243
|
+
| `FORGE_ENGINE_URL` | `http://localhost:8000` | Engine base URL |
|
|
244
|
+
| `MCP_HTTP_PORT` | `8401` | Port for the HTTP/SSE MCP server |
|
|
245
|
+
| `RATE_LIMIT_MAX` | `60` | Max requests per window (HTTP mode) |
|
|
246
|
+
| `RATE_LIMIT_WINDOW_MS` | `60000` | Rate limit window in ms (HTTP mode) |
|
|
315
247
|
|
|
316
|
-
|
|
248
|
+
Config file alternative (`~/.forgeos/config.json`):
|
|
317
249
|
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
(run subagent review using returned system_prompt)
|
|
324
|
-
forge_submit_evidence → upload test results, scan output, etc.
|
|
325
|
-
forge_submit_review → record reviewer verdict + findings
|
|
326
|
-
forge_check_gates → inspect gate pipeline status
|
|
327
|
-
forge_promote_gate → advance gates as evidence accumulates
|
|
328
|
-
forge_release_check → confirm all gates cleared before shipping
|
|
329
|
-
forge_observe → record lessons learned back to Shared Mind
|
|
250
|
+
```json
|
|
251
|
+
{
|
|
252
|
+
"engine_url": "https://api.forgeos.synctek.io",
|
|
253
|
+
"api_key": "your-api-key"
|
|
254
|
+
}
|
|
330
255
|
```
|
|
331
256
|
|
|
332
257
|
---
|
|
333
258
|
|
|
334
|
-
## Security
|
|
259
|
+
## Trust and Security
|
|
335
260
|
|
|
336
|
-
- **
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
- **
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
- **No credential leakage** — stdio mode reads `FORGEOS_API_KEY` from env once
|
|
343
|
-
at startup (single-tenant). HTTP mode never touches env for key resolution.
|
|
344
|
-
- **CORS** — all origins allowed by default (clients are local AI agents).
|
|
345
|
-
Restrict in production by configuring a reverse proxy.
|
|
261
|
+
- **Ed25519 signed ledger** — Every gate promotion, evidence submission, and review is signed with Ed25519 and hash-chained. The audit trail is tamper-evident and independently verifiable.
|
|
262
|
+
- **Source code never transmitted** — The engine receives metadata only: file paths, module names, changeset descriptions, verdicts. Your source code stays on your machine.
|
|
263
|
+
- **Fail-closed privacy scrubber** — Federation runs all observations through a privacy scrubber before propagating cross-team. If the scrubber cannot confirm safety, the observation is blocked, not passed.
|
|
264
|
+
- **Per-request auth isolation (HTTP mode)** — A new client instance is created per request from the `Authorization: Bearer` header. `process.env` is never mutated; no shared singleton across requests.
|
|
265
|
+
- **Rate limiting** — Token-bucket per API key (or IP fallback). Default: 60 requests per 60-second window, configurable.
|
|
266
|
+
- **Local-first** — The engine can run entirely on your own infrastructure. No data leaves your environment unless you opt into hosted infrastructure.
|
|
346
267
|
|
|
347
268
|
---
|
|
348
269
|
|
|
349
|
-
##
|
|
270
|
+
## Pricing
|
|
350
271
|
|
|
351
|
-
|
|
352
|
-
# Clone and install
|
|
353
|
-
git clone https://github.com/synctek/forgeos-mcp
|
|
354
|
-
cd forgeos-mcp
|
|
355
|
-
npm install
|
|
356
|
-
|
|
357
|
-
# Run stdio server in dev mode (tsx, no build required)
|
|
358
|
-
npm run dev
|
|
359
|
-
|
|
360
|
-
# Run HTTP server in dev mode
|
|
361
|
-
npm run dev:http
|
|
272
|
+
[https://forgeos.synctek.io/pricing](https://forgeos.synctek.io/pricing)
|
|
362
273
|
|
|
363
|
-
|
|
364
|
-
|
|
274
|
+
| Plan | Price | Best for |
|
|
275
|
+
|---|---|---|
|
|
276
|
+
| Pro | $49/mo | Individual developers and small teams |
|
|
277
|
+
| Team | $149/mo | Engineering teams with federation needs |
|
|
278
|
+
| Enterprise | Custom | Regulated industries, on-prem deployments |
|
|
365
279
|
|
|
366
|
-
|
|
367
|
-
npm start
|
|
368
|
-
|
|
369
|
-
# Run built HTTP server
|
|
370
|
-
npm run start:http
|
|
371
|
-
```
|
|
280
|
+
14-day free trial. No credit card required to start.
|
|
372
281
|
|
|
373
282
|
---
|
|
374
283
|
|
|
375
284
|
## Links
|
|
376
285
|
|
|
377
|
-
-
|
|
286
|
+
- Website: [forgeos.synctek.io](https://forgeos.synctek.io)
|
|
378
287
|
- Docs: [docs.synctek.io/forgeos](https://docs.synctek.io/forgeos)
|
|
379
288
|
- Issues: [github.com/synctek/forgeos-mcp/issues](https://github.com/synctek/forgeos-mcp/issues)
|
|
380
|
-
- npm: [@synctek/forgeos
|
|
289
|
+
- npm: [@synctek/forgeos](https://www.npmjs.com/package/@synctek/forgeos)
|
|
381
290
|
|
|
382
291
|
---
|
|
383
292
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/evidence.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/evidence.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAiCvD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,aAAa,GACpB,IAAI,CA6GN"}
|
|
@@ -7,6 +7,22 @@
|
|
|
7
7
|
* forge evidence list --project <pid> --changeset <cid> --gate <gid>
|
|
8
8
|
*/
|
|
9
9
|
import { formatTable, formatJSON, formatSuccess, formatError, } from "../output.js";
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// SharedMind auto-observation helper (fire-and-forget)
|
|
12
|
+
// Records what evidence types teams produce so SharedMind accumulates
|
|
13
|
+
// knowledge about team quality patterns and evidence coverage gaps.
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
function observeEvidenceSubmit(client, changesetId, gateId, evidenceType, summary) {
|
|
16
|
+
client
|
|
17
|
+
.post(`/api/shared-mind/default/observe`, {
|
|
18
|
+
domain: evidenceType || "evidence",
|
|
19
|
+
content: `Evidence (${evidenceType}) submitted for gate ${gateId} on changeset ${changesetId}: ${summary}`,
|
|
20
|
+
type: "pattern",
|
|
21
|
+
confidence: 0.5,
|
|
22
|
+
source_agent: "cli_forge",
|
|
23
|
+
})
|
|
24
|
+
.catch(() => { }); // fire-and-forget — never surface errors to user
|
|
25
|
+
}
|
|
10
26
|
export function registerEvidenceCommands(parent, client) {
|
|
11
27
|
const evidence = parent
|
|
12
28
|
.command("evidence")
|
|
@@ -36,6 +52,7 @@ export function registerEvidenceCommands(parent, client) {
|
|
|
36
52
|
const data = (await client.post(`/api/projects/${opts.project}/changesets/${opts.changeset}/gates/${opts.gate}/evidence`, body));
|
|
37
53
|
if (opts.json) {
|
|
38
54
|
console.log(formatJSON(data));
|
|
55
|
+
observeEvidenceSubmit(client, opts.changeset, opts.gate, opts.type, opts.content);
|
|
39
56
|
return;
|
|
40
57
|
}
|
|
41
58
|
const evidenceId = data.id ?? "—";
|
|
@@ -46,6 +63,7 @@ export function registerEvidenceCommands(parent, client) {
|
|
|
46
63
|
["Summary", data.summary ?? opts.content],
|
|
47
64
|
["Submitted By", data.submitted_by ?? "—"],
|
|
48
65
|
]));
|
|
66
|
+
observeEvidenceSubmit(client, opts.changeset, opts.gate, opts.type, opts.content);
|
|
49
67
|
}
|
|
50
68
|
catch (err) {
|
|
51
69
|
console.error(formatError(err));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../../src/cli/commands/evidence.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EACL,WAAW,EACX,UAAU,EACV,aAAa,EACb,WAAW,GACZ,MAAM,cAAc,CAAC;AAEtB,MAAM,UAAU,wBAAwB,CACtC,MAAe,EACf,MAAqB;IAErB,MAAM,QAAQ,GAAG,MAAM;SACpB,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAEvC,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAE5E,QAAQ;SACL,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,4BAA4B,CAAC;SACzC,cAAc,CAAC,qBAAqB,EAAE,YAAY,CAAC;SACnD,cAAc,CAAC,mBAAmB,EAAE,cAAc,CAAC;SACnD,cAAc,CAAC,cAAc,EAAE,SAAS,CAAC;SACzC,cAAc,CAAC,eAAe,EAAE,qDAAqD,CAAC;SACtF,cAAc,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;SACnE,MAAM,CAAC,oBAAoB,EAAE,iCAAiC,EAAE,EAAE,CAAC;SACnE,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,IAAI,GAA4B;gBACpC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,SAAS,EAAE,IAAI,CAAC,QAAQ;oBACtB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;oBACvE,CAAC,CAAC,EAAE;aACP,CAAC;YAEF,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAC7B,iBAAiB,IAAI,CAAC,OAAO,eAAe,IAAI,CAAC,SAAS,UAAU,IAAI,CAAC,IAAI,WAAW,EACxF,IAAI,CACL,CAAa,CAAC;YAEf,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9B,OAAO;YACT,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CACT,WAAW,CACT,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB;gBACE,CAAC,IAAI,EAAE,UAAU,CAAC;gBAClB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;gBAChC,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;gBACzC,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC;aAC3C,CACF,CACF,CAAC;
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../../src/cli/commands/evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,15 @@
|
|
|
2
2
|
* `forge federation` — Federation operations.
|
|
3
3
|
*
|
|
4
4
|
* Subcommands:
|
|
5
|
-
* forge federation status
|
|
6
|
-
*
|
|
7
|
-
* forge federation
|
|
8
|
-
*
|
|
5
|
+
* forge federation status — GET /v1/federation/status → show enabled/disabled,
|
|
6
|
+
* consent flags, last push/pull timestamps
|
|
7
|
+
* forge federation enable — POST /v1/federation/enable with per-flag consent
|
|
8
|
+
* (share_governance_patterns, share_usage_metrics,
|
|
9
|
+
* receive_ecosystem_insights)
|
|
10
|
+
* forge federation disable — POST /v1/federation/disable → opt out
|
|
11
|
+
* forge federation push — POST /v1/federation/push → manual push to hub
|
|
12
|
+
* forge federation ingest — POST /v1/federation/ingest → pull insights from hub
|
|
13
|
+
* and write to local SharedMind
|
|
9
14
|
*/
|
|
10
15
|
import { Command } from "commander";
|
|
11
16
|
import { ForgeOSClient } from "../../shared/client.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/federation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/federation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAcvD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,aAAa,GACpB,IAAI,CAqMN"}
|