@ghcrawl/api-core 0.1.0 → 0.2.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 (63) hide show
  1. package/README.md +25 -0
  2. package/dist/api/server.d.ts +4 -0
  3. package/dist/api/server.d.ts.map +1 -0
  4. package/dist/api/server.js +142 -0
  5. package/dist/api/server.js.map +1 -0
  6. package/dist/cluster/build.d.ts +16 -0
  7. package/dist/cluster/build.d.ts.map +1 -0
  8. package/dist/cluster/build.js +62 -0
  9. package/dist/cluster/build.js.map +1 -0
  10. package/dist/config.d.ts +83 -0
  11. package/dist/config.d.ts.map +1 -0
  12. package/dist/config.js +257 -0
  13. package/dist/config.js.map +1 -0
  14. package/dist/db/migrate.d.ts +3 -0
  15. package/dist/db/migrate.d.ts.map +1 -0
  16. package/{src/db/migrate.ts → dist/db/migrate.js} +30 -36
  17. package/dist/db/migrate.js.map +1 -0
  18. package/dist/db/sqlite.d.ts +4 -0
  19. package/dist/db/sqlite.d.ts.map +1 -0
  20. package/dist/db/sqlite.js +11 -0
  21. package/dist/db/sqlite.js.map +1 -0
  22. package/dist/documents/normalize.d.ts +23 -0
  23. package/dist/documents/normalize.d.ts.map +1 -0
  24. package/dist/documents/normalize.js +36 -0
  25. package/dist/documents/normalize.js.map +1 -0
  26. package/dist/github/client.d.ts +24 -0
  27. package/dist/github/client.d.ts.map +1 -0
  28. package/dist/github/client.js +170 -0
  29. package/dist/github/client.js.map +1 -0
  30. package/dist/index.d.ts +7 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/{src/index.ts → dist/index.js} +1 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/openai/provider.d.ts +44 -0
  35. package/dist/openai/provider.d.ts.map +1 -0
  36. package/dist/openai/provider.js +107 -0
  37. package/dist/openai/provider.js.map +1 -0
  38. package/dist/search/exact.d.ts +14 -0
  39. package/dist/search/exact.d.ts.map +1 -0
  40. package/dist/search/exact.js +26 -0
  41. package/dist/search/exact.js.map +1 -0
  42. package/dist/service.d.ts +249 -0
  43. package/dist/service.d.ts.map +1 -0
  44. package/dist/service.js +1801 -0
  45. package/dist/service.js.map +1 -0
  46. package/package.json +8 -6
  47. package/src/api/server.test.ts +0 -296
  48. package/src/api/server.ts +0 -171
  49. package/src/cluster/build.test.ts +0 -18
  50. package/src/cluster/build.ts +0 -74
  51. package/src/config.test.ts +0 -247
  52. package/src/config.ts +0 -421
  53. package/src/db/migrate.test.ts +0 -30
  54. package/src/db/sqlite.ts +0 -14
  55. package/src/documents/normalize.test.ts +0 -25
  56. package/src/documents/normalize.ts +0 -52
  57. package/src/github/client.ts +0 -241
  58. package/src/openai/provider.ts +0 -141
  59. package/src/search/exact.test.ts +0 -22
  60. package/src/search/exact.ts +0 -28
  61. package/src/service.test.ts +0 -2036
  62. package/src/service.ts +0 -2497
  63. package/src/types/better-sqlite3.d.ts +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAyE5B,SAAS,qBAAqB,CAAC,QAAyB;IACtD,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC;YAC7D,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAsB;IAClD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACzD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,UAA6B,EAAE;IAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACtD,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;QACxB,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACxC,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAA6B,EAAE;IAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACtD,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACnD,OAAO,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,cAAc,CAAC,aAAqB;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,WAAW,CAAI,GAAG,MAA8B;IACvD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACtD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAClF,CAAC;AAED,SAAS,YAAY,CAAC,GAAsB,EAAE,OAAe,EAAE,MAAe;IAC5E,OAAO,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,eAAe,CAAC,MAA8B,EAAE,OAAe,EAAE,MAAe;IACvF,OAAO,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACrE,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,OAAO,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACxG,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GAA4C,EAAE,CAAC;IAChE,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;QACtF,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YAClD,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,UAAqC,CAAC;QACrD,MAAM,cAAc,GAAG,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,cAAc,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3D,SAAS;QACX,CAAC;QACD,WAAW,CAAC,QAAQ,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;IACvD,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAA6B,EAAE;IACjE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAA4B,CAAC;IACvF,OAAO;QACL,SAAS;QACT,UAAU;QACV,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE;YACJ,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;YACvC,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;YACzC,cAAc,EAAE,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC;YACrD,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;YACvC,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;YACrC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;YAC7B,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;YAC/B,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;YACzC,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;YACrC,cAAc,EAAE,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;YAC7C,gBAAgB,EAAE,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACjD,cAAc,EAAE,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;YAC7C,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;YAC3C,eAAe,EAAE,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;YAC/C,cAAc,EAAE,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC;SACtD;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAA+B,EAAE,UAA6B,EAAE;IACnG,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7C,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG;QACX,GAAG,OAAO,CAAC,IAAI;QACf,GAAG,MAAM;KACV,CAAC;IACF,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5F,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB,EAAE,KAAa;IAC7D,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,kBAAkB,CAAC,aAAqB;IAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IACrE,OAAO,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,GAAW;IACpD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,sDAAsD,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,UAA6B,EAAE;IACxD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACtD,MAAM,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;IAEnD,MAAM,WAAW,GAAG,WAAW,CAC7B,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,EACrD,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EACpD,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAClE,CAAC;IACF,MAAM,YAAY,GAAG,WAAW,CAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,EACvD,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EACrD,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CACpE,CAAC;IACF,MAAM,gBAAgB,GAAG,WAAW,CAClC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,EAAE,EACjF,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAC/C,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,EAAE,CACjG,CAAC;IACF,MAAM,eAAe,GAAG,gBAAgB,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxG,MAAM,WAAW,GACf,eAAe,KAAK,IAAI;QACtB,CAAC,CAAC,EAAE,MAAM,EAAE,SAAkB,EAAE,KAAK,EAAE,eAAe,EAAE;QACxD,CAAC,CAAC,WAAW,CAAS,gBAAgB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IACxF,MAAM,YAAY,GAAG,WAAW,CAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,EAAE,EACnF,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAChD,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,EAAE,EAClG,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CACrC,CAAC;IACF,MAAM,mBAAmB,GAAG,WAAW,CACrC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,0BAA0B,EAAE,0BAA0B,CAAC,EAAE,EACnG,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EACvD,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC,YAAY,EAAE,0BAA0B,EAAE,0BAA0B,CAAC,EAAE,EAClH,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAClC,CAAC;IACF,MAAM,qBAAqB,GAAG,WAAW,CACvC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,2BAA2B,EAAE,2BAA2B,CAAC,EAAE,EACrG,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EACzD,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC,YAAY,EAAE,2BAA2B,EAAE,2BAA2B,CAAC,EAAE,EACpH,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CACnC,CAAC;IACF,MAAM,mBAAmB,GAAG,WAAW,CACrC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,0BAA0B,EAAE,0BAA0B,CAAC,EAAE,EACnG,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EACvD,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC,YAAY,EAAE,0BAA0B,EAAE,0BAA0B,CAAC,EAAE,EAClH,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CACnC,CAAC;IACF,MAAM,YAAY,GAAG,WAAW,CAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,uBAAuB,EAAE,uBAAuB,CAAC,EAAE,EAC7F,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EACrD,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC,YAAY,EAAE,uBAAuB,EAAE,uBAAuB,CAAC,EAAE,EAC5G,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,CAC3C,CAAC;IACF,MAAM,UAAU,GAAG,WAAW,CAC5B,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,qBAAqB,EAAE,qBAAqB,CAAC,EAAE,EACzF,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EACnD,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC,YAAY,EAAE,qBAAqB,EAAE,qBAAqB,CAAC,EAAE,EACxG,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,wBAAwB,EAAE,CACvD,CAAC;IACF,MAAM,aAAa,GAAG,WAAW,CAC/B,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,wBAAwB,EAAE,wBAAwB,CAAC,EAAE,EAC/F,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,EACtD,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC,YAAY,EAAE,wBAAwB,EAAE,wBAAwB,CAAC,EAAE,CAC/G,CAAC;IACF,MAAM,eAAe,GAAG,WAAW,CACjC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,0BAA0B,EAAE,0BAA0B,CAAC,EAAE,EACnG,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EACxD,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC,YAAY,EAAE,0BAA0B,EAAE,0BAA0B,CAAC,EAAE,EAClH,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAChD,CAAC;IAEF,MAAM,MAAM,GACV,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC;QACrD,CAAC,CAAC,WAAW,CAAC,KAAK;QACnB,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;IAC9F,MAAM,cAAc,GAAG,mBAAmB,CAAC,0BAA0B,EAAE,MAAM,CAAC,mBAAmB,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC;IACjH,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,2BAA2B,EAAE,MAAM,CAAC,qBAAqB,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC;IACvH,MAAM,cAAc,GAAG,mBAAmB,CAAC,0BAA0B,EAAE,MAAM,CAAC,mBAAmB,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC;IAElH,OAAO;QACL,aAAa;QACb,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,gBAAgB,EAAE,MAAM,CAAC,MAAM;QAC/B,MAAM;QACN,YAAY,EAAE,WAAW,CAAC,MAAM;QAChC,OAAO;QACP,WAAW,EAAE,WAAW,CAAC,KAAK;QAC9B,iBAAiB,EAAE,WAAW,CAAC,MAAM;QACrC,YAAY,EAAE,YAAY,CAAC,KAAK;QAChC,kBAAkB,EAAE,YAAY,CAAC,MAAM;QACvC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,WAAW;QACzD,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW;QACpC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU;QAClC,YAAY,EAAE,YAAY,CAAC,KAAK,IAAI,YAAY;QAChD,UAAU,EAAE,UAAU,CAAC,KAAK,IAAI,wBAAwB;QACxD,cAAc;QACd,gBAAgB;QAChB,cAAc;QACd,aAAa,EAAE,aAAa,CAAC,KAAK;QAClC,eAAe,EAAE,eAAe,CAAC,KAAK,IAAI,iBAAiB;QAC3D,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE;KACjD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAsB;IACtD,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAsB,EAAE,KAAa,EAAE,IAAY;IAC5F,OAAO,MAAM,CAAC,cAAc,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACjG,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,MAAsB,EACtB,MAAuG;IAEvG,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;IAClD,MAAM,eAAe,GAAG;QACtB,GAAG,MAAM,CAAC,cAAc;QACxB,CAAC,QAAQ,CAAC,EAAE;YACV,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B;KACF,CAAC;IACF,MAAM,CAAC,cAAc,GAAG,eAAe,CAAC;IACxC,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;QAC3C,CAAC,CAAE;YACC,GAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAA6B;YACtF,cAAc,EAAE,eAAe;SACG;QACtC,CAAC,CAAE;YACC,cAAc,EAAE,eAAe;SACG,CAAC;IACzC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAsB;IACvD,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,IAAI,MAAM,CAAC,cAAc,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC9E,MAAM,IAAI,KAAK,CACb,wFAAwF,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,iFAAiF,MAAM,CAAC,UAAU,EAAE,CACpO,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,kFAAkF,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACzH,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAsB;IACrD,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,IAAI,MAAM,CAAC,cAAc,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC9E,MAAM,IAAI,KAAK,CACb,0FAA0F,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,mFAAmF,MAAM,CAAC,UAAU,EAAE,CACxO,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sFAAsF,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7H,CAAC;IACD,OAAO,MAAM,CAAC,YAAY,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SqliteDatabase } from './sqlite.js';
