xtrm-tools 0.7.3 → 0.7.7

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 (533) hide show
  1. package/.xtrm/config/hooks.json +3 -0
  2. package/.xtrm/config/pi/extensions/xtrm-ui/format.ts +189 -0
  3. package/.xtrm/config/pi/extensions/xtrm-ui/index.ts +76 -17
  4. package/.xtrm/config/pi/extensions/xtrm-ui/package.json +16 -5
  5. package/.xtrm/ext-src/custom-footer/.pi/structured-returns/83051fe4-97da-4e2c-bdaa-343b32f4e714.combined.log +7 -0
  6. package/.xtrm/ext-src/custom-footer/.pi/structured-returns/83051fe4-97da-4e2c-bdaa-343b32f4e714.stderr.log +0 -0
  7. package/.xtrm/ext-src/custom-footer/.pi/structured-returns/83051fe4-97da-4e2c-bdaa-343b32f4e714.stdout.log +7 -0
  8. package/.xtrm/ext-src/xtrm-ui/format.ts +282 -0
  9. package/.xtrm/{extensions → ext-src}/xtrm-ui/index.ts +76 -17
  10. package/.xtrm/ext-src/xtrm-ui/package.json +21 -0
  11. package/.xtrm/hooks/specialists/specialists-complete.mjs +70 -0
  12. package/.xtrm/hooks/specialists/specialists-session-start.mjs +105 -0
  13. package/.xtrm/registry.json +397 -409
  14. package/.xtrm/skills/default/README.txt +31 -0
  15. package/.xtrm/skills/default/clean-code/SKILL.md +201 -0
  16. package/.xtrm/skills/default/creating-service-skills/SKILL.md +433 -0
  17. package/.xtrm/skills/default/creating-service-skills/references/script_quality_standards.md +425 -0
  18. package/.xtrm/skills/default/creating-service-skills/references/service_skill_system_guide.md +278 -0
  19. package/.xtrm/skills/default/creating-service-skills/scripts/bootstrap.py +326 -0
  20. package/.xtrm/skills/default/creating-service-skills/scripts/deep_dive.py +304 -0
  21. package/.xtrm/skills/default/creating-service-skills/scripts/scaffolder.py +482 -0
  22. package/.xtrm/skills/default/deepwiki/SKILL.md +50 -0
  23. package/.xtrm/skills/default/delegating/SKILL.md +196 -0
  24. package/.xtrm/skills/default/delegating/config.yaml +210 -0
  25. package/.xtrm/skills/default/delegating/references/orchestration-protocols.md +41 -0
  26. package/.xtrm/skills/default/documenting/CHANGELOG.md +23 -0
  27. package/.xtrm/skills/default/documenting/README.md +148 -0
  28. package/.xtrm/skills/default/documenting/SKILL.md +113 -0
  29. package/.xtrm/skills/default/documenting/examples/example_pattern.md +70 -0
  30. package/.xtrm/skills/default/documenting/examples/example_reference.md +70 -0
  31. package/.xtrm/skills/default/documenting/examples/example_ssot_analytics.md +64 -0
  32. package/.xtrm/skills/default/documenting/examples/example_workflow.md +141 -0
  33. package/.xtrm/skills/default/documenting/references/changelog-format.md +97 -0
  34. package/.xtrm/skills/default/documenting/references/metadata-schema.md +136 -0
  35. package/.xtrm/skills/default/documenting/references/taxonomy.md +81 -0
  36. package/.xtrm/skills/default/documenting/references/versioning-rules.md +78 -0
  37. package/.xtrm/skills/default/documenting/scripts/bump_version.sh +60 -0
  38. package/.xtrm/skills/default/documenting/scripts/changelog/__init__.py +0 -0
  39. package/.xtrm/skills/default/documenting/scripts/changelog/add_entry.py +216 -0
  40. package/.xtrm/skills/default/documenting/scripts/changelog/bump_release.py +117 -0
  41. package/.xtrm/skills/default/documenting/scripts/changelog/init_changelog.py +54 -0
  42. package/.xtrm/skills/default/documenting/scripts/changelog/validate_changelog.py +128 -0
  43. package/.xtrm/skills/default/documenting/scripts/drift_detector.py +266 -0
  44. package/.xtrm/skills/default/documenting/scripts/generate_template.py +311 -0
  45. package/.xtrm/skills/default/documenting/scripts/list_by_category.sh +84 -0
  46. package/.xtrm/skills/default/documenting/scripts/orchestrator.py +255 -0
  47. package/.xtrm/skills/default/documenting/scripts/validate_metadata.py +242 -0
  48. package/.xtrm/skills/default/documenting/templates/CHANGELOG.md.template +13 -0
  49. package/.xtrm/skills/default/find-docs/SKILL.md +175 -0
  50. package/.xtrm/skills/default/find-skills/SKILL.md +133 -0
  51. package/.xtrm/skills/default/github-search/SKILL.md +49 -0
  52. package/.xtrm/skills/default/gitnexus-debugging/SKILL.md +89 -0
  53. package/.xtrm/skills/default/gitnexus-impact-analysis/SKILL.md +97 -0
  54. package/.xtrm/skills/default/gitnexus-pr-review/SKILL.md +163 -0
  55. package/.xtrm/skills/default/gitnexus-refactoring/SKILL.md +121 -0
  56. package/.xtrm/skills/default/hook-development/SKILL.md +797 -0
  57. package/.xtrm/skills/default/hook-development/examples/load-context.sh +55 -0
  58. package/.xtrm/skills/default/hook-development/examples/quality-check.js +1168 -0
  59. package/.xtrm/skills/default/hook-development/examples/validate-bash.sh +43 -0
  60. package/.xtrm/skills/default/hook-development/examples/validate-write.sh +38 -0
  61. package/.xtrm/skills/default/hook-development/references/advanced.md +527 -0
  62. package/.xtrm/skills/default/hook-development/references/migration.md +369 -0
  63. package/.xtrm/skills/default/hook-development/references/patterns.md +412 -0
  64. package/.xtrm/skills/default/hook-development/scripts/README.md +164 -0
  65. package/.xtrm/skills/default/hook-development/scripts/hook-linter.sh +153 -0
  66. package/.xtrm/skills/default/hook-development/scripts/test-hook.sh +252 -0
  67. package/.xtrm/skills/default/hook-development/scripts/validate-hook-schema.sh +159 -0
  68. package/.xtrm/skills/default/init-session/SKILL.md +69 -0
  69. package/.xtrm/skills/default/last30days/SKILL.md +881 -0
  70. package/.xtrm/skills/default/last30days/scripts/briefing.py +260 -0
  71. package/.xtrm/skills/default/last30days/scripts/evaluate-synthesis.py +120 -0
  72. package/.xtrm/skills/default/last30days/scripts/evaluate_search_quality.py +641 -0
  73. package/.xtrm/skills/default/last30days/scripts/generate-synthesis-inputs.py +53 -0
  74. package/.xtrm/skills/default/last30days/scripts/last30days.py +2137 -0
  75. package/.xtrm/skills/default/last30days/scripts/lib/__init__.py +1 -0
  76. package/.xtrm/skills/default/last30days/scripts/lib/bird_x.py +458 -0
  77. package/.xtrm/skills/default/last30days/scripts/lib/bluesky.py +225 -0
  78. package/.xtrm/skills/default/last30days/scripts/lib/brave_search.py +329 -0
  79. package/.xtrm/skills/default/last30days/scripts/lib/cache.py +165 -0
  80. package/.xtrm/skills/default/last30days/scripts/lib/chrome_cookies.py +265 -0
  81. package/.xtrm/skills/default/last30days/scripts/lib/cookie_extract.py +295 -0
  82. package/.xtrm/skills/default/last30days/scripts/lib/dates.py +124 -0
  83. package/.xtrm/skills/default/last30days/scripts/lib/dedupe.py +290 -0
  84. package/.xtrm/skills/default/last30days/scripts/lib/entity_extract.py +127 -0
  85. package/.xtrm/skills/default/last30days/scripts/lib/env.py +807 -0
  86. package/.xtrm/skills/default/last30days/scripts/lib/exa_search.py +176 -0
  87. package/.xtrm/skills/default/last30days/scripts/lib/hackernews.py +266 -0
  88. package/.xtrm/skills/default/last30days/scripts/lib/http.py +174 -0
  89. package/.xtrm/skills/default/last30days/scripts/lib/instagram.py +365 -0
  90. package/.xtrm/skills/default/last30days/scripts/lib/models.py +221 -0
  91. package/.xtrm/skills/default/last30days/scripts/lib/normalize.py +489 -0
  92. package/.xtrm/skills/default/last30days/scripts/lib/openai_reddit.py +631 -0
  93. package/.xtrm/skills/default/last30days/scripts/lib/openrouter_search.py +216 -0
  94. package/.xtrm/skills/default/last30days/scripts/lib/parallel_search.py +139 -0
  95. package/.xtrm/skills/default/last30days/scripts/lib/polymarket.py +580 -0
  96. package/.xtrm/skills/default/last30days/scripts/lib/quality_nudge.py +201 -0
  97. package/.xtrm/skills/default/last30days/scripts/lib/query.py +117 -0
  98. package/.xtrm/skills/default/last30days/scripts/lib/query_type.py +111 -0
  99. package/.xtrm/skills/default/last30days/scripts/lib/reddit.py +617 -0
  100. package/.xtrm/skills/default/last30days/scripts/lib/reddit_enrich.py +325 -0
  101. package/.xtrm/skills/default/last30days/scripts/lib/reddit_public.py +259 -0
  102. package/.xtrm/skills/default/last30days/scripts/lib/relevance.py +148 -0
  103. package/.xtrm/skills/default/last30days/scripts/lib/render.py +1018 -0
  104. package/.xtrm/skills/default/last30days/scripts/lib/safari_cookies.py +182 -0
  105. package/.xtrm/skills/default/last30days/scripts/lib/schema.py +843 -0
  106. package/.xtrm/skills/default/last30days/scripts/lib/score.py +775 -0
  107. package/.xtrm/skills/default/last30days/scripts/lib/scrapecreators_x.py +182 -0
  108. package/.xtrm/skills/default/last30days/scripts/lib/setup_wizard.py +186 -0
  109. package/.xtrm/skills/default/last30days/scripts/lib/tiktok.py +349 -0
  110. package/.xtrm/skills/default/last30days/scripts/lib/truthsocial.py +183 -0
  111. package/.xtrm/skills/default/last30days/scripts/lib/ui.py +620 -0
  112. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/LICENSE +21 -0
  113. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/bird-search.mjs +134 -0
  114. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/cookies.js +191 -0
  115. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/features.json +17 -0
  116. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/paginate-cursor.js +37 -0
  117. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/query-ids.json +20 -0
  118. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/runtime-features.js +151 -0
  119. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/runtime-query-ids.js +264 -0
  120. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-base.js +129 -0
  121. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-constants.js +50 -0
  122. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-features.js +347 -0
  123. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-search.js +157 -0
  124. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-types.js +2 -0
  125. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-utils.js +511 -0
  126. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/LICENSE +22 -0
  127. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/README.md +29 -0
  128. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.d.ts +3 -0
  129. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.d.ts.map +1 -0
  130. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.js +2 -0
  131. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.js.map +1 -0
  132. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.d.ts +8 -0
  133. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.d.ts.map +1 -0
  134. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.js +27 -0
  135. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.js.map +1 -0
  136. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.d.ts +11 -0
  137. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.d.ts.map +1 -0
  138. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.js +100 -0
  139. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.js.map +1 -0
  140. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.d.ts +25 -0
  141. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.d.ts.map +1 -0
  142. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.js +104 -0
  143. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.js.map +1 -0
  144. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.d.ts +10 -0
  145. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.d.ts.map +1 -0
  146. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.js +293 -0
  147. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.js.map +1 -0
  148. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.d.ts +10 -0
  149. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.d.ts.map +1 -0
  150. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.js +26 -0
  151. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.js.map +1 -0
  152. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.d.ts +7 -0
  153. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.d.ts.map +1 -0
  154. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.js +51 -0
  155. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.js.map +1 -0
  156. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.d.ts +7 -0
  157. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.d.ts.map +1 -0
  158. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.js +60 -0
  159. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.js.map +1 -0
  160. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.d.ts +7 -0
  161. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.d.ts.map +1 -0
  162. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.js +38 -0
  163. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.js.map +1 -0
  164. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.d.ts +5 -0
  165. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.d.ts.map +1 -0
  166. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.js +33 -0
  167. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.js.map +1 -0
  168. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.d.ts +24 -0
  169. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.d.ts.map +1 -0
  170. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.js +30 -0
  171. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.js.map +1 -0
  172. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.d.ts +11 -0
  173. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.d.ts.map +1 -0
  174. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.js +43 -0
  175. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.js.map +1 -0
  176. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.d.ts +8 -0
  177. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.d.ts.map +1 -0
  178. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.js +41 -0
  179. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.js.map +1 -0
  180. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.d.ts +8 -0
  181. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.d.ts.map +1 -0
  182. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.js +53 -0
  183. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.js.map +1 -0
  184. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.d.ts +8 -0
  185. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.d.ts.map +1 -0
  186. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.js +27 -0
  187. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.js.map +1 -0
  188. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.d.ts +7 -0
  189. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.d.ts.map +1 -0
  190. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.js +53 -0
  191. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.js.map +1 -0
  192. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.d.ts +8 -0
  193. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.d.ts.map +1 -0
  194. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.js +60 -0
  195. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.js.map +1 -0
  196. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.d.ts +7 -0
  197. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.d.ts.map +1 -0
  198. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.js +38 -0
  199. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.js.map +1 -0
  200. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.d.ts +6 -0
  201. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.d.ts.map +1 -0
  202. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.js +257 -0
  203. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.js.map +1 -0
  204. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.d.ts +8 -0
  205. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.d.ts.map +1 -0
  206. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.js +71 -0
  207. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.js.map +1 -0
  208. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.d.ts +6 -0
  209. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.d.ts.map +1 -0
  210. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.js +173 -0
  211. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.js.map +1 -0
  212. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.d.ts +26 -0
  213. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.d.ts.map +1 -0
  214. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.js +195 -0
  215. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.js.map +1 -0
  216. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.d.ts +121 -0
  217. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.d.ts.map +1 -0
  218. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.js +2 -0
  219. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.js.map +1 -0
  220. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.d.ts +2 -0
  221. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.d.ts.map +1 -0
  222. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.js +18 -0
  223. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.js.map +1 -0
  224. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.d.ts +8 -0
  225. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.d.ts.map +1 -0
  226. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.js +110 -0
  227. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.js.map +1 -0
  228. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.d.ts +2 -0
  229. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.d.ts.map +1 -0
  230. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.js +32 -0
  231. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.js.map +1 -0
  232. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.d.ts +2 -0
  233. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.d.ts.map +1 -0
  234. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.js +13 -0
  235. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.js.map +1 -0
  236. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.d.ts +2 -0
  237. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.d.ts.map +1 -0
  238. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.js +7 -0
  239. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.js.map +1 -0
  240. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.d.ts +5 -0
  241. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.d.ts.map +1 -0
  242. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.js +58 -0
  243. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.js.map +1 -0
  244. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.d.ts +2 -0
  245. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.d.ts.map +1 -0
  246. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.js +27 -0
  247. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.js.map +1 -0
  248. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.d.ts +2 -0
  249. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.d.ts.map +1 -0
  250. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.js +8 -0
  251. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.js.map +1 -0
  252. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/package.json +40 -0
  253. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/package.json +13 -0
  254. package/.xtrm/skills/default/last30days/scripts/lib/websearch.py +401 -0
  255. package/.xtrm/skills/default/last30days/scripts/lib/xai_x.py +217 -0
  256. package/.xtrm/skills/default/last30days/scripts/lib/xiaohongshu_api.py +162 -0
  257. package/.xtrm/skills/default/last30days/scripts/lib/youtube_yt.py +538 -0
  258. package/.xtrm/skills/default/last30days/scripts/store.py +654 -0
  259. package/.xtrm/skills/default/last30days/scripts/sync.sh +50 -0
  260. package/.xtrm/skills/default/last30days/scripts/test-v1-vs-v2.sh +219 -0
  261. package/.xtrm/skills/default/last30days/scripts/watchlist.py +329 -0
  262. package/.xtrm/skills/default/planning/SKILL.md +405 -0
  263. package/.xtrm/skills/default/planning/evals/evals.json +19 -0
  264. package/.xtrm/skills/default/prompt-improving/README.md +162 -0
  265. package/.xtrm/skills/default/prompt-improving/SKILL.md +74 -0
  266. package/.xtrm/skills/default/prompt-improving/references/analysis_commands.md +24 -0
  267. package/.xtrm/skills/default/prompt-improving/references/chain_of_thought.md +24 -0
  268. package/.xtrm/skills/default/prompt-improving/references/mcp_definitions.md +20 -0
  269. package/.xtrm/skills/default/prompt-improving/references/multishot.md +23 -0
  270. package/.xtrm/skills/default/prompt-improving/references/xml_core.md +60 -0
  271. package/.xtrm/skills/default/quality-gates/.claude/hooks/hook-config.json +66 -0
  272. package/.xtrm/skills/default/quality-gates/.claude/hooks/quality-check.cjs +1286 -0
  273. package/.xtrm/skills/default/quality-gates/.claude/hooks/quality-check.py +334 -0
  274. package/.xtrm/skills/default/quality-gates/.claude/settings.json +3 -0
  275. package/.xtrm/skills/default/quality-gates/.claude/skills/using-quality-gates/SKILL.md +254 -0
  276. package/.xtrm/skills/default/quality-gates/README.md +109 -0
  277. package/.xtrm/skills/default/quality-gates/evals/evals.json +181 -0
  278. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/FINAL-EVAL-SUMMARY.md +75 -0
  279. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/edge-case-auto-fix-verification/with_skill/outputs/response.md +59 -0
  280. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/edge-case-mixed-language-project/with_skill/outputs/response.md +60 -0
  281. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/eval-summary.md +105 -0
  282. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/partial-install-python-only/with_skill/outputs/response.md +93 -0
  283. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/python-refactor-request/with_skill/outputs/response.md +104 -0
  284. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/quality-gate-error-fix/with_skill/outputs/response.md +74 -0
  285. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/should-not-trigger-general-chat/with_skill/outputs/response.md +18 -0
  286. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/should-not-trigger-math-question/with_skill/outputs/response.md +18 -0
  287. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/should-not-trigger-unrelated-coding/with_skill/outputs/response.md +56 -0
  288. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/tdd-guard-blocking-confusion/with_skill/outputs/response.md +67 -0
  289. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/typescript-feature-with-tests/with_skill/outputs/response.md +97 -0
  290. package/.xtrm/skills/default/scoping-service-skills/SKILL.md +231 -0
  291. package/.xtrm/skills/default/scoping-service-skills/scripts/scope.py +74 -0
  292. package/.xtrm/skills/default/service-skills-set/README.md +93 -0
  293. package/.xtrm/skills/default/service-skills-set/git-hooks/doc_reminder.py +67 -0
  294. package/.xtrm/skills/default/service-skills-set/git-hooks/skill_staleness.py +194 -0
  295. package/.xtrm/skills/default/service-skills-set/install-service-skills.py +193 -0
  296. package/.xtrm/skills/default/service-skills-set/service-registry.json +4 -0
  297. package/.xtrm/skills/default/service-skills-set/service-skills-readme.md +236 -0
  298. package/.xtrm/skills/default/service-skills-set/settings.json +37 -0
  299. package/.xtrm/skills/default/session-close-report/SKILL.md +131 -0
  300. package/.xtrm/skills/default/skill-creator/LICENSE.txt +202 -0
  301. package/.xtrm/skills/default/skill-creator/SKILL.md +479 -0
  302. package/.xtrm/skills/default/skill-creator/agents/analyzer.md +274 -0
  303. package/.xtrm/skills/default/skill-creator/agents/comparator.md +202 -0
  304. package/.xtrm/skills/default/skill-creator/agents/grader.md +223 -0
  305. package/.xtrm/skills/default/skill-creator/assets/eval_review.html +146 -0
  306. package/.xtrm/skills/default/skill-creator/eval-viewer/generate_review.py +471 -0
  307. package/.xtrm/skills/default/skill-creator/eval-viewer/viewer.html +1325 -0
  308. package/.xtrm/skills/default/skill-creator/references/schemas.md +430 -0
  309. package/.xtrm/skills/default/skill-creator/scripts/__init__.py +0 -0
  310. package/.xtrm/skills/default/skill-creator/scripts/aggregate_benchmark.py +401 -0
  311. package/.xtrm/skills/default/skill-creator/scripts/generate_report.py +326 -0
  312. package/.xtrm/skills/default/skill-creator/scripts/improve_description.py +248 -0
  313. package/.xtrm/skills/default/skill-creator/scripts/package_skill.py +136 -0
  314. package/.xtrm/skills/default/skill-creator/scripts/quick_validate.py +103 -0
  315. package/.xtrm/skills/default/skill-creator/scripts/run_eval.py +310 -0
  316. package/.xtrm/skills/default/skill-creator/scripts/run_loop.py +332 -0
  317. package/.xtrm/skills/default/skill-creator/scripts/utils.py +47 -0
  318. package/.xtrm/skills/default/specialists-creator/SKILL.md +705 -0
  319. package/.xtrm/skills/default/specialists-creator/scripts/validate-specialist.ts +41 -0
  320. package/.xtrm/skills/default/sync-docs/SKILL.md +262 -0
  321. package/.xtrm/skills/default/sync-docs/evals/evals.json +89 -0
  322. package/.xtrm/skills/default/sync-docs/references/doc-structure.md +99 -0
  323. package/.xtrm/skills/default/sync-docs/references/schema.md +103 -0
  324. package/.xtrm/skills/default/sync-docs/scripts/changelog/add_entry.py +216 -0
  325. package/.xtrm/skills/default/sync-docs/scripts/context_gatherer.py +405 -0
  326. package/.xtrm/skills/default/sync-docs/scripts/doc_structure_analyzer.py +495 -0
  327. package/.xtrm/skills/default/sync-docs/scripts/drift_detector.py +563 -0
  328. package/.xtrm/skills/default/sync-docs/scripts/validate_doc.py +365 -0
  329. package/.xtrm/skills/default/sync-docs/scripts/validate_metadata.py +185 -0
  330. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/benchmark.json +293 -0
  331. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/benchmark.md +13 -0
  332. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/eval_metadata.json +27 -0
  333. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/outputs/result.md +210 -0
  334. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/run-1/grading.json +28 -0
  335. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/run-1/timing.json +1 -0
  336. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/outputs/result.md +101 -0
  337. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/run-1/grading.json +28 -0
  338. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/run-1/timing.json +5 -0
  339. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/timing.json +5 -0
  340. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/eval_metadata.json +27 -0
  341. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/outputs/result.md +198 -0
  342. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/run-1/grading.json +28 -0
  343. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/run-1/timing.json +1 -0
  344. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/outputs/result.md +94 -0
  345. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/run-1/grading.json +28 -0
  346. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/run-1/timing.json +1 -0
  347. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/eval_metadata.json +27 -0
  348. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/outputs/result.md +237 -0
  349. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/run-1/grading.json +28 -0
  350. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/run-1/timing.json +1 -0
  351. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/outputs/result.md +134 -0
  352. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/run-1/grading.json +28 -0
  353. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/run-1/timing.json +1 -0
  354. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/benchmark.json +297 -0
  355. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/benchmark.md +13 -0
  356. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/eval_metadata.json +27 -0
  357. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/outputs/result.md +137 -0
  358. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/run-1/grading.json +92 -0
  359. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/run-1/timing.json +1 -0
  360. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/outputs/result.md +134 -0
  361. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/run-1/grading.json +86 -0
  362. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/run-1/timing.json +1 -0
  363. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/eval_metadata.json +27 -0
  364. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/outputs/result.md +193 -0
  365. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/run-1/grading.json +72 -0
  366. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/run-1/timing.json +1 -0
  367. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/outputs/result.md +211 -0
  368. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/run-1/grading.json +91 -0
  369. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/run-1/timing.json +5 -0
  370. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/eval_metadata.json +27 -0
  371. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/outputs/result.md +182 -0
  372. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/run-1/grading.json +95 -0
  373. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/run-1/timing.json +1 -0
  374. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/outputs/result.md +222 -0
  375. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/run-1/grading.json +88 -0
  376. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/run-1/timing.json +5 -0
  377. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/benchmark.json +298 -0
  378. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/benchmark.md +13 -0
  379. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/eval_metadata.json +27 -0
  380. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/outputs/result.md +125 -0
  381. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/run-1/grading.json +97 -0
  382. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/run-1/timing.json +5 -0
  383. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/outputs/result.md +144 -0
  384. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/run-1/grading.json +78 -0
  385. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/run-1/timing.json +5 -0
  386. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/eval_metadata.json +27 -0
  387. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/outputs/result.md +104 -0
  388. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/run-1/grading.json +91 -0
  389. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/run-1/timing.json +5 -0
  390. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/outputs/result.md +79 -0
  391. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/run-1/grading.json +82 -0
  392. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/run-1/timing.json +5 -0
  393. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/eval_metadata.json +27 -0
  394. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase1_context.json +302 -0
  395. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase2_drift.txt +33 -0
  396. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase3_analysis.json +114 -0
  397. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase4_fix.txt +118 -0
  398. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase5_validate.txt +38 -0
  399. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/result.md +158 -0
  400. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/run-1/grading.json +95 -0
  401. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/run-1/timing.json +5 -0
  402. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/outputs/result.md +71 -0
  403. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/run-1/grading.json +90 -0
  404. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/run-1/timing.json +5 -0
  405. package/.xtrm/skills/default/test-planning/SKILL.md +465 -0
  406. package/.xtrm/skills/default/test-planning/evals/evals.json +23 -0
  407. package/.xtrm/skills/default/updating-service-skills/SKILL.md +136 -0
  408. package/.xtrm/skills/default/updating-service-skills/scripts/drift_detector.py +222 -0
  409. package/.xtrm/skills/default/using-nodes/SKILL.md +333 -0
  410. package/.xtrm/skills/default/using-quality-gates/SKILL.md +254 -0
  411. package/.xtrm/skills/default/using-service-skills/SKILL.md +108 -0
  412. package/.xtrm/skills/default/using-service-skills/scripts/cataloger.py +74 -0
  413. package/.xtrm/skills/default/using-service-skills/scripts/skill_activator.py +152 -0
  414. package/.xtrm/skills/default/using-specialists/SKILL.md +848 -0
  415. package/.xtrm/skills/default/using-specialists/evals/evals.json +68 -0
  416. package/.xtrm/skills/default/using-tdd/SKILL.md +410 -0
  417. package/.xtrm/skills/default/using-xtrm/SKILL.md +127 -0
  418. package/.xtrm/skills/default/xt-debugging/SKILL.md +149 -0
  419. package/.xtrm/skills/default/xt-end/SKILL.md +297 -0
  420. package/.xtrm/skills/default/xt-merge/SKILL.md +326 -0
  421. package/.xtrm/skills/optional/README.txt +2 -0
  422. package/.xtrm/skills/optional/architecture-design/PACK.json +11 -0
  423. package/.xtrm/skills/optional/architecture-design/architecture-patterns/SKILL.md +494 -0
  424. package/.xtrm/skills/optional/architecture-design/architecture-patterns/references/advanced-patterns.md +391 -0
  425. package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/SKILL.md +473 -0
  426. package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/assets/few-shot-examples.json +106 -0
  427. package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/assets/prompt-template-library.md +264 -0
  428. package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/references/chain-of-thought.md +412 -0
  429. package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/references/few-shot-learning.md +386 -0
  430. package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/references/prompt-optimization.md +428 -0
  431. package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/references/prompt-templates.md +484 -0
  432. package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/references/system-prompts.md +195 -0
  433. package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/scripts/optimize-prompt.py +279 -0
  434. package/.xtrm/skills/optional/architecture-design/subagent-driven-development/SKILL.md +277 -0
  435. package/.xtrm/skills/optional/architecture-design/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
  436. package/.xtrm/skills/optional/architecture-design/subagent-driven-development/implementer-prompt.md +113 -0
  437. package/.xtrm/skills/optional/architecture-design/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  438. package/.xtrm/skills/optional/code-quality/PACK.json +12 -0
  439. package/.xtrm/skills/optional/code-quality/code-review-excellence/SKILL.md +529 -0
  440. package/.xtrm/skills/optional/code-quality/multi-reviewer-patterns/SKILL.md +127 -0
  441. package/.xtrm/skills/optional/code-quality/systematic-debugging/SKILL.md +296 -0
  442. package/.xtrm/skills/optional/code-quality/verification-before-completion/SKILL.md +139 -0
  443. package/.xtrm/skills/optional/data-engineering/PACK.json +9 -0
  444. package/.xtrm/skills/optional/data-engineering/data-analyst/SKILL.md +57 -0
  445. package/.xtrm/skills/optional/research-methods/PACK.json +12 -0
  446. package/.xtrm/skills/optional/research-methods/academic-researcher/SKILL.md +269 -0
  447. package/.xtrm/skills/optional/research-methods/brainstorming/SKILL.md +164 -0
  448. package/.xtrm/skills/optional/research-methods/brainstorming/scripts/frame-template.html +214 -0
  449. package/.xtrm/skills/optional/research-methods/brainstorming/scripts/helper.js +88 -0
  450. package/.xtrm/skills/optional/research-methods/brainstorming/scripts/server.cjs +354 -0
  451. package/.xtrm/skills/optional/research-methods/brainstorming/scripts/start-server.sh +148 -0
  452. package/.xtrm/skills/optional/research-methods/brainstorming/scripts/stop-server.sh +56 -0
  453. package/.xtrm/skills/optional/research-methods/brainstorming/spec-document-reviewer-prompt.md +49 -0
  454. package/.xtrm/skills/optional/research-methods/brainstorming/visual-companion.md +287 -0
  455. package/.xtrm/skills/optional/research-methods/deep-research/SKILL.md +192 -0
  456. package/.xtrm/skills/optional/research-methods/fact-checker/SKILL.md +182 -0
  457. package/.xtrm/skills/optional/security-ops/PACK.json +9 -0
  458. package/.xtrm/skills/optional/security-ops/security-auditor/SKILL.md +165 -0
  459. package/.xtrm/skills/optional/xt-optional/PACK.json +16 -0
  460. package/.xtrm/skills/optional/xt-optional/docker-expert/SKILL.md +409 -0
  461. package/.xtrm/skills/optional/xt-optional/obsidian-cli/SKILL.md +106 -0
  462. package/.xtrm/skills/optional/xt-optional/python-testing/SKILL.md +815 -0
  463. package/.xtrm/skills/optional/xt-optional/senior-backend/SKILL.md +209 -0
  464. package/.xtrm/skills/optional/xt-optional/senior-backend/references/api_design_patterns.md +103 -0
  465. package/.xtrm/skills/optional/xt-optional/senior-backend/references/backend_security_practices.md +103 -0
  466. package/.xtrm/skills/optional/xt-optional/senior-backend/references/database_optimization_guide.md +103 -0
  467. package/.xtrm/skills/optional/xt-optional/senior-backend/scripts/api_load_tester.py +114 -0
  468. package/.xtrm/skills/optional/xt-optional/senior-backend/scripts/api_scaffolder.py +114 -0
  469. package/.xtrm/skills/optional/xt-optional/senior-backend/scripts/database_migration_tool.py +114 -0
  470. package/.xtrm/skills/optional/xt-optional/senior-data-scientist/SKILL.md +226 -0
  471. package/.xtrm/skills/optional/xt-optional/senior-data-scientist/references/experiment_design_frameworks.md +80 -0
  472. package/.xtrm/skills/optional/xt-optional/senior-data-scientist/references/feature_engineering_patterns.md +80 -0
  473. package/.xtrm/skills/optional/xt-optional/senior-data-scientist/references/statistical_methods_advanced.md +80 -0
  474. package/.xtrm/skills/optional/xt-optional/senior-data-scientist/scripts/experiment_designer.py +100 -0
  475. package/.xtrm/skills/optional/xt-optional/senior-data-scientist/scripts/feature_engineering_pipeline.py +100 -0
  476. package/.xtrm/skills/optional/xt-optional/senior-data-scientist/scripts/model_evaluation_suite.py +100 -0
  477. package/.xtrm/skills/optional/xt-optional/senior-devops/SKILL.md +209 -0
  478. package/.xtrm/skills/optional/xt-optional/senior-devops/references/cicd_pipeline_guide.md +103 -0
  479. package/.xtrm/skills/optional/xt-optional/senior-devops/references/deployment_strategies.md +103 -0
  480. package/.xtrm/skills/optional/xt-optional/senior-devops/references/infrastructure_as_code.md +103 -0
  481. package/.xtrm/skills/optional/xt-optional/senior-devops/scripts/deployment_manager.py +114 -0
  482. package/.xtrm/skills/optional/xt-optional/senior-devops/scripts/pipeline_generator.py +114 -0
  483. package/.xtrm/skills/optional/xt-optional/senior-devops/scripts/terraform_scaffolder.py +114 -0
  484. package/.xtrm/skills/optional/xt-optional/senior-security/SKILL.md +209 -0
  485. package/.xtrm/skills/optional/xt-optional/senior-security/references/cryptography_implementation.md +103 -0
  486. package/.xtrm/skills/optional/xt-optional/senior-security/references/penetration_testing_guide.md +103 -0
  487. package/.xtrm/skills/optional/xt-optional/senior-security/references/security_architecture_patterns.md +103 -0
  488. package/.xtrm/skills/optional/xt-optional/senior-security/scripts/pentest_automator.py +114 -0
  489. package/.xtrm/skills/optional/xt-optional/senior-security/scripts/security_auditor.py +114 -0
  490. package/.xtrm/skills/optional/xt-optional/senior-security/scripts/threat_modeler.py +114 -0
  491. package/CHANGELOG.md +16 -0
  492. package/README.md +5 -0
  493. package/cli/dist/index.cjs +862 -614
  494. package/cli/dist/index.cjs.map +1 -1
  495. package/cli/package.json +1 -1
  496. package/package.json +4 -1
  497. package/.xtrm/extensions/xtrm-ui/format.ts +0 -93
  498. package/.xtrm/extensions/xtrm-ui/package.json +0 -10
  499. /package/.xtrm/{extensions → ext-src}/auto-session-name/index.ts +0 -0
  500. /package/.xtrm/{extensions → ext-src}/auto-session-name/package.json +0 -0
  501. /package/.xtrm/{extensions → ext-src}/auto-update/index.ts +0 -0
  502. /package/.xtrm/{extensions → ext-src}/auto-update/package.json +0 -0
  503. /package/.xtrm/{extensions → ext-src}/beads/index.ts +0 -0
  504. /package/.xtrm/{extensions → ext-src}/beads/package.json +0 -0
  505. /package/.xtrm/{extensions → ext-src}/compact-header/index.ts +0 -0
  506. /package/.xtrm/{extensions → ext-src}/compact-header/package.json +0 -0
  507. /package/.xtrm/{extensions → ext-src}/core/adapter.ts +0 -0
  508. /package/.xtrm/{extensions → ext-src}/core/guard-rules.ts +0 -0
  509. /package/.xtrm/{extensions → ext-src}/core/lib.ts +0 -0
  510. /package/.xtrm/{extensions → ext-src}/core/logger.ts +0 -0
  511. /package/.xtrm/{extensions → ext-src}/core/package.json +0 -0
  512. /package/.xtrm/{extensions → ext-src}/core/runner.ts +0 -0
  513. /package/.xtrm/{extensions → ext-src}/core/session-state.ts +0 -0
  514. /package/.xtrm/{extensions → ext-src}/custom-footer/index.ts +0 -0
  515. /package/.xtrm/{extensions → ext-src}/custom-footer/package.json +0 -0
  516. /package/.xtrm/{extensions → ext-src}/custom-provider-qwen-cli/index.ts +0 -0
  517. /package/.xtrm/{extensions → ext-src}/custom-provider-qwen-cli/package.json +0 -0
  518. /package/.xtrm/{extensions → ext-src}/git-checkpoint/index.ts +0 -0
  519. /package/.xtrm/{extensions → ext-src}/git-checkpoint/package.json +0 -0
  520. /package/.xtrm/{extensions → ext-src}/lsp-bootstrap/index.ts +0 -0
  521. /package/.xtrm/{extensions → ext-src}/lsp-bootstrap/package.json +0 -0
  522. /package/.xtrm/{extensions → ext-src}/pi-serena-compact/index.ts +0 -0
  523. /package/.xtrm/{extensions → ext-src}/pi-serena-compact/package.json +0 -0
  524. /package/.xtrm/{extensions → ext-src}/quality-gates/index.ts +0 -0
  525. /package/.xtrm/{extensions → ext-src}/quality-gates/package.json +0 -0
  526. /package/.xtrm/{extensions → ext-src}/service-skills/index.ts +0 -0
  527. /package/.xtrm/{extensions → ext-src}/service-skills/package.json +0 -0
  528. /package/.xtrm/{extensions → ext-src}/session-flow/index.ts +0 -0
  529. /package/.xtrm/{extensions → ext-src}/session-flow/package.json +0 -0
  530. /package/.xtrm/{extensions → ext-src}/xtrm-loader/index.ts +0 -0
  531. /package/.xtrm/{extensions → ext-src}/xtrm-loader/package.json +0 -0
  532. /package/.xtrm/{extensions → ext-src}/xtrm-ui/themes/pidex-dark.json +0 -0
  533. /package/.xtrm/{extensions → ext-src}/xtrm-ui/themes/pidex-light.json +0 -0
