@synapsor/runner 0.1.0-alpha.5 → 0.1.0-alpha.6
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 +34 -34
- package/dist/runner.mjs +15 -16
- package/docs/getting-started-own-database.md +30 -30
- package/docs/http-mcp.md +3 -3
- package/docs/local-mode.md +36 -36
- package/docs/mcp-audit.md +11 -11
- package/docs/mcp-client-setup.md +12 -12
- package/docs/recipes.md +6 -6
- package/docs/security-boundary.md +1 -1
- package/docs/troubleshooting-first-run.md +6 -6
- package/docs/writeback-executors.md +1 -1
- package/examples/openai-agents-http/README.md +1 -1
- package/examples/openai-agents-stdio/README.md +2 -2
- package/examples/reference-support-billing-app/README.md +17 -17
- package/package.json +1 -2
package/README.md
CHANGED
|
@@ -51,7 +51,7 @@ Run the guided quick demo first. It does not require Docker, a database, a
|
|
|
51
51
|
config file, an MCP client, or a Synapsor Cloud account.
|
|
52
52
|
|
|
53
53
|
```bash
|
|
54
|
-
npx -y -p @synapsor/runner@alpha synapsor demo --quick
|
|
54
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner demo --quick
|
|
55
55
|
```
|
|
56
56
|
|
|
57
57
|
In a terminal, it walks through the safety model step by step. In CI, piped
|
|
@@ -63,7 +63,7 @@ It does not prove database connectivity. It shows the proposal, evidence, and
|
|
|
63
63
|
replay flow without giving the runner a database URL.
|
|
64
64
|
|
|
65
65
|
```bash
|
|
66
|
-
npx -y -p @synapsor/runner@alpha synapsor demo inspect
|
|
66
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner demo inspect
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
Human output is concise by default. Use `--details` for reviewer metadata or
|
|
@@ -72,22 +72,22 @@ Human output is concise by default. Use `--details` for reviewer metadata or
|
|
|
72
72
|
Useful quick-demo modes:
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
|
-
synapsor demo --quick --guided
|
|
76
|
-
synapsor demo --quick --no-interactive
|
|
77
|
-
synapsor demo --quick --details
|
|
78
|
-
synapsor demo inspect --npx
|
|
75
|
+
synapsor-runner demo --quick --guided
|
|
76
|
+
synapsor-runner demo --quick --no-interactive
|
|
77
|
+
synapsor-runner demo --quick --details
|
|
78
|
+
synapsor-runner demo inspect --npx
|
|
79
79
|
```
|
|
80
80
|
|
|
81
81
|
Then choose one path:
|
|
82
82
|
|
|
83
83
|
```text
|
|
84
|
-
Full disposable proof -> npx -y -p @synapsor/runner@alpha synapsor demo
|
|
84
|
+
Full disposable proof -> npx -y -p @synapsor/runner@alpha synapsor-runner demo
|
|
85
85
|
Your own staging DB -> export DATABASE_URL=... then run the inspect command below
|
|
86
|
-
MCP risk review -> npx -y -p @synapsor/runner@alpha synapsor audit --example dangerous-db-mcp
|
|
86
|
+
MCP risk review -> npx -y -p @synapsor/runner@alpha synapsor-runner audit --example dangerous-db-mcp
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
-
`synapsor` is the public command. `synapsor
|
|
90
|
-
|
|
89
|
+
`synapsor-runner` is the public command for this OSS runner. `synapsor` is
|
|
90
|
+
reserved for the Synapsor Cloud CLI.
|
|
91
91
|
|
|
92
92
|
## Connect Your Own Staging Database
|
|
93
93
|
|
|
@@ -104,7 +104,7 @@ staging or production-like databases, keep certificate verification enabled.
|
|
|
104
104
|
Inspect metadata:
|
|
105
105
|
|
|
106
106
|
```bash
|
|
107
|
-
npx -y -p @synapsor/runner@alpha synapsor inspect \
|
|
107
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner inspect \
|
|
108
108
|
--engine auto \
|
|
109
109
|
--from-env DATABASE_URL \
|
|
110
110
|
--schema public
|
|
@@ -122,7 +122,7 @@ backend session env vars are trusted, which fields are visible, and what
|
|
|
122
122
|
semantic capability name to expose.
|
|
123
123
|
|
|
124
124
|
```bash
|
|
125
|
-
npx -y -p @synapsor/runner@alpha synapsor init \
|
|
125
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner init \
|
|
126
126
|
--wizard \
|
|
127
127
|
--engine auto \
|
|
128
128
|
--from-env DATABASE_URL \
|
|
@@ -133,11 +133,11 @@ npx -y -p @synapsor/runner@alpha synapsor init \
|
|
|
133
133
|
Preview and serve the semantic tools:
|
|
134
134
|
|
|
135
135
|
```bash
|
|
136
|
-
npx -y -p @synapsor/runner@alpha synapsor tools preview \
|
|
136
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner tools preview \
|
|
137
137
|
--config ./synapsor.runner.json \
|
|
138
138
|
--store ./.synapsor/local.db
|
|
139
139
|
|
|
140
|
-
npx -y -p @synapsor/runner@alpha synapsor mcp serve \
|
|
140
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner mcp serve \
|
|
141
141
|
--config ./synapsor.runner.json \
|
|
142
142
|
--store ./.synapsor/local.db
|
|
143
143
|
```
|
|
@@ -151,7 +151,7 @@ long-running Runner process.
|
|
|
151
151
|
Local MCP clients:
|
|
152
152
|
|
|
153
153
|
```bash
|
|
154
|
-
synapsor mcp serve \
|
|
154
|
+
synapsor-runner mcp serve \
|
|
155
155
|
--config ./synapsor.runner.json \
|
|
156
156
|
--store ./.synapsor/local.db
|
|
157
157
|
```
|
|
@@ -161,7 +161,7 @@ App/server deployments:
|
|
|
161
161
|
```bash
|
|
162
162
|
export SYNAPSOR_RUNNER_HTTP_TOKEN="dev-local-token"
|
|
163
163
|
|
|
164
|
-
synapsor mcp serve-http \
|
|
164
|
+
synapsor-runner mcp serve-http \
|
|
165
165
|
--config ./synapsor.runner.json \
|
|
166
166
|
--store ./.synapsor/local.db \
|
|
167
167
|
--auth-token-env SYNAPSOR_RUNNER_HTTP_TOKEN
|
|
@@ -246,7 +246,7 @@ proposal-first writes.
|
|
|
246
246
|
Run the included MCP efficiency fixture:
|
|
247
247
|
|
|
248
248
|
```bash
|
|
249
|
-
synapsor benchmark mcp-efficiency
|
|
249
|
+
synapsor-runner benchmark mcp-efficiency
|
|
250
250
|
```
|
|
251
251
|
|
|
252
252
|
Current fixture result for the late-fee-waiver workflow:
|
|
@@ -279,14 +279,14 @@ The runner stores a local SQLite evidence/replay ledger. Search it without
|
|
|
279
279
|
relying on `latest`:
|
|
280
280
|
|
|
281
281
|
```bash
|
|
282
|
-
synapsor activity search --tenant acme --object invoice:INV-3001
|
|
283
|
-
synapsor proposals list --tenant acme --object invoice:INV-3001 --status approved
|
|
284
|
-
synapsor evidence show ev_...
|
|
285
|
-
synapsor query-audit list --evidence ev_...
|
|
286
|
-
synapsor receipts list --proposal wrp_...
|
|
287
|
-
synapsor receipts show <receipt_id>
|
|
288
|
-
synapsor replay show --proposal wrp_...
|
|
289
|
-
synapsor replay show --replay replay_wrp_...
|
|
282
|
+
synapsor-runner activity search --tenant acme --object invoice:INV-3001
|
|
283
|
+
synapsor-runner proposals list --tenant acme --object invoice:INV-3001 --status approved
|
|
284
|
+
synapsor-runner evidence show ev_...
|
|
285
|
+
synapsor-runner query-audit list --evidence ev_...
|
|
286
|
+
synapsor-runner receipts list --proposal wrp_...
|
|
287
|
+
synapsor-runner receipts show <receipt_id>
|
|
288
|
+
synapsor-runner replay show --proposal wrp_...
|
|
289
|
+
synapsor-runner replay show --replay replay_wrp_...
|
|
290
290
|
```
|
|
291
291
|
|
|
292
292
|
Default inspection output is meant for first-run clarity. Add `--details` for
|
|
@@ -296,23 +296,23 @@ fingerprints, event timestamps, and receipt internals.
|
|
|
296
296
|
Export captured evidence or proposal replay:
|
|
297
297
|
|
|
298
298
|
```bash
|
|
299
|
-
synapsor evidence export ev_... --format markdown --output evidence.md
|
|
300
|
-
synapsor replay export --proposal wrp_... --format json --output replay.json
|
|
301
|
-
synapsor replay export --proposal wrp_... --format markdown --output replay.md
|
|
299
|
+
synapsor-runner evidence export ev_... --format markdown --output evidence.md
|
|
300
|
+
synapsor-runner replay export --proposal wrp_... --format json --output replay.json
|
|
301
|
+
synapsor-runner replay export --proposal wrp_... --format markdown --output replay.md
|
|
302
302
|
```
|
|
303
303
|
|
|
304
304
|
Create a redacted local diagnostic report:
|
|
305
305
|
|
|
306
306
|
```bash
|
|
307
|
-
synapsor doctor --config synapsor.runner.json --report --redact --output synapsor-doctor.md
|
|
307
|
+
synapsor-runner doctor --config synapsor.runner.json --report --redact --output synapsor-doctor.md
|
|
308
308
|
```
|
|
309
309
|
|
|
310
310
|
Inspect or compact the local ledger:
|
|
311
311
|
|
|
312
312
|
```bash
|
|
313
|
-
synapsor store stats --store ./.synapsor/local.db
|
|
314
|
-
synapsor store vacuum --store ./.synapsor/local.db
|
|
315
|
-
synapsor store prune --store ./.synapsor/local.db --older-than 30d --dry-run
|
|
313
|
+
synapsor-runner store stats --store ./.synapsor/local.db
|
|
314
|
+
synapsor-runner store vacuum --store ./.synapsor/local.db
|
|
315
|
+
synapsor-runner store prune --store ./.synapsor/local.db --older-than 30d --dry-run
|
|
316
316
|
```
|
|
317
317
|
|
|
318
318
|
This is local indexed search for local/dev/staging usage. It is not external
|
|
@@ -328,8 +328,8 @@ MCP, and the handler returns an applied/conflict/failed receipt for replay.
|
|
|
328
328
|
|
|
329
329
|
## Command Name
|
|
330
330
|
|
|
331
|
-
This package installs `synapsor` as the
|
|
332
|
-
|
|
331
|
+
This package installs `synapsor-runner` as the OSS runner binary. The `synapsor`
|
|
332
|
+
command is reserved for the Synapsor Cloud CLI.
|
|
333
333
|
|
|
334
334
|
## Scope
|
|
335
335
|
|
package/dist/runner.mjs
CHANGED
|
@@ -2685,7 +2685,7 @@ function createMcpRuntime(config, options = {}) {
|
|
|
2685
2685
|
}
|
|
2686
2686
|
function createSynapsorMcpServer(runtime) {
|
|
2687
2687
|
const server = new McpServer(
|
|
2688
|
-
{ name: "synapsor-runner", version: "0.1.0-alpha.
|
|
2688
|
+
{ name: "synapsor-runner", version: "0.1.0-alpha.6" },
|
|
2689
2689
|
{ capabilities: { tools: {}, resources: {} } }
|
|
2690
2690
|
);
|
|
2691
2691
|
if (runtime.config.mode === "cloud") {
|
|
@@ -5096,7 +5096,7 @@ import path2 from "node:path";
|
|
|
5096
5096
|
async function startLocalUiServer(options = {}) {
|
|
5097
5097
|
const host = options.host ?? "127.0.0.1";
|
|
5098
5098
|
if (!isLocalHost(host) && options.allowRemoteBind !== true) {
|
|
5099
|
-
throw new Error("synapsor ui binds to localhost by default. Use --allow-remote-bind only for an intentional trusted local-network demo.");
|
|
5099
|
+
throw new Error("synapsor-runner ui binds to localhost by default. Use --allow-remote-bind only for an intentional trusted local-network demo.");
|
|
5100
5100
|
}
|
|
5101
5101
|
const configPath = path2.resolve(options.configPath ?? "synapsor.runner.json");
|
|
5102
5102
|
const storePath = path2.resolve(options.storePath ?? "./.synapsor/local.db");
|
|
@@ -5678,7 +5678,7 @@ function shellQuote(value) {
|
|
|
5678
5678
|
return /^[A-Za-z0-9_./:@=-]+$/.test(text) ? text : "'" + text.replace(/'/g, "'\\\\''") + "'";
|
|
5679
5679
|
}
|
|
5680
5680
|
function trustedApplyCommand(proposalId) {
|
|
5681
|
-
return "synapsor apply " + shellQuote(proposalId) + " --config " + shellQuote(configPath) + " --store " + shellQuote(storePath);
|
|
5681
|
+
return "synapsor-runner apply " + shellQuote(proposalId) + " --config " + shellQuote(configPath) + " --store " + shellQuote(storePath);
|
|
5682
5682
|
}
|
|
5683
5683
|
async function loadSummary() {
|
|
5684
5684
|
const payload = await api("/api/summary");
|
|
@@ -5710,7 +5710,7 @@ async function loadProposals() {
|
|
|
5710
5710
|
const payload = await api("/api/proposals");
|
|
5711
5711
|
const root = byId("proposals"); root.replaceChildren(text("h2", "Proposals"));
|
|
5712
5712
|
if (payload.proposals.length === 0) {
|
|
5713
|
-
root.append(text("p", "No proposals in the local store yet. Run synapsor mcp serve and have an agent propose a change."));
|
|
5713
|
+
root.append(text("p", "No proposals in the local store yet. Run synapsor-runner mcp serve and have an agent propose a change."));
|
|
5714
5714
|
state.firstId = null;
|
|
5715
5715
|
return;
|
|
5716
5716
|
}
|
|
@@ -6059,10 +6059,10 @@ async function main(argv) {
|
|
|
6059
6059
|
return 0;
|
|
6060
6060
|
}
|
|
6061
6061
|
if (!isKnownTopLevelCommand(command)) {
|
|
6062
|
-
process2.stderr.write(`Unknown command:
|
|
6062
|
+
process2.stderr.write(`Unknown command: ${cliCommandName()} ${command}
|
|
6063
6063
|
|
|
6064
6064
|
Try:
|
|
6065
|
-
|
|
6065
|
+
${cliCommandName()} --help
|
|
6066
6066
|
`);
|
|
6067
6067
|
return 2;
|
|
6068
6068
|
}
|
|
@@ -6100,10 +6100,10 @@ synapsor --help
|
|
|
6100
6100
|
if (command === "store") return storeCommand(rest);
|
|
6101
6101
|
if (command === "shadow") return shadow(rest);
|
|
6102
6102
|
if (command === "ui") return ui(rest);
|
|
6103
|
-
process2.stderr.write(`Unknown command:
|
|
6103
|
+
process2.stderr.write(`Unknown command: ${cliCommandName()} ${command}
|
|
6104
6104
|
|
|
6105
6105
|
Try:
|
|
6106
|
-
|
|
6106
|
+
${cliCommandName()} --help
|
|
6107
6107
|
`);
|
|
6108
6108
|
return 2;
|
|
6109
6109
|
}
|
|
@@ -7977,7 +7977,7 @@ async function cloudConnect(args) {
|
|
|
7977
7977
|
return 1;
|
|
7978
7978
|
}
|
|
7979
7979
|
const runnerId = String(parsed.cloud.runner_id || process2.env.SYNAPSOR_RUNNER_ID || "synapsor_runner_local").trim();
|
|
7980
|
-
const runnerVersion = String(parsed.cloud.runner_version || process2.env.npm_package_version || "0.1.0-alpha.
|
|
7980
|
+
const runnerVersion = String(parsed.cloud.runner_version || process2.env.npm_package_version || "0.1.0-alpha.6").trim();
|
|
7981
7981
|
const engines = normalizeEngines(parsed.cloud.engines);
|
|
7982
7982
|
const capabilities = normalizeCapabilities(parsed.cloud.capabilities);
|
|
7983
7983
|
const client = new ControlPlaneClient({
|
|
@@ -8164,7 +8164,7 @@ function formatQuickDemoDetails(seeded) {
|
|
|
8164
8164
|
quickDemoStorePath,
|
|
8165
8165
|
"",
|
|
8166
8166
|
"If you ran this through one-off npx and did not install the package, prefix",
|
|
8167
|
-
"follow-up commands with: npx -y -p @synapsor/runner@alpha synapsor",
|
|
8167
|
+
"follow-up commands with: npx -y -p @synapsor/runner@alpha synapsor-runner",
|
|
8168
8168
|
"",
|
|
8169
8169
|
"Raw MCP shape:",
|
|
8170
8170
|
"execute_sql(sql: string)",
|
|
@@ -8290,12 +8290,12 @@ function quickDemoGuidedScreens(seeded) {
|
|
|
8290
8290
|
body: [
|
|
8291
8291
|
"Run this next:",
|
|
8292
8292
|
"",
|
|
8293
|
-
"npx -y -p @synapsor/runner@alpha synapsor demo inspect",
|
|
8293
|
+
"npx -y -p @synapsor/runner@alpha synapsor-runner demo inspect",
|
|
8294
8294
|
"",
|
|
8295
8295
|
"demo inspect shows the proposal, evidence, activity search, and replay commands.",
|
|
8296
8296
|
"",
|
|
8297
8297
|
"If installed globally, use:",
|
|
8298
|
-
"synapsor demo inspect"
|
|
8298
|
+
"synapsor-runner demo inspect"
|
|
8299
8299
|
]
|
|
8300
8300
|
},
|
|
8301
8301
|
{
|
|
@@ -8342,7 +8342,7 @@ async function waitForEnter(message, options) {
|
|
|
8342
8342
|
}
|
|
8343
8343
|
}
|
|
8344
8344
|
function quickDemoInspectCommands(useNpx) {
|
|
8345
|
-
const cmd = useNpx ? "npx -y -p @synapsor/runner@alpha synapsor" : cliCommandName();
|
|
8345
|
+
const cmd = useNpx ? "npx -y -p @synapsor/runner@alpha synapsor-runner" : cliCommandName();
|
|
8346
8346
|
return [
|
|
8347
8347
|
{
|
|
8348
8348
|
label: "Proposal summary",
|
|
@@ -11435,7 +11435,7 @@ function starterCloudConfig() {
|
|
|
11435
11435
|
base_url_env: "SYNAPSOR_CLOUD_BASE_URL",
|
|
11436
11436
|
runner_token_env: "SYNAPSOR_RUNNER_TOKEN",
|
|
11437
11437
|
runner_id: "synapsor_runner_local",
|
|
11438
|
-
runner_version: "0.1.0-alpha.
|
|
11438
|
+
runner_version: "0.1.0-alpha.6",
|
|
11439
11439
|
project_id: "token_scope",
|
|
11440
11440
|
adapter_id: "mcp.your_adapter",
|
|
11441
11441
|
source_id: "src_replace_me",
|
|
@@ -11491,8 +11491,7 @@ function isKnownTopLevelCommand(command) {
|
|
|
11491
11491
|
}
|
|
11492
11492
|
function cliCommandName() {
|
|
11493
11493
|
if (process2.env.SYNAPSOR_RUNNER_COMMAND_NAME) return process2.env.SYNAPSOR_RUNNER_COMMAND_NAME;
|
|
11494
|
-
|
|
11495
|
-
return invoked === "synapsor-runner" ? "synapsor-runner" : "synapsor";
|
|
11494
|
+
return "synapsor-runner";
|
|
11496
11495
|
}
|
|
11497
11496
|
function usage(args = []) {
|
|
11498
11497
|
const [command, subcommand] = args;
|
|
@@ -7,7 +7,7 @@ Do not start with your most sensitive production database. The current alpha
|
|
|
7
7
|
runner is a local commit-safety runtime for reviewed single-row business
|
|
8
8
|
actions, not a production certification.
|
|
9
9
|
|
|
10
|
-
If you only ran `synapsor demo --quick`, you have tested the fixture-only
|
|
10
|
+
If you only ran `synapsor-runner demo --quick`, you have tested the fixture-only
|
|
11
11
|
teaching path and local ledger commands. This page is the real own-database
|
|
12
12
|
path: it inspects your Postgres/MySQL metadata and generates reviewed semantic
|
|
13
13
|
tools from your selections.
|
|
@@ -38,7 +38,7 @@ It does not print your database URL, put the URL in MCP client config, expose
|
|
|
38
38
|
credentials.
|
|
39
39
|
|
|
40
40
|
The rest of this page shows the same flow step by step using the public
|
|
41
|
-
`synapsor ...` CLI. From a source checkout, use `./bin/synapsor ...` if the
|
|
41
|
+
`synapsor-runner ...` CLI. From a source checkout, use `./bin/synapsor-runner ...` if the
|
|
42
42
|
global binary is not linked yet.
|
|
43
43
|
|
|
44
44
|
## 1. Put the read URL in an environment variable
|
|
@@ -81,7 +81,7 @@ other trusted database TLS setup.
|
|
|
81
81
|
## 2. Inspect metadata
|
|
82
82
|
|
|
83
83
|
```bash
|
|
84
|
-
npx -y -p @synapsor/runner@alpha synapsor inspect \
|
|
84
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner inspect \
|
|
85
85
|
--engine auto \
|
|
86
86
|
--from-env DATABASE_URL \
|
|
87
87
|
--schema public
|
|
@@ -90,13 +90,13 @@ npx -y -p @synapsor/runner@alpha synapsor inspect \
|
|
|
90
90
|
For a disposable staging URL, this also works:
|
|
91
91
|
|
|
92
92
|
```bash
|
|
93
|
-
npx -y -p @synapsor/runner@alpha synapsor inspect "$DATABASE_URL" --engine auto --schema public
|
|
93
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner inspect "$DATABASE_URL" --engine auto --schema public
|
|
94
94
|
```
|
|
95
95
|
|
|
96
96
|
For automation:
|
|
97
97
|
|
|
98
98
|
```bash
|
|
99
|
-
npx -y -p @synapsor/runner@alpha synapsor inspect \
|
|
99
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner inspect \
|
|
100
100
|
--engine postgres \
|
|
101
101
|
--from-env DATABASE_URL \
|
|
102
102
|
--schema public \
|
|
@@ -113,9 +113,9 @@ to your staging table, primary key, tenant key, conflict column, visible fields,
|
|
|
113
113
|
allowed write fields, and business limits.
|
|
114
114
|
|
|
115
115
|
```bash
|
|
116
|
-
npx -y -p @synapsor/runner@alpha synapsor recipes list
|
|
117
|
-
npx -y -p @synapsor/runner@alpha synapsor recipes show billing.late_fee_waiver
|
|
118
|
-
npx -y -p @synapsor/runner@alpha synapsor recipes init billing.late_fee_waiver --output synapsor.runner.json
|
|
116
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner recipes list
|
|
117
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner recipes show billing.late_fee_waiver
|
|
118
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner recipes init billing.late_fee_waiver --output synapsor.runner.json
|
|
119
119
|
```
|
|
120
120
|
|
|
121
121
|
Use a recipe when the shape is close. Use the guided wizard or explicit flags
|
|
@@ -130,7 +130,7 @@ only the capabilities in your generated `synapsor.runner.json`.
|
|
|
130
130
|
In an interactive terminal, run the guided wizard:
|
|
131
131
|
|
|
132
132
|
```bash
|
|
133
|
-
npx -y -p @synapsor/runner@alpha synapsor init --from-env DATABASE_URL --mode read_only --wizard
|
|
133
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner init --from-env DATABASE_URL --mode read_only --wizard
|
|
134
134
|
```
|
|
135
135
|
|
|
136
136
|
The generated context and capabilities are based on your selections. Synapsor
|
|
@@ -174,7 +174,7 @@ If you already know the reviewed table/action, generate config directly from
|
|
|
174
174
|
metadata and explicit flags:
|
|
175
175
|
|
|
176
176
|
```bash
|
|
177
|
-
npx -y -p @synapsor/runner@alpha synapsor init \
|
|
177
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner init \
|
|
178
178
|
--from-env DATABASE_URL \
|
|
179
179
|
--engine postgres \
|
|
180
180
|
--schema public \
|
|
@@ -193,7 +193,7 @@ npx -y -p @synapsor/runner@alpha synapsor init \
|
|
|
193
193
|
Or generate from a saved inspection snapshot without reconnecting:
|
|
194
194
|
|
|
195
195
|
```bash
|
|
196
|
-
npx -y -p @synapsor/runner@alpha synapsor init \
|
|
196
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner init \
|
|
197
197
|
--inspection-json schema-inspection.json \
|
|
198
198
|
--table invoices \
|
|
199
199
|
--namespace billing \
|
|
@@ -261,7 +261,7 @@ contain database URLs or passwords.
|
|
|
261
261
|
## 6. Generate runner files
|
|
262
262
|
|
|
263
263
|
```bash
|
|
264
|
-
npx -y -p @synapsor/runner@alpha synapsor init \
|
|
264
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner init \
|
|
265
265
|
--spec onboarding-selection.json \
|
|
266
266
|
--non-interactive
|
|
267
267
|
```
|
|
@@ -281,10 +281,10 @@ files.
|
|
|
281
281
|
Generate or refresh MCP client snippets later with:
|
|
282
282
|
|
|
283
283
|
```bash
|
|
284
|
-
npx -y -p @synapsor/runner@alpha synapsor mcp config generic --config ./synapsor.runner.json --store ./.synapsor/local.db
|
|
285
|
-
npx -y -p @synapsor/runner@alpha synapsor mcp config claude-desktop --config ./synapsor.runner.json --store ./.synapsor/local.db
|
|
286
|
-
npx -y -p @synapsor/runner@alpha synapsor mcp config cursor --config ./synapsor.runner.json --store ./.synapsor/local.db
|
|
287
|
-
npx -y -p @synapsor/runner@alpha synapsor tools preview --config ./synapsor.runner.json --store ./.synapsor/local.db
|
|
284
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner mcp config generic --config ./synapsor.runner.json --store ./.synapsor/local.db
|
|
285
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner mcp config claude-desktop --config ./synapsor.runner.json --store ./.synapsor/local.db
|
|
286
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner mcp config cursor --config ./synapsor.runner.json --store ./.synapsor/local.db
|
|
287
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner tools preview --config ./synapsor.runner.json --store ./.synapsor/local.db
|
|
288
288
|
```
|
|
289
289
|
|
|
290
290
|
The snippets contain the local command and args. They must not contain database
|
|
@@ -293,8 +293,8 @@ URLs, passwords, approval tools, commit tools, or write credentials.
|
|
|
293
293
|
## 7. Validate the config
|
|
294
294
|
|
|
295
295
|
```bash
|
|
296
|
-
npx -y -p @synapsor/runner@alpha synapsor config validate --config synapsor.runner.json
|
|
297
|
-
npx -y -p @synapsor/runner@alpha synapsor config show --config synapsor.runner.json --redacted
|
|
296
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner config validate --config synapsor.runner.json
|
|
297
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner config show --config synapsor.runner.json --redacted
|
|
298
298
|
```
|
|
299
299
|
|
|
300
300
|
The config stores environment-variable names, not connection-string values.
|
|
@@ -302,7 +302,7 @@ The config stores environment-variable names, not connection-string values.
|
|
|
302
302
|
Run doctor after setting the referenced environment variables:
|
|
303
303
|
|
|
304
304
|
```bash
|
|
305
|
-
npx -y -p @synapsor/runner@alpha synapsor doctor --config synapsor.runner.json
|
|
305
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner doctor --config synapsor.runner.json
|
|
306
306
|
```
|
|
307
307
|
|
|
308
308
|
Doctor validates config shape, trusted context env vars, source env vars,
|
|
@@ -310,7 +310,7 @@ read/write credential separation, table/column metadata when the read URL is
|
|
|
310
310
|
available, and the semantic MCP tool boundary. Use JSON for automation:
|
|
311
311
|
|
|
312
312
|
```bash
|
|
313
|
-
npx -y -p @synapsor/runner@alpha synapsor doctor --config synapsor.runner.json --json
|
|
313
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner doctor --config synapsor.runner.json --json
|
|
314
314
|
```
|
|
315
315
|
|
|
316
316
|
## 8. Serve semantic MCP tools
|
|
@@ -320,7 +320,7 @@ Use stdio when a local MCP client can launch Synapsor Runner:
|
|
|
320
320
|
```bash
|
|
321
321
|
export SYNAPSOR_TENANT_ID="acme"
|
|
322
322
|
export SYNAPSOR_PRINCIPAL="local_operator"
|
|
323
|
-
npx -y -p @synapsor/runner@alpha synapsor mcp serve --config ./synapsor.runner.json --store ./.synapsor/local.db
|
|
323
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner mcp serve --config ./synapsor.runner.json --store ./.synapsor/local.db
|
|
324
324
|
```
|
|
325
325
|
|
|
326
326
|
Use HTTP when an app/server agent connects to a long-running Runner process:
|
|
@@ -330,7 +330,7 @@ export SYNAPSOR_TENANT_ID="acme"
|
|
|
330
330
|
export SYNAPSOR_PRINCIPAL="local_operator"
|
|
331
331
|
export SYNAPSOR_RUNNER_HTTP_TOKEN="dev-local-token"
|
|
332
332
|
|
|
333
|
-
npx -y -p @synapsor/runner@alpha synapsor mcp serve-http \
|
|
333
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner mcp serve-http \
|
|
334
334
|
--config ./synapsor.runner.json \
|
|
335
335
|
--store ./.synapsor/local.db \
|
|
336
336
|
--auth-token-env SYNAPSOR_RUNNER_HTTP_TOKEN
|
|
@@ -357,10 +357,10 @@ tools, commit tools, database URLs, write credentials, or tenant authority.
|
|
|
357
357
|
Proposal tools leave the source database unchanged. Review locally:
|
|
358
358
|
|
|
359
359
|
```bash
|
|
360
|
-
npx -y -p @synapsor/runner@alpha synapsor proposals list --store ./.synapsor/local.db
|
|
361
|
-
npx -y -p @synapsor/runner@alpha synapsor proposals show wrp_123 --store ./.synapsor/local.db
|
|
362
|
-
npx -y -p @synapsor/runner@alpha synapsor proposals approve wrp_123 --store ./.synapsor/local.db --actor local_reviewer --yes
|
|
363
|
-
npx -y -p @synapsor/runner@alpha synapsor proposals writeback-job wrp_123 --store ./.synapsor/local.db --output job.json
|
|
360
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner proposals list --store ./.synapsor/local.db
|
|
361
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner proposals show wrp_123 --store ./.synapsor/local.db
|
|
362
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner proposals approve wrp_123 --store ./.synapsor/local.db --actor local_reviewer --yes
|
|
363
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner proposals writeback-job wrp_123 --store ./.synapsor/local.db --output job.json
|
|
364
364
|
```
|
|
365
365
|
|
|
366
366
|
Apply through the trusted worker path with a separate writer credential:
|
|
@@ -369,7 +369,7 @@ Apply through the trusted worker path with a separate writer credential:
|
|
|
369
369
|
export SYNAPSOR_DATABASE_WRITE_URL="<postgres-or-mysql-write-url>"
|
|
370
370
|
SYNAPSOR_ENGINE=postgres \
|
|
371
371
|
SYNAPSOR_DATABASE_URL="$SYNAPSOR_DATABASE_WRITE_URL" \
|
|
372
|
-
npx -y -p @synapsor/runner@alpha synapsor apply --job job.json --config synapsor.runner.json --store ./.synapsor/local.db
|
|
372
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner apply --job job.json --config synapsor.runner.json --store ./.synapsor/local.db
|
|
373
373
|
```
|
|
374
374
|
|
|
375
375
|
If your application/API should own the business write, use an `http_handler`
|
|
@@ -378,7 +378,7 @@ from environment variables, and the handler receives a structured proposal/job
|
|
|
378
378
|
payload, not arbitrary model SQL:
|
|
379
379
|
|
|
380
380
|
```bash
|
|
381
|
-
npx -y -p @synapsor/runner@alpha synapsor apply --proposal wrp_123 --config synapsor.runner.json --store ./.synapsor/local.db
|
|
381
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner apply --proposal wrp_123 --config synapsor.runner.json --store ./.synapsor/local.db
|
|
382
382
|
```
|
|
383
383
|
|
|
384
384
|
See [Writeback Executors](writeback-executors.md).
|
|
@@ -386,8 +386,8 @@ See [Writeback Executors](writeback-executors.md).
|
|
|
386
386
|
Replay afterward:
|
|
387
387
|
|
|
388
388
|
```bash
|
|
389
|
-
npx -y -p @synapsor/runner@alpha synapsor replay show wrp_123 --store ./.synapsor/local.db
|
|
390
|
-
npx -y -p @synapsor/runner@alpha synapsor replay export wrp_123 --store ./.synapsor/local.db --output replay.json
|
|
389
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner replay show wrp_123 --store ./.synapsor/local.db
|
|
390
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner replay export wrp_123 --store ./.synapsor/local.db --output replay.json
|
|
391
391
|
```
|
|
392
392
|
|
|
393
393
|
## Boundary
|
package/docs/http-mcp.md
CHANGED
|
@@ -11,7 +11,7 @@ local agent tool can launch Synapsor Runner directly.
|
|
|
11
11
|
```bash
|
|
12
12
|
export SYNAPSOR_RUNNER_HTTP_TOKEN="dev-local-token"
|
|
13
13
|
|
|
14
|
-
synapsor mcp serve-http \
|
|
14
|
+
synapsor-runner mcp serve-http \
|
|
15
15
|
--host 127.0.0.1 \
|
|
16
16
|
--port 8765 \
|
|
17
17
|
--config ./synapsor.runner.json \
|
|
@@ -134,7 +134,7 @@ CORS is disabled by default. If a local browser app needs access during
|
|
|
134
134
|
development, allow one explicit origin:
|
|
135
135
|
|
|
136
136
|
```bash
|
|
137
|
-
synapsor mcp serve-http \
|
|
137
|
+
synapsor-runner mcp serve-http \
|
|
138
138
|
--config ./synapsor.runner.json \
|
|
139
139
|
--store ./.synapsor/local.db \
|
|
140
140
|
--cors-origin http://localhost:3000
|
|
@@ -149,7 +149,7 @@ Synapsor Runner binds to `127.0.0.1` by default.
|
|
|
149
149
|
If you explicitly bind to all interfaces:
|
|
150
150
|
|
|
151
151
|
```bash
|
|
152
|
-
synapsor mcp serve-http --host 0.0.0.0
|
|
152
|
+
synapsor-runner mcp serve-http --host 0.0.0.0
|
|
153
153
|
```
|
|
154
154
|
|
|
155
155
|
the CLI prints a warning. Treat this as a production-like service:
|
package/docs/local-mode.md
CHANGED
|
@@ -6,15 +6,15 @@ Command model:
|
|
|
6
6
|
|
|
7
7
|
- `./scripts/demo-docker.sh` runs the no-install Docker demo.
|
|
8
8
|
- `synapsor <command>` is the public CLI surface.
|
|
9
|
-
- From a source checkout, use `./bin/synapsor <command>` if the global binary is
|
|
9
|
+
- From a source checkout, use `./bin/synapsor-runner <command>` if the global binary is
|
|
10
10
|
not linked yet.
|
|
11
11
|
|
|
12
|
-
`synapsor demo --quick` creates a fixture ledger for learning and CLI
|
|
12
|
+
`synapsor-runner demo --quick` creates a fixture ledger for learning and CLI
|
|
13
13
|
verification. In a terminal it walks through the safety model step by step; in
|
|
14
14
|
CI or piped output it prints a short summary and exits without waiting for
|
|
15
15
|
Enter. It does not read or write external Postgres/MySQL. Local mode with
|
|
16
|
-
`synapsor mcp serve`, `synapsor demo`, or an own generated config is the real
|
|
17
|
-
Postgres/MySQL path. Use `synapsor demo inspect` to print the follow-up
|
|
16
|
+
`synapsor-runner mcp serve`, `synapsor-runner demo`, or an own generated config is the real
|
|
17
|
+
Postgres/MySQL path. Use `synapsor-runner demo inspect` to print the follow-up
|
|
18
18
|
commands for the quick-demo fixture.
|
|
19
19
|
|
|
20
20
|
Current local-mode foundation:
|
|
@@ -22,8 +22,8 @@ Current local-mode foundation:
|
|
|
22
22
|
- strict JSON capability config validation in `packages/config`;
|
|
23
23
|
- local SQLite proposal/event/evidence/query-audit/writeback/replay store in `packages/proposal-store`;
|
|
24
24
|
- local proposal review CLI in `apps/runner`;
|
|
25
|
-
- local localhost proposal review UI through `synapsor ui`;
|
|
26
|
-
- static MCP database risk review with `synapsor audit`;
|
|
25
|
+
- local localhost proposal review UI through `synapsor-runner ui`;
|
|
26
|
+
- static MCP database risk review with `synapsor-runner audit`;
|
|
27
27
|
- local stdio MCP server with semantic read/proposal tools;
|
|
28
28
|
- authenticated HTTP MCP server for app/server agents;
|
|
29
29
|
- MCP resource reads for `synapsor://proposals/*`, `synapsor://evidence/*`, and `synapsor://replay/*`;
|
|
@@ -43,13 +43,13 @@ want to change your host Node version.
|
|
|
43
43
|
Create a starter config without putting credentials in the file:
|
|
44
44
|
|
|
45
45
|
```bash
|
|
46
|
-
npx -y -p @synapsor/runner@alpha synapsor init --engine postgres --mode review
|
|
46
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner init --engine postgres --mode review
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
For MySQL:
|
|
50
50
|
|
|
51
51
|
```bash
|
|
52
|
-
npx -y -p @synapsor/runner@alpha synapsor init --engine mysql --mode review --output synapsor.mysql.runner.json
|
|
52
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner init --engine mysql --mode review --output synapsor.mysql.runner.json
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
The generated config uses environment-variable names for read/write URLs and trusted context. Edit the table, column, and capability names before serving tools.
|
|
@@ -62,8 +62,8 @@ persisted into proposals, evidence, query audit, runner state, or replay.
|
|
|
62
62
|
For a reviewed own-database setup generated from explicit selections, use:
|
|
63
63
|
|
|
64
64
|
```bash
|
|
65
|
-
npx -y -p @synapsor/runner@alpha synapsor init --spec onboarding-selection.json --non-interactive
|
|
66
|
-
npx -y -p @synapsor/runner@alpha synapsor doctor --config synapsor.runner.json
|
|
65
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner init --spec onboarding-selection.json --non-interactive
|
|
66
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner doctor --config synapsor.runner.json
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
`doctor --config` checks config validation, required environment variables,
|
|
@@ -75,7 +75,7 @@ and the semantic MCP tool boundary without printing credential values.
|
|
|
75
75
|
Use stdio for local MCP clients that launch Synapsor Runner:
|
|
76
76
|
|
|
77
77
|
```bash
|
|
78
|
-
npx -y -p @synapsor/runner@alpha synapsor mcp serve \
|
|
78
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner mcp serve \
|
|
79
79
|
--config ./synapsor.runner.json \
|
|
80
80
|
--store ./.synapsor/local.db
|
|
81
81
|
```
|
|
@@ -85,7 +85,7 @@ Use HTTP when your app/server agent connects to a long-running Runner process:
|
|
|
85
85
|
```bash
|
|
86
86
|
export SYNAPSOR_RUNNER_HTTP_TOKEN="dev-local-token"
|
|
87
87
|
|
|
88
|
-
npx -y -p @synapsor/runner@alpha synapsor mcp serve-http \
|
|
88
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner mcp serve-http \
|
|
89
89
|
--config ./synapsor.runner.json \
|
|
90
90
|
--store ./.synapsor/local.db \
|
|
91
91
|
--auth-token-env SYNAPSOR_RUNNER_HTTP_TOKEN
|
|
@@ -125,19 +125,19 @@ If neither is set, the CLI uses:
|
|
|
125
125
|
List proposals:
|
|
126
126
|
|
|
127
127
|
```bash
|
|
128
|
-
npx -y -p @synapsor/runner@alpha synapsor proposals list --store ./.synapsor/local.db
|
|
128
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner proposals list --store ./.synapsor/local.db
|
|
129
129
|
```
|
|
130
130
|
|
|
131
131
|
Show a proposal:
|
|
132
132
|
|
|
133
133
|
```bash
|
|
134
|
-
npx -y -p @synapsor/runner@alpha synapsor proposals show wrp_123 --store ./.synapsor/local.db
|
|
134
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner proposals show wrp_123 --store ./.synapsor/local.db
|
|
135
135
|
```
|
|
136
136
|
|
|
137
137
|
Approve:
|
|
138
138
|
|
|
139
139
|
```bash
|
|
140
|
-
npx -y -p @synapsor/runner@alpha synapsor proposals approve wrp_123 \
|
|
140
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner proposals approve wrp_123 \
|
|
141
141
|
--store ./.synapsor/local.db \
|
|
142
142
|
--actor local_reviewer \
|
|
143
143
|
--yes
|
|
@@ -148,7 +148,7 @@ Before approval, the CLI prints the reviewer-critical proposal details: trusted
|
|
|
148
148
|
Create a guarded writeback job from an approved proposal:
|
|
149
149
|
|
|
150
150
|
```bash
|
|
151
|
-
npx -y -p @synapsor/runner@alpha synapsor proposals writeback-job wrp_123 \
|
|
151
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner proposals writeback-job wrp_123 \
|
|
152
152
|
--store ./.synapsor/local.db \
|
|
153
153
|
--project local \
|
|
154
154
|
--runner local_runner \
|
|
@@ -160,7 +160,7 @@ The generated job uses the public `synapsor.writeback-job.v1` protocol and can b
|
|
|
160
160
|
```bash
|
|
161
161
|
SYNAPSOR_ENGINE=postgres \
|
|
162
162
|
SYNAPSOR_DATABASE_URL="postgresql://writer:<password>@localhost:5432/app" \
|
|
163
|
-
npx -y -p @synapsor/runner@alpha synapsor apply --job job.json --config synapsor.runner.json --store ./.synapsor/local.db
|
|
163
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner apply --job job.json --config synapsor.runner.json --store ./.synapsor/local.db
|
|
164
164
|
```
|
|
165
165
|
|
|
166
166
|
Passing `--store` records the terminal `synapsor.execution-receipt.v1` locally. Replay then links the proposal, approval, writeback job, applied/conflict/failed receipt, evidence, and query audit.
|
|
@@ -168,7 +168,7 @@ Passing `--store` records the terminal `synapsor.execution-receipt.v1` locally.
|
|
|
168
168
|
Reject:
|
|
169
169
|
|
|
170
170
|
```bash
|
|
171
|
-
npx -y -p @synapsor/runner@alpha synapsor proposals reject wrp_123 \
|
|
171
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner proposals reject wrp_123 \
|
|
172
172
|
--store ./.synapsor/local.db \
|
|
173
173
|
--reason "policy evidence is incomplete" \
|
|
174
174
|
--yes
|
|
@@ -185,7 +185,7 @@ Shadow-mode proposals are inspectable through `proposals show` and `replay show`
|
|
|
185
185
|
Start a localhost-only review UI:
|
|
186
186
|
|
|
187
187
|
```bash
|
|
188
|
-
npx -y -p @synapsor/runner@alpha synapsor ui --config synapsor.runner.json --store ./.synapsor/local.db
|
|
188
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner ui --config synapsor.runner.json --store ./.synapsor/local.db
|
|
189
189
|
```
|
|
190
190
|
|
|
191
191
|
The UI shows setup summary, semantic tools, proposal states, exact diffs,
|
|
@@ -201,20 +201,20 @@ tools, MCP commit tools, or controls that widen configured tables/columns.
|
|
|
201
201
|
Show replay:
|
|
202
202
|
|
|
203
203
|
```bash
|
|
204
|
-
npx -y -p @synapsor/runner@alpha synapsor replay show wrp_123 --store ./.synapsor/local.db
|
|
205
|
-
npx -y -p @synapsor/runner@alpha synapsor replay show --proposal wrp_123 --store ./.synapsor/local.db
|
|
206
|
-
npx -y -p @synapsor/runner@alpha synapsor replay show --replay replay_wrp_123 --store ./.synapsor/local.db
|
|
207
|
-
npx -y -p @synapsor/runner@alpha synapsor replay show --evidence ev_123 --store ./.synapsor/local.db
|
|
204
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner replay show wrp_123 --store ./.synapsor/local.db
|
|
205
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner replay show --proposal wrp_123 --store ./.synapsor/local.db
|
|
206
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner replay show --replay replay_wrp_123 --store ./.synapsor/local.db
|
|
207
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner replay show --evidence ev_123 --store ./.synapsor/local.db
|
|
208
208
|
```
|
|
209
209
|
|
|
210
210
|
Export replay:
|
|
211
211
|
|
|
212
212
|
```bash
|
|
213
|
-
npx -y -p @synapsor/runner@alpha synapsor replay export wrp_123 \
|
|
213
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner replay export wrp_123 \
|
|
214
214
|
--store ./.synapsor/local.db \
|
|
215
215
|
--output replay.json
|
|
216
216
|
|
|
217
|
-
npx -y -p @synapsor/runner@alpha synapsor replay export --proposal wrp_123 \
|
|
217
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner replay export --proposal wrp_123 \
|
|
218
218
|
--format markdown \
|
|
219
219
|
--store ./.synapsor/local.db \
|
|
220
220
|
--output replay.md
|
|
@@ -229,22 +229,22 @@ Human output is concise by default. Use `--details` for reviewer metadata or
|
|
|
229
229
|
The local SQLite store is also searchable without relying on `latest`:
|
|
230
230
|
|
|
231
231
|
```bash
|
|
232
|
-
synapsor activity search \
|
|
232
|
+
synapsor-runner activity search \
|
|
233
233
|
--tenant acme \
|
|
234
234
|
--object invoice:INV-3001 \
|
|
235
235
|
--store ./.synapsor/local.db
|
|
236
236
|
|
|
237
|
-
synapsor evidence list \
|
|
237
|
+
synapsor-runner evidence list \
|
|
238
238
|
--tenant acme \
|
|
239
239
|
--capability billing.inspect_invoice \
|
|
240
240
|
--source app_postgres \
|
|
241
241
|
--table invoices \
|
|
242
242
|
--store ./.synapsor/local.db
|
|
243
243
|
|
|
244
|
-
synapsor evidence show ev_123 --store ./.synapsor/local.db
|
|
245
|
-
synapsor query-audit list --evidence ev_123 --store ./.synapsor/local.db
|
|
246
|
-
synapsor receipts list --proposal wrp_123 --store ./.synapsor/local.db
|
|
247
|
-
synapsor receipts show <receipt_id> --store ./.synapsor/local.db
|
|
244
|
+
synapsor-runner evidence show ev_123 --store ./.synapsor/local.db
|
|
245
|
+
synapsor-runner query-audit list --evidence ev_123 --store ./.synapsor/local.db
|
|
246
|
+
synapsor-runner receipts list --proposal wrp_123 --store ./.synapsor/local.db
|
|
247
|
+
synapsor-runner receipts show <receipt_id> --store ./.synapsor/local.db
|
|
248
248
|
```
|
|
249
249
|
|
|
250
250
|
Default inspection output is intentionally short. Add `--details` when you need
|
|
@@ -266,10 +266,10 @@ The local ledger is a developer/staging SQLite file. You can inspect, compact,
|
|
|
266
266
|
or prune it without touching your source Postgres/MySQL database:
|
|
267
267
|
|
|
268
268
|
```bash
|
|
269
|
-
synapsor store stats --store ./.synapsor/local.db
|
|
270
|
-
synapsor store vacuum --store ./.synapsor/local.db
|
|
271
|
-
synapsor store prune --store ./.synapsor/local.db --older-than 30d --dry-run
|
|
272
|
-
synapsor store prune --store ./.synapsor/local.db --older-than 30d --yes
|
|
269
|
+
synapsor-runner store stats --store ./.synapsor/local.db
|
|
270
|
+
synapsor-runner store vacuum --store ./.synapsor/local.db
|
|
271
|
+
synapsor-runner store prune --store ./.synapsor/local.db --older-than 30d --dry-run
|
|
272
|
+
synapsor-runner store prune --store ./.synapsor/local.db --older-than 30d --yes
|
|
273
273
|
```
|
|
274
274
|
|
|
275
275
|
`store prune` defaults to dry-run. Use `--yes` only after reviewing the row
|
|
@@ -322,7 +322,7 @@ For CI or direct verification, use:
|
|
|
322
322
|
corepack pnpm test:mcp-local
|
|
323
323
|
```
|
|
324
324
|
|
|
325
|
-
It launches the official MCP stdio client transport against `synapsor mcp serve`, exercises the Postgres billing, Postgres support, and MySQL orders examples, checks that source rows are unchanged before approval, approves locally, generates versioned writeback jobs, applies them, retries idempotently, and then proves stale-row conflict:
|
|
325
|
+
It launches the official MCP stdio client transport against `synapsor-runner mcp serve`, exercises the Postgres billing, Postgres support, and MySQL orders examples, checks that source rows are unchanged before approval, approves locally, generates versioned writeback jobs, applies them, retries idempotently, and then proves stale-row conflict:
|
|
326
326
|
|
|
327
327
|
```text
|
|
328
328
|
The business state changed after the agent saw it, so Synapsor refused to commit.
|
package/docs/mcp-audit.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# MCP database risk review
|
|
2
2
|
|
|
3
|
-
`npx -y -p @synapsor/runner@alpha synapsor audit <target>` performs a
|
|
3
|
+
`npx -y -p @synapsor/runner@alpha synapsor-runner audit <target>` performs a
|
|
4
4
|
static MCP database risk review over an exported tool manifest, a remote MCP
|
|
5
5
|
`tools/list` endpoint, or a stdio MCP server. The `mcp audit` subcommand is also
|
|
6
6
|
available for users who look for the command under the MCP namespace.
|
|
7
7
|
|
|
8
|
-
From a source checkout, use `./bin/synapsor ...` if the global binary is not
|
|
8
|
+
From a source checkout, use `./bin/synapsor-runner ...` if the global binary is not
|
|
9
9
|
linked yet.
|
|
10
10
|
|
|
11
11
|
It does not call business tools. It only inspects names, descriptions, input schemas, output schemas, annotations, and examples when those are present.
|
|
@@ -23,7 +23,7 @@ MCP annotations are treated as hints, not enforcement.
|
|
|
23
23
|
Built-in database MCP risk example:
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
|
-
npx -y -p @synapsor/runner@alpha synapsor audit --example dangerous-db-mcp
|
|
26
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner audit --example dangerous-db-mcp
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
This bundled example does not require a source checkout or local examples file.
|
|
@@ -34,45 +34,45 @@ table/column inputs, and model-controlled tenant/principal fields.
|
|
|
34
34
|
Human-readable output:
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
|
-
npx -y -p @synapsor/runner@alpha synapsor audit ./tools-list.json
|
|
37
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner audit ./tools-list.json
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
Remote `tools/list` endpoint with a bearer token kept in the environment:
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
43
|
SYNAPSOR_MCP_AUDIT_BEARER="..." \
|
|
44
|
-
npx -y -p @synapsor/runner@alpha synapsor audit https://mcp.example.com --format json
|
|
44
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner audit https://mcp.example.com --format json
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
Remote endpoint with a custom bearer-token environment variable:
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
|
-
npx -y -p @synapsor/runner@alpha synapsor audit https://mcp.example.com --bearer-env MCP_AUDIT_TOKEN --format json
|
|
50
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner audit https://mcp.example.com --bearer-env MCP_AUDIT_TOKEN --format json
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
Stdio MCP server:
|
|
54
54
|
|
|
55
55
|
```bash
|
|
56
|
-
npx -y -p @synapsor/runner@alpha synapsor audit 'stdio:node ./server.mjs' --timeout-ms 5000
|
|
56
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner audit 'stdio:node ./server.mjs' --timeout-ms 5000
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
JSON output:
|
|
60
60
|
|
|
61
61
|
```bash
|
|
62
|
-
npx -y -p @synapsor/runner@alpha synapsor audit ./tools-list.json --format json
|
|
62
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner audit ./tools-list.json --format json
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
Markdown output for issues, PRs, or security review notes:
|
|
66
66
|
|
|
67
67
|
```bash
|
|
68
|
-
npx -y -p @synapsor/runner@alpha synapsor audit --example dangerous-db-mcp --format markdown
|
|
68
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner audit --example dangerous-db-mcp --format markdown
|
|
69
69
|
```
|
|
70
70
|
|
|
71
71
|
During local development, the repo-local wrapper can run the same command:
|
|
72
72
|
|
|
73
73
|
```bash
|
|
74
|
-
./bin/synapsor audit ./tools-list.json
|
|
75
|
-
./bin/synapsor audit ./tools-list.json --format json
|
|
74
|
+
./bin/synapsor-runner audit ./tools-list.json
|
|
75
|
+
./bin/synapsor-runner audit ./tools-list.json --format json
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
## Supported inputs
|
package/docs/mcp-client-setup.md
CHANGED
|
@@ -12,7 +12,7 @@ app/server deployments where your agent connects to a long-running Runner
|
|
|
12
12
|
service.
|
|
13
13
|
|
|
14
14
|
Command examples use the published alpha package through `npx`. From a source
|
|
15
|
-
checkout, use `./bin/synapsor ...` only when you intentionally want the local
|
|
15
|
+
checkout, use `./bin/synapsor-runner ...` only when you intentionally want the local
|
|
16
16
|
source wrapper.
|
|
17
17
|
|
|
18
18
|
Checked examples live in:
|
|
@@ -31,8 +31,8 @@ corepack pnpm test:mcp-client-configs
|
|
|
31
31
|
|
|
32
32
|
| Mode | Use when | Command |
|
|
33
33
|
| --- | --- | --- |
|
|
34
|
-
| stdio | Claude Desktop, Cursor, VS Code, or another local MCP client can launch Synapsor Runner | `synapsor mcp serve` |
|
|
35
|
-
| HTTP | Your app/server, Python agent, Node service, or container connects to a long-running Runner service | `synapsor mcp serve-http` |
|
|
34
|
+
| stdio | Claude Desktop, Cursor, VS Code, or another local MCP client can launch Synapsor Runner | `synapsor-runner mcp serve` |
|
|
35
|
+
| HTTP | Your app/server, Python agent, Node service, or container connects to a long-running Runner service | `synapsor-runner mcp serve-http` |
|
|
36
36
|
|
|
37
37
|
Stdio keeps the MCP protocol on process stdin/stdout and is the simplest local
|
|
38
38
|
developer path. HTTP uses JSON-RPC over an authenticated `/mcp` endpoint and is
|
|
@@ -43,7 +43,7 @@ HTTP requires bearer auth by default:
|
|
|
43
43
|
```bash
|
|
44
44
|
export SYNAPSOR_RUNNER_HTTP_TOKEN="dev-local-token"
|
|
45
45
|
|
|
46
|
-
npx -y -p @synapsor/runner@alpha synapsor mcp serve-http \
|
|
46
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner mcp serve-http \
|
|
47
47
|
--config ./synapsor.runner.json \
|
|
48
48
|
--store ./.synapsor/local.db \
|
|
49
49
|
--auth-token-env SYNAPSOR_RUNNER_HTTP_TOKEN
|
|
@@ -57,7 +57,7 @@ Use private networking/TLS before exposing HTTP MCP beyond localhost. Details:
|
|
|
57
57
|
Print a snippet without modifying any client files:
|
|
58
58
|
|
|
59
59
|
```bash
|
|
60
|
-
npx -y -p @synapsor/runner@alpha synapsor mcp config claude-desktop \
|
|
60
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner mcp config claude-desktop \
|
|
61
61
|
--config ./synapsor.runner.json \
|
|
62
62
|
--store ./.synapsor/local.db
|
|
63
63
|
```
|
|
@@ -75,13 +75,13 @@ vscode
|
|
|
75
75
|
The older form is still supported:
|
|
76
76
|
|
|
77
77
|
```bash
|
|
78
|
-
npx -y -p @synapsor/runner@alpha synapsor mcp configure --client claude-desktop --config ./synapsor.runner.json --store ./.synapsor/local.db
|
|
78
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner mcp configure --client claude-desktop --config ./synapsor.runner.json --store ./.synapsor/local.db
|
|
79
79
|
```
|
|
80
80
|
|
|
81
81
|
Write is opt-in and requires an explicit destination:
|
|
82
82
|
|
|
83
83
|
```bash
|
|
84
|
-
npx -y -p @synapsor/runner@alpha synapsor mcp configure \
|
|
84
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner mcp configure \
|
|
85
85
|
--client cursor \
|
|
86
86
|
--config ./synapsor.runner.json \
|
|
87
87
|
--store ./.synapsor/local.db \
|
|
@@ -100,7 +100,7 @@ database URLs or passwords into the client config.
|
|
|
100
100
|
From the runner repository:
|
|
101
101
|
|
|
102
102
|
```bash
|
|
103
|
-
npx -y -p @synapsor/runner@alpha synapsor mcp serve --config ./examples/mcp-postgres-billing/synapsor.runner.json --store ./.synapsor/local.db
|
|
103
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner mcp serve --config ./examples/mcp-postgres-billing/synapsor.runner.json --store ./.synapsor/local.db
|
|
104
104
|
```
|
|
105
105
|
|
|
106
106
|
For the alpha package, keep the package tag explicit in client configuration.
|
|
@@ -110,7 +110,7 @@ For app/server HTTP mode:
|
|
|
110
110
|
```bash
|
|
111
111
|
export SYNAPSOR_RUNNER_HTTP_TOKEN="dev-local-token"
|
|
112
112
|
|
|
113
|
-
npx -y -p @synapsor/runner@alpha synapsor mcp serve-http \
|
|
113
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner mcp serve-http \
|
|
114
114
|
--config ./examples/mcp-postgres-billing/synapsor.runner.json \
|
|
115
115
|
--store ./.synapsor/local.db \
|
|
116
116
|
--auth-token-env SYNAPSOR_RUNNER_HTTP_TOKEN
|
|
@@ -121,7 +121,7 @@ npx -y -p @synapsor/runner@alpha synapsor mcp serve-http \
|
|
|
121
121
|
```json
|
|
122
122
|
{
|
|
123
123
|
"mcpServers": {
|
|
124
|
-
"synapsor": {
|
|
124
|
+
"synapsor-runner": {
|
|
125
125
|
"command": "npx",
|
|
126
126
|
"args": [
|
|
127
127
|
"-y",
|
|
@@ -187,8 +187,8 @@ Before documenting a client UI as officially tested, verify:
|
|
|
187
187
|
## Troubleshooting
|
|
188
188
|
|
|
189
189
|
- Server not listed: check the command path, working directory, and config path.
|
|
190
|
-
- Tool schema mismatch: run `synapsor audit <exported-tools.json>`.
|
|
190
|
+
- Tool schema mismatch: run `synapsor-runner audit <exported-tools.json>`.
|
|
191
191
|
- Missing trusted context: set `SYNAPSOR_TENANT_ID` and `SYNAPSOR_PRINCIPAL`, or use the environment variables configured in `trusted_context.values`.
|
|
192
192
|
- Database unavailable: verify the read credential and host access.
|
|
193
|
-
- Proposal waiting review: approve outside the model with `synapsor proposals approve`.
|
|
193
|
+
- Proposal waiting review: approve outside the model with `synapsor-runner proposals approve`.
|
|
194
194
|
- Stale-row conflict: inspect replay; the source row changed after the proposal was created, so the guarded worker refused to commit.
|
package/docs/recipes.md
CHANGED
|
@@ -9,20 +9,20 @@ tenant key, conflict column, and business limits.
|
|
|
9
9
|
List recipes:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
npx -y -p @synapsor/runner@alpha synapsor recipes list
|
|
12
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner recipes list
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
Inspect one:
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
npx -y -p @synapsor/runner@alpha synapsor recipes show billing.late_fee_waiver
|
|
18
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner recipes show billing.late_fee_waiver
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
Initialize a starter config:
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
npx -y -p @synapsor/runner@alpha synapsor recipes init billing.late_fee_waiver --output synapsor.runner.json
|
|
25
|
-
npx -y -p @synapsor/runner@alpha synapsor config validate --config synapsor.runner.json
|
|
24
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner recipes init billing.late_fee_waiver --output synapsor.runner.json
|
|
25
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner config validate --config synapsor.runner.json
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
Built-in recipes are JSON files under `recipes/`. They are starter data, not
|
|
@@ -31,8 +31,8 @@ domain, and initialize from your file:
|
|
|
31
31
|
|
|
32
32
|
```bash
|
|
33
33
|
cp recipes/billing.late_fee_waiver.json my-recipe.json
|
|
34
|
-
npx -y -p @synapsor/runner@alpha synapsor recipes show ./my-recipe.json
|
|
35
|
-
npx -y -p @synapsor/runner@alpha synapsor recipes init ./my-recipe.json --output synapsor.runner.json
|
|
34
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner recipes show ./my-recipe.json
|
|
35
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner recipes init ./my-recipe.json --output synapsor.runner.json
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
Available recipes:
|
|
@@ -76,7 +76,7 @@ database identifiers such as `../private`, `id/../../tenant_id`, or
|
|
|
76
76
|
`status; DROP TABLE tickets` before adapter execution. Local CLI file paths
|
|
77
77
|
remain explicit user-provided paths; they are not model-facing authority.
|
|
78
78
|
|
|
79
|
-
Local review can happen through the CLI or `synapsor ui`. The UI is a localhost
|
|
79
|
+
Local review can happen through the CLI or `synapsor-runner ui`. The UI is a localhost
|
|
80
80
|
review surface with a per-run session token and CSRF protection for
|
|
81
81
|
approve/reject actions. It does not expose raw SQL, database URLs, write
|
|
82
82
|
credentials, approval tools, commit tools, or controls that widen reviewed
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
Run the friendly doctor first:
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
|
-
npx -y -p @synapsor/runner@alpha synapsor doctor --first-run
|
|
6
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner doctor --first-run
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
Use JSON for automation:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
npx -y -p @synapsor/runner@alpha synapsor doctor --first-run --json
|
|
12
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner doctor --first-run --json
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
## Docker Missing
|
|
@@ -128,13 +128,13 @@ Own-database MCP setup needs a reviewed config before serving tools.
|
|
|
128
128
|
Fix:
|
|
129
129
|
|
|
130
130
|
```bash
|
|
131
|
-
npx -y -p @synapsor/runner@alpha synapsor init --from-env DATABASE_URL --mode review --wizard
|
|
131
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner init --from-env DATABASE_URL --mode review --wizard
|
|
132
132
|
```
|
|
133
133
|
|
|
134
134
|
Or pass an example config:
|
|
135
135
|
|
|
136
136
|
```bash
|
|
137
|
-
npx -y -p @synapsor/runner@alpha synapsor tools preview --config ./examples/mcp-postgres-billing/synapsor.runner.json --store ./.synapsor/local.db
|
|
137
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner tools preview --config ./examples/mcp-postgres-billing/synapsor.runner.json --store ./.synapsor/local.db
|
|
138
138
|
```
|
|
139
139
|
|
|
140
140
|
## SQLite Store Missing
|
|
@@ -180,7 +180,7 @@ Fix:
|
|
|
180
180
|
|
|
181
181
|
```bash
|
|
182
182
|
export SYNAPSOR_DATABASE_READ_URL="<read-only-url>"
|
|
183
|
-
npx -y -p @synapsor/runner@alpha synapsor doctor --config synapsor.runner.json
|
|
183
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner doctor --config synapsor.runner.json
|
|
184
184
|
```
|
|
185
185
|
|
|
186
186
|
## Read/Write Credential Split Failed
|
|
@@ -216,7 +216,7 @@ Fix:
|
|
|
216
216
|
Regenerate the snippet:
|
|
217
217
|
|
|
218
218
|
```bash
|
|
219
|
-
npx -y -p @synapsor/runner@alpha synapsor mcp config claude-desktop \
|
|
219
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner mcp config claude-desktop \
|
|
220
220
|
--absolute-paths \
|
|
221
221
|
--config ./synapsor.runner.json \
|
|
222
222
|
--store ./.synapsor/local.db
|
|
@@ -22,7 +22,7 @@ export SYNAPSOR_TENANT_ID="acme"
|
|
|
22
22
|
export SYNAPSOR_PRINCIPAL="openai_agent_demo"
|
|
23
23
|
export SYNAPSOR_RUNNER_HTTP_TOKEN="dev-token"
|
|
24
24
|
|
|
25
|
-
npx -y -p @synapsor/runner@alpha synapsor mcp serve-http \
|
|
25
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner mcp serve-http \
|
|
26
26
|
--config ./synapsor.runner.json \
|
|
27
27
|
--store ./.synapsor/local.db \
|
|
28
28
|
--auth-token-env SYNAPSOR_RUNNER_HTTP_TOKEN
|
|
@@ -13,13 +13,13 @@ commit tools.
|
|
|
13
13
|
Generate `synapsor.runner.json` first:
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
npx -y -p @synapsor/runner@alpha synapsor demo
|
|
16
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner demo
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
or connect your own staging database:
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
|
-
npx -y -p @synapsor/runner@alpha synapsor init --wizard --from-env DATABASE_URL --mode read_only
|
|
22
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner init --wizard --from-env DATABASE_URL --mode read_only
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
Then install the Python dependencies:
|
|
@@ -36,14 +36,14 @@ examples/reference-support-billing-app/scripts/run-demo.sh
|
|
|
36
36
|
Validate the reviewed contract:
|
|
37
37
|
|
|
38
38
|
```bash
|
|
39
|
-
npx -y -p @synapsor/runner@alpha synapsor config validate --config examples/reference-support-billing-app/synapsor.runner.json
|
|
40
|
-
npx -y -p @synapsor/runner@alpha synapsor doctor --config examples/reference-support-billing-app/synapsor.runner.json
|
|
39
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner config validate --config examples/reference-support-billing-app/synapsor.runner.json
|
|
40
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner doctor --config examples/reference-support-billing-app/synapsor.runner.json
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
Serve MCP:
|
|
44
44
|
|
|
45
45
|
```bash
|
|
46
|
-
npx -y -p @synapsor/runner@alpha synapsor mcp serve \
|
|
46
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner mcp serve \
|
|
47
47
|
--config examples/reference-support-billing-app/synapsor.runner.json \
|
|
48
48
|
--store ./tmp/reference-support-billing/local.db
|
|
49
49
|
```
|
|
@@ -65,15 +65,15 @@ The model does not receive approval tools, commit tools, write credentials, raw
|
|
|
65
65
|
|
|
66
66
|
## Safe Write Examples
|
|
67
67
|
|
|
68
|
-
After `synapsor demo` or after starting this fixture manually, try the same
|
|
68
|
+
After `synapsor-runner demo` or after starting this fixture manually, try the same
|
|
69
69
|
proposal-first loop without connecting an MCP client:
|
|
70
70
|
|
|
71
71
|
```bash
|
|
72
|
-
npx -y -p @synapsor/runner@alpha synapsor propose billing.propose_late_fee_waiver --sample
|
|
73
|
-
npx -y -p @synapsor/runner@alpha synapsor proposals show latest
|
|
74
|
-
npx -y -p @synapsor/runner@alpha synapsor proposals approve latest --yes
|
|
75
|
-
npx -y -p @synapsor/runner@alpha synapsor apply latest
|
|
76
|
-
npx -y -p @synapsor/runner@alpha synapsor replay latest
|
|
72
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner propose billing.propose_late_fee_waiver --sample
|
|
73
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner proposals show latest
|
|
74
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner proposals approve latest --yes
|
|
75
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner apply latest
|
|
76
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner replay latest
|
|
77
77
|
```
|
|
78
78
|
|
|
79
79
|
Expected safety output:
|
|
@@ -93,8 +93,8 @@ Guarded writeback applied.
|
|
|
93
93
|
Other proposal examples use the same review/apply/replay path:
|
|
94
94
|
|
|
95
95
|
```bash
|
|
96
|
-
npx -y -p @synapsor/runner@alpha synapsor propose support.propose_plan_credit --sample
|
|
97
|
-
npx -y -p @synapsor/runner@alpha synapsor propose orders.propose_status_change --sample
|
|
96
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner propose support.propose_plan_credit --sample
|
|
97
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner propose orders.propose_status_change --sample
|
|
98
98
|
```
|
|
99
99
|
|
|
100
100
|
Safety guarantees:
|
|
@@ -115,17 +115,17 @@ or production-scale runner orchestration.
|
|
|
115
115
|
After a proposal exists:
|
|
116
116
|
|
|
117
117
|
```bash
|
|
118
|
-
npx -y -p @synapsor/runner@alpha synapsor proposals list --store ./tmp/reference-support-billing/local.db
|
|
119
|
-
npx -y -p @synapsor/runner@alpha synapsor proposals approve <proposal_id> --store ./tmp/reference-support-billing/local.db --actor local_reviewer --yes
|
|
120
|
-
npx -y -p @synapsor/runner@alpha synapsor proposals writeback-job <proposal_id> --store ./tmp/reference-support-billing/local.db --output ./tmp/reference-support-billing/job.json
|
|
121
|
-
npx -y -p @synapsor/runner@alpha synapsor apply --job ./tmp/reference-support-billing/job.json --store ./tmp/reference-support-billing/local.db
|
|
122
|
-
npx -y -p @synapsor/runner@alpha synapsor replay export <proposal_id> --store ./tmp/reference-support-billing/local.db --output ./tmp/reference-support-billing/replay.json
|
|
118
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner proposals list --store ./tmp/reference-support-billing/local.db
|
|
119
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner proposals approve <proposal_id> --store ./tmp/reference-support-billing/local.db --actor local_reviewer --yes
|
|
120
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner proposals writeback-job <proposal_id> --store ./tmp/reference-support-billing/local.db --output ./tmp/reference-support-billing/job.json
|
|
121
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner apply --job ./tmp/reference-support-billing/job.json --store ./tmp/reference-support-billing/local.db
|
|
122
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner replay export <proposal_id> --store ./tmp/reference-support-billing/local.db --output ./tmp/reference-support-billing/replay.json
|
|
123
123
|
```
|
|
124
124
|
|
|
125
125
|
To inspect locally in a browser:
|
|
126
126
|
|
|
127
127
|
```bash
|
|
128
|
-
npx -y -p @synapsor/runner@alpha synapsor ui \
|
|
128
|
+
npx -y -p @synapsor/runner@alpha synapsor-runner ui \
|
|
129
129
|
--config examples/reference-support-billing-app/synapsor.runner.json \
|
|
130
130
|
--store ./tmp/reference-support-billing/local.db
|
|
131
131
|
```
|
package/package.json
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synapsor/runner",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.6",
|
|
4
4
|
"description": "Commit-safe MCP runner for Postgres and MySQL agents",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
8
|
-
"synapsor": "dist/cli.js",
|
|
9
8
|
"synapsor-runner": "dist/cli.js"
|
|
10
9
|
},
|
|
11
10
|
"files": [
|