2
+ export declare function migrate(db: SqliteDatabase): void;
3
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA2NlD,wBAAgB,OAAO,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAehD"}
@@ -1,7 +1,5 @@
1
- import type { SqliteDatabase } from './sqlite.js';
2
-
3
1
  const migrationStatements = [
4
- `
2
+ `
5
3
  create table if not exists repositories (
6
4
  id integer primary key,
7
5
  owner text not null,
@@ -12,7 +10,7 @@ const migrationStatements = [
12
10
  updated_at text not null
13
11
  )
14
12
  `,
15
- `
13
+ `
16
14
  create table if not exists threads (
17
15
  id integer primary key,
18
16
  repo_id integer not null references repositories(id) on delete cascade,
@@ -40,7 +38,7 @@ const migrationStatements = [
40
38
  unique(repo_id, kind, number)
41
39
  )
42
40
  `,
43
- `
41
+ `
44
42
  create table if not exists comments (
45
43
  id integer primary key,
46
44
  thread_id integer not null references threads(id) on delete cascade,
@@ -56,7 +54,7 @@ const migrationStatements = [
56
54
  unique(thread_id, comment_type, github_id)
57
55
  )
58
56
  `,
59
- `
57
+ `
60
58
  create table if not exists documents (
61
59
  id integer primary key,
62
60
  thread_id integer not null unique references threads(id) on delete cascade,
@@ -67,7 +65,7 @@ const migrationStatements = [
67
65
  updated_at text not null
68
66
  )
69
67
  `,
70
- `
68
+ `
71
69
  create virtual table if not exists documents_fts using fts5(
72
70
  title,
73
71
  body,
@@ -77,19 +75,19 @@ const migrationStatements = [
77
75
  content_rowid='id'
78
76
  )
79
77
  `,
80
- `
78
+ `
81
79
  create trigger if not exists documents_ai after insert on documents begin
82
80
  insert into documents_fts(rowid, title, body, raw_text, dedupe_text)
83
81
  values (new.id, new.title, new.body, new.raw_text, new.dedupe_text);
84
82
  end
85
83
  `,
86
- `
84
+ `
87
85
  create trigger if not exists documents_ad after delete on documents begin
88
86
  insert into documents_fts(documents_fts, rowid, title, body, raw_text, dedupe_text)
89
87
  values ('delete', old.id, old.title, old.body, old.raw_text, old.dedupe_text);
90
88
  end
91
89
  `,
92
- `
90
+ `
93
91
  create trigger if not exists documents_au after update on documents begin
94
92
  insert into documents_fts(documents_fts, rowid, title, body, raw_text, dedupe_text)
95
93
  values ('delete', old.id, old.title, old.body, old.raw_text, old.dedupe_text);
@@ -97,7 +95,7 @@ const migrationStatements = [
97
95
  values (new.id, new.title, new.body, new.raw_text, new.dedupe_text);
98
96
  end
99
97
  `,
100
- `
98
+ `
101
99
  create table if not exists document_summaries (
102
100
  id integer primary key,
103
101
  thread_id integer not null references threads(id) on delete cascade,
@@ -110,7 +108,7 @@ const migrationStatements = [
110
108
  unique(thread_id, summary_kind, model)
111
109
  )
112
110
  `,
113
- `
111
+ `
114
112
  create table if not exists document_embeddings (
115
113
  id integer primary key,
116
114
  thread_id integer not null references threads(id) on delete cascade,
@@ -124,7 +122,7 @@ const migrationStatements = [
124
122
  unique(thread_id, source_kind, model)
125
123
  )
126
124
  `,
127
- `
125
+ `
128
126
  create table if not exists sync_runs (
129
127
  id integer primary key,
130
128
  repo_id integer references repositories(id) on delete cascade,
@@ -136,7 +134,7 @@ const migrationStatements = [
136
134
  error_text text
137
135
  )
138
136
  `,
139
- `
137
+ `
140
138
  create table if not exists repo_sync_state (
141
139
  repo_id integer primary key references repositories(id) on delete cascade,
142
140
  last_full_open_scan_started_at text,
@@ -146,7 +144,7 @@ const migrationStatements = [
146
144
  updated_at text not null
147
145
  )
148
146
  `,
149
- `
147
+ `
150
148
  create table if not exists summary_runs (
151
149
  id integer primary key,
152
150
  repo_id integer references repositories(id) on delete cascade,
@@ -158,7 +156,7 @@ const migrationStatements = [
158
156
  error_text text
159
157
  )
160
158
  `,
161
- `
159
+ `
162
160
  create table if not exists embedding_runs (
163
161
  id integer primary key,
164
162
  repo_id integer references repositories(id) on delete cascade,
@@ -170,7 +168,7 @@ const migrationStatements = [
170
168
  error_text text
171
169
  )
172
170
  `,
173
- `
171
+ `
174
172
  create table if not exists cluster_runs (
175
173
  id integer primary key,
176
174
  repo_id integer references repositories(id) on delete cascade,
@@ -182,7 +180,7 @@ const migrationStatements = [
182
180
  error_text text
183
181
  )
184
182
  `,
185
- `
183
+ `
186
184
  create table if not exists similarity_edges (
187
185
  id integer primary key,
188
186
  repo_id integer not null references repositories(id) on delete cascade,
@@ -196,7 +194,7 @@ const migrationStatements = [
196
194
  unique(cluster_run_id, left_thread_id, right_thread_id)
197
195
  )
198
196
  `,
199
- `
197
+ `
200
198
  create table if not exists clusters (
201
199
  id integer primary key,
202
200
  repo_id integer not null references repositories(id) on delete cascade,
@@ -206,7 +204,7 @@ const migrationStatements = [
206
204
  created_at text not null
207
205
  )
208
206
  `,
209
- `
207
+ `
210
208
  create table if not exists cluster_members (
211
209
  cluster_id integer not null references clusters(id) on delete cascade,
212
210
  thread_id integer not null references threads(id) on delete cascade,
@@ -216,20 +214,16 @@ const migrationStatements = [
216
214
  )
217
215
  `
218
216
  ];
219
-
220
- export function migrate(db: SqliteDatabase): void {
221
- for (const statement of migrationStatements) {
222
- db.exec(statement);
223
- }
224
-
225
- const threadColumns = new Set(
226
- (db.prepare('pragma table_info(threads)').all() as Array<{ name: string }>).map((column) => column.name),
227
- );
228
-
229
- if (!threadColumns.has('first_pulled_at')) {
230
- db.exec('alter table threads add column first_pulled_at text');
231
- }
232
- if (!threadColumns.has('last_pulled_at')) {
233
- db.exec('alter table threads add column last_pulled_at text');
234
- }
217
+ export function migrate(db) {
218
+ for (const statement of migrationStatements) {
219
+ db.exec(statement);
220
+ }
221
+ const threadColumns = new Set(db.prepare('pragma table_info(threads)').all().map((column) => column.name));
222
+ if (!threadColumns.has('first_pulled_at')) {
223
+ db.exec('alter table threads add column first_pulled_at text');
224
+ }
225
+ if (!threadColumns.has('last_pulled_at')) {
226
+ db.exec('alter table threads add column last_pulled_at text');
227
+ }
235
228
  }
229
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"AAEA,MAAM,mBAAmB,GAAG;IAC1B;;;;;;;;;;GAUC;IACD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BC;IACD;;;;;;;;;;;;;;;GAeC;IACD;;;;;;;;;;GAUC;IACD;;;;;;;;;GASC;IACD;;;;;GAKC;IACD;;;;;GAKC;IACD;;;;;;;GAOC;IACD;;;;;;;;;;;;GAYC;IACD;;;;;;;;;;;;;GAaC;IACD;;;;;;;;;;;GAWC;IACD;;;;;;;;;GASC;IACD;;;;;;;;;;;GAWC;IACD;;;;;;;;;;;GAWC;IACD;;;;;;;;;;;GAWC;IACD;;;;;;;;;;;;;GAaC;IACD;;;;;;;;;GASC;IACD;;;;;;;;GAQC;CACF,CAAC;AAEF,MAAM,UAAU,OAAO,CAAC,EAAkB;IACxC,KAAK,MAAM,SAAS,IAAI,mBAAmB,EAAE,CAAC;QAC5C,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAC1B,EAAE,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,GAAG,EAA8B,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CACzG,CAAC;IAEF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC1C,EAAE,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACzC,EAAE,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import BetterSqlite3 from 'better-sqlite3';
2
+ export type SqliteDatabase = InstanceType<typeof BetterSqlite3>;
3
+ export declare function openDb(dbPath: string): SqliteDatabase;
4
+ //# sourceMappingURL=sqlite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/db/sqlite.ts"],"names":[],"mappings":"AAGA,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAE3C,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC;AAEhE,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAMrD"}
@@ -0,0 +1,11 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import BetterSqlite3 from 'better-sqlite3';
4
+ export function openDb(dbPath) {
5
+ fs.mkdirSync(path.dirname(dbPath), { recursive: true });
6
+ const db = new BetterSqlite3(dbPath);
7
+ db.pragma('journal_mode = WAL');
8
+ db.pragma('foreign_keys = ON');
9
+ return db;
10
+ }
11
+ //# sourceMappingURL=sqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/db/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAI3C,MAAM,UAAU,MAAM,CAAC,MAAc;IACnC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,EAAE,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,23 @@
1
+ export type NormalizedComment = {
2
+ body: string;
3
+ authorLogin: string | null;
4
+ authorType: string | null;
5
+ isBot: boolean;
6
+ };
7
+ export type NormalizedThread = {
8
+ title: string;
9
+ body: string | null;
10
+ labels: string[];
11
+ comments: NormalizedComment[];
12
+ };
13
+ export declare function isBotLikeAuthor(input: {
14
+ authorType?: string | null;
15
+ authorLogin?: string | null;
16
+ isBot?: boolean;
17
+ }): boolean;
18
+ export declare function buildCanonicalDocument(thread: NormalizedThread): {
19
+ rawText: string;
20
+ dedupeText: string;
21
+ contentHash: string;
22
+ };
23
+ //# sourceMappingURL=normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/documents/normalize.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B,CAAC;AAMF,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAK5H;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAwB7H"}
@@ -0,0 +1,36 @@
1
+ import crypto from 'node:crypto';
2
+ function normalizeWhitespace(value) {
3
+ return value.replace(/\r/g, '\n').replace(/\s+/g, ' ').trim();
4
+ }
5
+ export function isBotLikeAuthor(input) {
6
+ if (input.isBot)
7
+ return true;
8
+ if ((input.authorType ?? '').toLowerCase() === 'bot')
9
+ return true;
10
+ const login = (input.authorLogin ?? '').toLowerCase();
11
+ return login.endsWith('[bot]') || login.includes('renovate') || login.includes('dependabot');
12
+ }
13
+ export function buildCanonicalDocument(thread) {
14
+ const labels = thread.labels.length > 0 ? `labels: ${thread.labels.join(', ')}` : '';
15
+ const humanComments = thread.comments
16
+ .filter((comment) => !isBotLikeAuthor(comment))
17
+ .map((comment) => {
18
+ const author = comment.authorLogin ? `@${comment.authorLogin}` : 'unknown';
19
+ return `${author}: ${normalizeWhitespace(comment.body)}`;
20
+ })
21
+ .filter(Boolean);
22
+ const title = normalizeWhitespace(thread.title);
23
+ const body = normalizeWhitespace(thread.body ?? '');
24
+ const rawParts = [title, body, labels, ...humanComments].filter(Boolean);
25
+ const dedupeParts = [
26
+ `title: ${title}`,
27
+ body ? `body: ${body}` : '',
28
+ labels ? labels : '',
29
+ humanComments.length > 0 ? `discussion: ${humanComments.join('\n')}` : '',
30
+ ].filter(Boolean);
31
+ const rawText = rawParts.join('\n\n');
32
+ const dedupeText = dedupeParts.join('\n\n');
33
+ const contentHash = crypto.createHash('sha256').update(`${rawText}\n---\n${dedupeText}`).digest('hex');
34
+ return { rawText, dedupeText, contentHash };
35
+ }
36
+ //# sourceMappingURL=normalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/documents/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAgBjC,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAmF;IACjH,IAAI,KAAK,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAClE,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC/F,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAwB;IAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrF,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ;SAClC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;SAC9C,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3E,OAAO,GAAG,MAAM,KAAK,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3D,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,MAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG;QAClB,UAAU,KAAK,EAAE;QACjB,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;QAC3B,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACpB,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;KAC1E,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAElB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,UAAU,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvG,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,24 @@
1
+ export type GitHubClient = {
2
+ checkAuth: (reporter?: GitHubReporter) => Promise<void>;
3
+ getRepo: (owner: string, repo: string, reporter?: GitHubReporter) => Promise<Record<string, unknown>>;
4
+ listRepositoryIssues: (owner: string, repo: string, since?: string, limit?: number, reporter?: GitHubReporter, state?: 'open' | 'closed') => Promise<Array<Record<string, unknown>>>;
5
+ getIssue: (owner: string, repo: string, number: number, reporter?: GitHubReporter) => Promise<Record<string, unknown>>;
6
+ getPull: (owner: string, repo: string, number: number, reporter?: GitHubReporter) => Promise<Record<string, unknown>>;
7
+ listIssueComments: (owner: string, repo: string, number: number, reporter?: GitHubReporter) => Promise<Array<Record<string, unknown>>>;
8
+ listPullReviews: (owner: string, repo: string, number: number, reporter?: GitHubReporter) => Promise<Array<Record<string, unknown>>>;
9
+ listPullReviewComments: (owner: string, repo: string, number: number, reporter?: GitHubReporter) => Promise<Array<Record<string, unknown>>>;
10
+ };
11
+ export type GitHubReporter = (message: string) => void;
12
+ export declare class GitHubRequestError extends Error {
13
+ readonly status?: number;
14
+ constructor(message: string, status?: number);
15
+ }
16
+ type RequestOptions = {
17
+ token: string;
18
+ userAgent?: string;
19
+ timeoutMs?: number;
20
+ pageDelayMs?: number;
21
+ };
22
+ export declare function makeGitHubClient(options: RequestOptions): GitHubClient;
23
+ export {};
24
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/github/client.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtG,oBAAoB,EAAE,CACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,cAAc,EACzB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,KACtB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvH,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtH,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACvI,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACrI,sBAAsB,EAAE,CACtB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,cAAc,KACtB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAEvD,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEb,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAK7C;AAED,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AA6BF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,YAAY,CAwKtE"}
@@ -0,0 +1,170 @@
1
+ import { retry } from '@octokit/plugin-retry';
2
+ import { throttling } from '@octokit/plugin-throttling';
3
+ import { Octokit } from 'octokit';
4
+ export class GitHubRequestError extends Error {
5
+ status;
6
+ constructor(message, status) {
7
+ super(message);
8
+ this.name = 'GitHubRequestError';
9
+ this.status = status;
10
+ }
11
+ }
12
+ function delay(ms) {
13
+ return new Promise((resolve) => setTimeout(resolve, ms));
14
+ }
15
+ function formatDuration(ms) {
16
+ if (ms < 1000)
17
+ return `${ms}ms`;
18
+ const seconds = Math.ceil(ms / 1000);
19
+ if (seconds < 60)
20
+ return `${seconds}s`;
21
+ const minutes = Math.floor(seconds / 60);
22
+ const remainingSeconds = seconds % 60;
23
+ if (minutes < 60)
24
+ return remainingSeconds === 0 ? `${minutes}m` : `${minutes}m ${remainingSeconds}s`;
25
+ const hours = Math.floor(minutes / 60);
26
+ const remainingMinutes = minutes % 60;
27
+ return remainingMinutes === 0 ? `${hours}h` : `${hours}h ${remainingMinutes}m`;
28
+ }
29
+ function formatResetTime(resetSeconds) {
30
+ if (!resetSeconds)
31
+ return null;
32
+ const value = Number(resetSeconds);
33
+ if (!Number.isFinite(value) || value <= 0)
34
+ return null;
35
+ return new Date(value * 1000).toISOString();
36
+ }
37
+ export function makeGitHubClient(options) {
38
+ const userAgent = options.userAgent ?? 'ghcrawl';
39
+ const timeoutMs = options.timeoutMs ?? 30_000;
40
+ const pageDelayMs = options.pageDelayMs ?? 5000;
41
+ const BaseOctokit = Octokit.plugin(retry, throttling);
42
+ function createOctokit(reporter) {
43
+ return new BaseOctokit({
44
+ auth: options.token,
45
+ request: {
46
+ timeout: timeoutMs,
47
+ },
48
+ userAgent,
49
+ retry: {
50
+ doNotRetry: [400, 401, 403, 404, 422],
51
+ retries: 4,
52
+ },
53
+ throttle: {
54
+ fallbackSecondaryRateRetryAfter: Math.ceil(pageDelayMs / 1000),
55
+ onRateLimit: (retryAfter, requestOptions) => {
56
+ const responseHeaders = requestOptions.response?.headers;
57
+ const resetAt = formatResetTime(responseHeaders?.['x-ratelimit-reset']);
58
+ const remaining = responseHeaders?.['x-ratelimit-remaining'];
59
+ const method = requestOptions.method ?? 'GET';
60
+ const url = requestOptions.url ?? 'unknown';
61
+ reporter?.(`[github] backoff rate-limited wait=${formatDuration(retryAfter * 1000)}${remaining ? ` remaining=${remaining}` : ''}${resetAt ? ` reset_at=${resetAt}` : ''} method=${method} url=${url}`);
62
+ return true;
63
+ },
64
+ onSecondaryRateLimit: (retryAfter, requestOptions) => {
65
+ const method = requestOptions.method ?? 'GET';
66
+ const url = requestOptions.url ?? 'unknown';
67
+ reporter?.(`[github] backoff secondary-rate-limit wait=${formatDuration(retryAfter * 1000)} method=${method} url=${url}`);
68
+ return true;
69
+ },
70
+ },
71
+ });
72
+ }
73
+ async function request(label, reporter, fn) {
74
+ reporter?.(`[github] request ${label}`);
75
+ const octokit = createOctokit(reporter);
76
+ try {
77
+ return await fn(octokit);
78
+ }
79
+ catch (error) {
80
+ const message = error instanceof Error ? error.message : String(error);
81
+ const status = typeof error?.status === 'number' ? Number(error.status) : undefined;
82
+ throw new GitHubRequestError(`GitHub request failed for ${label}: ${message}`, status);
83
+ }
84
+ }
85
+ async function paginate(label, limit, reporter, iteratorFactory) {
86
+ reporter?.(`[github] request ${label}`);
87
+ const octokit = createOctokit(reporter);
88
+ const out = [];
89
+ try {
90
+ let pageIndex = 0;
91
+ for await (const page of iteratorFactory(octokit)) {
92
+ pageIndex += 1;
93
+ const remaining = typeof limit === 'number' ? Math.max(limit - out.length, 0) : page.data.length;
94
+ out.push(...page.data.slice(0, remaining));
95
+ reporter?.(`[github] page ${pageIndex} fetched count=${page.data.length} accumulated=${out.length}`);
96
+ if (typeof limit === 'number' && out.length >= limit) {
97
+ break;
98
+ }
99
+ await delay(pageDelayMs);
100
+ }
101
+ return out;
102
+ }
103
+ catch (error) {
104
+ const message = error instanceof Error ? error.message : String(error);
105
+ const status = typeof error?.status === 'number' ? Number(error.status) : undefined;
106
+ throw new GitHubRequestError(`GitHub pagination failed for ${label}: ${message}`, status);
107
+ }
108
+ }
109
+ return {
110
+ async checkAuth(reporter) {
111
+ await request('GET /rate_limit', reporter, async (octokit) => {
112
+ await octokit.request('GET /rate_limit');
113
+ });
114
+ },
115
+ async getRepo(owner, repo, reporter) {
116
+ return request(`GET /repos/${owner}/${repo}`, reporter, async (octokit) => {
117
+ const response = await octokit.rest.repos.get({ owner, repo });
118
+ return response.data;
119
+ });
120
+ },
121
+ async listRepositoryIssues(owner, repo, since, limit, reporter, state = 'open') {
122
+ return paginate(`GET /repos/${owner}/${repo}/issues state=${state} per_page=100`, limit, reporter, (octokit) => octokit.paginate.iterator(octokit.rest.issues.listForRepo, {
123
+ owner,
124
+ repo,
125
+ state,
126
+ sort: 'updated',
127
+ direction: 'desc',
128
+ per_page: 100,
129
+ since,
130
+ }));
131
+ },
132
+ async getIssue(owner, repo, number, reporter) {
133
+ return request(`GET /repos/${owner}/${repo}/issues/${number}`, reporter, async (octokit) => {
134
+ const response = await octokit.rest.issues.get({ owner, repo, issue_number: number });
135
+ return response.data;
136
+ });
137
+ },
138
+ async getPull(owner, repo, number, reporter) {
139
+ return request(`GET /repos/${owner}/${repo}/pulls/${number}`, reporter, async (octokit) => {
140
+ const response = await octokit.rest.pulls.get({ owner, repo, pull_number: number });
141
+ return response.data;
142
+ });
143
+ },
144
+ async listIssueComments(owner, repo, number, reporter) {
145
+ return paginate(`GET /repos/${owner}/${repo}/issues/${number}/comments per_page=100`, undefined, reporter, (octokit) => octokit.paginate.iterator(octokit.rest.issues.listComments, {
146
+ owner,
147
+ repo,
148
+ issue_number: number,
149
+ per_page: 100,
150
+ }));
151
+ },
152
+ async listPullReviews(owner, repo, number, reporter) {
153
+ return paginate(`GET /repos/${owner}/${repo}/pulls/${number}/reviews per_page=100`, undefined, reporter, (octokit) => octokit.paginate.iterator(octokit.rest.pulls.listReviews, {
154
+ owner,
155
+ repo,
156
+ pull_number: number,
157
+ per_page: 100,
158
+ }));
159
+ },
160
+ async listPullReviewComments(owner, repo, number, reporter) {
161
+ return paginate(`GET /repos/${owner}/${repo}/pulls/${number}/comments per_page=100`, undefined, reporter, (octokit) => octokit.paginate.iterator(octokit.rest.pulls.listReviewComments, {
162
+ owner,
163
+ repo,
164
+ pull_number: number,
165
+ per_page: 100,
166
+ }));
167
+ },
168
+ };
169
+ }
170
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/github/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export * from './api/server.js';
2
+ export * from './config.js';
3
+ export * from './documents/normalize.js';
4
+ export * from './search/exact.js';
5
+ export * from './cluster/build.js';
6
+ export * from './service.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC"}
@@ -4,3 +4,4 @@ export * from './documents/normalize.js';
4
4
  export * from './search/exact.js';
5
5
  export * from './cluster/build.js';
6
6
  export * from './service.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,44 @@
1
+ export type SummaryResult = {
2
+ problemSummary: string;
3
+ solutionSummary: string;
4
+ maintainerSignalSummary: string;
5
+ dedupeSummary: string;
6
+ };
7
+ export type SummaryUsage = {
8
+ inputTokens: number;
9
+ outputTokens: number;
10
+ totalTokens: number;
11
+ cachedInputTokens: number;
12
+ reasoningTokens: number;
13
+ };
14
+ export type AiProvider = {
15
+ checkAuth: () => Promise<void>;
16
+ summarizeThread: (params: {
17
+ model: string;
18
+ text: string;
19
+ }) => Promise<{
20
+ summary: SummaryResult;
21
+ usage?: SummaryUsage;
22
+ }>;
23
+ embedTexts: (params: {
24
+ model: string;
25
+ texts: string[];
26
+ }) => Promise<number[][]>;
27
+ };
28
+ export declare class OpenAiProvider implements AiProvider {
29
+ private readonly client;
30
+ constructor(apiKey: string);
31
+ checkAuth(): Promise<void>;
32
+ summarizeThread(params: {
33
+ model: string;
34
+ text: string;
35
+ }): Promise<{
36
+ summary: SummaryResult;
37
+ usage?: SummaryUsage;
38
+ }>;
39
+ embedTexts(params: {
40
+ model: string;
41
+ texts: string[];
42
+ }): Promise<number[][]>;
43
+ }
44
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/openai/provider.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GAAG;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,MAAM,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,eAAe,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,aAAa,CAAC;QAAC,KAAK,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;IACxH,UAAU,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;CACjF,CAAC;AASF,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,EAAE,MAAM;IAIpB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1B,eAAe,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,aAAa,CAAC;QAAC,KAAK,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC;IA8DnH,UAAU,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;CA8BlF"}