@memoarchitect/tools 0.6.3 → 0.6.5

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 (89) hide show
  1. package/README.md +1 -1
  2. package/package.json +2 -2
  3. package/packages/tools/lib/bin/memo.js +38 -2
  4. package/packages/tools/lib/bin/memo.js.map +1 -1
  5. package/packages/tools/lib/browser/index.d.ts +3 -0
  6. package/packages/tools/lib/browser/index.d.ts.map +1 -1
  7. package/packages/tools/lib/commands/dev.d.ts.map +1 -1
  8. package/packages/tools/lib/commands/dev.js +4 -1
  9. package/packages/tools/lib/commands/dev.js.map +1 -1
  10. package/packages/tools/lib/commands/init.d.ts +2 -0
  11. package/packages/tools/lib/commands/init.d.ts.map +1 -1
  12. package/packages/tools/lib/commands/init.js +32 -16
  13. package/packages/tools/lib/commands/init.js.map +1 -1
  14. package/packages/tools/lib/commands/mcp.d.ts +15 -0
  15. package/packages/tools/lib/commands/mcp.d.ts.map +1 -0
  16. package/packages/tools/lib/commands/mcp.js +128 -0
  17. package/packages/tools/lib/commands/mcp.js.map +1 -0
  18. package/packages/tools/lib/commands/validate.js +1 -1
  19. package/packages/tools/lib/commands/validate.js.map +1 -1
  20. package/packages/tools/lib/index.d.ts.map +1 -1
  21. package/packages/tools/lib/index.js +4 -0
  22. package/packages/tools/lib/index.js.map +1 -1
  23. package/packages/tools/lib/llm/chat-engine.d.ts +97 -0
  24. package/packages/tools/lib/llm/chat-engine.d.ts.map +1 -0
  25. package/packages/tools/lib/llm/chat-engine.js +463 -0
  26. package/packages/tools/lib/llm/chat-engine.js.map +1 -0
  27. package/packages/tools/lib/llm/index.d.ts +2 -0
  28. package/packages/tools/lib/llm/index.d.ts.map +1 -1
  29. package/packages/tools/lib/llm/index.js +2 -0
  30. package/packages/tools/lib/llm/index.js.map +1 -1
  31. package/packages/tools/lib/llm/llm-provider.d.ts +40 -4
  32. package/packages/tools/lib/llm/llm-provider.d.ts.map +1 -1
  33. package/packages/tools/lib/llm/llm-provider.js +180 -37
  34. package/packages/tools/lib/llm/llm-provider.js.map +1 -1
  35. package/packages/tools/lib/llm/llm-settings.d.ts +84 -0
  36. package/packages/tools/lib/llm/llm-settings.d.ts.map +1 -0
  37. package/packages/tools/lib/llm/llm-settings.js +249 -0
  38. package/packages/tools/lib/llm/llm-settings.js.map +1 -0
  39. package/packages/tools/lib/mcp/index.d.ts +4 -0
  40. package/packages/tools/lib/mcp/index.d.ts.map +1 -0
  41. package/packages/tools/lib/mcp/index.js +9 -0
  42. package/packages/tools/lib/mcp/index.js.map +1 -0
  43. package/packages/tools/lib/mcp/model-loader.d.ts +11 -0
  44. package/packages/tools/lib/mcp/model-loader.d.ts.map +1 -0
  45. package/packages/tools/lib/mcp/model-loader.js +87 -0
  46. package/packages/tools/lib/mcp/model-loader.js.map +1 -0
  47. package/packages/tools/lib/mcp/server.d.ts +8 -0
  48. package/packages/tools/lib/mcp/server.d.ts.map +1 -0
  49. package/packages/tools/lib/mcp/server.js +132 -0
  50. package/packages/tools/lib/mcp/server.js.map +1 -0
  51. package/packages/tools/lib/mcp/tools.d.ts +18 -0
  52. package/packages/tools/lib/mcp/tools.d.ts.map +1 -0
  53. package/packages/tools/lib/mcp/tools.js +220 -0
  54. package/packages/tools/lib/mcp/tools.js.map +1 -0
  55. package/packages/tools/lib/model/builder.js +8 -2
  56. package/packages/tools/lib/model/builder.js.map +1 -1
  57. package/packages/tools/lib/model/config.d.ts +6 -0
  58. package/packages/tools/lib/model/config.d.ts.map +1 -1
  59. package/packages/tools/lib/model/semantic.d.ts +6 -0
  60. package/packages/tools/lib/model/semantic.d.ts.map +1 -1
  61. package/packages/tools/lib/model/semantic.js.map +1 -1
  62. package/packages/tools/lib/model/view-deriver.d.ts +3 -2
  63. package/packages/tools/lib/model/view-deriver.d.ts.map +1 -1
  64. package/packages/tools/lib/model/view-deriver.js +61 -20
  65. package/packages/tools/lib/model/view-deriver.js.map +1 -1
  66. package/packages/tools/lib/operations/project-snapshot.d.ts.map +1 -1
  67. package/packages/tools/lib/operations/project-snapshot.js +2 -1
  68. package/packages/tools/lib/operations/project-snapshot.js.map +1 -1
  69. package/packages/tools/lib/protocol/messages.d.ts +106 -2
  70. package/packages/tools/lib/protocol/messages.d.ts.map +1 -1
  71. package/packages/tools/lib/server/dev-server.d.ts.map +1 -1
  72. package/packages/tools/lib/server/dev-server.js +205 -11
  73. package/packages/tools/lib/server/dev-server.js.map +1 -1
  74. package/packages/tools/lib/server/dhf-doc-store.d.ts +2 -0
  75. package/packages/tools/lib/server/dhf-doc-store.d.ts.map +1 -1
  76. package/packages/tools/lib/server/dhf-doc-store.js +31 -8
  77. package/packages/tools/lib/server/dhf-doc-store.js.map +1 -1
  78. package/packages/tools/lib/validator/constraint-eval.d.ts +3 -2
  79. package/packages/tools/lib/validator/constraint-eval.d.ts.map +1 -1
  80. package/packages/tools/lib/validator/constraint-eval.js +31 -5
  81. package/packages/tools/lib/validator/constraint-eval.js.map +1 -1
  82. package/packages/tools/lib/validator/rule-engine.d.ts +2 -1
  83. package/packages/tools/lib/validator/rule-engine.d.ts.map +1 -1
  84. package/packages/tools/lib/validator/rule-engine.js +2 -2
  85. package/packages/tools/lib/validator/rule-engine.js.map +1 -1
  86. package/packages/tools/lib/validator/view-validator.d.ts +1 -0
  87. package/packages/tools/lib/validator/view-validator.d.ts.map +1 -1
  88. package/packages/tools/lib/validator/view-validator.js +19 -4
  89. package/packages/tools/lib/validator/view-validator.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,sEAAsE;AACtE,oCAAoC;AACpC,gFAAgF;AAEhF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAY,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAErI,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;GAEG;AACH,SAAS,cAAc,CAAC,GAAW;IAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACjF,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;YACxC,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACL,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,0BAA0B;IAC9B,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,UAAmB,EAAE,OAAsD;IAC7G,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC;IACzC,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAEhD,iBAAiB;IACjB,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC,CAAC;IAEjD,6BAA6B;IAC7B,MAAM,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IAElF,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QACpE,IAAI,QAAQ,KAAK,UAAU;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;QACxG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,0BAA0B;IAC1B,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,SAAS,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,SAAS,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7G,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,qBAAqB,CAAC,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAExI,0EAA0E;IAC1E,IAAI,kBAAiD,CAAC;IACtD,IAAI,iBAAiB,GAAqB,EAAE,CAAC;IAC7C,IAAI,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,UAAU,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YAC3B,kBAAkB,GAAG,UAAU,CAAC,UAAU,CAAC;YAC3C,iBAAiB,GAAG,UAAU,CAAC,eAAe,CAAC;YAC/C,MAAM,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC;YAC9C,MAAM,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,oBAAoB,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAClB,aAAa,EAAE,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,IAAI,CAAC,iBAAiB;gBACnE,SAAS,UAAU,CAAC,SAAS,eAAe,CAC/C,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2CAA2C,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/G,CAAC;IAED,sBAAsB;IACtB,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAC1D,OAAO;IACX,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,UAAU,CAAC,MAAM,iBAAiB,CAAC,CAAC,CAAC;IAEtE,WAAW;IACX,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;IACnF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QACrE,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,iBAAiB;IACjB,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,QAAQ,CAAC,IAAI,cAAc,KAAK,CAAC,aAAa,CAAC,MAAM,kBAAkB,CAAC,CAAC,CAAC;IAEjH,yFAAyF;IACzF,uFAAuF;IACvF,4DAA4D;IAC5D,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,CAAC,GAAG,iBAAiB,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;IACzF,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,iBAAiB,CAAC,MAAM,+BAA+B,CAAC,CAAC,CAAC;IAC5G,CAAC;IACD,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC;IACzF,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhE,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;IAEnE,4EAA4E;IAE5E,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC;QAC9E,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YAClB,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC5C,OAAO;IACX,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,UAAU,GAAG;YACf,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE;gBACL,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI;gBAC7B,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,MAAM;gBACzC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM;gBACpC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,QAAQ,CAAC,MAAM;gBACzB,KAAK,EAAE,KAAK,CAAC,MAAM;gBACnB,YAAY,EAAE,YAAY,CAAC,OAAO;aACrC;YACD,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpC,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;aAC7B,CAAC,CAAC;YACH,YAAY,EAAE;gBACV,OAAO,EAAE,YAAY,CAAC,OAAO;gBAC7B,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;gBAC/C,aAAa,EAAE,YAAY,CAAC,aAAa;gBACzC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAClC,EAAE,EAAE,CAAC,CAAC,OAAO;oBACb,KAAK,EAAE,CAAC,CAAC,UAAU;oBACnB,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,QAAQ,EAAE,CAAC,CAAC,gBAAgB;oBAC5B,KAAK,EAAE,CAAC,CAAC,aAAa;iBACzB,CAAC,CAAC;aACN;SACJ,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YAClB,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC5C,OAAO;IACX,CAAC;IAED,4EAA4E;IAE5E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QAC1D,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACpG,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QACjE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACvG,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACrG,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAClD,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC;YAAE,SAAS;QACxC,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;QAC7B,MAAM,KAAK,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;IACzI,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IACtH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,YAAY,CAAC,YAAY,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,YAAY,CAAC,gBAAgB,IAAI,YAAY,CAAC,aAAa,qBAAqB,CAAC,CAAC,CAAC;IACnK,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,cAAc,eAAe,MAAM,CAAC,WAAW,YAAY,MAAM,CAAC,UAAU,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC;IAE7I,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACzB,CAAC;AACL,CAAC;AAED,gFAAgF;AAEhF,SAAS,aAAa,CAClB,MAAwC,EACxC,YAAoD,EACpD,WAAmB;IAEnB,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE3H,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;IACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/B,MAAM,OAAO,GAAG,CAAC,CAAC;IAElB,MAAM,KAAK,GAAa;QACpB,wCAAwC;QACxC,qBAAqB,MAAM,CAAC,WAAW,CAAC,YAAY,QAAQ,eAAe,QAAQ,yBAAyB,OAAO,gBAAgB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI;QAC/J,4CAA4C,QAAQ,eAAe,QAAQ,yBAAyB,OAAO,IAAI;QAC/G,kBAAkB;QAClB,8CAA8C,YAAY,CAAC,OAAO,OAAO;QACzE,0CAA0C,YAAY,CAAC,aAAa,MAAM;QAC1E,0CAA0C,QAAQ,CAAC,MAAM,MAAM;QAC/D,mBAAmB;KACtB,CAAC;IAEF,qCAAqC;IACrC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;QAE1D,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,4BAA4B,SAAS,WAAW,QAAQ,IAAI,CAAC,CAAC;YACzE,KAAK,CAAC,IAAI,CAAC,2BAA2B,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;YACpF,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACxI,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,4BAA4B,SAAS,WAAW,QAAQ,IAAI,CAAC,CAAC;YACzE,KAAK,CAAC,IAAI,CAAC,8BAA8B,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YAC/E,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACJ,KAAK,CAAC,IAAI,CAAC,4BAA4B,SAAS,WAAW,QAAQ,MAAM,CAAC,CAAC;QAC/E,CAAC;IACL,CAAC;IAED,yCAAyC;IACzC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACvC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,2CAA2C,WAAW,sCAAsC,CAAC,CAAC;IAC7G,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAE5B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACnC,CAAC;AAED,SAAS,OAAO,CAAC,GAAW,EAAE,QAAgB,EAAE;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;IAC7C,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;AAC3D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAKhD,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,mBAAmB,IAAI,uBAAuB,EACnD,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,UAAU,GAClB,MAAM,mBAAmB,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAG5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAG1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAGhD,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AAGxC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAKhD,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,mBAAmB,IAAI,uBAAuB,EACnD,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,UAAU,GAClB,MAAM,mBAAmB,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAG5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAG1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAGhD,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AAGxC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,mBAAmB,CAAC;AAQlC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,uBAAuB,CAAC"}
