@codeledger/selector 0.2.0 → 0.5.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 (86) hide show
  1. package/dist/bundle-invalidation.d.ts +33 -0
  2. package/dist/bundle-invalidation.d.ts.map +1 -0
  3. package/dist/bundle-invalidation.js +98 -0
  4. package/dist/bundle-invalidation.js.map +1 -0
  5. package/dist/bundle.d.ts.map +1 -1
  6. package/dist/bundle.js +16 -4
  7. package/dist/bundle.js.map +1 -1
  8. package/dist/candidates.d.ts +18 -0
  9. package/dist/candidates.d.ts.map +1 -1
  10. package/dist/candidates.js +76 -2
  11. package/dist/candidates.js.map +1 -1
  12. package/dist/confidence.d.ts +2 -2
  13. package/dist/confidence.d.ts.map +1 -1
  14. package/dist/confidence.js +118 -2
  15. package/dist/confidence.js.map +1 -1
  16. package/dist/conflict-zones.d.ts +18 -0
  17. package/dist/conflict-zones.d.ts.map +1 -0
  18. package/dist/conflict-zones.js +66 -0
  19. package/dist/conflict-zones.js.map +1 -0
  20. package/dist/debt-detection.d.ts +15 -0
  21. package/dist/debt-detection.d.ts.map +1 -0
  22. package/dist/debt-detection.js +80 -0
  23. package/dist/debt-detection.js.map +1 -0
  24. package/dist/index.d.ts +18 -1
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +15 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/intent/drift.d.ts +31 -0
  29. package/dist/intent/drift.d.ts.map +1 -0
  30. package/dist/intent/drift.js +120 -0
  31. package/dist/intent/drift.js.map +1 -0
  32. package/dist/intent/hash.d.ts +19 -0
  33. package/dist/intent/hash.d.ts.map +1 -0
  34. package/dist/intent/hash.js +38 -0
  35. package/dist/intent/hash.js.map +1 -0
  36. package/dist/intent/index.d.ts +5 -0
  37. package/dist/intent/index.d.ts.map +1 -0
  38. package/dist/intent/index.js +4 -0
  39. package/dist/intent/index.js.map +1 -0
  40. package/dist/intent/normalize.d.ts +23 -0
  41. package/dist/intent/normalize.d.ts.map +1 -0
  42. package/dist/intent/normalize.js +35 -0
  43. package/dist/intent/normalize.js.map +1 -0
  44. package/dist/intent/types.d.ts +37 -0
  45. package/dist/intent/types.d.ts.map +1 -0
  46. package/dist/intent/types.js +2 -0
  47. package/dist/intent/types.js.map +1 -0
  48. package/dist/knowledge-bundle.d.ts +41 -0
  49. package/dist/knowledge-bundle.d.ts.map +1 -0
  50. package/dist/knowledge-bundle.js +200 -0
  51. package/dist/knowledge-bundle.js.map +1 -0
  52. package/dist/knowledge-candidates.d.ts +27 -0
  53. package/dist/knowledge-candidates.d.ts.map +1 -0
  54. package/dist/knowledge-candidates.js +123 -0
  55. package/dist/knowledge-candidates.js.map +1 -0
  56. package/dist/knowledge-excerpt.d.ts +26 -0
  57. package/dist/knowledge-excerpt.d.ts.map +1 -0
  58. package/dist/knowledge-excerpt.js +179 -0
  59. package/dist/knowledge-excerpt.js.map +1 -0
  60. package/dist/knowledge-scorer.d.ts +33 -0
  61. package/dist/knowledge-scorer.d.ts.map +1 -0
  62. package/dist/knowledge-scorer.js +234 -0
  63. package/dist/knowledge-scorer.js.map +1 -0
  64. package/dist/loop-detection.d.ts +28 -0
  65. package/dist/loop-detection.d.ts.map +1 -0
  66. package/dist/loop-detection.js +124 -0
  67. package/dist/loop-detection.js.map +1 -0
  68. package/dist/mode-detect.d.ts +23 -0
  69. package/dist/mode-detect.d.ts.map +1 -0
  70. package/dist/mode-detect.js +76 -0
  71. package/dist/mode-detect.js.map +1 -0
  72. package/dist/scope-contract.d.ts +26 -0
  73. package/dist/scope-contract.d.ts.map +1 -0
  74. package/dist/scope-contract.js +79 -0
  75. package/dist/scope-contract.js.map +1 -0
  76. package/dist/scorer.d.ts.map +1 -1
  77. package/dist/scorer.js +21 -2
  78. package/dist/scorer.js.map +1 -1
  79. package/dist/security-surface.d.ts +13 -0
  80. package/dist/security-surface.d.ts.map +1 -0
  81. package/dist/security-surface.js +45 -0
  82. package/dist/security-surface.js.map +1 -0
  83. package/dist/task-type.d.ts.map +1 -1
  84. package/dist/task-type.js +4 -2
  85. package/dist/task-type.js.map +1 -1
  86. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"confidence.js","sourceRoot":"","sources":["../src/confidence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"confidence.js","sourceRoot":"","sources":["../src/confidence.ts"],"names":[],"mappings":"AAQA;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAmB,EACnB,gBAAwB,EACxB,gBAAwB,EACxB,SAAqB,EACrB,YAAuB;IAEvB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,CAAC,iCAAiC,CAAC;YAC5C,QAAQ,EAAE;gBACR,mBAAmB,EAAE,CAAC;gBACtB,aAAa,EAAE,CAAC;gBAChB,aAAa,EAAE,CAAC;gBAChB,kBAAkB,EAAE,CAAC;gBACrB,gBAAgB,EAAE,CAAC;aACpB;SACF,CAAC;IACJ,CAAC;IAED,kEAAkE;IAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;IAChF,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAE1D,IAAI,YAAY,IAAI,GAAG,EAAE,CAAC;QACxB,KAAK,IAAI,IAAI,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,0BAA0B,WAAW,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,gCAAgC,CAAC,CAAC;IAChH,CAAC;SAAM,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,IAAI,IAAI,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,6BAA6B,WAAW,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,gCAAgC,CAAC,CAAC;IACnH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;IAC3F,CAAC;IAED,wEAAwE;IACxE,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC;QACjC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC;QACpC,IAAI,QAAQ,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,QAAQ,CAAC;YAChD,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;gBACf,KAAK,IAAI,GAAG,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,KAAK,IAAI,GAAG,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACtF,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;QACtB,KAAK,IAAI,GAAG,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAClE,CAAC;SAAM,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;QAC7B,KAAK,IAAI,GAAG,CAAC;IACf,CAAC;IAED,mEAAmE;IACnE,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC;QAC1B,KAAK,IAAI,IAAI,CAAC;IAChB,CAAC;SAAM,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC;QACjC,KAAK,IAAI,GAAG,CAAC;IACf,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;IAClG,CAAC;IAED,yCAAyC;IACzC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACtC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,eAAe,CAAC,CAC/C,CAAC;IACF,IAAI,YAAY,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QAC9C,KAAK,IAAI,GAAG,CAAC;IACf,CAAC;IAED,kBAAkB;IAClB,IAAI,KAAsB,CAAC;IAC3B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,KAAK,GAAG,MAAM,CAAC;IACjB,CAAC;SAAM,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,KAAK,GAAG,QAAQ,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC;IAED,wEAAwE;IACxE,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,6BAA6B,CAAC,KAAK,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;QACzF,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,MAAM,QAAQ,GAAG,yBAAyB,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAE3E,OAAO;QACL,KAAK;QACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG;QACpC,OAAO;QACP,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,yBAAyB,CAChC,KAAmB,EACnB,SAAqB,EACrB,YAAuB;IAEvB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAEtE,wEAAwE;IACxE,kCAAkC;IAClC,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1D,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAChE,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;mBAC1D,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,IAAI,aAAa;gBAAE,cAAc,EAAE,CAAC;QACtC,CAAC;QACD,mBAAmB,GAAG,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC;IAC5D,CAAC;SAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,sDAAsD;QACtD,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAC7F,CAAC;QACF,mBAAmB,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACrD,CAAC;IAED,qEAAqE;IACrE,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAC3C,CAAC,MAAM,CAAC;QACT,aAAa,GAAG,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC;IACzD,CAAC;IAED,wEAAwE;IACxE,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAC9E,CAAC,MAAM,CAAC;QACT,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC;IACnD,CAAC;IAED,kEAAkE;IAClE,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtE,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;QAC1C,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC5B,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;oBACtC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACxB,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QACD,kBAAkB,GAAG,eAAe,CAAC,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC;IAClE,CAAC;SAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,8CAA8C;QAC9C,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CACrC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAC3C,CAAC,MAAM,CAAC;QACT,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED,uEAAuE;IACvE,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,qDAAqD;YACrD,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAa,EAAE,CAAC;gBAC1B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACxB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;wBAAE,SAAS;oBAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACf,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACrD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;wBAC1B,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;4BAChD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BACf,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;wBAChB,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM;gBAC7B,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;YACD,UAAU,IAAI,KAAK,CAAC;QACtB,CAAC;QACD,mCAAmC;QACnC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO;QACL,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,CAAC;QAChD,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC;QACpC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC;QACpC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,CAAC;QAC9C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,CAAS;IACvB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,SAAS,6BAA6B,CACpC,KAAmB,EACnB,YAAoB,EACpB,gBAAwB;IAExB,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3C,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QAClE,CAAC,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,WAAW,CAAC,IAAI,CACd,0DAA0D,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAChG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC;QAC1B,WAAW,CAAC,IAAI,CACd,4GAA4G,CAC7G,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CACjC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACpF,CAAC;IACF,IAAI,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,WAAW,CAAC,IAAI,CACd,qFAAqF,CACtF,CAAC;IACJ,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { ConflictZone, SessionId, SessionRecord } from '@codeledger/types';
2
+ /**
3
+ * Detect conflict zones between a new bundle and active sessions.
4
+ *
5
+ * A conflict zone is a file that appears in both the new bundle and
6
+ * another active session's bundle. This warns agents about concurrent
7
+ * edits that could cause merge conflicts.
8
+ */
9
+ export declare function detectConflictZones(bundleFiles: string[], activeSessions: SessionRecord[], excludeSessionId: SessionId | null): ConflictZone[];
10
+ /**
11
+ * Count how many conflict zone files were actually touched during a session.
12
+ */
13
+ export declare function countConflictZoneTouches(conflictZones: ConflictZone[], changedFiles: string[]): number;
14
+ /**
15
+ * Format conflict zones for the bundle markdown header.
16
+ */
17
+ export declare function renderConflictZonesMarkdown(zones: ConflictZone[]): string;
18
+ //# sourceMappingURL=conflict-zones.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conflict-zones.d.ts","sourceRoot":"","sources":["../src/conflict-zones.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEhF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EAAE,EACrB,cAAc,EAAE,aAAa,EAAE,EAC/B,gBAAgB,EAAE,SAAS,GAAG,IAAI,GACjC,YAAY,EAAE,CAoBhB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,YAAY,EAAE,EAC7B,YAAY,EAAE,MAAM,EAAE,GACrB,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,CA8BzE"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Detect conflict zones between a new bundle and active sessions.
3
+ *
4
+ * A conflict zone is a file that appears in both the new bundle and
5
+ * another active session's bundle. This warns agents about concurrent
6
+ * edits that could cause merge conflicts.
7
+ */
8
+ export function detectConflictZones(bundleFiles, activeSessions, excludeSessionId) {
9
+ const zones = [];
10
+ const bundleSet = new Set(bundleFiles);
11
+ for (const session of activeSessions) {
12
+ if (session.session_id === excludeSessionId)
13
+ continue;
14
+ if (session.status !== 'active')
15
+ continue;
16
+ for (const file of session.bundle_files) {
17
+ if (bundleSet.has(file)) {
18
+ zones.push({
19
+ file,
20
+ other_session: session.session_id,
21
+ other_task: session.task,
22
+ });
23
+ }
24
+ }
25
+ }
26
+ return zones;
27
+ }
28
+ /**
29
+ * Count how many conflict zone files were actually touched during a session.
30
+ */
31
+ export function countConflictZoneTouches(conflictZones, changedFiles) {
32
+ const conflictFiles = new Set(conflictZones.map((z) => z.file));
33
+ return changedFiles.filter((f) => conflictFiles.has(f)).length;
34
+ }
35
+ /**
36
+ * Format conflict zones for the bundle markdown header.
37
+ */
38
+ export function renderConflictZonesMarkdown(zones) {
39
+ if (zones.length === 0)
40
+ return '';
41
+ const lines = [];
42
+ lines.push('## Conflict Zones');
43
+ lines.push('');
44
+ lines.push('*These files are also being worked on by other active sessions. Concurrent edits may cause merge conflicts.*');
45
+ lines.push('');
46
+ // Group by session
47
+ const bySession = new Map();
48
+ for (const z of zones) {
49
+ const list = bySession.get(z.other_session) ?? [];
50
+ list.push(z);
51
+ bySession.set(z.other_session, list);
52
+ }
53
+ for (const [sessionId, sessionZones] of bySession) {
54
+ const task = sessionZones[0]?.other_task ?? 'unknown task';
55
+ lines.push(`**Session ${sessionId}** — "${task}":`);
56
+ for (const z of sessionZones.slice(0, 10)) {
57
+ lines.push(`- \`${z.file}\``);
58
+ }
59
+ if (sessionZones.length > 10) {
60
+ lines.push(`- ... and ${sessionZones.length - 10} more`);
61
+ }
62
+ lines.push('');
63
+ }
64
+ return lines.join('\n');
65
+ }
66
+ //# sourceMappingURL=conflict-zones.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conflict-zones.js","sourceRoot":"","sources":["../src/conflict-zones.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { DebtWarning } from '@codeledger/types';
2
+ /**
3
+ * Scan diff lines for debt injection patterns.
4
+ * Only flags net-new additions (lines starting with '+').
5
+ *
6
+ * @param diffContent - Raw unified diff output
7
+ * @returns Array of debt warnings for newly introduced patterns
8
+ */
9
+ export declare function scanDebtPatterns(diffContent: string): DebtWarning[];
10
+ /**
11
+ * Compute a debt score from 0.0 (no debt) to 1.0 (heavy debt injection).
12
+ * Score is based on the number of suppressions relative to diff size.
13
+ */
14
+ export declare function computeDebtScore(warnings: DebtWarning[], diffLineCount: number): number;
15
+ //# sourceMappingURL=debt-detection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debt-detection.d.ts","sourceRoot":"","sources":["../src/debt-detection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAiBrD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,EAAE,CAoDnE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAKvF"}
@@ -0,0 +1,80 @@
1
+ /** Patterns that indicate technical debt injection by agents */
2
+ const DEBT_PATTERNS = [
3
+ { pattern: /@Suppress\b/, message: '@Suppress annotation suppresses warnings instead of fixing them' },
4
+ { pattern: /@SuppressWarnings\b/, message: '@SuppressWarnings hides compiler warnings instead of resolving them' },
5
+ { pattern: /eslint-disable(?!-next-line)/, message: 'eslint-disable disables linting for entire block — prefer fixing the issue' },
6
+ { pattern: /eslint-disable-next-line/, message: 'eslint-disable-next-line suppresses linting for this line' },
7
+ { pattern: /@ts-ignore\b/, message: '@ts-ignore suppresses TypeScript errors — prefer @ts-expect-error or fixing the type' },
8
+ { pattern: /@ts-expect-error\b/, message: '@ts-expect-error suppresses a TypeScript error' },
9
+ { pattern: /:\s*any\b/, message: 'Explicit `any` type bypasses type safety' },
10
+ { pattern: /as\s+any\b/, message: '`as any` assertion bypasses type safety' },
11
+ { pattern: /\/\/\s*noinspection\b/, message: 'noinspection comment suppresses IDE warnings' },
12
+ { pattern: /NOSONAR\b/, message: 'NOSONAR suppresses static analysis warnings' },
13
+ { pattern: /--no-verify\b/, message: '--no-verify skips pre-commit hooks' },
14
+ ];
15
+ /**
16
+ * Scan diff lines for debt injection patterns.
17
+ * Only flags net-new additions (lines starting with '+').
18
+ *
19
+ * @param diffContent - Raw unified diff output
20
+ * @returns Array of debt warnings for newly introduced patterns
21
+ */
22
+ export function scanDebtPatterns(diffContent) {
23
+ const warnings = [];
24
+ const lines = diffContent.split('\n');
25
+ let currentFile = '';
26
+ let lineNumber = 0;
27
+ for (const line of lines) {
28
+ // Track current file from diff headers
29
+ const fileMatch = /^\+\+\+ b\/(.+)$/.exec(line);
30
+ if (fileMatch) {
31
+ currentFile = fileMatch[1];
32
+ lineNumber = 0;
33
+ continue;
34
+ }
35
+ // Track line numbers from hunk headers
36
+ const hunkMatch = /^@@ -\d+(?:,\d+)? \+(\d+)/.exec(line);
37
+ if (hunkMatch) {
38
+ lineNumber = parseInt(hunkMatch[1], 10);
39
+ continue;
40
+ }
41
+ // Only check added lines (net-new debt)
42
+ if (line.startsWith('+') && !line.startsWith('+++')) {
43
+ const content = line.slice(1); // remove leading '+'
44
+ // Skip comment-only lines that are documentation
45
+ const trimmed = content.trim();
46
+ if (trimmed.startsWith('//') && !DEBT_PATTERNS.some((p) => p.pattern.test(trimmed))) {
47
+ lineNumber++;
48
+ continue;
49
+ }
50
+ for (const { pattern, message } of DEBT_PATTERNS) {
51
+ if (pattern.test(content)) {
52
+ warnings.push({
53
+ file: currentFile,
54
+ line: lineNumber,
55
+ pattern: pattern.source,
56
+ message,
57
+ });
58
+ }
59
+ }
60
+ lineNumber++;
61
+ }
62
+ else if (!line.startsWith('-')) {
63
+ // Context line — increment line number
64
+ lineNumber++;
65
+ }
66
+ }
67
+ return warnings;
68
+ }
69
+ /**
70
+ * Compute a debt score from 0.0 (no debt) to 1.0 (heavy debt injection).
71
+ * Score is based on the number of suppressions relative to diff size.
72
+ */
73
+ export function computeDebtScore(warnings, diffLineCount) {
74
+ if (diffLineCount === 0 || warnings.length === 0)
75
+ return 0;
76
+ // 1 suppression per 10 lines of diff = 1.0 (maximum)
77
+ const ratio = warnings.length / (diffLineCount / 10);
78
+ return Math.min(1.0, Math.round(ratio * 100) / 100);
79
+ }
80
+ //# sourceMappingURL=debt-detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debt-detection.js","sourceRoot":"","sources":["../src/debt-detection.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { generateCandidates, tokenizeTask, decomposeTask, computeTokenWeights } from './candidates.js';
1
+ export { generateCandidates, tokenizeTask, decomposeTask, computeTokenWeights, inferScope } from './candidates.js';
2
2
  export type { CandidateResult } from './candidates.js';
3
3
  export { computeFeatures, scoreFile, scoreAllCandidates, deriveReasons, gateTemporalFeatures } from './scorer.js';
4
4
  export type { LedgerStats } from './scorer.js';
@@ -19,4 +19,21 @@ export { scanTodos, todoRelevanceScore } from './todo-scan.js';
19
19
  export { estimateTokensCalibrated, estimateTokensByExtension } from './token-calibration.js';
20
20
  export { getFileLayer, sortByLayer } from './layer-ordering.js';
21
21
  export type { LayerRule } from './layer-ordering.js';
22
+ export { detectSecuritySurface, isSecurityTask } from './security-surface.js';
23
+ export { scanDebtPatterns, computeDebtScore } from './debt-detection.js';
24
+ export { detectStuckPatterns, buildActivityLogFromGit, DEFAULT_LOOP_THRESHOLDS } from './loop-detection.js';
25
+ export type { ActivityEntry } from './loop-detection.js';
26
+ export { deriveScopeContract, isInScope, detectScopeDrift, renderScopeContractMarkdown } from './scope-contract.js';
27
+ export { detectConflictZones, countConflictZoneTouches, renderConflictZonesMarkdown } from './conflict-zones.js';
28
+ export { detectAddressedFiles, parseCommittedFiles, renderInvalidationMarkdown } from './bundle-invalidation.js';
29
+ export { norm as intentNorm, normArr as intentNormArr, canonicalize, sha256 as intentSha256, intentHash, jaccardDistanceTokens, setDistance, computeDrift, recommendedAction, } from './intent/index.js';
30
+ export type { TaskContractV1, DriftLevel, DriftResult, DriftReason, IntentDriftEvent, } from './intent/index.js';
31
+ export { computeKnowledgeFeatures, scoreKnowledgeFile, deriveKnowledgeReasons, scoreAllKnowledgeCandidates, DEFAULT_KNOWLEDGE_WEIGHTS, } from './knowledge-scorer.js';
32
+ export { tokenizeIntent, computeKnowledgeTokenWeights, inferAnchorFolders, generateKnowledgeCandidates, } from './knowledge-candidates.js';
33
+ export { extractKnowledgeExcerpt } from './knowledge-excerpt.js';
34
+ export type { KnowledgeExcerptResult } from './knowledge-excerpt.js';
35
+ export { buildKnowledgeBundle, buildKnowledgeTrace } from './knowledge-bundle.js';
36
+ export type { KnowledgeBundleOptions } from './knowledge-bundle.js';
37
+ export { detectSelectionMode } from './mode-detect.js';
38
+ export type { ModeDetectionInput } from './mode-detect.js';
22
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvG,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,kBAAkB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAClH,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACrE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAChE,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { generateCandidates, tokenizeTask, decomposeTask, computeTokenWeights } from './candidates.js';
1
+ export { generateCandidates, tokenizeTask, decomposeTask, computeTokenWeights, inferScope } from './candidates.js';
2
2
  export { computeFeatures, scoreFile, scoreAllCandidates, deriveReasons, gateTemporalFeatures } from './scorer.js';
3
3
  export { shouldStop, estimateTokens } from './stop-rule.js';
4
4
  export { extractExcerpt } from './excerpt.js';
@@ -14,4 +14,18 @@ export { inferTaskType, applyTaskTypeWeights } from './task-type.js';
14
14
  export { scanTodos, todoRelevanceScore } from './todo-scan.js';
15
15
  export { estimateTokensCalibrated, estimateTokensByExtension } from './token-calibration.js';
16
16
  export { getFileLayer, sortByLayer } from './layer-ordering.js';
17
+ export { detectSecuritySurface, isSecurityTask } from './security-surface.js';
18
+ export { scanDebtPatterns, computeDebtScore } from './debt-detection.js';
19
+ export { detectStuckPatterns, buildActivityLogFromGit, DEFAULT_LOOP_THRESHOLDS } from './loop-detection.js';
20
+ export { deriveScopeContract, isInScope, detectScopeDrift, renderScopeContractMarkdown } from './scope-contract.js';
21
+ export { detectConflictZones, countConflictZoneTouches, renderConflictZonesMarkdown } from './conflict-zones.js';
22
+ export { detectAddressedFiles, parseCommittedFiles, renderInvalidationMarkdown } from './bundle-invalidation.js';
23
+ // ─── Intent Governance ──────────────────────────────────────────────────────
24
+ export { norm as intentNorm, normArr as intentNormArr, canonicalize, sha256 as intentSha256, intentHash, jaccardDistanceTokens, setDistance, computeDrift, recommendedAction, } from './intent/index.js';
25
+ // ─── Knowledge Mode ─────────────────────────────────────────────────────────
26
+ export { computeKnowledgeFeatures, scoreKnowledgeFile, deriveKnowledgeReasons, scoreAllKnowledgeCandidates, DEFAULT_KNOWLEDGE_WEIGHTS, } from './knowledge-scorer.js';
27
+ export { tokenizeIntent, computeKnowledgeTokenWeights, inferAnchorFolders, generateKnowledgeCandidates, } from './knowledge-candidates.js';
28
+ export { extractKnowledgeExcerpt } from './knowledge-excerpt.js';
29
+ export { buildKnowledgeBundle, buildKnowledgeTrace } from './knowledge-bundle.js';
30
+ export { detectSelectionMode } from './mode-detect.js';
17
31
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEvG,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,kBAAkB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAElH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEnH,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,kBAAkB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAElH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE5G,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AACpH,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AACjH,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEjH,+EAA+E;AAC/E,OAAO,EACL,IAAI,IAAI,UAAU,EAClB,OAAO,IAAI,aAAa,EACxB,YAAY,EACZ,MAAM,IAAI,YAAY,EACtB,UAAU,EACV,qBAAqB,EACrB,WAAW,EACX,YAAY,EACZ,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAS3B,+EAA+E;AAC/E,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,EACd,4BAA4B,EAC5B,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAElF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { TaskContractV1, DriftResult, DriftLevel } from './types.js';
2
+ /**
3
+ * Token-level Jaccard distance between two strings.
4
+ *
5
+ * Deterministic: split on whitespace, compute |intersection|/|union|.
6
+ * Returns 0 for identical, 1 for completely different.
7
+ */
8
+ export declare function jaccardDistanceTokens(a: string, b: string): number;
9
+ /**
10
+ * Set distance between two string arrays.
11
+ *
12
+ * 1 - (|intersection| / |union|). If both empty, distance is 0.
13
+ */
14
+ export declare function setDistance(a: string[], b: string[]): number;
15
+ /**
16
+ * Compute deterministic drift between a baseline and current task contract.
17
+ *
18
+ * drift_score = Σ(weight_i * distance_i)
19
+ *
20
+ * Drift levels:
21
+ * - NONE: < 0.10
22
+ * - MINOR: 0.10–0.24
23
+ * - MAJOR: 0.25–0.44
24
+ * - CRITICAL: >= 0.45
25
+ */
26
+ export declare function computeDrift(base: TaskContractV1, curr: TaskContractV1): DriftResult;
27
+ /**
28
+ * Determine recommended action based on drift level.
29
+ */
30
+ export declare function recommendedAction(level: DriftLevel): 'NONE' | 'LOG_ONLY' | 'REFRESH_BUNDLE' | 'REQUIRE_ACK';
31
+ //# sourceMappingURL=drift.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../../src/intent/drift.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAe,MAAM,YAAY,CAAC;AAiBvF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAUlE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAU5D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,GAAG,WAAW,CAsCpF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,GAChB,MAAM,GAAG,UAAU,GAAG,gBAAgB,GAAG,aAAa,CAOxD"}
@@ -0,0 +1,120 @@
1
+ import { norm, normArr } from './normalize.js';
2
+ /**
3
+ * Field weights for drift scoring.
4
+ * Sum = 1.0 (so drift_score is directly 0..1)
5
+ */
6
+ const DRIFT_WEIGHTS = {
7
+ objective: 0.30,
8
+ deliverable: 0.10,
9
+ scope_in: 0.15,
10
+ scope_out: 0.10,
11
+ constraints: 0.15,
12
+ acceptance_criteria: 0.15,
13
+ repo_paths_in_scope: 0.05,
14
+ };
15
+ /**
16
+ * Token-level Jaccard distance between two strings.
17
+ *
18
+ * Deterministic: split on whitespace, compute |intersection|/|union|.
19
+ * Returns 0 for identical, 1 for completely different.
20
+ */
21
+ export function jaccardDistanceTokens(a, b) {
22
+ const tokensA = new Set(norm(a).split(' ').filter(Boolean));
23
+ const tokensB = new Set(norm(b).split(' ').filter(Boolean));
24
+ const union = new Set([...tokensA, ...tokensB]);
25
+ if (union.size === 0)
26
+ return 0;
27
+ let intersection = 0;
28
+ for (const t of tokensA) {
29
+ if (tokensB.has(t))
30
+ intersection++;
31
+ }
32
+ return 1 - intersection / union.size;
33
+ }
34
+ /**
35
+ * Set distance between two string arrays.
36
+ *
37
+ * 1 - (|intersection| / |union|). If both empty, distance is 0.
38
+ */
39
+ export function setDistance(a, b) {
40
+ const normA = new Set(normArr(a));
41
+ const normB = new Set(normArr(b));
42
+ const union = new Set([...normA, ...normB]);
43
+ if (union.size === 0)
44
+ return 0;
45
+ let intersection = 0;
46
+ for (const x of normA) {
47
+ if (normB.has(x))
48
+ intersection++;
49
+ }
50
+ return 1 - intersection / union.size;
51
+ }
52
+ /**
53
+ * Compute deterministic drift between a baseline and current task contract.
54
+ *
55
+ * drift_score = Σ(weight_i * distance_i)
56
+ *
57
+ * Drift levels:
58
+ * - NONE: < 0.10
59
+ * - MINOR: 0.10–0.24
60
+ * - MAJOR: 0.25–0.44
61
+ * - CRITICAL: >= 0.45
62
+ */
63
+ export function computeDrift(base, curr) {
64
+ const reasons = [];
65
+ let score = 0;
66
+ for (const [field, weight] of Object.entries(DRIFT_WEIGHTS)) {
67
+ if (!weight)
68
+ continue;
69
+ const baseVal = getContractField(base, field);
70
+ const currVal = getContractField(curr, field);
71
+ let distance;
72
+ if (Array.isArray(baseVal) && Array.isArray(currVal)) {
73
+ distance = setDistance(baseVal, currVal);
74
+ }
75
+ else {
76
+ distance = jaccardDistanceTokens(String(baseVal ?? ''), String(currVal ?? ''));
77
+ }
78
+ reasons.push({
79
+ field: field,
80
+ distance: Math.round(distance * 1000) / 1000,
81
+ });
82
+ score += weight * distance;
83
+ }
84
+ const driftScore = Math.round(score * 1000) / 1000;
85
+ const driftLevel = driftScore < 0.10 ? 'NONE' :
86
+ driftScore < 0.25 ? 'MINOR' :
87
+ driftScore < 0.45 ? 'MAJOR' : 'CRITICAL';
88
+ // Sort reasons by distance descending (most significant drift first)
89
+ reasons.sort((a, b) => b.distance - a.distance);
90
+ return { drift_score: driftScore, drift_level: driftLevel, reasons };
91
+ }
92
+ /**
93
+ * Determine recommended action based on drift level.
94
+ */
95
+ export function recommendedAction(level) {
96
+ switch (level) {
97
+ case 'NONE': return 'NONE';
98
+ case 'MINOR': return 'LOG_ONLY';
99
+ case 'MAJOR': return 'REFRESH_BUNDLE';
100
+ case 'CRITICAL': return 'REQUIRE_ACK';
101
+ }
102
+ }
103
+ /**
104
+ * Type-safe field accessor for TaskContractV1.
105
+ * Returns the field value as string | string[] | null.
106
+ */
107
+ function getContractField(contract, field) {
108
+ switch (field) {
109
+ case 'objective': return contract.objective;
110
+ case 'deliverable': return contract.deliverable;
111
+ case 'scope_in': return contract.scope_in;
112
+ case 'scope_out': return contract.scope_out;
113
+ case 'constraints': return contract.constraints;
114
+ case 'acceptance_criteria': return contract.acceptance_criteria;
115
+ case 'risk_flags': return contract.risk_flags;
116
+ case 'repo_paths_in_scope': return contract.repo_paths_in_scope;
117
+ default: return null;
118
+ }
119
+ }
120
+ //# sourceMappingURL=drift.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/intent/drift.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { TaskContractV1 } from './types.js';
2
+ /**
3
+ * Create a canonical JSON representation of a task contract.
4
+ *
5
+ * Canonical = stable key order + normalized values + sorted arrays.
6
+ * This ensures the same logical contract always produces the same hash.
7
+ */
8
+ export declare function canonicalize(contract: TaskContractV1): string;
9
+ /**
10
+ * Compute SHA-256 hash of a string.
11
+ */
12
+ export declare function sha256(s: string): string;
13
+ /**
14
+ * Compute the intent hash for a task contract.
15
+ *
16
+ * intent_hash = sha256(canonical_json(task_contract))
17
+ */
18
+ export declare function intentHash(contract: TaskContractV1): string;
19
+ //# sourceMappingURL=hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/intent/hash.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAe7D;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAExC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAE3D"}
@@ -0,0 +1,38 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { norm, normArr } from './normalize.js';
3
+ /**
4
+ * Create a canonical JSON representation of a task contract.
5
+ *
6
+ * Canonical = stable key order + normalized values + sorted arrays.
7
+ * This ensures the same logical contract always produces the same hash.
8
+ */
9
+ export function canonicalize(contract) {
10
+ // Build a normalized copy with stable key order
11
+ const normalized = {
12
+ acceptance_criteria: normArr(contract.acceptance_criteria),
13
+ constraints: normArr(contract.constraints),
14
+ deliverable: contract.deliverable ? norm(contract.deliverable) : null,
15
+ objective: norm(contract.objective),
16
+ repo_paths_in_scope: normArr(contract.repo_paths_in_scope),
17
+ risk_flags: normArr(contract.risk_flags),
18
+ scope_in: normArr(contract.scope_in),
19
+ scope_out: normArr(contract.scope_out),
20
+ version: contract.version,
21
+ };
22
+ return JSON.stringify(normalized);
23
+ }
24
+ /**
25
+ * Compute SHA-256 hash of a string.
26
+ */
27
+ export function sha256(s) {
28
+ return createHash('sha256').update(s, 'utf8').digest('hex');
29
+ }
30
+ /**
31
+ * Compute the intent hash for a task contract.
32
+ *
33
+ * intent_hash = sha256(canonical_json(task_contract))
34
+ */
35
+ export function intentHash(contract) {
36
+ return sha256(canonicalize(contract));
37
+ }
38
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/intent/hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,QAAwB;IACnD,gDAAgD;IAChD,MAAM,UAAU,GAAG;QACjB,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC1D,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC1C,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;QACrE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACnC,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC1D,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;QACxC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACpC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;QACtC,OAAO,EAAE,QAAQ,CAAC,OAAO;KAC1B,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,CAAS;IAC9B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,QAAwB;IACjD,OAAO,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export type { TaskContractV1, DriftLevel, DriftResult, DriftReason, IntentDriftEvent } from './types.js';
2
+ export { norm, normArr } from './normalize.js';
3
+ export { canonicalize, sha256, intentHash } from './hash.js';
4
+ export { jaccardDistanceTokens, setDistance, computeDrift, recommendedAction } from './drift.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/intent/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACzG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { norm, normArr } from './normalize.js';
2
+ export { canonicalize, sha256, intentHash } from './hash.js';
3
+ export { jaccardDistanceTokens, setDistance, computeDrift, recommendedAction } from './drift.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/intent/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Deterministic normalization for intent governance.
3
+ *
4
+ * Rules:
5
+ * 1. Trim whitespace
6
+ * 2. Lowercase
7
+ * 3. Collapse internal whitespace to single spaces
8
+ * 4. Remove non-semantic punctuation: ,;:!? (keep / - _ . for paths/flags/extensions)
9
+ * 4b. Remove periods only at word boundaries or end of string (preserve .ts, .js, etc.)
10
+ * 5. Normalize path separators to /
11
+ * 6. Remove trailing /
12
+ * 7. Sort arrays lexicographically
13
+ * 8. Remove duplicates
14
+ */
15
+ /**
16
+ * Normalize a single string value.
17
+ */
18
+ export declare function norm(s: string): string;
19
+ /**
20
+ * Normalize an array of strings: norm each, deduplicate, sort.
21
+ */
22
+ export declare function normArr(xs: string[]): string[];
23
+ //# sourceMappingURL=normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/intent/normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAStC;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAG9C"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Deterministic normalization for intent governance.
3
+ *
4
+ * Rules:
5
+ * 1. Trim whitespace
6
+ * 2. Lowercase
7
+ * 3. Collapse internal whitespace to single spaces
8
+ * 4. Remove non-semantic punctuation: ,;:!? (keep / - _ . for paths/flags/extensions)
9
+ * 4b. Remove periods only at word boundaries or end of string (preserve .ts, .js, etc.)
10
+ * 5. Normalize path separators to /
11
+ * 6. Remove trailing /
12
+ * 7. Sort arrays lexicographically
13
+ * 8. Remove duplicates
14
+ */
15
+ /**
16
+ * Normalize a single string value.
17
+ */
18
+ export function norm(s) {
19
+ return s
20
+ .trim()
21
+ .toLowerCase()
22
+ .replace(/\\/g, '/') // normalize path separators early (before punctuation removal)
23
+ .replace(/[,;:!?]/g, '') // remove non-semantic punctuation (NOT periods)
24
+ .replace(/\.(?=\s|$)/g, '') // remove periods only at word boundaries or end of string
25
+ .replace(/\s+/g, ' ')
26
+ .replace(/\/+$/, ''); // remove trailing /
27
+ }
28
+ /**
29
+ * Normalize an array of strings: norm each, deduplicate, sort.
30
+ */
31
+ export function normArr(xs) {
32
+ const set = new Set(xs.map(norm).filter(Boolean));
33
+ return Array.from(set).sort();
34
+ }
35
+ //# sourceMappingURL=normalize.js.map