@synapsor/runner 0.1.0-alpha.5 → 0.1.0-alpha.7

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 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-runner` remains available as a
90
- backward-compatible alias.
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
@@ -181,6 +181,27 @@ examples/openai-agents-http/
181
181
  Use `--mode review` only when you are ready to create proposal tools and test
182
182
  guarded writeback with a separate trusted write credential.
183
183
 
184
+ ## Sanity Check The Agent Connection
185
+
186
+ Before asking an agent to solve a real task, confirm it can call a Runner tool:
187
+
188
+ ```bash
189
+ synapsor-runner tools preview --config ./synapsor.runner.json --store ./.synapsor/local.db
190
+ ```
191
+
192
+ Then ask the agent:
193
+
194
+ ```text
195
+ Use the Synapsor Runner MCP tool to inspect invoice INV-3001.
196
+ Do not answer from memory.
197
+ Return the tool name called, the evidence handle, and whether raw SQL was available.
198
+ ```
199
+
200
+ Expected result: the agent calls a semantic tool, returns an evidence handle or
201
+ local ledger reference, and says raw SQL/write/approval tools were not
202
+ available. If it gives generic advice or unrelated prose without a tool call,
203
+ Runner is not connected yet.
204
+
184
205
  The disposable reference app includes proposal-first write examples for:
185
206
 
186
207
  - `billing.propose_late_fee_waiver`
@@ -246,7 +267,7 @@ proposal-first writes.
246
267
  Run the included MCP efficiency fixture:
247
268
 
248
269
  ```bash
249
- synapsor benchmark mcp-efficiency
270
+ synapsor-runner benchmark mcp-efficiency
250
271
  ```
251
272
 
252
273
  Current fixture result for the late-fee-waiver workflow:
@@ -279,14 +300,14 @@ The runner stores a local SQLite evidence/replay ledger. Search it without
279
300
  relying on `latest`:
280
301
 
281
302
  ```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_...
303
+ synapsor-runner activity search --tenant acme --object invoice:INV-3001
304
+ synapsor-runner proposals list --tenant acme --object invoice:INV-3001 --status approved
305
+ synapsor-runner evidence show ev_...
306
+ synapsor-runner query-audit list --evidence ev_...
307
+ synapsor-runner receipts list --proposal wrp_...
308
+ synapsor-runner receipts show <receipt_id>
309
+ synapsor-runner replay show --proposal wrp_...
310
+ synapsor-runner replay show --replay replay_wrp_...
290
311
  ```
291
312
 
292
313
  Default inspection output is meant for first-run clarity. Add `--details` for
@@ -296,23 +317,23 @@ fingerprints, event timestamps, and receipt internals.
296
317
  Export captured evidence or proposal replay:
297
318
 
298
319
  ```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
320
+ synapsor-runner evidence export ev_... --format markdown --output evidence.md
321
+ synapsor-runner replay export --proposal wrp_... --format json --output replay.json
322
+ synapsor-runner replay export --proposal wrp_... --format markdown --output replay.md
302
323
  ```
303
324
 
304
325
  Create a redacted local diagnostic report:
305
326
 
306
327
  ```bash
307
- synapsor doctor --config synapsor.runner.json --report --redact --output synapsor-doctor.md
328
+ synapsor-runner doctor --config synapsor.runner.json --report --redact --output synapsor-doctor.md
308
329
  ```
309
330
 
310
331
  Inspect or compact the local ledger:
311
332
 
312
333
  ```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
334
+ synapsor-runner store stats --store ./.synapsor/local.db
335
+ synapsor-runner store vacuum --store ./.synapsor/local.db
336
+ synapsor-runner store prune --store ./.synapsor/local.db --older-than 30d --dry-run
316
337
  ```
317
338
 
318
339
  This is local indexed search for local/dev/staging usage. It is not external
@@ -328,8 +349,8 @@ MCP, and the handler returns an applied/conflict/failed receipt for replay.
328
349
 
329
350
  ## Command Name
330
351
 
331
- This package installs `synapsor` as the primary binary and `synapsor-runner` as
332
- a backward-compatible alias.
352
+ This package installs `synapsor-runner` as the OSS runner binary. The `synapsor`
353
+ command is reserved for the Synapsor Cloud CLI.
333
354
 
334
355
  ## Scope
335
356
 
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.5" },
2688
+ { name: "synapsor-runner", version: "0.1.0-alpha.7" },
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: synapsor ${command}
6062
+ process2.stderr.write(`Unknown command: ${cliCommandName()} ${command}
6063
6063
 