@@ -49,6 +49,10 @@ export * from './dhf/index.js';
49
49
  export * from './llm/index.js';
50
50
  // ─── Plugin System ──────────────────────────────────────────────────────────
51
51
  export * from './plugin/index.js';
52
+ // The MCP server is intentionally NOT re-exported here. It depends on
53
+ // server/persistor, which imports this module by package name — routing it
54
+ // through the public index would close a runtime import cycle. `memo mcp`
55
+ // imports src/mcp/server.js directly instead.
52
56
  // ─── Protocol (WebSocket messages) ──────────────────────────────────────────
53
57
  export * from './protocol/messages.js';
54
58
  // ─── OWL Export ─────────────────────────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,+EAA+E;AAC/E,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAoBhD,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAE5C,+EAA+E;AAC/E,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAE1C,gFAAgF;AAChF,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAElC,+EAA+E;AAC/E,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAEhD,gFAAgF;AAChF,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AAExC,8EAA8E;AAC9E,cAAc,qBAAqB,CAAC;AAEpC,+EAA+E;AAC/E,cAAc,gBAAgB,CAAC;AAE/B,+EAA+E;AAC/E,cAAc,gBAAgB,CAAC;AAE/B,+EAA+E;AAC/E,cAAc,mBAAmB,CAAC;AAElC,+EAA+E;AAC/E,cAAc,wBAAwB,CAAC;AAEvC,+EAA+E;AAC/E,cAAc,4BAA4B,CAAC;AAE3C,8EAA8E;AAC9E,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,+EAA+E;AAC/E,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAoBhD,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAE5C,+EAA+E;AAC/E,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAE1C,gFAAgF;AAChF,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAElC,+EAA+E;AAC/E,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAEhD,gFAAgF;AAChF,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AAExC,8EAA8E;AAC9E,cAAc,qBAAqB,CAAC;AAEpC,+EAA+E;AAC/E,cAAc,gBAAgB,CAAC;AAE/B,+EAA+E;AAC/E,cAAc,gBAAgB,CAAC;AAE/B,+EAA+E;AAC/E,cAAc,mBAAmB,CAAC;AAElC,sEAAsE;AACtE,2EAA2E;AAC3E,0EAA0E;AAC1E,8CAA8C;AAE9C,+EAA+E;AAC/E,cAAc,wBAAwB,CAAC;AAEvC,+EAA+E;AAC/E,cAAc,4BAA4B,CAAC;AAE3C,8EAA8E;AAC9E,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,97 @@