@@ -0,0 +1,489 @@
1
+ """Normalization of raw API data to canonical schema."""
2
+
3
+ from typing import Any, Dict, List, TypeVar, Union
4
+
5
+ from . import dates, schema
6
+
7
+ T = TypeVar("T", schema.RedditItem, schema.XItem, schema.WebSearchItem, schema.YouTubeItem, schema.TikTokItem, schema.InstagramItem, schema.HackerNewsItem, schema.BlueskyItem, schema.PolymarketItem)
8
+
9
+
10
+ def filter_by_date_range(
11
+ items: List[T],
12
+ from_date: str,
13
+ to_date: str,
14
+ require_date: bool = False,
15
+ ) -> List[T]:
16
+ """Hard filter: Remove items outside the date range.
17
+
18
+ This is the safety net - even if the prompt lets old content through,
19
+ this filter will exclude it.
20
+
21
+ Args:
22
+ items: List of items to filter
23
+ from_date: Start date (YYYY-MM-DD) - exclude items before this
24
+ to_date: End date (YYYY-MM-DD) - exclude items after this
25
+ require_date: If True, also remove items with no date
26
+
27
+ Returns:
28
+ Filtered list with only items in range (or unknown dates if not required)
29
+ """
30
+ result = []
31
+ for item in items:
32
+ if item.date is None:
33
+ if not require_date:
34
+ result.append(item) # Keep unknown dates (with scoring penalty)
35
+ continue
36
+
37
+ # Hard filter: if date is before from_date, exclude
38
+ if item.date < from_date:
39
+ continue # DROP - too old
40
+
41
+ # Hard filter: if date is after to_date, exclude (likely parsing error)
42
+ if item.date > to_date:
43
+ continue # DROP - future date
44
+
45
+ result.append(item)
46
+
47
+ return result
48
+
49
+
50
+ def normalize_reddit_items(
51
+ items: List[Dict[str, Any]],
52
+ from_date: str,
53
+ to_date: str,
54
+ ) -> List[schema.RedditItem]:
55
+ """Normalize raw Reddit items to schema.
56
+
57
+ Args:
58
+ items: Raw Reddit items from API
59
+ from_date: Start of date range
60
+ to_date: End of date range
61
+
62
+ Returns:
63
+ List of RedditItem objects
64
+ """
65
+ normalized = []
66
+
67
+ for item in items:
68
+ # Parse engagement
69
+ engagement = None
70
+ eng_raw = item.get("engagement")
71
+ if isinstance(eng_raw, dict):
72
+ engagement = schema.Engagement(
73
+ score=eng_raw.get("score"),
74
+ num_comments=eng_raw.get("num_comments"),
75
+ upvote_ratio=eng_raw.get("upvote_ratio"),
76
+ )
77
+
78
+ # Parse comments
79
+ top_comments = []
80
+ for c in item.get("top_comments", []):
81
+ top_comments.append(schema.Comment(
82
+ score=c.get("score", 0),
83
+ date=c.get("date"),
84
+ author=c.get("author", ""),
85
+ excerpt=c.get("excerpt", ""),
86
+ url=c.get("url", ""),
87
+ ))
88
+
89
+ # Determine date confidence
90
+ date_str = item.get("date")
91
+ date_confidence = dates.get_date_confidence(date_str, from_date, to_date)
92
+
93
+ normalized.append(schema.RedditItem(
94
+ id=item.get("id", ""),
95
+ title=item.get("title", ""),
96
+ url=item.get("url", ""),
97
+ subreddit=item.get("subreddit", ""),
98
+ date=date_str,
99
+ date_confidence=date_confidence,
100
+ engagement=engagement,
101
+ top_comments=top_comments,
102
+ comment_insights=item.get("comment_insights", []),
103
+ relevance=item.get("relevance", 0.5),
104
+ why_relevant=item.get("why_relevant", ""),
105
+ ))
106
+
107
+ return normalized
108
+
109
+
110
+ def normalize_x_items(
111
+ items: List[Dict[str, Any]],
112
+ from_date: str,
113
+ to_date: str,
114
+ ) -> List[schema.XItem]:
115
+ """Normalize raw X items to schema.
116
+
117
+ Args:
118
+ items: Raw X items from API
119
+ from_date: Start of date range
120
+ to_date: End of date range
121
+
122
+ Returns:
123
+ List of XItem objects
124
+ """
125
+ normalized = []
126
+
127
+ for item in items:
128
+ # Parse engagement
129
+ engagement = None
130
+ eng_raw = item.get("engagement")
131
+ if isinstance(eng_raw, dict):
132
+ engagement = schema.Engagement(
133
+ likes=eng_raw.get("likes"),
134
+ reposts=eng_raw.get("reposts"),
135
+ replies=eng_raw.get("replies"),
136
+ quotes=eng_raw.get("quotes"),
137
+ )
138
+
139
+ # Determine date confidence
140
+ date_str = item.get("date")
141
+ date_confidence = dates.get_date_confidence(date_str, from_date, to_date)
142
+
143
+ normalized.append(schema.XItem(
144
+ id=item.get("id", ""),
145
+ text=item.get("text", ""),
146
+ url=item.get("url", ""),
147
+ author_handle=item.get("author_handle", ""),
148
+ date=date_str,
149
+ date_confidence=date_confidence,
150
+ engagement=engagement,
151
+ relevance=item.get("relevance", 0.5),
152
+ why_relevant=item.get("why_relevant", ""),
153
+ ))
154
+
155
+ return normalized
156
+
157
+
158
+ def normalize_youtube_items(
159
+ items: List[Dict[str, Any]],
160
+ from_date: str,
161
+ to_date: str,
162
+ ) -> List[schema.YouTubeItem]:
163
+ """Normalize raw YouTube items to schema.
164
+
165
+ Args:
166
+ items: Raw YouTube items from yt-dlp
167
+ from_date: Start of date range
168
+ to_date: End of date range
169
+
170
+ Returns:
171
+ List of YouTubeItem objects
172
+ """
173
+ normalized = []
174
+
175
+ for item in items:
176
+ # Parse engagement
177
+ eng_raw = item.get("engagement") or {}
178
+ engagement = schema.Engagement(
179
+ views=eng_raw.get("views"),
180
+ likes=eng_raw.get("likes"),
181
+ num_comments=eng_raw.get("comments"),
182
+ )
183
+
184
+ # YouTube dates are reliable (always YYYY-MM-DD from yt-dlp)
185
+ date_str = item.get("date")
186
+
187
+ normalized.append(schema.YouTubeItem(
188
+ id=item.get("video_id", ""),
189
+ title=item.get("title", ""),
190
+ url=item.get("url", ""),
191
+ channel_name=item.get("channel_name", ""),
192
+ date=date_str,
193
+ date_confidence="high",
194
+ engagement=engagement,
195
+ transcript_snippet=item.get("transcript_snippet", ""),
196
+ transcript_highlights=item.get("transcript_highlights", []),
197
+ relevance=item.get("relevance", 0.7),
198
+ why_relevant=item.get("why_relevant", ""),
199
+ ))
200
+
201
+ return normalized
202
+
203
+
204
+ def normalize_tiktok_items(
205
+ items: List[Dict[str, Any]],
206
+ from_date: str,
207
+ to_date: str,
208
+ ) -> List[schema.TikTokItem]:
209
+ """Normalize raw TikTok items to schema.
210
+
211
+ Args:
212
+ items: Raw TikTok items from Apify
213
+ from_date: Start of date range
214
+ to_date: End of date range
215
+
216
+ Returns:
217
+ List of TikTokItem objects
218
+ """
219
+ normalized = []
220
+
221
+ for i, item in enumerate(items):
222
+ # Parse engagement
223
+ eng_raw = item.get("engagement") or {}
224
+ engagement = schema.Engagement(
225
+ views=eng_raw.get("views"),
226
+ likes=eng_raw.get("likes"),
227
+ num_comments=eng_raw.get("comments"),
228
+ shares=eng_raw.get("shares"),
229
+ )
230
+
231
+ # TikTok dates are reliable (exact timestamps from Apify)
232
+ date_str = item.get("date")
233
+
234
+ normalized.append(schema.TikTokItem(
235
+ id=f"TK{i+1}",
236
+ text=item.get("text", ""),
237
+ url=item.get("url", ""),
238
+ author_name=item.get("author_name", ""),
239
+ date=date_str,
240
+ date_confidence="high",
241
+ engagement=engagement,
242
+ caption_snippet=item.get("caption_snippet", ""),
243
+ hashtags=item.get("hashtags", []),
244
+ relevance=item.get("relevance", 0.7),
245
+ why_relevant=item.get("why_relevant", ""),
246
+ ))
247
+
248
+ return normalized
249
+
250
+
251
+ def normalize_instagram_items(
252
+ items: List[Dict[str, Any]],
253
+ from_date: str,
254
+ to_date: str,
255
+ ) -> List[schema.InstagramItem]:
256
+ """Normalize raw Instagram items to schema.
257
+
258
+ Args:
259
+ items: Raw Instagram items from ScrapeCreators
260
+ from_date: Start of date range
261
+ to_date: End of date range
262
+
263
+ Returns:
264
+ List of InstagramItem objects
265
+ """
266
+ normalized = []
267
+
268
+ for i, item in enumerate(items):
269
+ # Parse engagement
270
+ eng_raw = item.get("engagement") or {}
271
+ engagement = schema.Engagement(
272
+ views=eng_raw.get("views"),
273
+ likes=eng_raw.get("likes"),
274
+ num_comments=eng_raw.get("comments"),
275
+ )
276
+
277
+ # Instagram dates are reliable (exact timestamps from ScrapeCreators)
278
+ date_str = item.get("date")
279
+
280
+ normalized.append(schema.InstagramItem(
281
+ id=f"IG{i+1}",
282
+ text=item.get("text", ""),
283
+ url=item.get("url", ""),
284
+ author_name=item.get("author_name", ""),
285
+ date=date_str,
286
+ date_confidence="high",
287
+ engagement=engagement,
288
+ caption_snippet=item.get("caption_snippet", ""),
289
+ hashtags=item.get("hashtags", []),
290
+ relevance=item.get("relevance", 0.7),
291
+ why_relevant=item.get("why_relevant", ""),
292
+ ))
293
+
294
+ return normalized
295
+
296
+
297
+ def normalize_hackernews_items(
298
+ items: List[Dict[str, Any]],
299
+ from_date: str,
300
+ to_date: str,
301
+ ) -> List[schema.HackerNewsItem]:
302
+ """Normalize raw Hacker News items to schema.
303
+
304
+ Args:
305
+ items: Raw HN items from Algolia API
306
+ from_date: Start of date range
307
+ to_date: End of date range
308
+
309
+ Returns:
310
+ List of HackerNewsItem objects
311
+ """
312
+ normalized = []
313
+
314
+ for i, item in enumerate(items):
315
+ # Parse engagement
316
+ eng_raw = item.get("engagement") or {}
317
+ engagement = schema.Engagement(
318
+ score=eng_raw.get("points"),
319
+ num_comments=eng_raw.get("num_comments"),
320
+ )
321
+
322
+ # Parse comments (from enrichment)
323
+ top_comments = []
324
+ for c in item.get("top_comments", []):
325
+ top_comments.append(schema.Comment(
326
+ score=c.get("points", 0),
327
+ date=None,
328
+ author=c.get("author", ""),
329
+ excerpt=c.get("text", ""),
330
+ url="",
331
+ ))
332
+
333
+ # HN dates are always high confidence (exact timestamps from Algolia)
334
+ date_str = item.get("date")
335
+
336
+ normalized.append(schema.HackerNewsItem(
337
+ id=f"HN{i+1}",
338
+ title=item.get("title", ""),
339
+ url=item.get("url", ""),
340
+ hn_url=item.get("hn_url", ""),
341
+ author=item.get("author", ""),
342
+ date=date_str,
343
+ date_confidence="high",
344
+ engagement=engagement,
345
+ top_comments=top_comments,
346
+ comment_insights=item.get("comment_insights", []),
347
+ relevance=item.get("relevance", 0.5),
348
+ why_relevant=item.get("why_relevant", ""),
349
+ ))
350
+
351
+ return normalized
352
+
353
+
354
+ def normalize_bluesky_items(
355
+ items: List[Dict[str, Any]],
356
+ from_date: str,
357
+ to_date: str,
358
+ ) -> List[schema.BlueskyItem]:
359
+ """Normalize raw Bluesky items to schema.
360
+
361
+ Args:
362
+ items: Raw Bluesky items from AT Protocol API
363
+ from_date: Start of date range
364
+ to_date: End of date range
365
+
366
+ Returns:
367
+ List of BlueskyItem objects
368
+ """
369
+ normalized = []
370
+
371
+ for i, item in enumerate(items):
372
+ eng_raw = item.get("engagement") or {}
373
+ engagement = schema.Engagement(
374
+ likes=eng_raw.get("likes"),
375
+ reposts=eng_raw.get("reposts"),
376
+ replies=eng_raw.get("replies"),
377
+ quotes=eng_raw.get("quotes"),
378
+ )
379
+
380
+ date_str = item.get("date")
381
+
382
+ normalized.append(schema.BlueskyItem(
383
+ id=f"BS{i+1}",
384
+ text=item.get("text", ""),
385
+ url=item.get("url", ""),
386
+ author_handle=item.get("handle", ""),
387
+ display_name=item.get("display_name", ""),
388
+ date=date_str,
389
+ date_confidence="high",
390
+ engagement=engagement,
391
+ relevance=item.get("relevance", 0.5),
392
+ why_relevant=item.get("why_relevant", ""),
393
+ ))
394
+
395
+ return normalized
396
+
397
+
398
+ def normalize_truthsocial_items(
399
+ items: List[Dict[str, Any]],
400
+ from_date: str,
401
+ to_date: str,
402
+ ) -> List[schema.TruthSocialItem]:
403
+ """Normalize raw Truth Social items to schema.
404
+
405
+ Args:
406
+ items: Raw Truth Social items from Mastodon API
407
+ from_date: Start of date range
408
+ to_date: End of date range
409
+
410
+ Returns:
411
+ List of TruthSocialItem objects
412
+ """
413
+ normalized = []
414
+
415
+ for i, item in enumerate(items):
416
+ eng_raw = item.get("engagement") or {}
417
+ engagement = schema.Engagement(
418
+ likes=eng_raw.get("likes"),
419
+ reposts=eng_raw.get("reposts"),
420
+ replies=eng_raw.get("replies"),
421
+ )
422
+
423
+ date_str = item.get("date")
424
+
425
+ normalized.append(schema.TruthSocialItem(
426
+ id=f"TS{i+1}",
427
+ text=item.get("text", ""),
428
+ url=item.get("url", ""),
429
+ author_handle=item.get("handle", ""),
430
+ display_name=item.get("display_name", ""),
431
+ date=date_str,
432
+ date_confidence="high",
433
+ engagement=engagement,
434
+ relevance=item.get("relevance", 0.5),
435
+ why_relevant=item.get("why_relevant", ""),
436
+ ))
437
+
438
+ return normalized
439
+
440
+
441
+ def normalize_polymarket_items(
442
+ items: List[Dict[str, Any]],
443
+ from_date: str,
444
+ to_date: str,
445
+ ) -> List[schema.PolymarketItem]:
446
+ """Normalize raw Polymarket items to schema.
447
+
448
+ Args:
449
+ items: Raw Polymarket items from Gamma API
450
+ from_date: Start of date range
451
+ to_date: End of date range
452
+
453
+ Returns:
454
+ List of PolymarketItem objects
455
+ """
456
+ normalized = []
457
+
458
+ for i, item in enumerate(items):
459
+ # Prefer volume1mo (more stable) for engagement scoring, fall back to volume24hr
460
+ volume = item.get("volume1mo") or item.get("volume24hr", 0.0)
461
+ engagement = schema.Engagement(
462
+ volume=volume,
463
+ liquidity=item.get("liquidity", 0.0),
464
+ )
465
+
466
+ date_str = item.get("date")
467
+
468
+ normalized.append(schema.PolymarketItem(
469
+ id=f"PM{i+1}",
470
+ title=item.get("title", ""),
471
+ question=item.get("question", ""),
472
+ url=item.get("url", ""),
473
+ outcome_prices=item.get("outcome_prices", []),
474
+ outcomes_remaining=item.get("outcomes_remaining", 0),
475
+ price_movement=item.get("price_movement"),
476
+ date=date_str,
477
+ date_confidence="high",
478
+ engagement=engagement,
479
+ end_date=item.get("end_date"),
480
+ relevance=item.get("relevance", 0.5),
481
+ why_relevant=item.get("why_relevant", ""),
482
+ ))
483
+
484
+ return normalized
485
+
486
+
487
+ def items_to_dicts(items: List) -> List[Dict[str, Any]]:
488
+ """Convert schema items to dicts for JSON serialization."""
489
+ return [item.to_dict() for item in items]