@synapsor/runner 0.1.0-alpha.10 → 0.1.0-alpha.11
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 +41 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/runner.mjs +264 -65
- package/docs/README.md +17 -0
- package/docs/app-owned-executors.md +21 -0
- package/docs/cloud-mode.md +24 -0
- package/docs/current-scope.md +24 -0
- package/docs/dependency-license-inventory.md +35 -0
- package/docs/http-mcp.md +35 -1
- package/docs/licensing.md +36 -0
- package/docs/mcp-client-setup.md +39 -0
- package/docs/openai-agents-sdk.md +57 -0
- package/docs/release-notes.md +30 -1
- package/docs/use-your-own-database.md +18 -0
- package/docs/writeback-executors.md +11 -0
- package/examples/mcp-postgres-billing-app-handler/README.md +82 -0
- package/examples/mcp-postgres-billing-app-handler/app-handler.mjs +197 -0
- package/examples/mcp-postgres-billing-app-handler/docker-compose.yml +13 -0
- package/examples/mcp-postgres-billing-app-handler/schema.sql +59 -0
- package/examples/mcp-postgres-billing-app-handler/scripts/run-demo.sh +99 -0
- package/examples/mcp-postgres-billing-app-handler/seed.sql +39 -0
- package/examples/mcp-postgres-billing-app-handler/synapsor.runner.json +157 -0
- package/examples/openai-agents-http/README.md +10 -2
- package/examples/openai-agents-stdio/README.md +8 -4
- package/examples/openai-agents-stdio/agent.py +2 -0
- package/fixtures/benchmark/mcp-efficiency.json +53 -0
- package/fixtures/benchmark/mcp-efficiency.txt +25 -0
- package/fixtures/protocol/MANIFEST.json +54 -0
- package/fixtures/protocol/change-set.late-fee-waiver.v1.json +72 -0
- package/fixtures/protocol/execution-receipt.applied.v1.json +14 -0
- package/fixtures/protocol/execution-receipt.conflict.v1.json +15 -0
- package/fixtures/protocol/runner-registration.v1.json +22 -0
- package/fixtures/protocol/writeback-job.late-fee-waiver.v1.json +44 -0
- package/package.json +3 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"benchmark": "mcp-efficiency",
|
|
3
|
+
"fixture": "late-fee-waiver",
|
|
4
|
+
"tokenizer": {
|
|
5
|
+
"name": "synapsor-fixture-tokenizer-v1",
|
|
6
|
+
"version": 1,
|
|
7
|
+
"method": "deterministic regex tokenization for fixture comparison; not a model billing tokenizer"
|
|
8
|
+
},
|
|
9
|
+
"note": "This benchmark compares the included fixture/reference workflow only. It is not a universal token-savings claim.",
|
|
10
|
+
"paths": {
|
|
11
|
+
"generic_database_mcp_reference": {
|
|
12
|
+
"exposed_tools": 4,
|
|
13
|
+
"serialized_tools_list_bytes": 822,
|
|
14
|
+
"serialized_tools_list_tokens": 298,
|
|
15
|
+
"schema_context_bytes": 215,
|
|
16
|
+
"schema_context_tokens": 75,
|
|
17
|
+
"business_result_bytes": 199,
|
|
18
|
+
"business_result_tokens": 77,
|
|
19
|
+
"scripted_tool_calls": 5,
|
|
20
|
+
"exposes_raw_sql": true,
|
|
21
|
+
"exposes_write_credentials": false,
|
|
22
|
+
"approval_separated": false,
|
|
23
|
+
"stale_row_conflict_checked": false
|
|
24
|
+
},
|
|
25
|
+
"synapsor_runner_semantic_path": {
|
|
26
|
+
"exposed_tools": 2,
|
|
27
|
+
"serialized_tools_list_bytes": 728,
|
|
28
|
+
"serialized_tools_list_tokens": 236,
|
|
29
|
+
"schema_context_bytes": 331,
|
|
30
|
+
"schema_context_tokens": 87,
|
|
31
|
+
"business_result_bytes": 277,
|
|
32
|
+
"business_result_tokens": 91,
|
|
33
|
+
"scripted_tool_calls": 2,
|
|
34
|
+
"exposes_raw_sql": false,
|
|
35
|
+
"exposes_write_credentials": false,
|
|
36
|
+
"approval_separated": true,
|
|
37
|
+
"stale_row_conflict_checked": true
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"scripted_plans": {
|
|
41
|
+
"generic_database_mcp_reference": [
|
|
42
|
+
"list_tables",
|
|
43
|
+
"describe_table invoices",
|
|
44
|
+
"query_database SELECT invoice",
|
|
45
|
+
"formulate raw UPDATE",
|
|
46
|
+
"execute_sql UPDATE invoice"
|
|
47
|
+
],
|
|
48
|
+
"synapsor_runner_semantic_path": [
|
|
49
|
+
"billing.inspect_invoice",
|
|
50
|
+
"billing.propose_late_fee_waiver"
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
MCP efficiency benchmark: late-fee-waiver fixture
|
|
2
|
+
Tokenizer: synapsor-fixture-tokenizer-v1 (deterministic fixture tokenizer; not a model billing tokenizer)
|
|
3
|
+
Scope: included fixture/reference workflow only; not a universal savings claim.
|
|
4
|
+
|
|
5
|
+
Generic database MCP reference:
|
|
6
|
+
exposed tools: 4
|
|
7
|
+
tools/list: 822 bytes, 298 tokens
|
|
8
|
+
scripted tool calls: 5
|
|
9
|
+
schema/context: 215 bytes, 75 tokens
|
|
10
|
+
business result: 199 bytes, 77 tokens
|
|
11
|
+
raw SQL exposed: yes
|
|
12
|
+
approval separated: no
|
|
13
|
+
stale-row conflict checked: no
|
|
14
|
+
|
|
15
|
+
Synapsor Runner semantic path:
|
|
16
|
+
exposed tools: 2
|
|
17
|
+
tools/list: 728 bytes, 236 tokens
|
|
18
|
+
scripted tool calls: 2
|
|
19
|
+
schema/context: 331 bytes, 87 tokens
|
|
20
|
+
business result: 277 bytes, 91 tokens
|
|
21
|
+
raw SQL exposed: no
|
|
22
|
+
approval separated: yes
|
|
23
|
+
stale-row conflict checked: yes
|
|
24
|
+
|
|
25
|
+
Run with --json to inspect machine-readable measurements and scripted plans.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "synapsor.protocol-manifest.v1",
|
|
3
|
+
"protocol_set": "database-mcp-writeback",
|
|
4
|
+
"version": "0.1.0-alpha",
|
|
5
|
+
"hash_algorithm": "sha256",
|
|
6
|
+
"note": "This manifest is copied in Synapsor main protocol/MANIFEST.json and synapsor-runner fixtures/protocol/MANIFEST.json. Hashes are over the checked-in JSON artifact bytes.",
|
|
7
|
+
"artifacts": [
|
|
8
|
+
{
|
|
9
|
+
"kind": "fixture",
|
|
10
|
+
"name": "change-set.late-fee-waiver.v1.json",
|
|
11
|
+
"sha256": "7112d0f28832e61b4ac5846d169666c0476ba92eb68c6790c10ac614ee3f2b33"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"kind": "fixture",
|
|
15
|
+
"name": "execution-receipt.applied.v1.json",
|
|
16
|
+
"sha256": "5af8be1b72b03d5a4c7af22748d9ade9f0febbf5e9503931054361ef998b5870"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"kind": "fixture",
|
|
20
|
+
"name": "execution-receipt.conflict.v1.json",
|
|
21
|
+
"sha256": "64e8a5fd90cdeafa2dd92a2c67cad1307b9d09e585cc82b06b987bde382f7733"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"kind": "fixture",
|
|
25
|
+
"name": "runner-registration.v1.json",
|
|
26
|
+
"sha256": "3eaf844cdc94a4274601cedfed7252d65dd837a345c8c3b0f17ab6bbdf7f75da"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"kind": "fixture",
|
|
30
|
+
"name": "writeback-job.late-fee-waiver.v1.json",
|
|
31
|
+
"sha256": "577e7987427031b55134c3d7296e644b1c8b7adec495758d4cff3665e954dbc8"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"kind": "schema",
|
|
35
|
+
"name": "change-set.v1.schema.json",
|
|
36
|
+
"sha256": "4e52b369b0d3bea30b0ed7b61ec239fc67de3dc691ed4014d6d5eabc7d2be4de"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"kind": "schema",
|
|
40
|
+
"name": "execution-receipt.v1.schema.json",
|
|
41
|
+
"sha256": "69504ce51fa66440e42d57ef6cb36cc6d8543427d8d385c9ccff954ecae5ec83"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"kind": "schema",
|
|
45
|
+
"name": "runner-registration.v1.schema.json",
|
|
46
|
+
"sha256": "86242555545b44ae747965ddb8aa35e2982587c76c2538f0f646e8b63994286b"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"kind": "schema",
|
|
50
|
+
"name": "writeback-job.v1.schema.json",
|
|
51
|
+
"sha256": "eab35194dd6b6caa7694aa8f14afbf265338d6ee8ed3d3db5d08ec83c4e7092e"
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "synapsor.change-set.v1",
|
|
3
|
+
"proposal_id": "wrp_123",
|
|
4
|
+
"proposal_version": 1,
|
|
5
|
+
"action": "billing.waive_late_fee",
|
|
6
|
+
"mode": "review_required",
|
|
7
|
+
"principal": {
|
|
8
|
+
"id": "support_agent_17",
|
|
9
|
+
"source": "trusted_session"
|
|
10
|
+
},
|
|
11
|
+
"scope": {
|
|
12
|
+
"tenant_id": "acme",
|
|
13
|
+
"business_object": "invoice",
|
|
14
|
+
"object_id": "INV-3001"
|
|
15
|
+
},
|
|
16
|
+
"source": {
|
|
17
|
+
"kind": "external_postgres",
|
|
18
|
+
"source_id": "src_pg_acme",
|
|
19
|
+
"schema": "public",
|
|
20
|
+
"table": "invoices",
|
|
21
|
+
"primary_key": {
|
|
22
|
+
"column": "id",
|
|
23
|
+
"value": "INV-3001"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"before": {
|
|
27
|
+
"late_fee_cents": 5500,
|
|
28
|
+
"waiver_reason": null,
|
|
29
|
+
"updated_at": "2026-06-20T14:31:08Z"
|
|
30
|
+
},
|
|
31
|
+
"patch": {
|
|
32
|
+
"late_fee_cents": 0,
|
|
33
|
+
"waiver_reason": "customer requested review"
|
|
34
|
+
},
|
|
35
|
+
"after": {
|
|
36
|
+
"late_fee_cents": 0,
|
|
37
|
+
"waiver_reason": "customer requested review",
|
|
38
|
+
"updated_at": "2026-06-20T14:31:08Z"
|
|
39
|
+
},
|
|
40
|
+
"guards": {
|
|
41
|
+
"tenant": {
|
|
42
|
+
"column": "tenant_id",
|
|
43
|
+
"value": "acme"
|
|
44
|
+
},
|
|
45
|
+
"allowed_columns": [
|
|
46
|
+
"late_fee_cents",
|
|
47
|
+
"waiver_reason"
|
|
48
|
+
],
|
|
49
|
+
"expected_version": {
|
|
50
|
+
"column": "updated_at",
|
|
51
|
+
"value": "2026-06-20T14:31:08Z"
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"evidence": {
|
|
55
|
+
"bundle_id": "ev_456",
|
|
56
|
+
"query_fingerprint": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
|
57
|
+
"items": []
|
|
58
|
+
},
|
|
59
|
+
"approval": {
|
|
60
|
+
"status": "pending",
|
|
61
|
+
"required_role": "support_lead"
|
|
62
|
+
},
|
|
63
|
+
"writeback": {
|
|
64
|
+
"status": "not_applied",
|
|
65
|
+
"mode": "trusted_worker_required"
|
|
66
|
+
},
|
|
67
|
+
"source_database_mutated": false,
|
|
68
|
+
"integrity": {
|
|
69
|
+
"proposal_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222"
|
|
70
|
+
},
|
|
71
|
+
"created_at": "2026-06-20T14:31:09Z"
|
|
72
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "synapsor.execution-receipt.v1",
|
|
3
|
+
"writeback_job_id": "wbj_123",
|
|
4
|
+
"proposal_id": "wrp_123",
|
|
5
|
+
"runner_id": "runner_123",
|
|
6
|
+
"status": "applied",
|
|
7
|
+
"rows_affected": 1,
|
|
8
|
+
"idempotency_key": "wrp_123:INV-3001",
|
|
9
|
+
"previous_version": "2026-06-20T14:31:08Z",
|
|
10
|
+
"new_version": "2026-06-20T14:34:19Z",
|
|
11
|
+
"source_database_mutated": true,
|
|
12
|
+
"executed_at": "2026-06-20T14:34:19Z",
|
|
13
|
+
"receipt_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333"
|
|
14
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "synapsor.execution-receipt.v1",
|
|
3
|
+
"writeback_job_id": "wbj_124",
|
|
4
|
+
"proposal_id": "wrp_124",
|
|
5
|
+
"runner_id": "runner_123",
|
|
6
|
+
"status": "conflict",
|
|
7
|
+
"rows_affected": 0,
|
|
8
|
+
"idempotency_key": "wrp_124:INV-3001",
|
|
9
|
+
"previous_version": "2026-06-20T14:31:08Z",
|
|
10
|
+
"new_version": "2026-06-20T14:39:19Z",
|
|
11
|
+
"source_database_mutated": false,
|
|
12
|
+
"executed_at": "2026-06-20T14:40:19Z",
|
|
13
|
+
"safe_error_code": "VERSION_CONFLICT",
|
|
14
|
+
"receipt_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444"
|
|
15
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "synapsor.runner-registration.v1",
|
|
3
|
+
"runner_id": "runner_123",
|
|
4
|
+
"runner_version": "0.1.0-alpha.0",
|
|
5
|
+
"engines": [
|
|
6
|
+
"postgres",
|
|
7
|
+
"mysql"
|
|
8
|
+
],
|
|
9
|
+
"capabilities": [
|
|
10
|
+
"single_row_update",
|
|
11
|
+
"idempotency_receipts",
|
|
12
|
+
"version_conflict_guard"
|
|
13
|
+
],
|
|
14
|
+
"scope": {
|
|
15
|
+
"project_id": "acme-support",
|
|
16
|
+
"source_ids": [
|
|
17
|
+
"src_pg_acme",
|
|
18
|
+
"src_mysql_acme"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"registered_at": "2026-06-20T14:30:00Z"
|
|
22
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "synapsor.writeback-job.v1",
|
|
3
|
+
"writeback_job_id": "wbj_123",
|
|
4
|
+
"proposal_id": "wrp_123",
|
|
5
|
+
"proposal_version": 1,
|
|
6
|
+
"proposal_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
|
7
|
+
"runner_scope": {
|
|
8
|
+
"project_id": "acme-support",
|
|
9
|
+
"source_id": "src_pg_acme"
|
|
10
|
+
},
|
|
11
|
+
"engine": "postgres",
|
|
12
|
+
"operation": "single_row_update",
|
|
13
|
+
"target": {
|
|
14
|
+
"schema": "public",
|
|
15
|
+
"table": "invoices",
|
|
16
|
+
"primary_key": {
|
|
17
|
+
"column": "id",
|
|
18
|
+
"value": "INV-3001"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"tenant_guard": {
|
|
22
|
+
"column": "tenant_id",
|
|
23
|
+
"value": "acme"
|
|
24
|
+
},
|
|
25
|
+
"allowed_columns": [
|
|
26
|
+
"late_fee_cents",
|
|
27
|
+
"waiver_reason"
|
|
28
|
+
],
|
|
29
|
+
"patch": {
|
|
30
|
+
"late_fee_cents": 0,
|
|
31
|
+
"waiver_reason": "approved support waiver"
|
|
32
|
+
},
|
|
33
|
+
"conflict_guard": {
|
|
34
|
+
"kind": "column",
|
|
35
|
+
"column": "updated_at",
|
|
36
|
+
"expected_value": "2026-06-20T14:31:08Z"
|
|
37
|
+
},
|
|
38
|
+
"idempotency_key": "wrp_123:INV-3001",
|
|
39
|
+
"lease": {
|
|
40
|
+
"lease_id": "lease_123",
|
|
41
|
+
"attempt": 1,
|
|
42
|
+
"expires_at": "2026-06-20T14:36:00Z"
|
|
43
|
+
}
|
|
44
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synapsor/runner",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.11",
|
|
4
4
|
"description": "Commit-safe MCP runner for Postgres and MySQL agents",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -17,9 +17,11 @@
|
|
|
17
17
|
"docs/**/*.md",
|
|
18
18
|
"examples/dangerous-mcp-tools.json",
|
|
19
19
|
"examples/app-owned-writeback/**",
|
|
20
|
+
"examples/mcp-postgres-billing-app-handler/**",
|
|
20
21
|
"examples/openai-agents-http/**",
|
|
21
22
|
"examples/openai-agents-stdio/**",
|
|
22
23
|
"examples/reference-support-billing-app/**",
|
|
24
|
+
"fixtures/**",
|
|
23
25
|
"recipes/**/*.json",
|
|
24
26
|
"README.md",
|
|
25
27
|
"LICENSE",
|