clinkx 0.2.3 → 0.3.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 (88) hide show
  1. package/README.md +40 -1
  2. package/conf/prompts/json-codereviewer.txt +1 -0
  3. package/conf/prompts/json.txt +1 -0
  4. package/dist/allowed-roots.d.ts +12 -0
  5. package/dist/allowed-roots.js +94 -0
  6. package/dist/allowed-roots.js.map +1 -0
  7. package/dist/context-builder/anchors.d.ts +11 -0
  8. package/dist/context-builder/anchors.js +19 -0
  9. package/dist/context-builder/anchors.js.map +1 -0
  10. package/dist/context-builder/bundle.d.ts +76 -0
  11. package/dist/context-builder/bundle.js +3573 -0
  12. package/dist/context-builder/bundle.js.map +1 -0
  13. package/dist/context-builder/codemap.d.ts +17 -0
  14. package/dist/context-builder/codemap.js +301 -0
  15. package/dist/context-builder/codemap.js.map +1 -0
  16. package/dist/context-builder/config.d.ts +60 -0
  17. package/dist/context-builder/config.js +204 -0
  18. package/dist/context-builder/config.js.map +1 -0
  19. package/dist/context-builder/delegate-packet.d.ts +182 -0
  20. package/dist/context-builder/delegate-packet.js +898 -0
  21. package/dist/context-builder/delegate-packet.js.map +1 -0
  22. package/dist/context-builder/delegate-reconstruction.d.ts +13 -0
  23. package/dist/context-builder/delegate-reconstruction.js +220 -0
  24. package/dist/context-builder/delegate-reconstruction.js.map +1 -0
  25. package/dist/context-builder/delegate-validation.d.ts +18 -0
  26. package/dist/context-builder/delegate-validation.js +367 -0
  27. package/dist/context-builder/delegate-validation.js.map +1 -0
  28. package/dist/context-builder/delegate.d.ts +24 -0
  29. package/dist/context-builder/delegate.js +133 -0
  30. package/dist/context-builder/delegate.js.map +1 -0
  31. package/dist/context-builder/diagnostics.d.ts +27 -0
  32. package/dist/context-builder/diagnostics.js +74 -0
  33. package/dist/context-builder/diagnostics.js.map +1 -0
  34. package/dist/context-builder/discovery.d.ts +118 -0
  35. package/dist/context-builder/discovery.js +1829 -0
  36. package/dist/context-builder/discovery.js.map +1 -0
  37. package/dist/context-builder/globs.d.ts +14 -0
  38. package/dist/context-builder/globs.js +175 -0
  39. package/dist/context-builder/globs.js.map +1 -0
  40. package/dist/context-builder/handler.d.ts +17 -0
  41. package/dist/context-builder/handler.js +3848 -0
  42. package/dist/context-builder/handler.js.map +1 -0
  43. package/dist/context-builder/path-signals.d.ts +7 -0
  44. package/dist/context-builder/path-signals.js +66 -0
  45. package/dist/context-builder/path-signals.js.map +1 -0
  46. package/dist/context-builder/paths.d.ts +30 -0
  47. package/dist/context-builder/paths.js +153 -0
  48. package/dist/context-builder/paths.js.map +1 -0
  49. package/dist/context-builder/progress.d.ts +15 -0
  50. package/dist/context-builder/progress.js +70 -0
  51. package/dist/context-builder/progress.js.map +1 -0
  52. package/dist/context-builder/receipt.d.ts +89 -0
  53. package/dist/context-builder/receipt.js +169 -0
  54. package/dist/context-builder/receipt.js.map +1 -0
  55. package/dist/context-builder/run-id.d.ts +7 -0
  56. package/dist/context-builder/run-id.js +31 -0
  57. package/dist/context-builder/run-id.js.map +1 -0
  58. package/dist/context-builder/schema.d.ts +431 -0
  59. package/dist/context-builder/schema.js +293 -0
  60. package/dist/context-builder/schema.js.map +1 -0
  61. package/dist/context-builder/secrets.d.ts +13 -0
  62. package/dist/context-builder/secrets.js +222 -0
  63. package/dist/context-builder/secrets.js.map +1 -0
  64. package/dist/context-builder/selection.d.ts +52 -0
  65. package/dist/context-builder/selection.js +1649 -0
  66. package/dist/context-builder/selection.js.map +1 -0
  67. package/dist/context-builder/status.d.ts +45 -0
  68. package/dist/context-builder/status.js +105 -0
  69. package/dist/context-builder/status.js.map +1 -0
  70. package/dist/context-builder/storage.d.ts +85 -0
  71. package/dist/context-builder/storage.js +746 -0
  72. package/dist/context-builder/storage.js.map +1 -0
  73. package/dist/context-builder/token-estimate.d.ts +8 -0
  74. package/dist/context-builder/token-estimate.js +17 -0
  75. package/dist/context-builder/token-estimate.js.map +1 -0
  76. package/dist/paths.d.ts +8 -0
  77. package/dist/paths.js +31 -43
  78. package/dist/paths.js.map +1 -1
  79. package/dist/pipeline.d.ts +47 -3
  80. package/dist/pipeline.js +135 -39
  81. package/dist/pipeline.js.map +1 -1
  82. package/dist/server.d.ts +1 -0
  83. package/dist/server.js +40 -10
  84. package/dist/server.js.map +1 -1
  85. package/package.json +2 -1
  86. package/dist/artifacts.d.ts +0 -9
  87. package/dist/artifacts.js +0 -24
  88. package/dist/artifacts.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/context-builder/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,IAAI,MAAM,EACd,IAAI,IAAI,MAAM,EACd,KAAK,IAAI,OAAO,EAChB,QAAQ,IAAI,UAAU,EACtB,MAAM,IAAI,QAAQ,EAClB,EAAE,IAAI,IAAI,EACV,IAAI,IAAI,MAAM,EACd,SAAS,IAAI,WAAW,GAEzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,qCAAqC,EACrC,qCAAqC,EACrC,4BAA4B,GAE7B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,GAG5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,0CAA0C,EAC1C,uCAAuC,EACvC,yCAAyC,EACzC,0CAA0C,EAC1C,8BAA8B,EAK9B,uCAAuC,GACxC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,CAAC,MAAM,mCAAmC,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/D,aAAa,EAAE,eAAe;IAC9B,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,YAAY,EAAE,cAAc;CACuB,CAAC,CAAC;AAyDvD,MAAM,mBAAmB,GAA6B;IACpD,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC;IACjD,UAAU,EAAE,QAAQ;IACpB,gBAAgB,EAAE,QAAQ;IAC1B,cAAc,EAAE,QAAQ;IACxB,aAAa,EAAE,QAAQ;IACvB,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,SAAS;IACzB,sBAAsB,EAAE,SAAS;IACjC,2BAA2B,EAAE,SAAS;IACtC,iBAAiB,EAAE,SAAS;IAC5B,UAAU,EAAE,QAAQ;IACpB,aAAa,EAAE,QAAQ;IACvB,gBAAgB,EAAE,QAAQ;IAC1B,SAAS,EAAE,SAAS;CAC+C,CAAC,CAAC;AAEvE,MAAM,iCAAiC,GAAG,MAAM,CAAC,IAAI,CACnD,qCAAqC,CACK,CAAC;AAC7C,MAAM,oCAAoC,GAAG,gBAAgB,CAAC;AAC9D,MAAM,sCAAsC,GAAG,KAAK,CAAC;AACrD,MAAM,sCAAsC,GAAG,EAAE,CAAC;AAClD,MAAM,sCAAsC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;AAmB/D,MAAM,UAAU,6BAA6B,CAC3C,OAAe,EACf,KAAa;IAEb,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAE3B,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,4BAA4B,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACpE,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,eAAe,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC;QACtE,MAAM,IAAI,kBAAkB,CAAC,+CAA+C,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAClC,yCAAyC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QACrD,GAAG;QACH,GAAG,KAAK,eAAe;YACrB,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,mCAAmC,CAAC,GAAG,CAAC,CAAC;YACxD,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,mCAAmC,CAAC,GAAG,CAAC,CAAC;KAChE,CAAC,CAC0C,CAAC;IAE/C,OAAO;QACL,KAAK;QACL,OAAO,EAAE,eAAe;QACxB,MAAM;QACN,WAAW;QACX,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC;QAC5C,YAAY,EAAE,SAAS,CAAC,aAAa;QACrC,SAAS;KACV,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAKC,EACD,MAAgC,mBAAmB;IAEnD,MAAM,OAAO,GAAG,MAAM,4BAA4B,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG;QACZ,GAAG,6BAA6B,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC;QACtD,UAAU;KACX,CAAC;IACF,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,IAAI,CAAC;QACH,MAAM,yBAAyB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5C,aAAa,GAAG,IAAI,CAAC;QACrB,MAAM,eAAe,CACnB,KAAK,CAAC,YAAY,EAClB,GAAG,IAAI,CAAC,SAAS,CAAC;YAChB,cAAc,EAAE,8BAA8B;YAC9C,MAAM,EAAE,KAAK,CAAC,KAAK;YACnB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,QAAQ,EAAE,QAAQ,EAAE;YACpB,UAAU,EAAE,KAAK,CAAC,SAAS;YAC3B,WAAW,EAAE,UAAU;SACxB,CAAC,IAAI,EACN,GAAG,CACJ,CAAC;QACF,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,eAAe,GAAG,MAAM,yBAAyB,CACrD,KAAK,EACL,UAAU,EACV,GAAG,CACJ,CAAC;YACF,IAAI,eAAe,CAAC,SAAS,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE;oBACnC,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,cAAc,CACtB,6CAA6C,KAAK,CAAC,KAAK,KAAK,eAAe,CAAC,MAAM,EAAE,CACtF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,OAAmC,EACnC,GAAwD,EACxD,OAAe,EACf,MAAgC,mBAAmB;IAEnD,MAAM,gBAAgB,GAAG,iCAAiC,CAAC,OAAO,CAAC,CAAC;IAEpE,MAAM,8BAA8B,CAAC,gBAAgB,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,+BAA+B,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAC7D,MAAM,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;YACnE,gBAAgB,EAAE,gBAAgB,CAAC,YAAY;SAChD,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,UAAU,EAAE,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAmC,EACnC,QAAqC,EACrC,eAAuE,EAAE,EACzE,WAAqC,mBAAmB;IAExD,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,wBAAwB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC1E,MAAM,gBAAgB,GAAG,iCAAiC,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,gBAAgB,CAAC,UAAU,CAAC;IAErE,MAAM,8BAA8B,CAAC,gBAAgB,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,+BAA+B,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAC7D,MAAM,+BAA+B,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAC7D,8BAA8B,CAAC,OAAO,CAAC,CAAC;QAExC,MAAM,YAAY,GAAG,qCAAqC,CACxD,QAAQ,CAAC,aAAa,CACvB,CAAC;QACF,MAAM,EAAE,QAAQ,EAAE,GAAG,uBAAuB,EAAE,GAAG,QAAQ,CAAC;QAC1D,MAAM,eAAe,GAAG,iCAAiC,CAAC,QAAQ,CAAC,CAAC;QACpE,MAAM,gBAAgB,GAA2B;YAC/C,GAAG,uBAAuB;YAC1B,cAAc,EAAE,gCAAgC,CAAC,eAAe,CAAC;YACjE,MAAM,EAAE,gBAAgB,CAAC,KAAK;YAC9B,aAAa,EAAE,YAAY;YAC3B,SAAS,EAAE,EAAE,GAAG,gBAAgB,CAAC,SAAS,EAAE;YAC5C,QAAQ,EAAE,2BAA2B,CACnC,+BAA+B,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAClD,YAAY,CACb;YACD,SAAS,EAAE,4BAA4B,CACrC,gCAAgC,CAAC,QAAQ,CAAC,SAAS,CAAC,EACpD,YAAY,CACb;YACD,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;SAClE,CAAC;QAEF,MAAM,kBAAkB,CACtB,gBAAgB,CAAC,YAAY,EAC7B,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EACvC,GAAG,EACH,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAC/D,CAAC;IACJ,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,OAAmC,EACnC,QAAgC,EAChC,QAAqC,EACrC,UAII,EAAE;IAEN,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,mBAAmB,CAAC;IAC/C,MAAM,gBAAgB,GAAG,iCAAiC,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,gBAAgB,CAAC,UAAU,CAAC;IAErE,MAAM,8BAA8B,CAAC,gBAAgB,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,+BAA+B,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAE7D,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtD,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrC,MAAM,IAAI,iBAAiB,EAAE,CAAC;YAChC,CAAC;YACD,MAAM,eAAe,CACnB,gBAAgB,CAAC,SAAS,CAAC,GAAgC,CAAC,EAC5D,OAAO,EACP,GAAG,EACH,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,YAAY,EAAE,CACpD,CAAC;QACJ,CAAC;QAED,8BAA8B,CAC5B,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAC/D,CAAC;QACF,MAAM,+BAA+B,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAE7D,MAAM,YAAY,GAAG,qCAAqC,CACxD,QAAQ,CAAC,aAAa,CACvB,CAAC;QACF,MAAM,EAAE,QAAQ,EAAE,GAAG,uBAAuB,EAAE,GAAG,QAAQ,CAAC;QAC1D,MAAM,eAAe,GAAG,iCAAiC,CAAC,QAAQ,CAAC,CAAC;QACpE,MAAM,gBAAgB,GAA2B;YAC/C,GAAG,uBAAuB;YAC1B,cAAc,EAAE,gCAAgC,CAAC,eAAe,CAAC;YACjE,MAAM,EAAE,gBAAgB,CAAC,KAAK;YAC9B,aAAa,EAAE,YAAY;YAC3B,SAAS,EAAE,EAAE,GAAG,gBAAgB,CAAC,SAAS,EAAE;YAC5C,QAAQ,EAAE,2BAA2B,CACnC,+BAA+B,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAClD,YAAY,CACb;YACD,SAAS,EAAE,4BAA4B,CACrC,gCAAgC,CAAC,QAAQ,CAAC,SAAS,CAAC,EACpD,YAAY,CACb;YACD,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;SAClE,CAAC;QAEF,MAAM,kBAAkB,CACtB,gBAAgB,CAAC,YAAY,EAC7B,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EACvC,GAAG,EACH,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAC/D,CAAC;IACJ,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,OAAmC,EACnC,UAAkB,EAClB,MAAgC,mBAAmB;IAEnD,MAAM,gBAAgB,GAAG,iCAAiC,CAAC,OAAO,CAAC,CAAC;IAEpE,OAAO,8BAA8B,CAAC,gBAAgB,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE,CACtE,wCAAwC,CAAC,gBAAgB,EAAE,UAAU,EAAE,GAAG,CAAC,EAC7E;QACE,UAAU;QACV,sBAAsB,EAAE,IAAI;KAC7B,CACA,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,wCAAwC,CACrD,OAAmC,EACnC,UAAkB,EAClB,GAA6B;IAE7B,IAAI,CAAC,MAAM,yBAAyB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE;QACrC,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IACH,MAAM,uBAAuB,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,MAAc,EACd,MAAkD,mBAAmB;IAErE,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CACvB,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,CAClE,CAAC;QACF,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;YACrE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,eAAe,GAAG,6BAA6B,CACnD,OAAO,CAAC,cAAc,CAAC,EACvB,MAAM,CAAC,MAAM,CACd,CAAC;QACF,IAAI,eAAe,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,+BAA+B,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,iCAAiC,CACxC,OAAmC;IAEnC,MAAM,QAAQ,GAAG,6BAA6B,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAE/E,IACE,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;WAC/B,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW;WAC5C,OAAO,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY;WAC9C,OAAO,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY;WAC9C,CAAC,yBAAyB,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,EACpE,CAAC;QACD,MAAM,IAAI,cAAc,CACtB,gEAAgE,CACjE,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,UAAU,KAAK,SAAS;QACrC,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,OAAmC,EACnC,UAAkB,EAClB,GAA+C;IAE/C,OAAO,CAAC,MAAM,yBAAyB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/E,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,OAAmC,EACnC,UAAkB,EAClB,GAA+C;IAE/C,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,eAAe,CAAC,EAAE,CAAC;QAC5D,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,yCAAyC,EAAE,CAAC;IACjF,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACrE,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAChC,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,IAAI,QAAiB,CAAC;IACtB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACxD,CAAC;IAED,IACE,QAAQ,KAAK,IAAI;WACd,OAAO,QAAQ,KAAK,QAAQ;WAC3B,QAAsC,CAAC,WAAW,KAAK,UAAU,EACrE,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACxD,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,OAAmC,EACnC,GAA+C;IAE/C,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACjD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC7B,CAAC;QAED,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,wBAAwB,aAAa,CAAC,KAAK,CAAC,EAAE;SACvD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,KAAiC,EACjC,GAA6B;IAE7B,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClD,IAAI,MAAM,4BAA4B,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC1D,MAAM,IAAI,kBAAkB,CAC1B,0CAA0C,KAAK,CAAC,KAAK,EAAE,CACxD,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,cAAc,CACtB,sEAAsE,KAAK,CAAC,KAAK,EAAE,CACpF,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,8BAA8B,CACrC,OAAoC;IAEpC,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;QACrC,OAAO;IACT,CAAC;IAED,MAAM,IAAI,iBAAiB,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,wBAAwB,CAC/B,YAAoE,EACpE,QAAkC;IAElC,IAAI,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;IAC5C,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,YAAY,CACnB,KAA6D;IAE7D,OAAO,CACL,OAAO,IAAI,KAAK;WACb,WAAW,IAAI,KAAK;WACpB,UAAU,IAAI,KAAK;WACnB,QAAQ,IAAI,KAAK;WACjB,IAAI,IAAI,KAAK;WACb,MAAM,IAAI,KAAK;WACf,MAAM,IAAI,KAAK,CACnB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,8BAA8B,CAC3C,OAAmC,EACnC,GAA6B,EAC7B,QAA0B,EAC1B,UAA+B,EAAE;IAEjC,MAAM,QAAQ,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,MAAM,iCAAiC,CACxD,OAAO,EACP,QAAQ,EACR,GAAG,EACH,OAAO,CACR,CAAC;IAEF,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,EAAE,CAAC;IAC1B,CAAC;YAAS,CAAC;QACT,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iCAAiC,CAC9C,OAAmC,EACnC,QAAgB,EAChB,GAA6B,EAC7B,OAA4B;IAE5B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC;IAEhC,KACE,IAAI,OAAO,GAAG,CAAC,EACf,OAAO,GAAG,sCAAsC,EAChD,OAAO,IAAI,CAAC,EACZ,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACjD,IAAI,CAAC;gBACH,MAAM,yBAAyB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC5D,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACrC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAClE,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClD,IACE,OAAO,CAAC,sBAAsB,KAAK,IAAI;uBACpC,MAAM,6BAA6B,CACpC,OAAO,EACP,QAAQ,EACR,OAAO,CAAC,UAAU,EAClB,GAAG,CACJ,EACD,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,MAAM,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBACpD,SAAS;YACX,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,IAAI,cAAc,CACtB,6DAA6D,CAC9D,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,OAAmC;IACrE,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,eAAe,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,cAAc,CACtB,8DAA8D,CAC/D,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CACT,eAAe,EACf,IAAI,OAAO,CAAC,KAAK,GAAG,oCAAoC,EAAE,CAC3D,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,MAAkB,EAClB,UAA8B;IAE9B,MAAM,QAAQ,GAAyB;QACrC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,QAAQ,EAAE;QACpB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;KAC3D,CAAC;IAEF,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,KAAK,UAAU,6BAA6B,CAC1C,OAAmC,EACnC,QAAgB,EAChB,UAA8B,EAC9B,GAA6B;IAE7B,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,yBAAyB,CACrD,OAAO,EACP,UAAU,EACV,GAAG,CACJ,CAAC;IACF,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,MAAM,uBAAuB,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC/D,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,QAAgB,EAChB,GAA2C;IAE3C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,OAAO,IAAI,sCAAsC,CAAC;IACjF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,QAAgB,EAChB,GAA+C;IAE/C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAClD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAuC,CAAC;IACzD,IACE,OAAO,QAAQ,CAAC,GAAG,KAAK,QAAQ;WAC7B,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;WAC/B,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ;WACrC,OAAO,QAAQ,CAAC,UAAU,KAAK,QAAQ,EAC1C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IACE,QAAQ,CAAC,WAAW,KAAK,SAAS;WAC/B,OAAO,QAAQ,CAAC,WAAW,KAAK,QAAQ,EAC3C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,GAAG,CAAC,QAAQ,CAAC,WAAW,KAAK,SAAS;YACpC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,QAA8B;IACjE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACpD,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;WAC1B,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,GAAG,sCAAsC,EACpE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,+BAA+B,CAC5C,OAAmC,EACnC,GAA+C;IAE/C,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,GAAG,IAAI,yCAAyC,EAAE,CAAC;QAC5D,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,kEAAkE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,+BAA+B,CAC5C,OAAmC,EACnC,GAA+C;IAE/C,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,cAAc,CACtB,qEAAqE,aAAa,CAAC,KAAK,CAAC,GAAG,CAC7F,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,cAAc,CACtB,sEAAsE,CACvE,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,MAAiD,EACjD,QAAmD;IAEnD,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,yCAAyC,EAAE,CAAC;QAC5D,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,6BAA6B,CACpC,KAAc,EACd,aAAqB;IAErB,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,KAAwC,CAAC;IAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC/E,MAAM,gBAAgB,GAAG,uCAAuC,CAC9D,QAAQ,CAAC,QAAQ,CAClB,CAAC;IACF,MAAM,yBAAyB,GAC7B,CACE,QAAQ,CAAC,cAAc,KAAK,0CAA0C;WACnE,CAAC,WAAW,CAChB;WACE,CACD,QAAQ,CAAC,cAAc,KAAK,uCAAuC;eAChE,WAAW;eACX,gBAAgB,CACpB,CAAC;IAEJ,OAAO,CACL,yBAAyB;WACtB,QAAQ,CAAC,MAAM,KAAK,aAAa;WACjC,CAAC,QAAQ,CAAC,MAAM,KAAK,WAAW,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC;WAClE,uBAAuB,CAAC,QAAQ,CAAC,aAAa,CAAC;WAC/C,wBAAwB,CAAC,QAAQ,CAAC,SAAS,CAAC;WAC5C,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC;WACpC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;WAChC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CACrC,CAAC;AACJ,CAAC;AAED,SAAS,iCAAiC,CACxC,QAAiD;IAEjD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,cAAc,CAAC,uDAAuD,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,OAAO,GAAG,0CAA0C,CAAC,QAAQ,CAAC,CAAC;IACrE,IAAI,CAAC,uCAAuC,CAAC,OAAO,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,cAAc,CAAC,uDAAuD,CAAC,CAAC;IACpF,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gCAAgC,CACvC,QAA2D;IAE3D,OAAO,QAAQ,IAAI,IAAI;QACrB,CAAC,CAAC,0CAA0C;QAC5C,CAAC,CAAC,uCAAuC,CAAC;AAC9C,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,KAAmE,CAAC;IACjF,OAAO,iCAAiC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACtD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,CAC9B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAc;IAEd,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,KAA4D,CAAC;IAC/E,OAAO,oBAAoB,CAAC,SAAS,CAAC,IAAI,yCAAyC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACjG,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,QAAQ,CACnC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,OAAO,CACL,UAAU,CAAC,MAAM,KAAK,yCAAyC,CAAC,MAAM;WACnE,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,GAAgC,CAAC,CAAC,CACjF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,KAA8D,CAAC;IAC/E,OAAQ,MAAM,CAAC,OAAO,CAAC,4BAA4B,CAEjD,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,YAAY,CAAC,CAAC;AAC1E,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,SAAiB,EACjB,OAAe,EACf,GAA6B,EAC7B,UAAyC,EAAE;IAE3C,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,MAA8B,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC3D,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC3B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAEvB,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACtD,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,GAAG,SAAS,CAAC;QAEnB,IAAI,OAAO,CAAC,gBAAgB,IAAI,IAAI,EAAE,CAAC;YACrC,MAAM,2BAA2B,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACtC,QAAQ,GAAG,EAAE,CAAC;QACd,MAAM,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;IACzD,CAAC;YAAS,CAAC;QACT,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,SAAiB,EACjB,OAAe,EACf,GAA6B,EAC7B,UAAoC,EAAE;IAEtC,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,MAA8B,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC3D,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC3B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAEvB,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACtD,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,GAAG,SAAS,CAAC;QAEnB,8BAA8B,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAClE,QAAQ,GAAG,EAAE,CAAC;QACd,MAAM,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;IACzD,CAAC;YAAS,CAAC;QACT,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,YAAoB,EACpB,OAAe,EACf,GAA2C;IAE3C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClD,MAAM,IAAI,cAAc,CACtB,sEAAsE,CACvE,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,2BAA2B,CACxC,IAAY,EACZ,GAA+C;IAE/C,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,cAAc,CACtB,qEAAqE,aAAa,CAAC,KAAK,CAAC,GAAG,CAC7F,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,cAAc,CACtB,sEAAsE,CACvE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,SAAiB,EACjB,GAA2C;IAE3C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC;IAEhC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,GAAG,SAAS,IAAI,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QAErF,IAAI,CAAC;YACH,OAAO;gBACL,QAAQ;gBACR,MAAM,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC;aAC1C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClD,SAAS;YACX,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;AAC7E,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,IAAY,EACZ,GAA2C;IAE3C,IAAI,MAA8B,CAAC;IACnC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC/B,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;YAAS,CAAC;QACT,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AACnD,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QACzD,CAAC,CAAC,KAAK,CAAC,IAAI;QACZ,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,+BAA+B,CACtC,QAAmB;IAEnB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,OAAO;gBACL,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;gBAC7C,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC;aACpD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC;SAC5C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gCAAgC,CACvC,SAAoB;IAEpB,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,gCAAgC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACxE,OAAO;gBACL,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;gBACvD,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;gBACnD,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;gBACrD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAC/B,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,EAAE;oBACpE,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC;SAC9C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gCAAgC,CAAC,SAAkB;IAC1D,OAAO,OAAO,SAAS,KAAK,QAAQ;WAC/B,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;WAC3B,SAAS,IAAI,CAAC;QACjB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,mCAAmC,CAAC,IAAa;IACxD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,2BAA2B,CAAC;IACrC,CAAC;IAED,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACtC,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9E,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,QAAgB;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,UAAU,IAAI,QAAQ,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,EAAU;IAC7B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB,EAAE,SAAiB;IACjE,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAChD,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAChF,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare const CONTEXT_BUILDER_TOKEN_COUNTING_METHOD: "utf8_bytes_div_3_ceiling";