1
+ import type { QueryContext } from '../dhf/query-engine.js';
2
+ import type { MEMOConfig } from '../model/config.js';
3
+ import type { LLMProvider, ChatMessage, ToolDefinition } from './llm-provider.js';
4
+ import { type ContextOptions } from './model-context.js';
5
+ export interface ProposedElementCreate {
6
+ kind: 'create-element';
7
+ id: string;
8
+ elementId: string;
9
+ name: string;
10
+ elementKind: string;
11
+ layer?: string;
12
+ attributes?: Record<string, string>;
13
+ doc?: string;
14
+ summary: string;
15
+ }
16
+ export interface ProposedElementUpdate {
17
+ kind: 'update-element';
18
+ id: string;
19
+ elementId: string;
20
+ /** Only the fields the model asked to change. */
21
+ changes: {
22
+ name?: string;
23
+ attributes?: Record<string, string>;
24
+ doc?: string;
25
+ };
26
+ /** Current values for the same fields, so the UI can render a diff. */
27
+ before: {
28
+ name?: string;
29
+ attributes?: Record<string, string>;
30
+ doc?: string;
31
+ };
32
+ summary: string;
33
+ }
34
+ export interface ProposedRelationshipCreate {
35
+ kind: 'create-relationship';
36
+ id: string;
37
+ relationshipType: string;
38
+ sourceId: string;
39
+ targetId: string;
40
+ summary: string;
41
+ }
42
+ export interface ProposedRelationshipDelete {
43
+ kind: 'delete-relationship';
44
+ id: string;
45
+ relationshipId: string;
46
+ sourceId: string;
47
+ targetId: string;
48
+ relationshipType: string;
49
+ summary: string;
50
+ }
51
+ export type ProposedChange = ProposedElementCreate | ProposedElementUpdate | ProposedRelationshipCreate | ProposedRelationshipDelete;
52
+ export interface ChatTurnResult {
53
+ /** The assistant's final prose for this turn. */
54
+ answer: string;
55
+ /** Changes awaiting approval. Empty when the turn was read-only. */
56
+ proposedChanges: ProposedChange[];
57
+ /**
58
+ * The full message history including this turn, ready to be sent back on
59
+ * the next call. Tool calls and results are included — the model needs
60
+ * them to stay coherent across turns.
61
+ */
62
+ messages: ChatMessage[];
63
+ usage?: {
64
+ promptTokens: number;
65
+ completionTokens: number;
66
+ totalTokens: number;
67
+ };
68
+ /** True when the loop hit `maxIterations` before the model finished. */
69
+ truncated?: boolean;
70
+ }
71
+ export interface ChatTurnOptions {
72
+ /** The user's new message. */
73
+ question: string;
74
+ /** Prior conversation, excluding the system prompt. */
75
+ history?: ChatMessage[];
76
+ ctx: QueryContext;
77
+ provider: LLMProvider;
78
+ config?: MEMOConfig;
79
+ /** Allow the model to propose edits. Read-only when false. */
80
+ allowEdits?: boolean;
81
+ contextOptions?: ContextOptions;
82
+ /** Cap on tool round-trips per turn. */
83
+ maxIterations?: number;
84
+ }
85
+ declare const READ_TOOLS: ToolDefinition[];
86
+ declare function writeTools(config?: MEMOConfig): ToolDefinition[];
87
+ /**
88
+ * Run one conversational turn, looping until the model stops calling tools.
89
+ *
90
+ * The returned `messages` include every tool call and result, so passing them
91
+ * straight back as `history` on the next turn keeps the model coherent.
92
+ */
93
+ export declare function runChatTurn(options: ChatTurnOptions): Promise<ChatTurnResult>;
94
+ /** The tool names this engine exposes — used by tests and the MCP server. */
95
+ export declare function chatToolNames(allowEdits?: boolean): string[];
96
+ export { READ_TOOLS, writeTools };
97
+ //# sourceMappingURL=chat-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-engine.d.ts","sourceRoot":"","sources":["../../src/llm/chat-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,463 @@
1
+ // ─── Model Chat Engine ───────────────────────────────────────────────────────
2
+ //
3
+ // Multi-turn conversation over the MEMO model with tool calling.
4
+ //
5
+ // Two classes of tool:
6
+ // Read tools — executed here, against the in-memory QueryContext.
7
+ // Write tools — never applied. They validate the request and return a
8
+ // *proposed change* for the user to approve in the workbench.
9
+ //
10
+ // Nothing in this file mutates the model. That separation is deliberate: the
11
+ // SysML source is the regulated record, so every edit an LLM suggests passes
12
+ // through explicit human approval before it reaches a file.
13
+ // ─────────────────────────────────────────────────────────────────────────────
14
+ import { serializeModelContext } from './model-context.js';
15
+ const DEFAULT_MAX_ITERATIONS = 8;
16
+ const SYSTEM_PROMPT = `You are MEMO Model Analyst, an expert in medical device systems engineering, SysML v2 modeling, and regulatory compliance (ISO 14971, IEC 62304, ISO 13485).
17
+
18
+ You are working with a live medical device architecture model. A summary of it is provided below, and you have tools to look up anything the summary omits.
19
+
20
+ Guidelines:
21
+ - Reference specific element names and IDs when relevant.
22
+ - Prefer calling a tool over guessing. The summary is truncated; the tools see the whole model.
23
+ - When asked about traceability, follow relationship chains with the trace tool.
24
+ - Use tables for structured data when appropriate.
25
+ - Be precise — never invent elements or relationships that are not in the model.
26
+ - If the model does not contain enough information to answer, say so clearly.
27
+
28
+ Proposing changes:
29
+ - The edit tools do NOT modify the model. They stage a proposal that the engineer reviews and approves in the workbench.
30
+ - After staging proposals, briefly describe what you staged and why. Do not claim the model has been changed.
31
+ - Propose the smallest change that satisfies the request. Do not add elements or relationships the engineer did not ask for.`;
32
+ // ─── Tool definitions ────────────────────────────────────────────────────────
33
+ const READ_TOOLS = [
34
+ {
35
+ name: 'search_elements',
36
+ description: 'Search model elements by name/id substring, kind, or layer. Use this whenever you need elements the summary does not list.',
37
+ inputSchema: {
38
+ type: 'object',
39
+ properties: {
40
+ query: { type: 'string', description: 'Case-insensitive substring matched against element id and name.' },
41
+ kind: { type: 'string', description: 'Restrict to one kind, e.g. "Hazard".' },
42
+ layer: { type: 'string', description: 'Restrict to one architecture layer, e.g. "risk".' },
43
+ limit: { type: 'number', description: 'Maximum results (default 50).' },
44
+ },
45
+ },
46
+ },
47
+ {
48
+ name: 'get_element',
49
+ description: 'Get one element in full: attributes, documentation, and every incoming and outgoing relationship.',
50
+ inputSchema: {
51
+ type: 'object',
52
+ properties: { id: { type: 'string', description: 'The element id.' } },
53
+ required: ['id'],
54
+ },
55
+ },
56
+ {
57
+ name: 'trace',
58
+ description: 'Follow the relationship chain out of an element, for traceability questions such as requirement-to-verification coverage.',
59
+ inputSchema: {
60
+ type: 'object',
61
+ properties: {
62
+ id: { type: 'string', description: 'The element id to trace from.' },
63
+ maxDepth: { type: 'number', description: 'How many hops to follow (default 3).' },
64
+ },
65
+ required: ['id'],
66
+ },
67
+ },
68
+ {
69
+ name: 'list_gaps',
70
+ description: 'List validation violations — the compliance and completeness gaps in the model.',
71
+ inputSchema: {
72
+ type: 'object',
73
+ properties: {
74
+ severity: { type: 'string', enum: ['error', 'warning', 'info'], description: 'Filter by severity.' },
75
+ limit: { type: 'number', description: 'Maximum results (default 50).' },
76
+ },
77
+ },
78
+ },
79
+ {
80
+ name: 'layer_summary',
81
+ description: 'Element counts and completeness percentage for every architecture layer.',
82
+ inputSchema: { type: 'object', properties: {} },
83
+ },
84
+ ];
85
+ function writeTools(config) {
86
+ const kindNames = config?.kinds ? Object.keys(config.kinds) : [];
87
+ const relNames = config?.relationshipTypes?.map(r => r.name) ?? [];
88
+ // Listing the legal vocabulary in the description keeps the model inside the
89
+ // ontology instead of inventing plausible-sounding kinds.
90
+ const kindHint = kindNames.length ? ` Must be one of: ${kindNames.join(', ')}.` : '';
91
+ const relHint = relNames.length ? ` Must be one of: ${relNames.join(', ')}.` : '';
92
+ return [
93
+ {
94
+ name: 'propose_create_element',
95
+ description: 'Stage a new element for the engineer to approve. Does not modify the model.',
96
+ inputSchema: {
97
+ type: 'object',
98
+ properties: {
99
+ id: { type: 'string', description: 'Unique element id (SysML usage name), e.g. "HAZ_OverInfusion".' },
100
+ name: { type: 'string', description: 'Human-readable name.' },
101
+ kind: { type: 'string', description: `The ontology kind.${kindHint}` },
102
+ layer: { type: 'string', description: 'Architecture layer. Defaults to the kind\'s own layer.' },
103
+ attributes: { type: 'object', description: 'Attribute key/value pairs.', additionalProperties: { type: 'string' } },
104
+ doc: { type: 'string', description: 'Documentation comment.' },
105
+ rationale: { type: 'string', description: 'One sentence on why this element is needed.' },
106
+ },
107
+ required: ['id', 'name', 'kind'],
108
+ },
109
+ },
110
+ {
111
+ name: 'propose_update_element',
112
+ description: 'Stage a change to an existing element for the engineer to approve. Does not modify the model. Only include fields you want to change.',
113
+ inputSchema: {
114
+ type: 'object',
115
+ properties: {
116
+ id: { type: 'string', description: 'The id of the element to change.' },
117
+ name: { type: 'string' },
118
+ attributes: { type: 'object', description: 'Attributes to set or overwrite.', additionalProperties: { type: 'string' } },
119
+ doc: { type: 'string' },
120
+ rationale: { type: 'string', description: 'One sentence on why this change is needed.' },
121
+ },
122
+ required: ['id'],
123
+ },
124
+ },
125
+ {
126
+ name: 'propose_create_relationship',
127
+ description: 'Stage a new relationship between two existing elements for the engineer to approve. Does not modify the model.',
128
+ inputSchema: {
129
+ type: 'object',
130
+ properties: {
131
+ type: { type: 'string', description: `Relationship type.${relHint}` },
132
+ sourceId: { type: 'string', description: 'Source element id.' },
133
+ targetId: { type: 'string', description: 'Target element id.' },
134
+ rationale: { type: 'string', description: 'One sentence on why this relationship is needed.' },
135
+ },
136
+ required: ['type', 'sourceId', 'targetId'],
137
+ },
138
+ },
139
+ {
140
+ name: 'propose_delete_relationship',
141
+ description: 'Stage the removal of an existing relationship for the engineer to approve. Does not modify the model.',
142
+ inputSchema: {
143
+ type: 'object',
144
+ properties: {
145
+ id: { type: 'string', description: 'The relationship id, as returned by get_element.' },
146
+ rationale: { type: 'string', description: 'One sentence on why this relationship should go.' },
147
+ },
148
+ required: ['id'],
149
+ },
150
+ },
151
+ ];
152
+ }
153
+ function ok(value) {
154
+ return { content: typeof value === 'string' ? value : JSON.stringify(value, null, 2) };
155
+ }
156
+ function fail(message) {
157
+ return { content: message, isError: true };
158
+ }
159
+ function describeElement(ctx, id) {
160
+ const el = ctx.element(id);
161
+ if (!el)
162
+ return undefined;
163
+ return {
164
+ id: el.id,
165
+ shortId: el.shortId,
166
+ name: el.name,
167
+ kind: el.kind,
168
+ layer: el.layer,
169
+ construct: el.construct,
170
+ file: el.file,
171
+ attributes: el.attributes,
172
+ doc: el.doc,
173
+ outgoing: ctx.outgoing(id).map(r => ({
174
+ relationshipId: r.id, type: r.type, target: r.targetId, targetName: ctx.elementName(r.targetId),
175
+ })),
176
+ incoming: ctx.incoming(id).map(r => ({
177
+ relationshipId: r.id, type: r.type, source: r.sourceId, sourceName: ctx.elementName(r.sourceId),
178
+ })),
179
+ violations: ctx.violationsFor(id).map(v => ({ severity: v.severity, rule: v.ruleId, description: v.description })),
180
+ };
181
+ }
182
+ function executeReadTool(name, input, ctx) {
183
+ switch (name) {
184
+ case 'search_elements': {
185
+ const limit = typeof input.limit === 'number' ? input.limit : 50;
186
+ const query = typeof input.query === 'string' ? input.query.toLowerCase() : undefined;
187
+ let elements = input.kind ? ctx.elementsByKind(input.kind) : ctx.allElements();
188
+ if (input.layer)
189
+ elements = elements.filter(e => e.layer === input.layer);
190
+ if (query) {
191
+ elements = elements.filter(e => e.id.toLowerCase().includes(query) || e.name.toLowerCase().includes(query));
192
+ }
193
+ const total = elements.length;
194
+ const results = elements.slice(0, limit).map(e => ({
195
+ id: e.id, name: e.name, kind: e.kind, layer: e.layer,
196
+ }));
197
+ return ok({ total, returned: results.length, results });
198
+ }
199
+ case 'get_element': {
200
+ const detail = describeElement(ctx, String(input.id));
201
+ return detail ? ok(detail) : fail(`No element with id "${input.id}". Use search_elements to find the right id.`);
202
+ }
203
+ case 'trace': {
204
+ const id = String(input.id);
205
+ if (!ctx.element(id))
206
+ return fail(`No element with id "${id}".`);
207
+ const depth = typeof input.maxDepth === 'number' ? input.maxDepth : 3;
208
+ const chain = ctx.traceChain(id, depth).map(step => ({
209
+ depth: step.depth,
210
+ via: step.relationship.type,
211
+ to: step.element.id,
212
+ name: step.element.name,
213
+ kind: step.element.kind,
214
+ }));
215
+ return ok({ from: id, steps: chain.length, chain });
216
+ }
217
+ case 'list_gaps': {
218
+ const limit = typeof input.limit === 'number' ? input.limit : 50;
219
+ const severities = input.severity
220
+ ? [input.severity]
221
+ : ['error', 'warning'];
222
+ const violations = severities.flatMap(s => ctx.violationsBySeverity(s));
223
+ return ok({
224
+ total: violations.length,
225
+ returned: Math.min(violations.length, limit),
226
+ violations: violations.slice(0, limit).map(v => ({
227
+ severity: v.severity,
228
+ rule: v.ruleId,
229
+ description: v.description,
230
+ element: v.elementId,
231
+ elementKind: v.elementKind,
232
+ })),
233
+ });
234
+ }
235
+ case 'layer_summary':
236
+ return ok(ctx.layerSummary().map(l => ({
237
+ id: l.id, label: l.label, elements: l.count, completeness: l.completeness,
238
+ })));
239
+ default:
240
+ return undefined;
241
+ }
242
+ }
243
+ /** Staged proposals double as lookup state — later calls may reference earlier ones. */
244
+ function pendingElementIds(changes) {
245
+ const ids = new Set();
246
+ for (const c of changes) {
247
+ if (c.kind === 'create-element')
248
+ ids.add(c.elementId);
249
+ }
250
+ return ids;
251
+ }
252
+ function executeWriteTool(name, input, ctx, config, staged, nextId) {
253
+ const knownKinds = config?.kinds ? new Set(Object.keys(config.kinds)) : undefined;
254
+ const knownRels = config?.relationshipTypes ? new Set(config.relationshipTypes.map(r => r.name)) : undefined;
255
+ switch (name) {
256
+ case 'propose_create_element': {
257
+ const id = String(input.id ?? '').trim();
258
+ const elementKind = String(input.kind ?? '').trim();
259
+ if (!id)
260
+ return fail('An element id is required.');
261
+ if (ctx.element(id))
262
+ return fail(`Element "${id}" already exists. Use propose_update_element to change it.`);
263
+ if (pendingElementIds(staged).has(id))
264
+ return fail(`Element "${id}" is already staged in this turn.`);
265
+ if (knownKinds && !knownKinds.has(elementKind)) {
266
+ return fail(`"${elementKind}" is not a kind in this ontology. Valid kinds: ${[...knownKinds].join(', ')}`);
267
+ }
268
+ const layer = typeof input.layer === 'string' && input.layer
269
+ ? input.layer
270
+ : config?.kinds?.[elementKind]?.layer;
271
+ const change = {
272
+ kind: 'create-element',
273
+ id: nextId(),
274
+ elementId: id,
275
+ name: String(input.name ?? id),
276
+ elementKind,
277
+ layer,
278
+ attributes: input.attributes && typeof input.attributes === 'object' ? input.attributes : undefined,
279
+ doc: typeof input.doc === 'string' ? input.doc : undefined,
280
+ summary: typeof input.rationale === 'string' && input.rationale
281
+ ? input.rationale
282
+ : `Create ${elementKind} ${id}`,
283
+ };
284
+ staged.push(change);
285
+ return ok(`Staged for approval: create ${elementKind} "${id}". Not yet applied to the model.`);
286
+ }
287
+ case 'propose_update_element': {
288
+ const id = String(input.id ?? '').trim();
289
+ const el = ctx.element(id);
290
+ if (!el)
291
+ return fail(`No element with id "${id}". Use search_elements to find the right id.`);
292
+ const changes = {};
293
+ if (typeof input.name === 'string')
294
+ changes.name = input.name;
295
+ if (input.attributes && typeof input.attributes === 'object')
296
+ changes.attributes = input.attributes;
297
+ if (typeof input.doc === 'string')
298
+ changes.doc = input.doc;
299
+ if (Object.keys(changes).length === 0) {
300
+ return fail('No changes given. Provide at least one of name, attributes, or doc.');
301
+ }
302
+ const before = {};
303
+ if (changes.name !== undefined)
304
+ before.name = el.name;
305
+ if (changes.doc !== undefined)
306
+ before.doc = el.doc;
307
+ if (changes.attributes) {
308
+ before.attributes = Object.fromEntries(Object.keys(changes.attributes).map(k => [k, el.attributes[k] ?? '']));
309
+ }
310
+ staged.push({
311
+ kind: 'update-element',
312
+ id: nextId(),
313
+ elementId: id,
314
+ changes,
315
+ before,
316
+ summary: typeof input.rationale === 'string' && input.rationale
317
+ ? input.rationale
318
+ : `Update ${el.kind} ${id}`,
319
+ });
320
+ return ok(`Staged for approval: update "${id}". Not yet applied to the model.`);
321
+ }
322
+ case 'propose_create_relationship': {
323
+ const type = String(input.type ?? '').trim();
324
+ const sourceId = String(input.sourceId ?? '').trim();
325
+ const targetId = String(input.targetId ?? '').trim();
326
+ if (knownRels && !knownRels.has(type)) {
327
+ return fail(`"${type}" is not a relationship type in this ontology. Valid types: ${[...knownRels].join(', ')}`);
328
+ }
329
+ // An element staged earlier in the same turn is a legal endpoint —
330
+ // it will exist by the time the batch is applied.
331
+ const pending = pendingElementIds(staged);
332
+ for (const [label, endpoint] of [['source', sourceId], ['target', targetId]]) {
333
+ if (!ctx.element(endpoint) && !pending.has(endpoint)) {
334
+ return fail(`No element with id "${endpoint}" for the ${label}. Use search_elements to find the right id.`);
335
+ }
336
+ }
337
+ staged.push({
338
+ kind: 'create-relationship',
339
+ id: nextId(),
340
+ relationshipType: type,
341
+ sourceId,
342
+ targetId,
343
+ summary: typeof input.rationale === 'string' && input.rationale
344
+ ? input.rationale
345
+ : `Relate ${sourceId} —${type}→ ${targetId}`,
346
+ });
347
+ return ok(`Staged for approval: ${sourceId} —${type}→ ${targetId}. Not yet applied to the model.`);
348
+ }
349
+ case 'propose_delete_relationship': {
350
+ const relId = String(input.id ?? '').trim();
351
+ const rel = ctx.allRelationships().find(r => r.id === relId);
352
+ if (!rel)
353
+ return fail(`No relationship with id "${relId}". Use get_element to list an element's relationship ids.`);
354
+ staged.push({
355
+ kind: 'delete-relationship',
356
+ id: nextId(),
357
+ relationshipId: relId,
358
+ sourceId: rel.sourceId,
359
+ targetId: rel.targetId,
360
+ relationshipType: rel.type,
361
+ summary: typeof input.rationale === 'string' && input.rationale
362
+ ? input.rationale
363
+ : `Remove ${rel.sourceId} —${rel.type}→ ${rel.targetId}`,
364
+ });
365
+ return ok(`Staged for approval: remove relationship "${relId}". Not yet applied to the model.`);
366
+ }
367
+ default:
368
+ return undefined;
369
+ }
370
+ }
371
+ // ─── The turn loop ───────────────────────────────────────────────────────────
372
+ /**
373
+ * Run one conversational turn, looping until the model stops calling tools.
374
+ *
375
+ * The returned `messages` include every tool call and result, so passing them
376
+ * straight back as `history` on the next turn keeps the model coherent.
377
+ */
378
+ export async function runChatTurn(options) {
379
+ const { question, history = [], ctx, provider, config, allowEdits = false, contextOptions, maxIterations = DEFAULT_MAX_ITERATIONS, } = options;
380
+ const tools = allowEdits ? [...READ_TOOLS, ...writeTools(config)] : READ_TOOLS;
381
+ // The model summary is only re-sent when the conversation is new; on later
382
+ // turns it is already in the history and repeating it wastes the window.
383
+ const conversation = history.length > 0
384
+ ? [...history, { role: 'user', content: question }]
385
+ : [
386
+ { role: 'user', content: `Here is the current model state:\n\n${serializeModelContext(ctx, contextOptions)}\n\n---\n\nQuestion: ${question}` },
387
+ ];
388
+ const proposedChanges = [];
389
+ let changeCounter = 0;
390
+ const nextId = () => `chg-${Date.now().toString(36)}-${changeCounter++}`;
391
+ const totals = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };
392
+ let answer = '';
393
+ let truncated = false;
394
+ for (let iteration = 0; iteration < maxIterations; iteration++) {
395
+ const result = await provider.complete({
396
+ messages: [{ role: 'system', content: SYSTEM_PROMPT }, ...conversation],
397
+ temperature: 0.2,
398
+ maxTokens: 4096,
399
+ tools,
400
+ });
401
+ if (result.usage) {
402
+ totals.promptTokens += result.usage.promptTokens;
403
+ totals.completionTokens += result.usage.completionTokens;
404
+ totals.totalTokens += result.usage.totalTokens;
405
+ }
406
+ if (result.content)
407
+ answer = result.content;
408
+ const calls = result.toolCalls ?? [];
409
+ if (calls.length === 0) {
410
+ return {
411
+ answer,
412
+ proposedChanges,
413
+ messages: [...conversation, { role: 'assistant', content: answer }],
414
+ usage: totals.totalTokens ? totals : undefined,
415
+ };
416
+ }
417
+ conversation.push({ role: 'assistant', content: result.content, toolCalls: calls });
418
+ // Every call must get a result, in the same batch — dropping one leaves
419
+ // the conversation malformed for both providers.
420
+ for (const call of calls) {
421
+ const outcome = runTool(call, ctx, config, allowEdits, proposedChanges, nextId);
422
+ conversation.push({
423
+ role: 'tool',
424
+ toolCallId: call.id,
425
+ content: outcome.content,
426
+ isError: outcome.isError,
427
+ });
428
+ }
429
+ if (iteration === maxIterations - 1)
430
+ truncated = true;
431
+ }
432
+ return {
433
+ answer: answer || 'I stopped after reaching the tool-call limit for this turn. Ask again to continue.',
434
+ proposedChanges,
435
+ messages: conversation,
436
+ usage: totals.totalTokens ? totals : undefined,
437
+ truncated,
438
+ };
439
+ }
440
+ function runTool(call, ctx, config, allowEdits, staged, nextId) {
441
+ try {
442
+ const input = (call.input ?? {});
443
+ const read = executeReadTool(call.name, input, ctx);
444
+ if (read)
445
+ return read;
446
+ if (call.name.startsWith('propose_') && !allowEdits) {
447
+ return fail('Editing is disabled for this conversation. Answer using the read-only tools instead.');
448
+ }
449
+ const write = executeWriteTool(call.name, input, ctx, config, staged, nextId);
450
+ if (write)
451
+ return write;
452
+ return fail(`Unknown tool "${call.name}".`);
453
+ }
454
+ catch (e) {
455
+ return fail(`Tool "${call.name}" failed: ${e?.message ?? String(e)}`);
456
+ }
457
+ }
458
+ /** The tool names this engine exposes — used by tests and the MCP server. */
459
+ export function chatToolNames(allowEdits = true) {
460
+ return (allowEdits ? [...READ_TOOLS, ...writeTools()] : READ_TOOLS).map(t => t.name);
461
+ }
462
+ export { READ_TOOLS, writeTools };
463
+ //# sourceMappingURL=chat-engine.js.map