@maadb/core 0.15.2 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/engine/create-contract.d.ts +10 -0
  2. package/dist/engine/create-contract.d.ts.map +1 -0
  3. package/dist/engine/create-contract.js +128 -0
  4. package/dist/engine/create-contract.js.map +1 -0
  5. package/dist/engine/document-receipt-types.d.ts +46 -0
  6. package/dist/engine/document-receipt-types.d.ts.map +1 -0
  7. package/dist/engine/document-receipt-types.js +2 -0
  8. package/dist/engine/document-receipt-types.js.map +1 -0
  9. package/dist/engine/document-receipt.d.ts +22 -0
  10. package/dist/engine/document-receipt.d.ts.map +1 -0
  11. package/dist/engine/document-receipt.js +262 -0
  12. package/dist/engine/document-receipt.js.map +1 -0
  13. package/dist/engine/guarded-create-types.d.ts +40 -0
  14. package/dist/engine/guarded-create-types.d.ts.map +1 -0
  15. package/dist/engine/guarded-create-types.js +2 -0
  16. package/dist/engine/guarded-create-types.js.map +1 -0
  17. package/dist/engine/guarded-create.d.ts +28 -0
  18. package/dist/engine/guarded-create.d.ts.map +1 -0
  19. package/dist/engine/guarded-create.js +100 -0
  20. package/dist/engine/guarded-create.js.map +1 -0
  21. package/dist/engine/index.d.ts +9 -0
  22. package/dist/engine/index.d.ts.map +1 -1
  23. package/dist/engine/index.js +78 -0
  24. package/dist/engine/index.js.map +1 -1
  25. package/dist/engine/writes.d.ts +13 -1
  26. package/dist/engine/writes.d.ts.map +1 -1
  27. package/dist/engine/writes.js +20 -11
  28. package/dist/engine/writes.js.map +1 -1
  29. package/dist/engine.d.ts +2 -0
  30. package/dist/engine.d.ts.map +1 -1
  31. package/dist/engine.js +1 -0
  32. package/dist/engine.js.map +1 -1
  33. package/dist/errors.d.ts +1 -1
  34. package/dist/errors.d.ts.map +1 -1
  35. package/dist/errors.js.map +1 -1
  36. package/dist/git/exact-blob.d.ts +17 -0
  37. package/dist/git/exact-blob.d.ts.map +1 -0
  38. package/dist/git/exact-blob.js +107 -0
  39. package/dist/git/exact-blob.js.map +1 -0
  40. package/dist/instance/pool.d.ts +10 -0
  41. package/dist/instance/pool.d.ts.map +1 -1
  42. package/dist/instance/pool.js +61 -7
  43. package/dist/instance/pool.js.map +1 -1
  44. package/dist/mcp/kinds.d.ts.map +1 -1
  45. package/dist/mcp/kinds.js +2 -0
  46. package/dist/mcp/kinds.js.map +1 -1
  47. package/dist/mcp/roles.d.ts.map +1 -1
  48. package/dist/mcp/roles.js +2 -1
  49. package/dist/mcp/roles.js.map +1 -1
  50. package/dist/mcp/server.d.ts.map +1 -1
  51. package/dist/mcp/server.js +5 -0
  52. package/dist/mcp/server.js.map +1 -1
  53. package/dist/mcp/tools/document-receipt.d.ts +12 -0
  54. package/dist/mcp/tools/document-receipt.d.ts.map +1 -0
  55. package/dist/mcp/tools/document-receipt.js +19 -0
  56. package/dist/mcp/tools/document-receipt.js.map +1 -0
  57. package/dist/mcp/tools/guarded-create.d.ts +28 -0
  58. package/dist/mcp/tools/guarded-create.d.ts.map +1 -0
  59. package/dist/mcp/tools/guarded-create.js +68 -0
  60. package/dist/mcp/tools/guarded-create.js.map +1 -0
  61. package/dist/mcp/with-session.d.ts +3 -0
  62. package/dist/mcp/with-session.d.ts.map +1 -1
  63. package/dist/mcp/with-session.js +131 -8
  64. package/dist/mcp/with-session.js.map +1 -1
  65. package/dist/schema/loader.d.ts +12 -1
  66. package/dist/schema/loader.d.ts.map +1 -1
  67. package/dist/schema/loader.js +48 -15
  68. package/dist/schema/loader.js.map +1 -1
  69. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"kinds.js","sourceRoot":"","sources":["../../src/mcp/kinds.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kinds.js","sourceRoot":"","sources":["../../src/mcp/kinds.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../src/mcp/roles.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,IAAI,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAmCjD,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAE/D;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAGvD;AAKD,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAE7D;AAGD,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAE9C;AAID,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAK/D"}
1
+ {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../src/mcp/roles.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,IAAI,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAoCjD,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAE/D;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAGvD;AAKD,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAE7D;AAGD,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAE9C;AAID,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAK/D"}
package/dist/mcp/roles.js CHANGED
@@ -2,6 +2,7 @@
2
2
  // MCP Roles — role definitions and tool filtering
3
3
  // ============================================================================
4
4
  const READER_TOOLS = [
5
+ 'maad_document_receipt', 'maad_create_contract',
5
6
  'maad_scan', 'maad_summary', 'maad_describe',
6
7
  'maad_get', 'maad_query', 'maad_search', 'maad_related', 'maad_relationship_paths', 'maad_schema', 'maad_aggregate', 'maad_join',
7
8
  'maad_verify', 'maad_find_orphans', 'maad_changes_since', 'maad_semantic_search',
@@ -10,7 +11,7 @@ const READER_TOOLS = [
10
11
  ];
11
12
  const WRITER_TOOLS = [
12
13
  ...READER_TOOLS,
13
- 'maad_create', 'maad_update', 'maad_validate', 'maad_bulk_create', 'maad_bulk_update',
14
+ 'maad_create_guarded', 'maad_create', 'maad_update', 'maad_validate', 'maad_bulk_create', 'maad_bulk_update',
14
15
  ];
15
16
  const ADMIN_TOOLS = [
16
17
  ...WRITER_TOOLS,
@@ -1 +1 @@
1
- {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/mcp/roles.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,kDAAkD;AAClD,+EAA+E;AAI/E,MAAM,YAAY,GAAG;IACnB,WAAW,EAAE,cAAc,EAAE,eAAe;IAC5C,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,yBAAyB,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW;IAChI,aAAa,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,sBAAsB;IAChF,cAAc,EAAE,YAAY;IAC5B,gBAAgB,EAAE,kBAAkB;CAC5B,CAAC;AAEX,MAAM,YAAY,GAAG;IACnB,GAAG,YAAY;IACf,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB;CAC7E,CAAC;AAEX,MAAM,WAAW,GAAG;IAClB,GAAG,YAAY;IACf,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa;IAC3D,sBAAsB;IACtB,oBAAoB;IACpB,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB;IAC5D,kBAAkB,EAAE,iBAAiB;IACrC,aAAa;IACb,YAAY;IACZ,sEAAsE;IACtE,kBAAkB,EAAE,mBAAmB,EAAE,yBAAyB;IAClE,mBAAmB;CACX,CAAC;AAEX,MAAM,UAAU,GAAoC;IAClD,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,WAAW;CACnB,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,IAAU;IACxC,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAuB;IAC/C,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,GAAG,CAAC;IACxE,OAAO,QAAQ,CAAC,CAAC,2BAA2B;AAC9C,CAAC;AAED,MAAM,SAAS,GAAyB,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAE3E,iEAAiE;AACjE,MAAM,UAAU,aAAa,CAAC,IAAU,EAAE,IAAU;IAClD,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,OAAO,CAAC,CAAO,EAAE,CAAO;IACtC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,6EAA6E;AAC7E,oDAAoD;AACpD,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,IAAK,YAAkC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5E,IAAK,YAAkC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5E,IAAK,WAAiC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAC;IAC1E,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/mcp/roles.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,kDAAkD;AAClD,+EAA+E;AAI/E,MAAM,YAAY,GAAG;IACnB,uBAAuB,EAAE,sBAAsB;IAC/C,WAAW,EAAE,cAAc,EAAE,eAAe;IAC5C,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,yBAAyB,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW;IAChI,aAAa,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,sBAAsB;IAChF,cAAc,EAAE,YAAY;IAC5B,gBAAgB,EAAE,kBAAkB;CAC5B,CAAC;AAEX,MAAM,YAAY,GAAG;IACnB,GAAG,YAAY;IACf,qBAAqB,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB;CACpG,CAAC;AAEX,MAAM,WAAW,GAAG;IAClB,GAAG,YAAY;IACf,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa;IAC3D,sBAAsB;IACtB,oBAAoB;IACpB,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB;IAC5D,kBAAkB,EAAE,iBAAiB;IACrC,aAAa;IACb,YAAY;IACZ,sEAAsE;IACtE,kBAAkB,EAAE,mBAAmB,EAAE,yBAAyB;IAClE,mBAAmB;CACX,CAAC;AAEX,MAAM,UAAU,GAAoC;IAClD,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,WAAW;CACnB,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,IAAU;IACxC,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAuB;IAC/C,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,GAAG,CAAC;IACxE,OAAO,QAAQ,CAAC,CAAC,2BAA2B;AAC9C,CAAC;AAED,MAAM,SAAS,GAAyB,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAE3E,iEAAiE;AACjE,MAAM,UAAU,aAAa,CAAC,IAAU,EAAE,IAAU;IAClD,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,OAAO,CAAC,CAAO,EAAE,CAAO;IACtC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,6EAA6E;AAC7E,oDAAoD;AACpD,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,IAAK,YAAkC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5E,IAAK,YAAkC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5E,IAAK,WAAiC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAC;IAC1E,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AA8CA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC;;;;OAIG;IACH,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,IAAI,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CACrC;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAuPnE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAgDA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC;;;;OAIG;IACH,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,IAAI,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CACrC;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA0PnE"}
@@ -31,6 +31,8 @@ import { existsSync } from 'node:fs';
31
31
  import path from 'node:path';
32
32
  import * as discoverTools from './tools/discover.js';
33
33
  import * as readTools from './tools/read.js';
34
+ import * as guardedCreateTools from './tools/guarded-create.js';
35
+ import * as documentReceiptTools from './tools/document-receipt.js';
34
36
  import * as writeTools from './tools/write.js';
35
37
  import * as auditTools from './tools/audit.js';
36
38
  import * as maintainTools from './tools/maintain.js';
@@ -133,9 +135,12 @@ export async function startServer(opts) {
133
135
  }
134
136
  toolCount += discoverTools.register(server, ctx);
135
137
  toolCount += readTools.register(server, ctx);
138
+ toolCount += documentReceiptTools.register(server, ctx);
139
+ toolCount += guardedCreateTools.registerContract(server, ctx);
136
140
  toolCount += auditTools.register(server, ctx);
137
141
  if (legacyRole === 'writer' || legacyRole === 'admin') {
138
142
  toolCount += writeTools.register(server, ctx);
143
+ toolCount += guardedCreateTools.registerWrite(server, ctx);
139
144
  }
140
145
  if (legacyRole === 'admin') {
141
146
  toolCount += maintainTools.register(server, ctx);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import type { InstanceCtx } from '../ctx.js';
4
+ export declare const documentReceiptInput: z.ZodObject<{
5
+ contract: z.ZodLiteral<"document-persistence-v1">;
6
+ project: z.ZodOptional<z.ZodString>;
7
+ docType: z.ZodString;
8
+ docId: z.ZodString;
9
+ expectedContentDigest: z.ZodOptional<z.ZodString>;
10
+ }, z.core.$strict>;
11
+ export declare function register(server: McpServer, ctx: InstanceCtx): number;
12
+ //# sourceMappingURL=document-receipt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-receipt.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/document-receipt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAI7C,eAAO,MAAM,oBAAoB;;;;;;kBAMtB,CAAC;AAEZ,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,CASpE"}
@@ -0,0 +1,19 @@
1
+ import { z } from 'zod';
2
+ import { withEngine } from '../with-session.js';
3
+ import { resultToResponse } from '../response.js';
4
+ export const documentReceiptInput = z.object({
5
+ contract: z.literal('document-persistence-v1'),
6
+ project: z.string().optional(),
7
+ docType: z.string().min(1).max(256),
8
+ docId: z.string().min(1).max(256),
9
+ expectedContentDigest: z.string().regex(/^[0-9a-f]{64}$/).optional(),
10
+ }).strict();
11
+ export function register(server, ctx) {
12
+ server.registerTool('maad_document_receipt', {
13
+ description: 'Read exact immutable committed document evidence from an already-bound, ready project. Does not prove operation completion or power-loss durability; no result authorizes create replay.',
14
+ inputSchema: documentReceiptInput,
15
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
16
+ }, async (args, extra) => withEngine(ctx, extra, 'maad_document_receipt', args, async ({ engine, projectName, signal }) => resultToResponse(await engine.documentReceipt(args, projectName, signal), 'maad_document_receipt')));
17
+ return 1;
18
+ }
19
+ //# sourceMappingURL=document-receipt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-receipt.js","sourceRoot":"","sources":["../../../src/mcp/tools/document-receipt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACjC,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE;CACrE,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,UAAU,QAAQ,CAAC,MAAiB,EAAE,GAAgB;IAC1D,MAAM,CAAC,YAAY,CAAC,uBAAuB,EAAE;QAC3C,WAAW,EAAE,0LAA0L;QACvM,WAAW,EAAE,oBAAoB;QACjC,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE;KAClF,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAC5E,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,gBAAgB,CACzD,MAAM,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;IACxF,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import type { InstanceCtx } from '../ctx.js';
4
+ export declare const createContractInput: z.ZodObject<{
5
+ contract: z.ZodLiteral<"create-contract-v1">;
6
+ docType: z.ZodString;
7
+ project: z.ZodOptional<z.ZodString>;
8
+ }, z.core.$strict>;
9
+ export declare const guardedCreateInput: z.ZodObject<{
10
+ contract: z.ZodLiteral<"guarded-create-v1">;
11
+ docType: z.ZodString;
12
+ docId: z.ZodString;
13
+ fields: z.ZodRecord<z.ZodString, z.ZodUnknown>;
14
+ body: z.ZodString;
15
+ expectedSchemaDigest: z.ZodString;
16
+ expectedContentDigest: z.ZodString;
17
+ allowedHistoryModes: z.ZodArray<z.ZodEnum<{
18
+ audit: "audit";
19
+ feed: "feed";
20
+ read: "read";
21
+ batch: "batch";
22
+ snapshot: "snapshot";
23
+ }>>;
24
+ project: z.ZodOptional<z.ZodString>;
25
+ }, z.core.$strict>;
26
+ export declare function registerContract(server: McpServer, ctx: InstanceCtx): number;
27
+ export declare function registerWrite(server: McpServer, ctx: InstanceCtx): number;
28
+ //# sourceMappingURL=guarded-create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guarded-create.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/guarded-create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAW7C,eAAO,MAAM,mBAAmB;;;;kBAAkF,CAAC;AACnH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;kBAAiF,CAAC;AAEjH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,CAY5E;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,CAoCzE"}
@@ -0,0 +1,68 @@
1
+ import { z } from 'zod';
2
+ import { withEngine } from '../with-session.js';
3
+ import { createContractRequestSchema, guardedCreateRequestSchema } from '../../engine/guarded-create.js';
4
+ import { resultToResponse, errorResponse, attachWarnings, attachDurability } from '../response.js';
5
+ import { maadError } from '../../errors.js';
6
+ import { isDryRun, dryRunResponse, auditToolCall } from '../guardrails.js';
7
+ import { getRateLimiter } from '../rate-limit.js';
8
+ import { logWriteAudit, logValidationWarning } from '../../logging.js';
9
+ import { notifyWrite } from '../notifications.js';
10
+ export const createContractInput = createContractRequestSchema.extend({ project: z.string().optional() }).strict();
11
+ export const guardedCreateInput = guardedCreateRequestSchema.extend({ project: z.string().optional() }).strict();
12
+ export function registerContract(server, ctx) {
13
+ server.registerTool('maad_create_contract', {
14
+ description: 'Read a complete versioned schema contract and effective history mode from an already-bound ready project.',
15
+ inputSchema: createContractInput,
16
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
17
+ }, async (args, extra) => withEngine(ctx, extra, 'maad_create_contract', args, async (call) => {
18
+ return resultToResponse(await call.engine.createContract({ contract: args.contract, docType: args.docType }, {
19
+ ...(call.signal ? { signal: call.signal } : {}),
20
+ ...(call.validateAccess ? { validateAccess: call.validateAccess } : {}),
21
+ }), 'maad_create_contract');
22
+ }));
23
+ return 1;
24
+ }
25
+ export function registerWrite(server, ctx) {
26
+ server.registerTool('maad_create_guarded', {
27
+ description: 'Create exact expected content only if the complete schema, history policy and current write access match. After uncertain outcomes reconcile by document receipt; never automatically replay.',
28
+ inputSchema: guardedCreateInput,
29
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false },
30
+ }, async (args, extra) => withEngine(ctx, extra, 'maad_create_guarded', args, async (call) => {
31
+ const denied = call.validateAccess?.();
32
+ if (denied)
33
+ return errorResponse([denied]);
34
+ const limit = getRateLimiter().tryAcquireWrite(call.sessionId);
35
+ if (limit)
36
+ return errorResponse([maadError('RATE_LIMITED', 'Write rate limit exceeded', undefined, { ...limit })]);
37
+ auditToolCall('maad_create_guarded', args);
38
+ if (isDryRun())
39
+ return dryRunResponse('maad_create_guarded', args);
40
+ const { project: _project, ...request } = args;
41
+ const result = await call.engine.createGuarded(request, {
42
+ ...(call.signal ? { signal: call.signal } : {}),
43
+ ...(call.validateAccess ? { validateAccess: call.validateAccess } : {}),
44
+ });
45
+ const response = resultToResponse(result, 'maad_create_guarded');
46
+ if (!result.ok)
47
+ return response;
48
+ const value = result.value;
49
+ logWriteAudit({ request_id: call.requestId, session_id: call.sessionId, project: call.projectName,
50
+ tool: 'maad_create_guarded', doc_id: args.docId, doc_type: args.docType, version_before: null,
51
+ version_after: value.version, changed_fields: [], git_commit: null, role: call.role,
52
+ ...(call.token ? { token_id: call.token.id,
53
+ ...(call.token.agentId ? { agent_id: call.token.agentId } : {}),
54
+ ...(call.token.userId ? { user_id: call.token.userId } : {}) } : {}),
55
+ });
56
+ for (const warning of value.validation.warnings ?? [])
57
+ logValidationWarning({
58
+ request_id: call.requestId, session_id: call.sessionId, project: call.projectName,
59
+ tool: 'maad_create_guarded', doc_id: args.docId, doc_type: args.docType, ...warning,
60
+ });
61
+ if (value.writeDurable)
62
+ await notifyWrite(ctx, { action: 'create', docId: args.docId,
63
+ docType: args.docType, project: call.projectName, updatedAt: new Date().toISOString() });
64
+ return attachDurability(attachWarnings(response, value.validation.warnings), value.writeDurable, value.commitFailure);
65
+ }));
66
+ return 1;
67
+ }
68
+ //# sourceMappingURL=guarded-create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guarded-create.js","sourceRoot":"","sources":["../../../src/mcp/tools/guarded-create.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
1
  import type { MaadEngine } from '../engine.js';
2
+ import type { MaadError } from '../errors.js';
2
3
  import type { InstanceCtx } from './ctx.js';
3
4
  interface CallContext {
5
+ signal?: AbortSignal;
6
+ validateAccess?: () => MaadError | null;
4
7
  engine: MaadEngine;
5
8
  projectName: string;
6
9
  projectRoot: string;
@@ -1 +1 @@
1
- {"version":3,"file":"with-session.d.ts","sourceRoot":"","sources":["../../src/mcp/with-session.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAoB5C,UAAU,WAAW;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,kBAAkB,EAAE,WAAW,CAAC;CAChD;AAED,KAAK,eAAe,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AAa1E,wBAAsB,UAAU,CAC9B,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACzC,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,GACzE,OAAO,CAAC,eAAe,CAAC,CA4Q1B"}
1
+ {"version":3,"file":"with-session.d.ts","sourceRoot":"","sources":["../../src/mcp/with-session.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAsB5C,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC;IACxC,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,kBAAkB,EAAE,WAAW,CAAC;CAChD;AAED,KAAK,eAAe,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AAa1E,wBAAsB,UAAU,CAC9B,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACzC,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,GACzE,OAAO,CAAC,eAAe,CAAC,CAgX1B"}
@@ -22,6 +22,8 @@ import { isShuttingDown } from './shutdown.js';
22
22
  import { getKindForTool, isEngineLess } from './kinds.js';
23
23
  import { getHeavyOpGuard, heavyOpKey } from './heavy-ops.js';
24
24
  import { isCommitIdentityEnabled } from '../git/commit.js';
25
+ import { composeEffectiveRole } from '../auth/resolve.js';
26
+ import { responseMaxBytes } from './response.js';
25
27
  const DEFAULT_REQUEST_TIMEOUT_MS = 30_000;
26
28
  function getRequestTimeoutMs() {
27
29
  const env = process.env.MAAD_REQUEST_TIMEOUT_MS;
@@ -41,6 +43,8 @@ function getRequestTimeoutMs() {
41
43
  // concurrent). All of them flow through `finalize()` so every response — success
42
44
  // or rejection — is logged uniformly.
43
45
  export async function withEngine(ctx, extra, toolName, args, handler) {
46
+ const guarded = toolName === 'maad_create_guarded';
47
+ const strictReady = guarded || toolName === 'maad_create_contract' || toolName === 'maad_document_receipt';
44
48
  const requestId = randomUUID();
45
49
  const startedMs = Date.now();
46
50
  const sessionId = resolveSessionId(extra);
@@ -54,7 +58,10 @@ export async function withEngine(ctx, extra, toolName, args, handler) {
54
58
  // — emission only affects the wire response, not diagnostics.
55
59
  const emitRequestId = process.env.MAAD_EMIT_REQUEST_ID === 'true';
56
60
  const finalize = (response) => {
57
- const stamped = emitRequestId ? attachMeta(response, { request_id: requestId }) : response;
61
+ let stamped = emitRequestId ? attachMeta(response, { request_id: requestId }) : response;
62
+ if (strictReady && Buffer.byteLength(JSON.stringify(stamped), 'utf8') > Math.min(1024 * 1024, responseMaxBytes())) {
63
+ stamped = mcpError('RESPONSE_TOO_LARGE', 'Complete receipt response exceeds response cap');
64
+ }
58
65
  const latencyMs = Date.now() - startedMs;
59
66
  const { result, errorCode } = inspectResponse(stamped);
60
67
  logToolCall({
@@ -75,6 +82,8 @@ export async function withEngine(ctx, extra, toolName, args, handler) {
75
82
  return finalize(mcpError('SHUTTING_DOWN', 'Server is shutting down; retry against a healthy instance.'));
76
83
  }
77
84
  let state = ctx.sessions.get(sessionId);
85
+ if (strictReady && !state)
86
+ return finalize(mcpError('SESSION_UNBOUND', 'Receipt requires an already-bound session'));
78
87
  if (!state)
79
88
  state = ctx.sessions.create(sessionId);
80
89
  // Session cancelled by instance-reload (its bound project was removed, or
@@ -86,7 +95,7 @@ export async function withEngine(ctx, extra, toolName, args, handler) {
86
95
  return finalize(mcpError('SESSION_CANCELLED', `Session was cancelled because its bound project "${boundProject}" was removed by an instance reload. Reconnect to continue.`));
87
96
  }
88
97
  // Legacy single-project instance: auto-bind to 'default' on first call.
89
- if (state.mode === null && ctx.instance.source === 'synthetic') {
98
+ if (!strictReady && state.mode === null && ctx.instance.source === 'synthetic') {
90
99
  const bindResult = ctx.sessions.bindSingle(sessionId, 'default');
91
100
  if (!bindResult.ok)
92
101
  return finalize(errorResponse(bindResult.errors));
@@ -96,6 +105,9 @@ export async function withEngine(ctx, extra, toolName, args, handler) {
96
105
  return finalize(mcpError('SESSION_UNBOUND', 'No project bound for this session. Call maad_use_project(s) first.'));
97
106
  }
98
107
  // Pick project
108
+ if (strictReady && state.mode === 'single' && args?.project !== undefined && args.project !== state.activeProject) {
109
+ return finalize(mcpError('PROJECT_NOT_WHITELISTED', 'Receipt project differs from the bound project'));
110
+ }
99
111
  const projectName = resolveProjectName(state, args);
100
112
  if (typeof projectName !== 'string')
101
113
  return finalize(projectName); // error response
@@ -110,6 +122,49 @@ export async function withEngine(ctx, extra, toolName, args, handler) {
110
122
  if (minRole && !roleSatisfies(effectiveRole, minRole)) {
111
123
  return finalize(mcpError('INSUFFICIENT_ROLE', `Tool ${toolName} requires role "${minRole}" but session has "${effectiveRole}" for project "${projectName}".`));
112
124
  }
125
+ // Receipt reuses session role checks and the existing token/project cap resolver.
126
+ // Re-read live records rather than treating the bind-time snapshot as authority.
127
+ const boundState = state;
128
+ const boundToken = state.token;
129
+ const boundTokenHash = boundToken?.hash;
130
+ const boundTokenId = boundToken?.id;
131
+ const boundMode = state.mode;
132
+ const requiredLiveRole = guarded ? 'writer' : 'reader';
133
+ const currentReceiptAccess = () => {
134
+ const current = ctx.sessions.peek(sessionId);
135
+ if (current !== boundState || current.cancelled)
136
+ return mcpError('SESSION_CANCELLED', 'Receipt session is no longer active');
137
+ const selected = resolveProjectName(current, args);
138
+ if (current.mode !== boundMode || (current.mode === 'single' && current.activeProject !== projectName) || selected !== projectName)
139
+ return mcpError('PROJECT_NOT_WHITELISTED', 'Receipt project binding changed');
140
+ const role = current.effectiveRoles.get(projectName);
141
+ const project = ctx.pool.getInstance().projects.find(p => p.name === projectName);
142
+ if (!project || !role || !roleSatisfies(role, requiredLiveRole) || !roleSatisfies(project.role, requiredLiveRole)) {
143
+ return mcpError('INSUFFICIENT_ROLE', 'Current receipt read access is unavailable');
144
+ }
145
+ if (ctx.tokens || boundToken) {
146
+ if (!ctx.tokens || !boundToken || current.token?.hash !== boundTokenHash)
147
+ return mcpError('TOKEN_UNKNOWN', 'Receipt token is unavailable');
148
+ const token = ctx.tokens.lookupByHash(boundTokenHash);
149
+ if (!token || token.id !== boundTokenId)
150
+ return mcpError('TOKEN_UNKNOWN', 'Receipt token is unavailable');
151
+ if (token.revokedAt !== undefined)
152
+ return mcpError('TOKEN_REVOKED', 'Receipt token was revoked');
153
+ if (token.expiresAt !== undefined && !(Date.parse(token.expiresAt) > Date.now()))
154
+ return mcpError('TOKEN_EXPIRED', 'Receipt token expired');
155
+ const access = composeEffectiveRole(project.role, token, projectName);
156
+ if (!access.ok)
157
+ return mcpError(access.code, access.message);
158
+ if (!roleSatisfies(access.role, requiredLiveRole))
159
+ return mcpError('INSUFFICIENT_ROLE', 'Receipt read access is unavailable');
160
+ }
161
+ return null;
162
+ };
163
+ if (strictReady) {
164
+ const denied = currentReceiptAccess();
165
+ if (denied)
166
+ return finalize(denied);
167
+ }
113
168
  // Payload size cap. Oversize args are rejected without touching the engine.
114
169
  const rl = getRateLimiter();
115
170
  const payloadRejection = rl.checkPayloadSize(payloadBytes);
@@ -132,10 +187,18 @@ export async function withEngine(ctx, extra, toolName, args, handler) {
132
187
  }));
133
188
  }
134
189
  let acquiredProject = null;
190
+ let readyReference = null;
191
+ let receiptIsCurrent = null;
192
+ let receiptOwnsSlot = false;
135
193
  let recoveryEngine = null;
136
194
  try {
137
195
  // Resolve engine
138
- const poolResult = await ctx.pool.get(projectName, {
196
+ const ready = strictReady ? ctx.pool.acquireReadyReference(projectName) : null;
197
+ if (ready && !ready.ok)
198
+ return finalize(errorResponse(ready.errors));
199
+ if (ready?.ok)
200
+ readyReference = ready.value;
201
+ const poolResult = readyReference ? { ok: true, value: readyReference.engine } : await ctx.pool.get(projectName, {
139
202
  allowEmptyIndexRecovery: toolName === 'maad_reindex',
140
203
  });
141
204
  if (!poolResult.ok)
@@ -144,8 +207,10 @@ export async function withEngine(ctx, extra, toolName, args, handler) {
144
207
  recoveryEngine = poolResult.value;
145
208
  // 0.7.3 — refcount the engine for the duration of this handler so the
146
209
  // idle sweeper cannot evict mid-call. Released in finally below.
147
- ctx.pool.acquire(projectName);
148
- acquiredProject = projectName;
210
+ if (!strictReady) {
211
+ ctx.pool.acquire(projectName);
212
+ acquiredProject = projectName;
213
+ }
149
214
  const project = ctx.instance.projects.find((p) => p.name === projectName);
150
215
  // Operation kind dispatch. Reads invoke the handler directly; writes
151
216
  // acquire the per-engine write mutex via engine.runExclusive so
@@ -164,6 +229,14 @@ export async function withEngine(ctx, extra, toolName, args, handler) {
164
229
  // delayed `tool_call_overrun` log line so operators can see what the
165
230
  // slow work was doing.
166
231
  const timeoutMs = getRequestTimeoutMs();
232
+ const receiptAbort = strictReady ? new AbortController() : null;
233
+ const externalSignal = extra?.signal;
234
+ const onAbort = () => receiptAbort?.abort();
235
+ if (receiptAbort) {
236
+ externalSignal?.addEventListener('abort', onAbort, { once: true });
237
+ if (externalSignal?.aborted)
238
+ receiptAbort.abort();
239
+ }
167
240
  const callCtx = {
168
241
  engine: poolResult.value,
169
242
  projectName,
@@ -174,6 +247,21 @@ export async function withEngine(ctx, extra, toolName, args, handler) {
174
247
  };
175
248
  if (state.token !== undefined)
176
249
  callCtx.token = state.token;
250
+ if (receiptAbort)
251
+ callCtx.signal = receiptAbort.signal;
252
+ if (strictReady) {
253
+ const retained = readyReference;
254
+ callCtx.validateAccess = () => {
255
+ const denied = currentReceiptAccess();
256
+ if (denied)
257
+ return JSON.parse(denied.content[0].text).errors[0];
258
+ if (receiptAbort?.signal.aborted)
259
+ return { code: 'REQUEST_TIMEOUT', message: 'Strict operation cancelled' };
260
+ if (!retained.isCurrent())
261
+ return { code: 'CREATE_ENGINE_NOT_READY', message: 'Bound engine changed during admission' };
262
+ return null;
263
+ };
264
+ }
177
265
  const invokeHandler = () => Promise.resolve(handler(callCtx));
178
266
  // 0.7.0 — For writes under an authenticated session with the identity
179
267
  // flag on, set the engine's pending commit-identity slot inside the
@@ -216,12 +304,14 @@ export async function withEngine(ctx, extra, toolName, args, handler) {
216
304
  }
217
305
  }
218
306
  const runDispatch = () => kind === 'write'
219
- ? poolResult.value.runExclusive(toolName, runWithIdentity)
307
+ ? guarded
308
+ ? poolResult.value.runGuardedExclusive(runWithIdentity)
309
+ : poolResult.value.runExclusive(toolName, runWithIdentity)
220
310
  : invokeHandler();
221
311
  // For heavy ops, the single-flight leader also takes a process-global
222
312
  // concurrency slot (followers share its result and take none). At the cap,
223
313
  // shed with retryable OVERLOADED instead of piling onto the heap.
224
- const handlerPromise = heavy
314
+ let handlerPromise = heavy
225
315
  ? guard.runCoalesced(heavyOpKey(projectName, toolName, args), async () => {
226
316
  const slot = guard.tryAcquireConcurrencySlot();
227
317
  if (!slot.ok) {
@@ -239,11 +329,34 @@ export async function withEngine(ctx, extra, toolName, args, handler) {
239
329
  }
240
330
  })
241
331
  : runDispatch();
332
+ if (strictReady && readyReference) {
333
+ const retained = readyReference;
334
+ receiptIsCurrent = retained.isCurrent;
335
+ receiptOwnsSlot = true;
336
+ readyReference = null;
337
+ handlerPromise = handlerPromise.then(response => {
338
+ if (guarded)
339
+ return response;
340
+ const denied = currentReceiptAccess();
341
+ if (denied)
342
+ return denied;
343
+ if (receiptAbort?.signal.aborted)
344
+ return mcpError('REQUEST_TIMEOUT', 'Receipt observation cancelled');
345
+ if (!retained.isCurrent())
346
+ return mcpError('RECEIPT_ENGINE_NOT_READY', 'Receipt engine changed during observation');
347
+ return response;
348
+ }).finally(() => {
349
+ externalSignal?.removeEventListener('abort', onAbort);
350
+ retained.release();
351
+ slot.release();
352
+ });
353
+ }
242
354
  let timedOut = false;
243
355
  let timeoutHandle = null;
244
356
  const timeoutPromise = new Promise((resolve) => {
245
357
  timeoutHandle = setTimeout(() => {
246
358
  timedOut = true;
359
+ receiptAbort?.abort();
247
360
  resolve(mcpErrorWithDetails('REQUEST_TIMEOUT', `Tool ${toolName} exceeded per-request timeout of ${timeoutMs}ms`, { tool: toolName, limitMs: timeoutMs }));
248
361
  }, timeoutMs);
249
362
  // Don't keep the event loop alive for a pending request timer —
@@ -269,10 +382,20 @@ export async function withEngine(ctx, extra, toolName, args, handler) {
269
382
  getOpsLog().warn({ event: 'tool_call_overrun', request_id: requestId, tool: toolName, limit_ms: timeoutMs, error: String(err) }, 'tool_call_overrun');
270
383
  });
271
384
  }
385
+ if (strictReady && !guarded) {
386
+ const denied = currentReceiptAccess();
387
+ if (denied)
388
+ return finalize(denied);
389
+ if (!timedOut && receiptIsCurrent && !receiptIsCurrent()) {
390
+ return finalize(mcpError('RECEIPT_ENGINE_NOT_READY', 'Receipt engine changed during observation'));
391
+ }
392
+ }
272
393
  return finalize(response);
273
394
  }
274
395
  finally {
275
- slot.release();
396
+ readyReference?.release();
397
+ if (!receiptOwnsSlot)
398
+ slot.release();
276
399
  // 0.7.3 — release engine refcount. Paired with acquiredProject above;
277
400
  // null when pool.get failed and acquire was never called.
278
401
  if (acquiredProject !== null)