2
+ export type ContextBuilderTokenCounting = {
3
+ method: typeof CONTEXT_BUILDER_TOKEN_COUNTING_METHOD;
4
+ };
5
+ export declare function utf8ByteLength(input: string): number;
6
+ export declare function estimateContextBuilderTokensFromUtf8Bytes(utf8Bytes: number): number;
7
+ export declare function estimateContextBuilderTokens(input: string): number;
8
+ export declare function contextBuilderTokenCountingMethod(): ContextBuilderTokenCounting;
@@ -0,0 +1,17 @@
1
+ export const CONTEXT_BUILDER_TOKEN_COUNTING_METHOD = "utf8_bytes_div_3_ceiling";
2
+ export function utf8ByteLength(input) {
3
+ return Buffer.byteLength(input, "utf8");
4
+ }
5
+ export function estimateContextBuilderTokensFromUtf8Bytes(utf8Bytes) {
6
+ if (!Number.isSafeInteger(utf8Bytes) || utf8Bytes < 0) {
7
+ throw new RangeError("utf8Bytes must be a non-negative safe integer");
8
+ }
9
+ return Math.ceil(utf8Bytes / 3);
10
+ }
11
+ export function estimateContextBuilderTokens(input) {
12
+ return estimateContextBuilderTokensFromUtf8Bytes(utf8ByteLength(input));
13
+ }
14
+ export function contextBuilderTokenCountingMethod() {
15
+ return { method: CONTEXT_BUILDER_TOKEN_COUNTING_METHOD };
16
+ }
17
+ //# sourceMappingURL=token-estimate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-estimate.js","sourceRoot":"","sources":["../../src/context-builder/token-estimate.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qCAAqC,GAChD,0BAAmC,CAAC;AAMtC,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,yCAAyC,CACvD,SAAiB;IAEjB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,UAAU,CAAC,+CAA+C,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAAa;IACxD,OAAO,yCAAyC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,iCAAiC;IAC/C,OAAO,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC;AAC3D,CAAC"}
package/dist/paths.d.ts CHANGED
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Parse CLINKX_ALLOWED_ROOTS env into an array of resolved absolute paths.
3
+ * Falls back to process.cwd() when not set.
4
+ */
5
+ export declare function getCurrentAllowedRoots(): string[];
1
6
  /**
2
7
  * Startup guard: refuse to run if cwd resolves to filesystem root
3
8
  * unless CLINKX_ALLOWED_ROOTS is explicitly set.
@@ -15,3 +20,6 @@ export declare function assertNotRootDir(): void;
15
20
  * Throws InvalidParamsError if validation fails.
16
21
  */