6064
6064
  Try:
6065
- synapsor --help
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: synapsor ${command}
6103
+ process2.stderr.write(`Unknown command: ${cliCommandName()} ${command}
6104
6104
 
6105
6105
  Try:
6106
- synapsor --help
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.5").trim();
7980
+ const runnerVersion = String(parsed.cloud.runner_version || process2.env.npm_package_version || "0.1.0-alpha.7").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.5",
11438
+ runner_version: "0.1.0-alpha.7",
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
- const invoked = path3.basename(process2.argv[1] ?? "");
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:
@@ -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
@@ -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,13 +121,13 @@ 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",
128
128
  "-p",
129
129
  "@synapsor/runner@alpha",
130
- "synapsor",
130
+ "synapsor-runner",
131
131
  "mcp",
132
132
  "serve",
133
133
  "--config",
@@ -161,6 +161,39 @@ approve_proposal
161
161
  commit_proposal
162
162
  ```
163
163
 
164
+ ## Sanity Check The Agent Connection
165
+
166
+ After installing the MCP client snippet, restart the client and run a deliberately
167
+ small tool-call test.
168
+
169
+ First confirm what Runner exposes:
170
+
171
+ ```bash
172
+ npx -y -p @synapsor/runner@alpha synapsor-runner tools preview \
173
+ --config ./synapsor.runner.json \
174
+ --store ./.synapsor/local.db
175
+ ```
176
+
177
+ Then ask the MCP client:
178
+
179
+ ```text
180
+ Use the Synapsor Runner MCP tool to inspect invoice INV-3001.
181
+ Do not answer from memory.
182
+ Return the tool name called, the evidence handle, and whether raw SQL was available.
183
+ ```
184
+
185
+ Expected result:
186
+
187
+ - the client calls a tool such as `billing.inspect_invoice`;
188
+ - the response includes an evidence handle or local ledger reference;
189
+ - the model reports that raw SQL, write credentials, approval tools, and commit
190
+ tools were not available.
191
+
192
+ If the answer is generic prose or unrelated task planning with no tool call and
193
+ no evidence handle, Synapsor Runner is not connected to that agent session yet.
194
+ Check the MCP config path, restart the client, set trusted context env vars, and
195
+ run `tools/list` or `synapsor-runner tools preview` again.
196
+
164
197
  ## Claude Desktop / Cursor / VS Code
165
198
 
166
199
  Use the matching checked-in example as the starting point:
@@ -187,8 +220,8 @@ Before documenting a client UI as officially tested, verify:
187
220
  ## Troubleshooting
188
221
 
189
222
  - Server not listed: check the command path, working directory, and config path.
190
- - Tool schema mismatch: run `synapsor audit <exported-tools.json>`.
223
+ - Tool schema mismatch: run `synapsor-runner audit <exported-tools.json>`.
191
224
  - Missing trusted context: set `SYNAPSOR_TENANT_ID` and `SYNAPSOR_PRINCIPAL`, or use the environment variables configured in `trusted_context.values`.
192
225
  - Database unavailable: verify the read credential and host access.
193
- - Proposal waiting review: approve outside the model with `synapsor proposals approve`.
226
+ - Proposal waiting review: approve outside the model with `synapsor-runner proposals approve`.
194
227
  - 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
@@ -59,7 +59,7 @@ literal values.
59
59
  Run after approval:
60
60
 
61
61
  ```bash
62
- npx -y -p @synapsor/runner@alpha synapsor apply \
62
+ npx -y -p @synapsor/runner@alpha synapsor-runner apply \
63
63
  --proposal wrp_123 \
64
64
  --config ./synapsor.runner.json \
65
65
  --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.5",
3
+ "version": "0.1.0-alpha.7",
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": [