17
22
  export declare function validatePath(inputPath: string): string;
23
+ export declare function validateExistingPath(inputPath: string): string;
24
+ export declare function validateExistingDirectory(inputPath: string): string;
25
+ export declare function validateProspectiveChildPath(realpathedParent: string, childPath: string): string;
package/dist/paths.js CHANGED
@@ -1,42 +1,14 @@
1
1
  import * as fs from "node:fs";
2
2
  import * as path from "node:path";
3
+ import { isFilesystemRoot, isPathWithinAllowedRoots, isSamePathOrDescendant, parseAllowedRootsEnv, } from "./allowed-roots.js";
3
4
  import { InvalidParamsError } from "./errors.js";
4
5
  import { logger } from "./logger.js";
5
6
  /**
6
7
  * Parse CLINKX_ALLOWED_ROOTS env into an array of resolved absolute paths.
7
8
  * Falls back to process.cwd() when not set.
8
9
  */
9
- function getAllowedRoots() {
10
- const envVal = process.env["CLINKX_ALLOWED_ROOTS"];
11
- const raw = envVal != null && envVal.length > 0
12
- ? envVal
13
- .split(",")
14
- .map((r) => r.trim())
15
- .filter((r) => r.length > 0)
16
- : [process.cwd()];
17
- // Resolve through realpath so symlinks (e.g. macOS /var → /private/var)
18
- // are consistent with how we resolve validated paths.
19
- return raw.map((r) => {
20
- try {
21
- return fs.realpathSync(path.resolve(r));
22
- }
23
- catch {
24
- return path.resolve(r);
25
- }
26
- });
27
- }
28
- /**
29
- * Check whether a resolved path is a filesystem root.
30
- * Handles Unix (/) and Windows drive roots (C:\).
31
- */
32
- function isFilesystemRoot(resolved) {
33
- // Unix root
34
- if (resolved === "/")
35
- return true;
36
- // Windows drive root: single letter + colon + backslash (or just colon + backslash)
37
- if (/^[a-zA-Z]:[/\\]?$/.test(resolved))
38
- return true;
39
- return false;
10
+ export function getCurrentAllowedRoots() {
11
+ return parseAllowedRootsEnv();
40
12
  }
41
13
  /**
42
14
  * Startup guard: refuse to run if cwd resolves to filesystem root
@@ -66,22 +38,38 @@ export function assertNotRootDir() {
66
38
  * Throws InvalidParamsError if validation fails.
67
39
  */
68
40
  export function validatePath(inputPath) {
69
- const roots = getAllowedRoots();
70
- let resolved;
41
+ return validateExistingPath(inputPath);
42
+ }
43
+ export function validateExistingPath(inputPath) {
44
+ const roots = getCurrentAllowedRoots();
45
+ const resolved = realpathExistingPath(inputPath);
46
+ if (!isPathWithinAllowedRoots(resolved, roots)) {
47
+ throw new InvalidParamsError(`Path "${inputPath}" (resolved: ${resolved}) is outside allowed roots. ` +
48
+ `Allowed: ${roots.join(", ")}`);
49
+ }
50
+ return resolved;
51
+ }
52
+ export function validateExistingDirectory(inputPath) {
53
+ const resolved = validateExistingPath(inputPath);
54
+ const stats = fs.statSync(resolved);
55
+ if (!stats.isDirectory()) {
56
+ throw new InvalidParamsError(`Path is not a directory: ${inputPath}`);
57
+ }
58
+ return resolved;
59
+ }
60
+ export function validateProspectiveChildPath(realpathedParent, childPath) {
61
+ const resolvedChild = path.resolve(realpathedParent, childPath);
62
+ if (!isSamePathOrDescendant(resolvedChild, realpathedParent)) {
63
+ throw new InvalidParamsError(`Path "${childPath}" escapes parent directory: ${realpathedParent}`);
64
+ }
65
+ return resolvedChild;
66
+ }
67
+ function realpathExistingPath(inputPath) {
71
68
  try {
72
- resolved = fs.realpathSync(inputPath);
69
+ return fs.realpathSync(inputPath);
73
70
  }
74
71
  catch {
75
72
  throw new InvalidParamsError(`Path does not exist or is not accessible: ${inputPath}`);
76
73
  }
77
- const withinRoot = roots.some((root) => {
78
- const normalizedRoot = root.endsWith(path.sep) ? root : root + path.sep;
79
- return resolved === root || resolved.startsWith(normalizedRoot);
80
- });
81
- if (!withinRoot) {
82
- throw new InvalidParamsError(`Path "${inputPath}" (resolved: ${resolved}) is outside allowed roots. ` +
83
- `Allowed: ${roots.join(", ")}`);
84
- }
85
- return resolved;
86
74
  }
87
75
  //# sourceMappingURL=paths.js.map
package/dist/paths.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,oBAAoB,EAAE,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACxC,MAAM,gBAAgB,GACpB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,IAAI;QAC3C,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAEjD,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,2CAA2C,GAAG,KAAK;YACjD,gFAAgF;YAChF,iFAAiF;YACjF,8BAA8B,CACjC,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE,+BAA+B,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC5C,OAAO,oBAAoB,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,MAAM,KAAK,GAAG,sBAAsB,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAEjD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,kBAAkB,CAC1B,SAAS,SAAS,gBAAgB,QAAQ,8BAA8B;YACtE,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjC,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,SAAiB;IACzD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEpC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QACzB,MAAM,IAAI,kBAAkB,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,gBAAwB,EACxB,SAAiB;IAEjB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IAEhE,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,kBAAkB,CAC1B,SAAS,SAAS,+BAA+B,gBAAgB,EAAE,CACpE,CAAC;IACJ,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,oBAAoB,CAAC,SAAiB;IAC7C,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,kBAAkB,CAC1B,6CAA6C,SAAS,EAAE,CACzD,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { ClinkInput } from "./schema.js";
2
2
  import type { AdapterRegistry } from "./registry.js";
3
+ import { type RunResult } from "./runner.js";
3
4
  import type { Server } from "@modelcontextprotocol/sdk/server/index.js";
4
5
  export declare function pickPreferTail(head: string, tail: string): string;
5
6
  export declare function formatStdStreamsForError(options: {
@@ -11,16 +12,57 @@ export declare function formatStdStreamsForError(options: {
11
12
  export declare function classifyStdoutCrash(stdout: string, stderr?: string): string | null;
12
13
  export declare function panicSpecificity(panicClass: string): number;
13
14
  /**
14
- * Resolve the effective timeout: adapter timeout acts as a floor.
15
- * Callers may extend above it, but never shorten below it.
15
+ * Resolve the effective timeout.
16
+ *
17
+ * Normal clink calls treat the adapter timeout as a floor. Internal delegate
18
+ * calls may opt into an honest request ceiling so their watchdog and subprocess
19
+ * wall timeout share one deadline.
16
20
  */
17
- export declare function resolveEffectiveTimeout(requested: number | undefined, adapterTimeout: number): number;
21
+ export declare function resolveEffectiveTimeout(requested: number | undefined, adapterTimeout: number, options?: {
22
+ allowBelowAdapter?: boolean;
23
+ }): number;
18
24
  export interface PipelineResult {
19
25
  content: Array<{
20
26
  type: "text";
21
27
  text: string;
22
28
  }>;
23
29
  isError?: boolean;
30
+ jsonFidelity?: PipelineJsonFidelityMetadata;
31
+ }
32
+ export type PipelineJsonTopLevelType = "object" | "array" | "string" | "number" | "boolean" | "null";
33
+ export interface PipelineJsonFidelityMetadata {
34
+ readonly mode: "strict";
35
+ readonly enforced: boolean;
36
+ readonly parseSource: string;
37
+ readonly parseStatus: string | null;
38
+ readonly rejectionReason: string | null;
39
+ readonly valid: boolean;
40
+ readonly topLevelType: PipelineJsonTopLevelType | null;
41
+ readonly salvaged: boolean;
42
+ readonly salvageMethod: string | null;
43
+ readonly blockCount: number | null;
44
+ readonly rawFallback: boolean;
45
+ readonly capture: {
46
+ readonly truncated: boolean;
47
+ readonly streams: string[];
48
+ readonly stdoutTruncated: boolean;
49
+ readonly stderrTruncated: boolean;
50
+ };
51
+ readonly response: {
52
+ readonly truncated: boolean;
53
+ readonly maxChars: number;
54
+ };
55
+ readonly termination: {
56
+ readonly reason: RunResult["terminationReason"];
57
+ readonly timedOut: boolean;
58
+ readonly idleTimedOut: boolean;
59
+ readonly killed: boolean;
60
+ readonly signal: string | null;
61
+ };
62
+ readonly strict: {
63
+ readonly acceptable: boolean;
64
+ readonly violations: string[];
65
+ };
24
66
  }
25
67
  export declare function executePipeline(input: ClinkInput, registry: AdapterRegistry, options?: {
26
68
  signal?: AbortSignal;
@@ -28,6 +70,8 @@ export declare function executePipeline(input: ClinkInput, registry: AdapterRegi
28
70
  server: Server;
29
71
  token: string | number;
30
72
  };
73
+ jsonFidelity?: "strict";
74
+ allowTimeoutBelowAdapter?: boolean;
31
75
  }): Promise<PipelineResult>;
32
76
  /**
33
77
  * Limit output to maxChars with JSON-aware truncation.
package/dist/pipeline.js CHANGED
@@ -135,53 +135,74 @@ export function panicSpecificity(panicClass) {
135
135
  return PANIC_SPECIFICITY[panicClass] ?? 0;
136
136
  }
137
137
  /**
138
- * Resolve the effective timeout: adapter timeout acts as a floor.
139
- * Callers may extend above it, but never shorten below it.
138
+ * Resolve the effective timeout.
139
+ *
140
+ * Normal clink calls treat the adapter timeout as a floor. Internal delegate
141
+ * calls may opt into an honest request ceiling so their watchdog and subprocess
142
+ * wall timeout share one deadline.
140
143
  */
141
- export function resolveEffectiveTimeout(requested, adapterTimeout) {
142
- return requested == null
143
- ? adapterTimeout
144
+ export function resolveEffectiveTimeout(requested, adapterTimeout, options) {
145
+ if (requested == null) {
146
+ return adapterTimeout;
147
+ }
148
+ return options?.allowBelowAdapter === true
149
+ ? requested
144
150
  : Math.max(requested, adapterTimeout);
145
151
  }
152
+ function shouldWarnLowerTimeoutIgnored(requested, adapterTimeout, options) {
153
+ return options?.allowBelowAdapter !== true &&
154
+ requested != null &&
155
+ requested < adapterTimeout;
156
+ }
157
+ function shouldPassTimeoutToRunner(requested, adapterTimeout, options) {
158
+ return requested != null &&
159
+ (options?.allowBelowAdapter === true || requested > adapterTimeout);
160
+ }
161
+ function resolveRunnerTimeout(requested, adapterTimeout, options) {
162
+ return shouldPassTimeoutToRunner(requested, adapterTimeout, options)
163
+ ? requested
164
+ : undefined;
165
+ }
146
166
  // Module-level singletons
147
167
  const continuationCache = new ContinuationCache();
148
168
  const semaphore = new Semaphore();
169
+ function jsonTopLevelType(value) {
170
+ if (value === null)
171
+ return "null";
172
+ if (Array.isArray(value))
173
+ return "array";
174
+ return typeof value;
175
+ }
149
176
  function normalizeJsonRoleOutput(output, options) {
150
177
  const trimmed = output.trim();
151
178
  if (trimmed.length === 0) {
152
179
  return {
153
180
  content: output,
154
181
  valid: false,
182
+ topLevelType: null,
155
183
  salvaged: false,
156
184
  salvageMethod: null,
157
185
  blockCount: 0,
158
186
  };
159
187
  }
160
188
  try {
161
- JSON.parse(trimmed);
189
+ const parsed = JSON.parse(trimmed);
162
190
  return {
163
191
  content: output,
164
192
  valid: true,
193
+ topLevelType: jsonTopLevelType(parsed),
165
194
  salvaged: false,
166
195
  salvageMethod: null,
167
196
  blockCount: 1,
168
197
  };
169
198
  }
170
199
  catch {
171
- if (options?.allowMixedBlockSalvage !== true) {
172
- return {
173
- content: output,
174
- valid: false,
175
- salvaged: false,
176
- salvageMethod: null,
177
- blockCount: 0,
178
- };
179
- }
180
200
  const blocks = findAllJsonBlocks(output, { maxBlocks: 2 });
181
- if (blocks.length === 1) {
201
+ if (options?.allowMixedBlockSalvage === true && blocks.length === 1) {
182
202
  return {
183
203
  content: blocks[0].raw,
184
204
  valid: true,
205
+ topLevelType: jsonTopLevelType(blocks[0].value),
185
206
  salvaged: true,
186
207
  salvageMethod: "single_block_extract",
187
208
  blockCount: 1,
@@ -190,6 +211,7 @@ function normalizeJsonRoleOutput(output, options) {
190
211
  return {
191
212
  content: output,
192
213
  valid: false,
214
+ topLevelType: null,
193
215
  salvaged: false,
194
216
  salvageMethod: null,
195
217
  blockCount: blocks.length,
@@ -236,10 +258,10 @@ export async function executePipeline(input, registry, options) {
236
258
  : baseAdapter;
237
259
  const adapterTimeoutSeconds = adapter.timeout_seconds;
238
260
  const requestedTimeoutSeconds = input.timeout_seconds;
239
- const effectiveTimeoutSeconds = resolveEffectiveTimeout(requestedTimeoutSeconds, adapterTimeoutSeconds);
261
+ const effectiveTimeoutSeconds = resolveEffectiveTimeout(requestedTimeoutSeconds, adapterTimeoutSeconds, { allowBelowAdapter: options?.allowTimeoutBelowAdapter === true });
262
+ const runnerTimeoutSeconds = resolveRunnerTimeout(requestedTimeoutSeconds, adapterTimeoutSeconds, { allowBelowAdapter: options?.allowTimeoutBelowAdapter === true });
240
263
  // 1a. If a caller tries to shorten below the user-configured adapter timeout, ignore it.
241
- if (requestedTimeoutSeconds != null &&
242
- requestedTimeoutSeconds < adapterTimeoutSeconds) {
264
+ if (shouldWarnLowerTimeoutIgnored(requestedTimeoutSeconds, adapterTimeoutSeconds, { allowBelowAdapter: options?.allowTimeoutBelowAdapter === true }) && requestedTimeoutSeconds != null) {
243
265
  logger.warn({
244
266
  requested: requestedTimeoutSeconds,
245
267
  adapter_timeout: adapterTimeoutSeconds,
@@ -281,10 +303,10 @@ export async function executePipeline(input, registry, options) {
281
303
  prompt,
282
304
  runDirPath: runDir.path,
283
305
  };
284
- // Allow caller to extend timeout above adapter config, but never shorten it.
285
- if (requestedTimeoutSeconds != null &&
286
- requestedTimeoutSeconds > adapterTimeoutSeconds) {
287
- runOptions.timeoutSeconds = requestedTimeoutSeconds;
306
+ // Normal calls may only extend adapter timeouts; delegate calls may set an
307
+ // explicit lower ceiling so watchdog and subprocess timeout agree.
308
+ if (runnerTimeoutSeconds != null) {
309
+ runOptions.timeoutSeconds = runnerTimeoutSeconds;
288
310
  }
289
311
  if (adapter.idle_timeout_seconds != null) {
290
312
  runOptions.idleTimeoutSeconds = adapter.idle_timeout_seconds;
@@ -301,7 +323,7 @@ export async function executePipeline(input, registry, options) {
301
323
  if (runResult.killed && options?.signal?.aborted) {
302
324
  throw new CancellationError();
303
325
  }
304
- // 7. Extract output (Phase 5 deterministic extraction order)
326
+ // 7. Extract output using the deterministic extraction order
305
327
  void progress?.emit("parse");
306
328
  const extracted = await extractResult({
307
329
  stdoutHead: runResult.stdoutHead,
@@ -352,31 +374,37 @@ export async function executePipeline(input, registry, options) {
352
374
  let semanticFailureReason = semanticFailure
353
375
  ? rejectionReason ?? "invalid_final_result"
354
376
  : null;
377
+ let jsonValid = false;
378
+ let jsonTopLevel = null;
355
379
  let jsonSalvaged = false;
356
380
  let jsonSalvageMethod = null;
357
381
  let jsonBlockCount = null;
358
- const enforceJson = input.role === "json" || input.expect_json === true;
382
+ const enforceJson = input.role === "json" ||
383
+ input.expect_json === true ||
384
+ options?.jsonFidelity === "strict";
359
385
  if (parseStatus === "invalid") {
360
386
  semanticFailure = true;
361
387
  semanticFailureReason = rejectionReason ?? "invalid_final_result";
362
388
  }
363
389
  let secondaryFailureReason = null;
364
390
  if (enforceJson) {
391
+ const normalized = normalizeJsonRoleOutput(output, {
392
+ allowMixedBlockSalvage: extracted.result.source === "parser" ||
393
+ extracted.result.source === "result_contract" ||
394
+ extracted.result.source === "json_extract",
395
+ });
396
+ jsonValid = normalized.valid;
397
+ jsonTopLevel = normalized.topLevelType;
398
+ jsonBlockCount = normalized.blockCount;
399
+ jsonSalvaged = normalized.salvaged;
400
+ jsonSalvageMethod = normalized.salvageMethod;
365
401
  if (!semanticFailure) {
366
402
  // Salvage (extracting a single JSON block from mixed prose) is only
367
403
  // allowed for higher-confidence extraction paths (parser, result_contract,
368
404
  // json_extract). Raw stdout fallback is excluded because unstructured
369
405
  // CLI output is too unreliable for safe JSON block extraction.
370
- const normalized = normalizeJsonRoleOutput(output, {
371
- allowMixedBlockSalvage: extracted.result.source === "parser" ||
372
- extracted.result.source === "result_contract" ||
373
- extracted.result.source === "json_extract",
374
- });
375
- jsonBlockCount = normalized.blockCount;
376
406
  if (normalized.valid) {
377
407
  output = normalized.content;
378
- jsonSalvaged = normalized.salvaged;
379
- jsonSalvageMethod = normalized.salvageMethod;
380
408
  }
381
409
  else {
382
410
  if (runResult.exitCode !== 0 && runResult.exitCode !== null && extracted.isError) {
@@ -392,10 +420,7 @@ export async function executePipeline(input, registry, options) {
392
420
  }
393
421
  }
394
422
  else {
395
- try {
396
- JSON.parse(output.trim());
397
- }
398
- catch {
423
+ if (!normalized.valid) {
399
424
  secondaryFailureReason = "invalid_json_output";
400
425
  }
401
426
  }
@@ -403,6 +428,7 @@ export async function executePipeline(input, registry, options) {
403
428
  // 8. Limit output size
404
429
  const maxChars = input.max_response_chars ?? safeParseInt(process.env["CLINKX_MAX_RESPONSE_CHARS"], DEFAULT_MAX_RESPONSE_CHARS);
405
430
  const limited = limitOutput(output, maxChars);
431
+ const responseTruncated = limited !== output;
406
432
  const isResultContract = extracted.result.source === "result_contract";
407
433
  // Fidelity-critical: only stdout truncation matters for stdout-extracted paths
408
434
  const stdoutCriticalTruncated = !isResultContract && runResult.stdoutTruncated;
@@ -415,7 +441,7 @@ export async function executePipeline(input, registry, options) {
415
441
  ].filter((stream) => stream != null);
416
442
  // F5: For role "json", verify the limited output is still valid JSON.
417
443
  // Skip when JSON failure was already demoted to secondary (non-zero exit path).
418
- if (enforceJson && !semanticFailure && secondaryFailureReason == null && limited !== output) {
444
+ if (enforceJson && !semanticFailure && secondaryFailureReason == null && responseTruncated) {
419
445
  try {
420
446
  JSON.parse(limited);
421
447
  }
@@ -566,6 +592,76 @@ export async function executePipeline(input, registry, options) {
566
592
  }),
567
593
  });
568
594
  }
595
+ if (options?.jsonFidelity === "strict") {
596
+ const rawFallback = extracted.result.source === "raw_fallback" ||
597
+ extracted.result.source === "stderr_fallback";
598
+ const violations = [];
599
+ if (!jsonValid) {
600
+ violations.push("invalid_json");
601
+ }
602
+ if (jsonValid && jsonTopLevel !== "object") {
603
+ violations.push("non_object_json");
604
+ }
605
+ if (jsonSalvaged) {
606
+ violations.push("json_salvaged");
607
+ }
608
+ if (jsonBlockCount != null && jsonBlockCount !== 1) {
609
+ violations.push("json_block_count");
610
+ }
611
+ if (rawFallback) {
612
+ violations.push("raw_fallback");
613
+ }
614
+ if (runResult.stdoutTruncated || runResult.stderrTruncated) {
615
+ violations.push("capture_truncated");
616
+ }
617
+ if (responseTruncated) {
618
+ violations.push("response_truncated");
619
+ }
620
+ if (runResult.terminationReason !== "none") {
621
+ violations.push("terminated");
622
+ }
623
+ if (result.isError === true) {
624
+ violations.push("pipeline_error");
625
+ }
626
+ const acceptable = violations.length === 0;
627
+ result.jsonFidelity = {
628
+ mode: "strict",
629
+ enforced: enforceJson,
630
+ parseSource: extracted.result.source ?? "unknown",
631
+ parseStatus,
632
+ rejectionReason,
633
+ valid: jsonValid,
634
+ topLevelType: jsonTopLevel,
635
+ salvaged: jsonSalvaged,
636
+ salvageMethod: jsonSalvageMethod,
637
+ blockCount: jsonBlockCount,
638
+ rawFallback,
639
+ capture: {
640
+ truncated: runResult.stdoutTruncated || runResult.stderrTruncated,
641
+ streams: truncationStreams,
642
+ stdoutTruncated: runResult.stdoutTruncated,
643
+ stderrTruncated: runResult.stderrTruncated,
644
+ },
645
+ response: {
646
+ truncated: responseTruncated,
647
+ maxChars,
648
+ },
649
+ termination: {
650
+ reason: runResult.terminationReason,
651
+ timedOut: runResult.timedOut,
652
+ idleTimedOut: runResult.idleTimedOut,
653
+ killed: runResult.killed,
654
+ signal: runResult.signal,
655
+ },
656
+ strict: {
657
+ acceptable,
658
+ violations,
659
+ },
660
+ };
661
+ if (!acceptable) {
662
+ result.isError = true;
663
+ }
664
+ }
569
665
  // Store continuation only on true success (after all error handling)
570
666
  if (input.continuation_id && output && !result.isError) {
571
667
  continuationCache.set(input.continuation_id, output);
@@ -665,5 +761,5 @@ export function limitOutput(output, maxChars) {
665
761
  const textTrailer = "\n\n[Output truncated]";
666
762
  return output.slice(0, Math.max(0, maxChars - textTrailer.length)) + textTrailer;
667
763
  }
668
- // Output extraction/parsing is implemented in src/parsers/extract.ts (Phase 5).
764
+ // Output extraction/parsing is implemented in src/parsers/extract.ts.
669
765
  //# sourceMappingURL=pipeline.js.map