@kubbisec/ai-linux-x64 0.1.25 → 0.1.28

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 (625) hide show
  1. package/bin/kubbisec +0 -0
  2. package/bundled/assets/terminal/banner-compact.ansi +7 -0
  3. package/bundled/assets/terminal/banner-wide.ansi +10 -0
  4. package/bundled/assets/terminal/logotipo-compact-fallback.ansi +7 -0
  5. package/bundled/assets/terminal/logotipo-compact.ansi +1 -0
  6. package/bundled/assets/terminal/logotipo-compact.png +0 -0
  7. package/bundled/assets/terminal/logotipo-wide-fallback.ansi +10 -0
  8. package/bundled/assets/terminal/logotipo-wide.ansi +1 -0
  9. package/bundled/assets/terminal/logotipo-wide.png +0 -0
  10. package/bundled/assets/terminal/mark.ansi +7 -0
  11. package/bundled/assets/terminal/wordmark-inline.ansi +1 -0
  12. package/bundled/assets/terminal/wordmark.ansi +4 -0
  13. package/bundled/assets/terminal/wordmark.png +0 -0
  14. package/bundled/components/kubbisec-model-selector.d.ts +44 -0
  15. package/bundled/components/kubbisec-model-selector.d.ts.map +1 -0
  16. package/bundled/components/kubbisec-model-selector.js +198 -0
  17. package/bundled/components/kubbisec-model-selector.js.map +1 -0
  18. package/bundled/config/config.d.ts +14 -0
  19. package/bundled/config/config.d.ts.map +1 -0
  20. package/bundled/config/config.js +67 -0
  21. package/bundled/config/config.js.map +1 -0
  22. package/bundled/config/detect-local-llm-providers.d.ts +33 -0
  23. package/bundled/config/detect-local-llm-providers.d.ts.map +1 -0
  24. package/bundled/config/detect-local-llm-providers.js +172 -0
  25. package/bundled/config/detect-local-llm-providers.js.map +1 -0
  26. package/bundled/config/ensure-kbs-project-settings.d.ts +20 -0
  27. package/bundled/config/ensure-kbs-project-settings.d.ts.map +1 -0
  28. package/bundled/config/ensure-kbs-project-settings.js +46 -0
  29. package/bundled/config/ensure-kbs-project-settings.js.map +1 -0
  30. package/bundled/config/ensure-kubbisec-project-settings.d.ts +31 -0
  31. package/bundled/config/ensure-kubbisec-project-settings.d.ts.map +1 -0
  32. package/bundled/config/ensure-kubbisec-project-settings.js +107 -0
  33. package/bundled/config/ensure-kubbisec-project-settings.js.map +1 -0
  34. package/bundled/config/extended-context.d.ts +12 -0
  35. package/bundled/config/extended-context.d.ts.map +1 -0
  36. package/bundled/config/extended-context.js +36 -0
  37. package/bundled/config/extended-context.js.map +1 -0
  38. package/bundled/config/feature-flags.d.ts +2 -0
  39. package/bundled/config/feature-flags.d.ts.map +1 -0
  40. package/bundled/config/feature-flags.js +2 -0
  41. package/bundled/config/feature-flags.js.map +1 -0
  42. package/bundled/config/format-kubbisec-footer-status.d.ts +2 -0
  43. package/bundled/config/format-kubbisec-footer-status.d.ts.map +1 -0
  44. package/bundled/config/format-kubbisec-footer-status.js +37 -0
  45. package/bundled/config/format-kubbisec-footer-status.js.map +1 -0
  46. package/bundled/config/kubbisec-extension-manifest.d.ts +3 -0
  47. package/bundled/config/kubbisec-extension-manifest.d.ts.map +1 -0
  48. package/bundled/config/kubbisec-extension-manifest.js +22 -0
  49. package/bundled/config/kubbisec-extension-manifest.js.map +1 -0
  50. package/bundled/config/llm-config-mutations.d.ts +38 -0
  51. package/bundled/config/llm-config-mutations.d.ts.map +1 -0
  52. package/bundled/config/llm-config-mutations.js +207 -0
  53. package/bundled/config/llm-config-mutations.js.map +1 -0
  54. package/bundled/config/llm-config.d.ts +66 -0
  55. package/bundled/config/llm-config.d.ts.map +1 -0
  56. package/bundled/config/llm-config.js +246 -0
  57. package/bundled/config/llm-config.js.map +1 -0
  58. package/bundled/config/llm-provider-catalog.d.ts +22 -0
  59. package/bundled/config/llm-provider-catalog.d.ts.map +1 -0
  60. package/bundled/config/llm-provider-catalog.js +54 -0
  61. package/bundled/config/llm-provider-catalog.js.map +1 -0
  62. package/bundled/config/materialize-kubbisec-pi-resources.d.ts +19 -0
  63. package/bundled/config/materialize-kubbisec-pi-resources.d.ts.map +1 -0
  64. package/bundled/config/materialize-kubbisec-pi-resources.js +242 -0
  65. package/bundled/config/materialize-kubbisec-pi-resources.js.map +1 -0
  66. package/bundled/config/register-custom-llm-providers.d.ts +13 -0
  67. package/bundled/config/register-custom-llm-providers.d.ts.map +1 -0
  68. package/bundled/config/register-custom-llm-providers.js +21 -0
  69. package/bundled/config/register-custom-llm-providers.js.map +1 -0
  70. package/bundled/config/register-kubbisec-llm-provider.d.ts +14 -0
  71. package/bundled/config/register-kubbisec-llm-provider.d.ts.map +1 -0
  72. package/bundled/config/register-kubbisec-llm-provider.js +53 -0
  73. package/bundled/config/register-kubbisec-llm-provider.js.map +1 -0
  74. package/bundled/config/resolve-agents-context-file.d.ts +4 -0
  75. package/bundled/config/resolve-agents-context-file.d.ts.map +1 -0
  76. package/bundled/config/resolve-agents-context-file.js +47 -0
  77. package/bundled/config/resolve-agents-context-file.js.map +1 -0
  78. package/bundled/config/resource-budget.d.ts +17 -0
  79. package/bundled/config/resource-budget.d.ts.map +1 -0
  80. package/bundled/config/resource-budget.js +35 -0
  81. package/bundled/config/resource-budget.js.map +1 -0
  82. package/bundled/config/sync-kubbisec-pi-models.d.ts +12 -0
  83. package/bundled/config/sync-kubbisec-pi-models.d.ts.map +1 -0
  84. package/bundled/config/sync-kubbisec-pi-models.js +81 -0
  85. package/bundled/config/sync-kubbisec-pi-models.js.map +1 -0
  86. package/bundled/copy/cli-reference-index.d.ts +2 -0
  87. package/bundled/copy/cli-reference-index.d.ts.map +1 -0
  88. package/bundled/copy/cli-reference-index.js +2 -0
  89. package/bundled/copy/cli-reference-index.js.map +1 -0
  90. package/bundled/copy/kubbisec-shell-copy.d.ts +21 -0
  91. package/bundled/copy/kubbisec-shell-copy.d.ts.map +1 -0
  92. package/bundled/copy/kubbisec-shell-copy.js +21 -0
  93. package/bundled/copy/kubbisec-shell-copy.js.map +1 -0
  94. package/bundled/edit-format.md +17 -0
  95. package/bundled/extensions/cli-local-shared.d.ts +56 -0
  96. package/bundled/extensions/cli-local-shared.d.ts.map +1 -0
  97. package/bundled/extensions/cli-local-shared.js +159 -0
  98. package/bundled/extensions/cli-local-shared.js.map +1 -0
  99. package/bundled/extensions/kubbisec-aspm-local.extension.d.ts +18 -0
  100. package/bundled/extensions/kubbisec-aspm-local.extension.d.ts.map +1 -0
  101. package/bundled/extensions/kubbisec-aspm-local.extension.js +109 -0
  102. package/bundled/extensions/kubbisec-aspm-local.extension.js.map +1 -0
  103. package/bundled/extensions/kubbisec-brand.extension.d.ts +3 -0
  104. package/bundled/extensions/kubbisec-brand.extension.d.ts.map +1 -0
  105. package/bundled/extensions/kubbisec-brand.extension.js +32 -0
  106. package/bundled/extensions/kubbisec-brand.extension.js.map +1 -0
  107. package/bundled/extensions/kubbisec-byok-provider.extension.d.ts +6 -0
  108. package/bundled/extensions/kubbisec-byok-provider.extension.d.ts.map +1 -0
  109. package/bundled/extensions/kubbisec-byok-provider.extension.js +5 -0
  110. package/bundled/extensions/kubbisec-byok-provider.extension.js.map +1 -0
  111. package/bundled/extensions/kubbisec-clarify.extension.d.ts +50 -0
  112. package/bundled/extensions/kubbisec-clarify.extension.d.ts.map +1 -0
  113. package/bundled/extensions/kubbisec-clarify.extension.js +363 -0
  114. package/bundled/extensions/kubbisec-clarify.extension.js.map +1 -0
  115. package/bundled/extensions/kubbisec-exit.extension.d.ts +6 -0
  116. package/bundled/extensions/kubbisec-exit.extension.d.ts.map +1 -0
  117. package/bundled/extensions/kubbisec-exit.extension.js +41 -0
  118. package/bundled/extensions/kubbisec-exit.extension.js.map +1 -0
  119. package/bundled/extensions/kubbisec-extended-context.extension.d.ts +6 -0
  120. package/bundled/extensions/kubbisec-extended-context.extension.d.ts.map +1 -0
  121. package/bundled/extensions/kubbisec-extended-context.extension.js +50 -0
  122. package/bundled/extensions/kubbisec-extended-context.extension.js.map +1 -0
  123. package/bundled/extensions/kubbisec-footer.extension.d.ts +19 -0
  124. package/bundled/extensions/kubbisec-footer.extension.d.ts.map +1 -0
  125. package/bundled/extensions/kubbisec-footer.extension.js +255 -0
  126. package/bundled/extensions/kubbisec-footer.extension.js.map +1 -0
  127. package/bundled/extensions/kubbisec-github-local.extension.d.ts +23 -0
  128. package/bundled/extensions/kubbisec-github-local.extension.d.ts.map +1 -0
  129. package/bundled/extensions/kubbisec-github-local.extension.js +470 -0
  130. package/bundled/extensions/kubbisec-github-local.extension.js.map +1 -0
  131. package/bundled/extensions/kubbisec-llm-config.extension.d.ts +3 -0
  132. package/bundled/extensions/kubbisec-llm-config.extension.d.ts.map +1 -0
  133. package/bundled/extensions/kubbisec-llm-config.extension.js +211 -0
  134. package/bundled/extensions/kubbisec-llm-config.extension.js.map +1 -0
  135. package/bundled/extensions/kubbisec-memory.extension.d.ts +12 -0
  136. package/bundled/extensions/kubbisec-memory.extension.d.ts.map +1 -0
  137. package/bundled/extensions/kubbisec-memory.extension.js +107 -0
  138. package/bundled/extensions/kubbisec-memory.extension.js.map +1 -0
  139. package/bundled/extensions/kubbisec-naus-local.extension.d.ts +18 -0
  140. package/bundled/extensions/kubbisec-naus-local.extension.d.ts.map +1 -0
  141. package/bundled/extensions/kubbisec-naus-local.extension.js +112 -0
  142. package/bundled/extensions/kubbisec-naus-local.extension.js.map +1 -0
  143. package/bundled/extensions/kubbisec-platform-tools.extension.d.ts +30 -0
  144. package/bundled/extensions/kubbisec-platform-tools.extension.d.ts.map +1 -0
  145. package/bundled/extensions/kubbisec-platform-tools.extension.js +185 -0
  146. package/bundled/extensions/kubbisec-platform-tools.extension.js.map +1 -0
  147. package/bundled/extensions/kubbisec-runtime-status.extension.d.ts +13 -0
  148. package/bundled/extensions/kubbisec-runtime-status.extension.d.ts.map +1 -0
  149. package/bundled/extensions/kubbisec-runtime-status.extension.js +18 -0
  150. package/bundled/extensions/kubbisec-runtime-status.extension.js.map +1 -0
  151. package/bundled/extensions/kubbisec-scope.extension.d.ts +14 -0
  152. package/bundled/extensions/kubbisec-scope.extension.d.ts.map +1 -0
  153. package/bundled/extensions/kubbisec-scope.extension.js +18 -0
  154. package/bundled/extensions/kubbisec-scope.extension.js.map +1 -0
  155. package/bundled/extensions/kubbisec-skill-mentions.extension.d.ts +25 -0
  156. package/bundled/extensions/kubbisec-skill-mentions.extension.d.ts.map +1 -0
  157. package/bundled/extensions/kubbisec-skill-mentions.extension.js +71 -0
  158. package/bundled/extensions/kubbisec-skill-mentions.extension.js.map +1 -0
  159. package/bundled/extensions/kubbisec-skill-telemetry.extension.d.ts +6 -0
  160. package/bundled/extensions/kubbisec-skill-telemetry.extension.d.ts.map +1 -0
  161. package/bundled/extensions/kubbisec-skill-telemetry.extension.js +85 -0
  162. package/bundled/extensions/kubbisec-skill-telemetry.extension.js.map +1 -0
  163. package/bundled/extensions/kubbisec-theme-lock.extension.d.ts +6 -0
  164. package/bundled/extensions/kubbisec-theme-lock.extension.d.ts.map +1 -0
  165. package/bundled/extensions/kubbisec-theme-lock.extension.js +43 -0
  166. package/bundled/extensions/kubbisec-theme-lock.extension.js.map +1 -0
  167. package/bundled/extensions/kubbisec-ui.extension.d.ts +6 -0
  168. package/bundled/extensions/kubbisec-ui.extension.d.ts.map +1 -0
  169. package/bundled/extensions/kubbisec-ui.extension.js +143 -0
  170. package/bundled/extensions/kubbisec-ui.extension.js.map +1 -0
  171. package/bundled/extensions/kubbisec-workflow.extension.d.ts +38 -0
  172. package/bundled/extensions/kubbisec-workflow.extension.d.ts.map +1 -0
  173. package/bundled/extensions/kubbisec-workflow.extension.js +179 -0
  174. package/bundled/extensions/kubbisec-workflow.extension.js.map +1 -0
  175. package/bundled/gate-system.md +27 -0
  176. package/bundled/node_modules/@kubbisec/chat-memory/dist/client.d.ts +20 -0
  177. package/bundled/node_modules/@kubbisec/chat-memory/dist/client.d.ts.map +1 -0
  178. package/bundled/node_modules/@kubbisec/chat-memory/dist/client.js +121 -0
  179. package/bundled/node_modules/@kubbisec/chat-memory/dist/client.js.map +1 -0
  180. package/bundled/node_modules/@kubbisec/chat-memory/dist/feature-flags.d.ts +15 -0
  181. package/bundled/node_modules/@kubbisec/chat-memory/dist/feature-flags.d.ts.map +1 -0
  182. package/bundled/node_modules/@kubbisec/chat-memory/dist/feature-flags.js +34 -0
  183. package/bundled/node_modules/@kubbisec/chat-memory/dist/feature-flags.js.map +1 -0
  184. package/bundled/node_modules/@kubbisec/chat-memory/dist/index.d.ts +12 -0
  185. package/bundled/node_modules/@kubbisec/chat-memory/dist/index.d.ts.map +1 -0
  186. package/bundled/node_modules/@kubbisec/chat-memory/dist/index.js +85 -0
  187. package/bundled/node_modules/@kubbisec/chat-memory/dist/index.js.map +1 -0
  188. package/bundled/node_modules/@kubbisec/chat-memory/dist/sanitizer.d.ts +4 -0
  189. package/bundled/node_modules/@kubbisec/chat-memory/dist/sanitizer.d.ts.map +1 -0
  190. package/bundled/node_modules/@kubbisec/chat-memory/dist/sanitizer.js +89 -0
  191. package/bundled/node_modules/@kubbisec/chat-memory/dist/sanitizer.js.map +1 -0
  192. package/bundled/node_modules/@kubbisec/chat-memory/dist/storage-paths.d.ts +2 -0
  193. package/bundled/node_modules/@kubbisec/chat-memory/dist/storage-paths.d.ts.map +1 -0
  194. package/bundled/node_modules/@kubbisec/chat-memory/dist/storage-paths.js +11 -0
  195. package/bundled/node_modules/@kubbisec/chat-memory/dist/storage-paths.js.map +1 -0
  196. package/bundled/node_modules/@kubbisec/chat-memory/dist/types.d.ts +24 -0
  197. package/bundled/node_modules/@kubbisec/chat-memory/dist/types.d.ts.map +1 -0
  198. package/bundled/node_modules/@kubbisec/chat-memory/dist/types.js +9 -0
  199. package/bundled/node_modules/@kubbisec/chat-memory/dist/types.js.map +1 -0
  200. package/bundled/node_modules/@kubbisec/chat-memory/package.json +32 -0
  201. package/bundled/node_modules/@kubbisec/home/dist/api-url.d.ts +8 -0
  202. package/bundled/node_modules/@kubbisec/home/dist/api-url.d.ts.map +1 -0
  203. package/bundled/node_modules/@kubbisec/home/dist/api-url.js +25 -0
  204. package/bundled/node_modules/@kubbisec/home/dist/api-url.js.map +1 -0
  205. package/bundled/node_modules/@kubbisec/home/dist/cli-auth.types.d.ts +17 -0
  206. package/bundled/node_modules/@kubbisec/home/dist/cli-auth.types.d.ts.map +1 -0
  207. package/bundled/node_modules/@kubbisec/home/dist/cli-auth.types.js +35 -0
  208. package/bundled/node_modules/@kubbisec/home/dist/cli-auth.types.js.map +1 -0
  209. package/bundled/node_modules/@kubbisec/home/dist/index.d.ts +5 -0
  210. package/bundled/node_modules/@kubbisec/home/dist/index.d.ts.map +1 -0
  211. package/bundled/node_modules/@kubbisec/home/dist/index.js +5 -0
  212. package/bundled/node_modules/@kubbisec/home/dist/index.js.map +1 -0
  213. package/bundled/node_modules/@kubbisec/home/dist/migrate.d.ts +10 -0
  214. package/bundled/node_modules/@kubbisec/home/dist/migrate.d.ts.map +1 -0
  215. package/bundled/node_modules/@kubbisec/home/dist/migrate.js +107 -0
  216. package/bundled/node_modules/@kubbisec/home/dist/migrate.js.map +1 -0
  217. package/bundled/node_modules/@kubbisec/home/dist/paths.d.ts +22 -0
  218. package/bundled/node_modules/@kubbisec/home/dist/paths.d.ts.map +1 -0
  219. package/bundled/node_modules/@kubbisec/home/dist/paths.js +69 -0
  220. package/bundled/node_modules/@kubbisec/home/dist/paths.js.map +1 -0
  221. package/bundled/node_modules/@kubbisec/home/package.json +26 -0
  222. package/bundled/node_modules/@kubbisec/shared/dist/ai/evaluation-dataset-50.d.ts +311 -0
  223. package/bundled/node_modules/@kubbisec/shared/dist/ai/evaluation-dataset-50.d.ts.map +1 -0
  224. package/bundled/node_modules/@kubbisec/shared/dist/ai/evaluation-dataset-50.js +357 -0
  225. package/bundled/node_modules/@kubbisec/shared/dist/ai/evaluation-dataset-50.js.map +1 -0
  226. package/bundled/node_modules/@kubbisec/shared/dist/ai/index.d.ts +3 -0
  227. package/bundled/node_modules/@kubbisec/shared/dist/ai/index.d.ts.map +1 -0
  228. package/bundled/node_modules/@kubbisec/shared/dist/ai/index.js +19 -0
  229. package/bundled/node_modules/@kubbisec/shared/dist/ai/index.js.map +1 -0
  230. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/build-assistant-system-prompt.d.ts +7 -0
  231. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/build-assistant-system-prompt.d.ts.map +1 -0
  232. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/build-assistant-system-prompt.js +30 -0
  233. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/build-assistant-system-prompt.js.map +1 -0
  234. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/build-chat-system-prompt.d.ts +7 -0
  235. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/build-chat-system-prompt.d.ts.map +1 -0
  236. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/build-chat-system-prompt.js +14 -0
  237. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/build-chat-system-prompt.js.map +1 -0
  238. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/cli-reference-index.d.ts +6 -0
  239. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/cli-reference-index.d.ts.map +1 -0
  240. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/cli-reference-index.js +65 -0
  241. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/cli-reference-index.js.map +1 -0
  242. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/format-mcp-knowledge.d.ts +8 -0
  243. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/format-mcp-knowledge.d.ts.map +1 -0
  244. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/format-mcp-knowledge.js +29 -0
  245. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/format-mcp-knowledge.js.map +1 -0
  246. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/index.d.ts +7 -0
  247. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/index.d.ts.map +1 -0
  248. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/index.js +16 -0
  249. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/index.js.map +1 -0
  250. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/mcp-instructions.d.ts +2 -0
  251. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/mcp-instructions.d.ts.map +1 -0
  252. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/mcp-instructions.js +35 -0
  253. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/mcp-instructions.js.map +1 -0
  254. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/mental-map.d.ts +6 -0
  255. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/mental-map.d.ts.map +1 -0
  256. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/mental-map.js +32 -0
  257. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/mental-map.js.map +1 -0
  258. package/bundled/node_modules/@kubbisec/shared/dist/api-key/api-key-scope-groups.d.ts +12 -0
  259. package/bundled/node_modules/@kubbisec/shared/dist/api-key/api-key-scope-groups.d.ts.map +1 -0
  260. package/bundled/node_modules/@kubbisec/shared/dist/api-key/api-key-scope-groups.js +93 -0
  261. package/bundled/node_modules/@kubbisec/shared/dist/api-key/api-key-scope-groups.js.map +1 -0
  262. package/bundled/node_modules/@kubbisec/shared/dist/api-key/api-key-scope-presets.d.ts +13 -0
  263. package/bundled/node_modules/@kubbisec/shared/dist/api-key/api-key-scope-presets.d.ts.map +1 -0
  264. package/bundled/node_modules/@kubbisec/shared/dist/api-key/api-key-scope-presets.js +79 -0
  265. package/bundled/node_modules/@kubbisec/shared/dist/api-key/api-key-scope-presets.js.map +1 -0
  266. package/bundled/node_modules/@kubbisec/shared/dist/api-key/index.d.ts +4 -0
  267. package/bundled/node_modules/@kubbisec/shared/dist/api-key/index.d.ts.map +1 -0
  268. package/bundled/node_modules/@kubbisec/shared/dist/api-key/index.js +20 -0
  269. package/bundled/node_modules/@kubbisec/shared/dist/api-key/index.js.map +1 -0
  270. package/bundled/node_modules/@kubbisec/shared/dist/api-key/migrate-api-key-metadata.d.ts +20 -0
  271. package/bundled/node_modules/@kubbisec/shared/dist/api-key/migrate-api-key-metadata.d.ts.map +1 -0
  272. package/bundled/node_modules/@kubbisec/shared/dist/api-key/migrate-api-key-metadata.js +78 -0
  273. package/bundled/node_modules/@kubbisec/shared/dist/api-key/migrate-api-key-metadata.js.map +1 -0
  274. package/bundled/node_modules/@kubbisec/shared/dist/assistant/assistant-session-key.d.ts +20 -0
  275. package/bundled/node_modules/@kubbisec/shared/dist/assistant/assistant-session-key.d.ts.map +1 -0
  276. package/bundled/node_modules/@kubbisec/shared/dist/assistant/assistant-session-key.js +33 -0
  277. package/bundled/node_modules/@kubbisec/shared/dist/assistant/assistant-session-key.js.map +1 -0
  278. package/bundled/node_modules/@kubbisec/shared/dist/assistant/assistant-thread.d.ts +19 -0
  279. package/bundled/node_modules/@kubbisec/shared/dist/assistant/assistant-thread.d.ts.map +1 -0
  280. package/bundled/node_modules/@kubbisec/shared/dist/assistant/assistant-thread.js +126 -0
  281. package/bundled/node_modules/@kubbisec/shared/dist/assistant/assistant-thread.js.map +1 -0
  282. package/bundled/node_modules/@kubbisec/shared/dist/assistant/index.d.ts +3 -0
  283. package/bundled/node_modules/@kubbisec/shared/dist/assistant/index.d.ts.map +1 -0
  284. package/bundled/node_modules/@kubbisec/shared/dist/assistant/index.js +19 -0
  285. package/bundled/node_modules/@kubbisec/shared/dist/assistant/index.js.map +1 -0
  286. package/bundled/node_modules/@kubbisec/shared/dist/billing/index.d.ts +2 -0
  287. package/bundled/node_modules/@kubbisec/shared/dist/billing/index.d.ts.map +1 -0
  288. package/bundled/node_modules/@kubbisec/shared/dist/billing/index.js +18 -0
  289. package/bundled/node_modules/@kubbisec/shared/dist/billing/index.js.map +1 -0
  290. package/bundled/node_modules/@kubbisec/shared/dist/billing/plan-limits.d.ts +17 -0
  291. package/bundled/node_modules/@kubbisec/shared/dist/billing/plan-limits.d.ts.map +1 -0
  292. package/bundled/node_modules/@kubbisec/shared/dist/billing/plan-limits.js +30 -0
  293. package/bundled/node_modules/@kubbisec/shared/dist/billing/plan-limits.js.map +1 -0
  294. package/bundled/node_modules/@kubbisec/shared/dist/ci/ci-job-dependencies.d.ts +42 -0
  295. package/bundled/node_modules/@kubbisec/shared/dist/ci/ci-job-dependencies.d.ts.map +1 -0
  296. package/bundled/node_modules/@kubbisec/shared/dist/ci/ci-job-dependencies.js +147 -0
  297. package/bundled/node_modules/@kubbisec/shared/dist/ci/ci-job-dependencies.js.map +1 -0
  298. package/bundled/node_modules/@kubbisec/shared/dist/ci/git-checkout-log-policy.d.ts +12 -0
  299. package/bundled/node_modules/@kubbisec/shared/dist/ci/git-checkout-log-policy.d.ts.map +1 -0
  300. package/bundled/node_modules/@kubbisec/shared/dist/ci/git-checkout-log-policy.js +70 -0
  301. package/bundled/node_modules/@kubbisec/shared/dist/ci/git-checkout-log-policy.js.map +1 -0
  302. package/bundled/node_modules/@kubbisec/shared/dist/ci/index.d.ts +4 -0
  303. package/bundled/node_modules/@kubbisec/shared/dist/ci/index.d.ts.map +1 -0
  304. package/bundled/node_modules/@kubbisec/shared/dist/ci/index.js +20 -0
  305. package/bundled/node_modules/@kubbisec/shared/dist/ci/index.js.map +1 -0
  306. package/bundled/node_modules/@kubbisec/shared/dist/ci/kubbisec-ci-execution-env.d.ts +16 -0
  307. package/bundled/node_modules/@kubbisec/shared/dist/ci/kubbisec-ci-execution-env.d.ts.map +1 -0
  308. package/bundled/node_modules/@kubbisec/shared/dist/ci/kubbisec-ci-execution-env.js +45 -0
  309. package/bundled/node_modules/@kubbisec/shared/dist/ci/kubbisec-ci-execution-env.js.map +1 -0
  310. package/bundled/node_modules/@kubbisec/shared/dist/cli-user-error.d.ts +18 -0
  311. package/bundled/node_modules/@kubbisec/shared/dist/cli-user-error.d.ts.map +1 -0
  312. package/bundled/node_modules/@kubbisec/shared/dist/cli-user-error.js +92 -0
  313. package/bundled/node_modules/@kubbisec/shared/dist/cli-user-error.js.map +1 -0
  314. package/bundled/node_modules/@kubbisec/shared/dist/dto/bulk-import-bitbucket-projects.dto.d.ts +15 -0
  315. package/bundled/node_modules/@kubbisec/shared/dist/dto/bulk-import-bitbucket-projects.dto.d.ts.map +1 -0
  316. package/bundled/node_modules/@kubbisec/shared/dist/dto/bulk-import-bitbucket-projects.dto.js +75 -0
  317. package/bundled/node_modules/@kubbisec/shared/dist/dto/bulk-import-bitbucket-projects.dto.js.map +1 -0
  318. package/bundled/node_modules/@kubbisec/shared/dist/dto/bulk-import-github-projects.dto.d.ts +25 -0
  319. package/bundled/node_modules/@kubbisec/shared/dist/dto/bulk-import-github-projects.dto.d.ts.map +1 -0
  320. package/bundled/node_modules/@kubbisec/shared/dist/dto/bulk-import-github-projects.dto.js +85 -0
  321. package/bundled/node_modules/@kubbisec/shared/dist/dto/bulk-import-github-projects.dto.js.map +1 -0
  322. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-bundle-report.dto.d.ts +17 -0
  323. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-bundle-report.dto.d.ts.map +1 -0
  324. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-bundle-report.dto.js +98 -0
  325. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-bundle-report.dto.js.map +1 -0
  326. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-coverage-report.dto.d.ts +32 -0
  327. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-coverage-report.dto.d.ts.map +1 -0
  328. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-coverage-report.dto.js +209 -0
  329. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-coverage-report.dto.js.map +1 -0
  330. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-project.dto.d.ts +65 -0
  331. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-project.dto.d.ts.map +1 -0
  332. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-project.dto.js +354 -0
  333. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-project.dto.js.map +1 -0
  334. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-report.dto.d.ts +27 -0
  335. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-report.dto.d.ts.map +1 -0
  336. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-report.dto.js +145 -0
  337. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-report.dto.js.map +1 -0
  338. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-scan-target.dto.d.ts +8 -0
  339. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-scan-target.dto.d.ts.map +1 -0
  340. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-scan-target.dto.js +51 -0
  341. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-scan-target.dto.js.map +1 -0
  342. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-vulnerability.dto.d.ts +34 -0
  343. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-vulnerability.dto.d.ts.map +1 -0
  344. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-vulnerability.dto.js +189 -0
  345. package/bundled/node_modules/@kubbisec/shared/dist/dto/create-vulnerability.dto.js.map +1 -0
  346. package/bundled/node_modules/@kubbisec/shared/dist/dto/index.d.ts +17 -0
  347. package/bundled/node_modules/@kubbisec/shared/dist/dto/index.d.ts.map +1 -0
  348. package/bundled/node_modules/@kubbisec/shared/dist/dto/index.js +51 -0
  349. package/bundled/node_modules/@kubbisec/shared/dist/dto/index.js.map +1 -0
  350. package/bundled/node_modules/@kubbisec/shared/dist/dto/metrics.dto.d.ts +203 -0
  351. package/bundled/node_modules/@kubbisec/shared/dist/dto/metrics.dto.d.ts.map +1 -0
  352. package/bundled/node_modules/@kubbisec/shared/dist/dto/metrics.dto.js +42 -0
  353. package/bundled/node_modules/@kubbisec/shared/dist/dto/metrics.dto.js.map +1 -0
  354. package/bundled/node_modules/@kubbisec/shared/dist/dto/record-gate-result.dto.d.ts +6 -0
  355. package/bundled/node_modules/@kubbisec/shared/dist/dto/record-gate-result.dto.d.ts.map +1 -0
  356. package/bundled/node_modules/@kubbisec/shared/dist/dto/record-gate-result.dto.js +31 -0
  357. package/bundled/node_modules/@kubbisec/shared/dist/dto/record-gate-result.dto.js.map +1 -0
  358. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-coverage-gate.dto.d.ts +7 -0
  359. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-coverage-gate.dto.d.ts.map +1 -0
  360. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-coverage-gate.dto.js +47 -0
  361. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-coverage-gate.dto.js.map +1 -0
  362. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-performance-gate.dto.d.ts +6 -0
  363. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-performance-gate.dto.d.ts.map +1 -0
  364. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-performance-gate.dto.js +36 -0
  365. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-performance-gate.dto.js.map +1 -0
  366. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-project.dto.d.ts +9 -0
  367. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-project.dto.d.ts.map +1 -0
  368. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-project.dto.js +52 -0
  369. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-project.dto.js.map +1 -0
  370. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-security-gate.dto.d.ts +9 -0
  371. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-security-gate.dto.d.ts.map +1 -0
  372. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-security-gate.dto.js +58 -0
  373. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-security-gate.dto.js.map +1 -0
  374. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-vulnerability.dto.d.ts +6 -0
  375. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-vulnerability.dto.d.ts.map +1 -0
  376. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-vulnerability.dto.js +30 -0
  377. package/bundled/node_modules/@kubbisec/shared/dist/dto/update-vulnerability.dto.js.map +1 -0
  378. package/bundled/node_modules/@kubbisec/shared/dist/enums.d.ts +88 -0
  379. package/bundled/node_modules/@kubbisec/shared/dist/enums.d.ts.map +1 -0
  380. package/bundled/node_modules/@kubbisec/shared/dist/enums.js +136 -0
  381. package/bundled/node_modules/@kubbisec/shared/dist/enums.js.map +1 -0
  382. package/bundled/node_modules/@kubbisec/shared/dist/github/kubbisec-github-label.d.ts +6 -0
  383. package/bundled/node_modules/@kubbisec/shared/dist/github/kubbisec-github-label.d.ts.map +1 -0
  384. package/bundled/node_modules/@kubbisec/shared/dist/github/kubbisec-github-label.js +9 -0
  385. package/bundled/node_modules/@kubbisec/shared/dist/github/kubbisec-github-label.js.map +1 -0
  386. package/bundled/node_modules/@kubbisec/shared/dist/index.d.ts +23 -0
  387. package/bundled/node_modules/@kubbisec/shared/dist/index.d.ts.map +1 -0
  388. package/bundled/node_modules/@kubbisec/shared/dist/index.js +39 -0
  389. package/bundled/node_modules/@kubbisec/shared/dist/index.js.map +1 -0
  390. package/bundled/node_modules/@kubbisec/shared/dist/mcp/constants.d.ts +22 -0
  391. package/bundled/node_modules/@kubbisec/shared/dist/mcp/constants.d.ts.map +1 -0
  392. package/bundled/node_modules/@kubbisec/shared/dist/mcp/constants.js +52 -0
  393. package/bundled/node_modules/@kubbisec/shared/dist/mcp/constants.js.map +1 -0
  394. package/bundled/node_modules/@kubbisec/shared/dist/mcp/oauth-metadata.d.ts +37 -0
  395. package/bundled/node_modules/@kubbisec/shared/dist/mcp/oauth-metadata.d.ts.map +1 -0
  396. package/bundled/node_modules/@kubbisec/shared/dist/mcp/oauth-metadata.js +51 -0
  397. package/bundled/node_modules/@kubbisec/shared/dist/mcp/oauth-metadata.js.map +1 -0
  398. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/ai-docs-bundle.loader.d.ts +6 -0
  399. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/ai-docs-bundle.loader.d.ts.map +1 -0
  400. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/ai-docs-bundle.loader.js +68 -0
  401. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/ai-docs-bundle.loader.js.map +1 -0
  402. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/aspm-docs-bundle.loader.d.ts +8 -0
  403. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/aspm-docs-bundle.loader.d.ts.map +1 -0
  404. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/aspm-docs-bundle.loader.js +115 -0
  405. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/aspm-docs-bundle.loader.js.map +1 -0
  406. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/doc-bundle-utils.d.ts +12 -0
  407. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/doc-bundle-utils.d.ts.map +1 -0
  408. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/doc-bundle-utils.js +86 -0
  409. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/doc-bundle-utils.js.map +1 -0
  410. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/index.d.ts +8 -0
  411. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/index.d.ts.map +1 -0
  412. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/index.js +33 -0
  413. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/index.js.map +1 -0
  414. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/mcp-tools-catalog.d.ts +4 -0
  415. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/mcp-tools-catalog.d.ts.map +1 -0
  416. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/mcp-tools-catalog.js +23 -0
  417. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/mcp-tools-catalog.js.map +1 -0
  418. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/monorepo-root.d.ts +4 -0
  419. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/monorepo-root.d.ts.map +1 -0
  420. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/monorepo-root.js +19 -0
  421. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/monorepo-root.js.map +1 -0
  422. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/naus-pipeline-docs-bundle.loader.d.ts +11 -0
  423. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/naus-pipeline-docs-bundle.loader.d.ts.map +1 -0
  424. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/naus-pipeline-docs-bundle.loader.js +148 -0
  425. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/naus-pipeline-docs-bundle.loader.js.map +1 -0
  426. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/naus-schema-overview.d.ts +2 -0
  427. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/naus-schema-overview.d.ts.map +1 -0
  428. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/naus-schema-overview.js +36 -0
  429. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/naus-schema-overview.js.map +1 -0
  430. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/security-scanner-playbooks.d.ts +49 -0
  431. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/security-scanner-playbooks.d.ts.map +1 -0
  432. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/security-scanner-playbooks.js +600 -0
  433. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/security-scanner-playbooks.js.map +1 -0
  434. package/bundled/node_modules/@kubbisec/shared/dist/project-scanner-summary.d.ts +24 -0
  435. package/bundled/node_modules/@kubbisec/shared/dist/project-scanner-summary.d.ts.map +1 -0
  436. package/bundled/node_modules/@kubbisec/shared/dist/project-scanner-summary.js +64 -0
  437. package/bundled/node_modules/@kubbisec/shared/dist/project-scanner-summary.js.map +1 -0
  438. package/bundled/node_modules/@kubbisec/shared/dist/rbac/better-auth-org-roles.d.ts +23 -0
  439. package/bundled/node_modules/@kubbisec/shared/dist/rbac/better-auth-org-roles.d.ts.map +1 -0
  440. package/bundled/node_modules/@kubbisec/shared/dist/rbac/better-auth-org-roles.js +53 -0
  441. package/bundled/node_modules/@kubbisec/shared/dist/rbac/better-auth-org-roles.js.map +1 -0
  442. package/bundled/node_modules/@kubbisec/shared/dist/rbac/index.d.ts +8 -0
  443. package/bundled/node_modules/@kubbisec/shared/dist/rbac/index.d.ts.map +1 -0
  444. package/bundled/node_modules/@kubbisec/shared/dist/rbac/index.js +24 -0
  445. package/bundled/node_modules/@kubbisec/shared/dist/rbac/index.js.map +1 -0
  446. package/bundled/node_modules/@kubbisec/shared/dist/rbac/kubbisec-permission-descriptions.d.ts +9 -0
  447. package/bundled/node_modules/@kubbisec/shared/dist/rbac/kubbisec-permission-descriptions.d.ts.map +1 -0
  448. package/bundled/node_modules/@kubbisec/shared/dist/rbac/kubbisec-permission-descriptions.js +91 -0
  449. package/bundled/node_modules/@kubbisec/shared/dist/rbac/kubbisec-permission-descriptions.js.map +1 -0
  450. package/bundled/node_modules/@kubbisec/shared/dist/rbac/kubbisec-permissions.d.ts +12 -0
  451. package/bundled/node_modules/@kubbisec/shared/dist/rbac/kubbisec-permissions.d.ts.map +1 -0
  452. package/bundled/node_modules/@kubbisec/shared/dist/rbac/kubbisec-permissions.js +86 -0
  453. package/bundled/node_modules/@kubbisec/shared/dist/rbac/kubbisec-permissions.js.map +1 -0
  454. package/bundled/node_modules/@kubbisec/shared/dist/rbac/member-quota.d.ts +8 -0
  455. package/bundled/node_modules/@kubbisec/shared/dist/rbac/member-quota.d.ts.map +1 -0
  456. package/bundled/node_modules/@kubbisec/shared/dist/rbac/member-quota.js +19 -0
  457. package/bundled/node_modules/@kubbisec/shared/dist/rbac/member-quota.js.map +1 -0
  458. package/bundled/node_modules/@kubbisec/shared/dist/rbac/platform-staff.d.ts +16 -0
  459. package/bundled/node_modules/@kubbisec/shared/dist/rbac/platform-staff.d.ts.map +1 -0
  460. package/bundled/node_modules/@kubbisec/shared/dist/rbac/platform-staff.js +61 -0
  461. package/bundled/node_modules/@kubbisec/shared/dist/rbac/platform-staff.js.map +1 -0
  462. package/bundled/node_modules/@kubbisec/shared/dist/rbac/resolve-org-permissions.d.ts +10 -0
  463. package/bundled/node_modules/@kubbisec/shared/dist/rbac/resolve-org-permissions.d.ts.map +1 -0
  464. package/bundled/node_modules/@kubbisec/shared/dist/rbac/resolve-org-permissions.js +200 -0
  465. package/bundled/node_modules/@kubbisec/shared/dist/rbac/resolve-org-permissions.js.map +1 -0
  466. package/bundled/node_modules/@kubbisec/shared/dist/rbac/resolve-platform-permissions.d.ts +7 -0
  467. package/bundled/node_modules/@kubbisec/shared/dist/rbac/resolve-platform-permissions.d.ts.map +1 -0
  468. package/bundled/node_modules/@kubbisec/shared/dist/rbac/resolve-platform-permissions.js +23 -0
  469. package/bundled/node_modules/@kubbisec/shared/dist/rbac/resolve-platform-permissions.js.map +1 -0
  470. package/bundled/node_modules/@kubbisec/shared/dist/redaction.d.ts +14 -0
  471. package/bundled/node_modules/@kubbisec/shared/dist/redaction.d.ts.map +1 -0
  472. package/bundled/node_modules/@kubbisec/shared/dist/redaction.js +251 -0
  473. package/bundled/node_modules/@kubbisec/shared/dist/redaction.js.map +1 -0
  474. package/bundled/node_modules/@kubbisec/shared/dist/security/aspm-gate-rules.d.ts +19 -0
  475. package/bundled/node_modules/@kubbisec/shared/dist/security/aspm-gate-rules.d.ts.map +1 -0
  476. package/bundled/node_modules/@kubbisec/shared/dist/security/aspm-gate-rules.js +61 -0
  477. package/bundled/node_modules/@kubbisec/shared/dist/security/aspm-gate-rules.js.map +1 -0
  478. package/bundled/node_modules/@kubbisec/shared/dist/security/build-aspm-security-matrix-pipeline-yaml.d.ts +3 -0
  479. package/bundled/node_modules/@kubbisec/shared/dist/security/build-aspm-security-matrix-pipeline-yaml.d.ts.map +1 -0
  480. package/bundled/node_modules/@kubbisec/shared/dist/security/build-aspm-security-matrix-pipeline-yaml.js +54 -0
  481. package/bundled/node_modules/@kubbisec/shared/dist/security/build-aspm-security-matrix-pipeline-yaml.js.map +1 -0
  482. package/bundled/node_modules/@kubbisec/shared/dist/security/build-github-security-workflow-yaml.d.ts +4 -0
  483. package/bundled/node_modules/@kubbisec/shared/dist/security/build-github-security-workflow-yaml.d.ts.map +1 -0
  484. package/bundled/node_modules/@kubbisec/shared/dist/security/build-github-security-workflow-yaml.js +72 -0
  485. package/bundled/node_modules/@kubbisec/shared/dist/security/build-github-security-workflow-yaml.js.map +1 -0
  486. package/bundled/node_modules/@kubbisec/shared/dist/security/github-workflow-action-pins.d.ts +27 -0
  487. package/bundled/node_modules/@kubbisec/shared/dist/security/github-workflow-action-pins.d.ts.map +1 -0
  488. package/bundled/node_modules/@kubbisec/shared/dist/security/github-workflow-action-pins.js +30 -0
  489. package/bundled/node_modules/@kubbisec/shared/dist/security/github-workflow-action-pins.js.map +1 -0
  490. package/bundled/node_modules/@kubbisec/shared/dist/security/github-workflow-tool-jobs.d.ts +7 -0
  491. package/bundled/node_modules/@kubbisec/shared/dist/security/github-workflow-tool-jobs.d.ts.map +1 -0
  492. package/bundled/node_modules/@kubbisec/shared/dist/security/github-workflow-tool-jobs.js +184 -0
  493. package/bundled/node_modules/@kubbisec/shared/dist/security/github-workflow-tool-jobs.js.map +1 -0
  494. package/bundled/node_modules/@kubbisec/shared/dist/security/index.d.ts +7 -0
  495. package/bundled/node_modules/@kubbisec/shared/dist/security/index.d.ts.map +1 -0
  496. package/bundled/node_modules/@kubbisec/shared/dist/security/index.js +23 -0
  497. package/bundled/node_modules/@kubbisec/shared/dist/security/index.js.map +1 -0
  498. package/bundled/node_modules/@kubbisec/shared/dist/security/security-tool-catalog.d.ts +5 -0
  499. package/bundled/node_modules/@kubbisec/shared/dist/security/security-tool-catalog.d.ts.map +1 -0
  500. package/bundled/node_modules/@kubbisec/shared/dist/security/security-tool-catalog.js +74 -0
  501. package/bundled/node_modules/@kubbisec/shared/dist/security/security-tool-catalog.js.map +1 -0
  502. package/bundled/node_modules/@kubbisec/shared/dist/security/security-tool.types.d.ts +43 -0
  503. package/bundled/node_modules/@kubbisec/shared/dist/security/security-tool.types.d.ts.map +1 -0
  504. package/bundled/node_modules/@kubbisec/shared/dist/security/security-tool.types.js +22 -0
  505. package/bundled/node_modules/@kubbisec/shared/dist/security/security-tool.types.js.map +1 -0
  506. package/bundled/node_modules/@kubbisec/shared/dist/severity-map.d.ts +8 -0
  507. package/bundled/node_modules/@kubbisec/shared/dist/severity-map.d.ts.map +1 -0
  508. package/bundled/node_modules/@kubbisec/shared/dist/severity-map.js +47 -0
  509. package/bundled/node_modules/@kubbisec/shared/dist/severity-map.js.map +1 -0
  510. package/bundled/node_modules/@kubbisec/shared/dist/shared-project/constants.d.ts +4 -0
  511. package/bundled/node_modules/@kubbisec/shared/dist/shared-project/constants.d.ts.map +1 -0
  512. package/bundled/node_modules/@kubbisec/shared/dist/shared-project/constants.js +10 -0
  513. package/bundled/node_modules/@kubbisec/shared/dist/shared-project/constants.js.map +1 -0
  514. package/bundled/node_modules/@kubbisec/shared/dist/shared-project/index.d.ts +4 -0
  515. package/bundled/node_modules/@kubbisec/shared/dist/shared-project/index.d.ts.map +1 -0
  516. package/bundled/node_modules/@kubbisec/shared/dist/shared-project/index.js +20 -0
  517. package/bundled/node_modules/@kubbisec/shared/dist/shared-project/index.js.map +1 -0
  518. package/bundled/node_modules/@kubbisec/shared/dist/shared-project/redact-log-lines.d.ts +2 -0
  519. package/bundled/node_modules/@kubbisec/shared/dist/shared-project/redact-log-lines.d.ts.map +1 -0
  520. package/bundled/node_modules/@kubbisec/shared/dist/shared-project/redact-log-lines.js +9 -0
  521. package/bundled/node_modules/@kubbisec/shared/dist/shared-project/redact-log-lines.js.map +1 -0
  522. package/bundled/node_modules/@kubbisec/shared/dist/shared-project/share-prefix.d.ts +3 -0
  523. package/bundled/node_modules/@kubbisec/shared/dist/shared-project/share-prefix.d.ts.map +1 -0
  524. package/bundled/node_modules/@kubbisec/shared/dist/shared-project/share-prefix.js +18 -0
  525. package/bundled/node_modules/@kubbisec/shared/dist/shared-project/share-prefix.js.map +1 -0
  526. package/bundled/node_modules/@kubbisec/shared/dist/sonar-safe-string.d.ts +26 -0
  527. package/bundled/node_modules/@kubbisec/shared/dist/sonar-safe-string.d.ts.map +1 -0
  528. package/bundled/node_modules/@kubbisec/shared/dist/sonar-safe-string.js +202 -0
  529. package/bundled/node_modules/@kubbisec/shared/dist/sonar-safe-string.js.map +1 -0
  530. package/bundled/node_modules/@kubbisec/shared/dist/sort-findings.d.ts +16 -0
  531. package/bundled/node_modules/@kubbisec/shared/dist/sort-findings.d.ts.map +1 -0
  532. package/bundled/node_modules/@kubbisec/shared/dist/sort-findings.js +67 -0
  533. package/bundled/node_modules/@kubbisec/shared/dist/sort-findings.js.map +1 -0
  534. package/bundled/node_modules/@kubbisec/shared/dist/trusted-path.d.ts +7 -0
  535. package/bundled/node_modules/@kubbisec/shared/dist/trusted-path.d.ts.map +1 -0
  536. package/bundled/node_modules/@kubbisec/shared/dist/trusted-path.js +30 -0
  537. package/bundled/node_modules/@kubbisec/shared/dist/trusted-path.js.map +1 -0
  538. package/bundled/node_modules/@kubbisec/shared/package.json +77 -0
  539. package/bundled/reflect-system.md +31 -0
  540. package/bundled/resolve-bundled-dist-root.js +166 -0
  541. package/bundled/resolve-bundled-dist-root.js.map +1 -0
  542. package/bundled/skills/aspm-platform/SKILL.md +95 -0
  543. package/bundled/skills/at-path-mentions.d.ts +7 -0
  544. package/bundled/skills/at-path-mentions.d.ts.map +1 -0
  545. package/bundled/skills/at-path-mentions.js +184 -0
  546. package/bundled/skills/at-path-mentions.js.map +1 -0
  547. package/bundled/skills/at-path-mentions.test.ts +64 -0
  548. package/bundled/skills/at-path-mentions.ts +209 -0
  549. package/bundled/skills/chat-mention-render.d.ts +7 -0
  550. package/bundled/skills/chat-mention-render.d.ts.map +1 -0
  551. package/bundled/skills/chat-mention-render.js +160 -0
  552. package/bundled/skills/chat-mention-render.js.map +1 -0
  553. package/bundled/skills/chat-mention-render.test.ts +70 -0
  554. package/bundled/skills/chat-mention-render.ts +192 -0
  555. package/bundled/skills/chat-mentions.d.ts +28 -0
  556. package/bundled/skills/chat-mentions.d.ts.map +1 -0
  557. package/bundled/skills/chat-mentions.js +108 -0
  558. package/bundled/skills/chat-mentions.js.map +1 -0
  559. package/bundled/skills/chat-mentions.test.ts +39 -0
  560. package/bundled/skills/chat-mentions.ts +133 -0
  561. package/bundled/skills/github-local/SKILL.md +16 -0
  562. package/bundled/skills/kubbisec-resource-router/SKILL.md +3 -0
  563. package/bundled/skills/list-bundled-skills.d.ts +7 -0
  564. package/bundled/skills/list-bundled-skills.d.ts.map +1 -0
  565. package/bundled/skills/list-bundled-skills.js +44 -0
  566. package/bundled/skills/list-bundled-skills.js.map +1 -0
  567. package/bundled/skills/list-bundled-skills.ts +49 -0
  568. package/bundled/skills/naus-pipelines/SKILL.md +127 -0
  569. package/bundled/skills/remediation/SKILL.md +12 -0
  570. package/bundled/skills/scanner-gitleaks/SKILL.md +10 -0
  571. package/bundled/skills/scanner-nmap/SKILL.md +10 -0
  572. package/bundled/skills/scanner-osv/SKILL.md +10 -0
  573. package/bundled/skills/scanner-semgrep/SKILL.md +10 -0
  574. package/bundled/skills/scanner-skipfish/SKILL.md +10 -0
  575. package/bundled/skills/scanner-sonar/SKILL.md +10 -0
  576. package/bundled/skills/scanner-syft/SKILL.md +10 -0
  577. package/bundled/skills/scanner-trivy/SKILL.md +10 -0
  578. package/bundled/skills/sec-brainstorm/SKILL.md +74 -0
  579. package/bundled/skills/sec-clarify/SKILL.md +53 -0
  580. package/bundled/skills/sec-debug/SKILL.md +94 -0
  581. package/bundled/skills/sec-plan/SKILL.md +101 -0
  582. package/bundled/skills/sec-review/SKILL.md +110 -0
  583. package/bundled/skills/sec-review/code-reviewer-sec.md +176 -0
  584. package/bundled/skills/sec-using-skills/SKILL.md +81 -0
  585. package/bundled/skills/sec-verify/SKILL.md +77 -0
  586. package/bundled/skills/skill-mention.d.ts +3 -0
  587. package/bundled/skills/skill-mention.d.ts.map +1 -0
  588. package/bundled/skills/skill-mention.js +3 -0
  589. package/bundled/skills/skill-mention.js.map +1 -0
  590. package/bundled/skills/skill-mention.test.ts +46 -0
  591. package/bundled/skills/skill-mention.ts +10 -0
  592. package/bundled/theme/clear-terminal.d.ts +3 -0
  593. package/bundled/theme/clear-terminal.d.ts.map +1 -0
  594. package/bundled/theme/clear-terminal.js +7 -0
  595. package/bundled/theme/clear-terminal.js.map +1 -0
  596. package/bundled/theme/footer-render-hook.d.ts +3 -0
  597. package/bundled/theme/footer-render-hook.d.ts.map +1 -0
  598. package/bundled/theme/footer-render-hook.js +8 -0
  599. package/bundled/theme/footer-render-hook.js.map +1 -0
  600. package/bundled/theme/kubbisec-brand-fg.d.ts +4 -0
  601. package/bundled/theme/kubbisec-brand-fg.d.ts.map +1 -0
  602. package/bundled/theme/kubbisec-brand-fg.js +7 -0
  603. package/bundled/theme/kubbisec-brand-fg.js.map +1 -0
  604. package/bundled/theme/kubbisec-menu-themes.d.ts +16 -0
  605. package/bundled/theme/kubbisec-menu-themes.d.ts.map +1 -0
  606. package/bundled/theme/kubbisec-menu-themes.js +47 -0
  607. package/bundled/theme/kubbisec-menu-themes.js.map +1 -0
  608. package/bundled/theme/kubbisec-theme-name.d.ts +2 -0
  609. package/bundled/theme/kubbisec-theme-name.d.ts.map +1 -0
  610. package/bundled/theme/kubbisec-theme-name.js +2 -0
  611. package/bundled/theme/kubbisec-theme-name.js.map +1 -0
  612. package/bundled/theme/kubbisec.json +93 -0
  613. package/bundled/theme/patch-pi-settings-theme.runtime.d.ts +3 -0
  614. package/bundled/theme/patch-pi-settings-theme.runtime.d.ts.map +1 -0
  615. package/bundled/theme/patch-pi-settings-theme.runtime.js +16 -0
  616. package/bundled/theme/patch-pi-settings-theme.runtime.js.map +1 -0
  617. package/bundled/theme/render-compact-header.d.ts +21 -0
  618. package/bundled/theme/render-compact-header.d.ts.map +1 -0
  619. package/bundled/theme/render-compact-header.js +197 -0
  620. package/bundled/theme/render-compact-header.js.map +1 -0
  621. package/bundled/workflow/session-workflow-mode.d.ts +10 -0
  622. package/bundled/workflow/session-workflow-mode.d.ts.map +1 -0
  623. package/bundled/workflow/session-workflow-mode.js +51 -0
  624. package/bundled/workflow/session-workflow-mode.js.map +1 -0
  625. package/package.json +1 -1
@@ -0,0 +1,209 @@
1
+ import { readdirSync, statSync } from "node:fs";
2
+ import { basename, dirname, join, relative } from "node:path";
3
+ import type { AutocompleteItem } from "@earendil-works/pi-tui";
4
+ import {
5
+ extractAtPrefix,
6
+ parsePlanMentionPrefix,
7
+ parseSkillMentionPrefix,
8
+ } from "./chat-mentions.js";
9
+
10
+ function toDisplayPath(value: string): string {
11
+ return value.replace(/\\/g, "/");
12
+ }
13
+
14
+ function parsePathPrefix(prefix: string): {
15
+ rawPrefix: string;
16
+ isAtPrefix: boolean;
17
+ isQuotedPrefix: boolean;
18
+ } {
19
+ if (prefix.startsWith('@"')) {
20
+ return { rawPrefix: prefix.slice(2), isAtPrefix: true, isQuotedPrefix: true };
21
+ }
22
+ if (prefix.startsWith('"')) {
23
+ return { rawPrefix: prefix.slice(1), isAtPrefix: false, isQuotedPrefix: true };
24
+ }
25
+ if (prefix.startsWith("@")) {
26
+ return { rawPrefix: prefix.slice(1), isAtPrefix: true, isQuotedPrefix: false };
27
+ }
28
+ return { rawPrefix: prefix, isAtPrefix: false, isQuotedPrefix: false };
29
+ }
30
+
31
+ function buildCompletionValue(
32
+ path: string,
33
+ options: { isAtPrefix: boolean; isQuotedPrefix: boolean },
34
+ ): string {
35
+ const needsQuotes = options.isQuotedPrefix || path.includes(" ");
36
+ const prefix = options.isAtPrefix ? "@" : "";
37
+ if (!needsQuotes) {
38
+ return `${prefix}${path}`;
39
+ }
40
+ const openQuote = `${prefix}"`;
41
+ return `${openQuote}${path}"`;
42
+ }
43
+
44
+ const DEPRIORITIZED_AT_PATH_NAMES = new Set([
45
+ "node_modules",
46
+ "dist",
47
+ "dist-bin",
48
+ ".turbo",
49
+ ".git",
50
+ "coverage",
51
+ "build",
52
+ ".next",
53
+ ".cache",
54
+ "tmp",
55
+ ".venv",
56
+ "target",
57
+ ]);
58
+
59
+ const PRIORITY_AT_PATH_DIRS = [
60
+ "src",
61
+ "lib",
62
+ "apps",
63
+ "packages",
64
+ "scripts",
65
+ "test",
66
+ "tests",
67
+ "docs",
68
+ "spec",
69
+ ] as const;
70
+
71
+ const PRIORITY_AT_PATH_FILES = [
72
+ "package.json",
73
+ "README.md",
74
+ "readme.md",
75
+ "tsconfig.json",
76
+ "vitest.config.ts",
77
+ "Cargo.toml",
78
+ "go.mod",
79
+ "pyproject.toml",
80
+ "Makefile",
81
+ ] as const;
82
+
83
+ function atPathSuggestionRank(label: string): number {
84
+ const name = label.replace(/\/$/, "");
85
+ if (
86
+ PRIORITY_AT_PATH_DIRS.includes(name as (typeof PRIORITY_AT_PATH_DIRS)[number]) ||
87
+ PRIORITY_AT_PATH_FILES.includes(name as (typeof PRIORITY_AT_PATH_FILES)[number])
88
+ ) {
89
+ return 0;
90
+ }
91
+ if (DEPRIORITIZED_AT_PATH_NAMES.has(name)) {
92
+ return 3;
93
+ }
94
+ if (label.endsWith("/")) {
95
+ return 1;
96
+ }
97
+ return 2;
98
+ }
99
+
100
+ function sortAtPathSuggestions(items: AutocompleteItem[], rawPrefix: string): AutocompleteItem[] {
101
+ if (rawPrefix !== "") {
102
+ return items.sort((a, b) => {
103
+ const aIsDir = a.label.endsWith("/");
104
+ const bIsDir = b.label.endsWith("/");
105
+ if (aIsDir && !bIsDir) return -1;
106
+ if (!aIsDir && bIsDir) return 1;
107
+ return a.label.localeCompare(b.label);
108
+ });
109
+ }
110
+
111
+ return items.sort((a, b) => {
112
+ const rankDiff = atPathSuggestionRank(a.label) - atPathSuggestionRank(b.label);
113
+ if (rankDiff !== 0) return rankDiff;
114
+ return a.label.localeCompare(b.label);
115
+ });
116
+ }
117
+
118
+ /** `@` file attachment (not `@skill` / `@plan`). */
119
+ export function isAtFileAttachmentPrefix(atPrefix: string | null): boolean {
120
+ if (!atPrefix) return false;
121
+ if (parseSkillMentionPrefix(atPrefix)) return false;
122
+ if (parsePlanMentionPrefix(atPrefix)) return false;
123
+ return atPrefix.startsWith("@");
124
+ }
125
+
126
+ /** List cwd-scoped entries for `@` / `@path` (Pi getFileSuggestions semantics). */
127
+ export function getAtPathFileSuggestions(cwd: string, atPrefix: string): AutocompleteItem[] {
128
+ try {
129
+ const { rawPrefix, isAtPrefix, isQuotedPrefix } = parsePathPrefix(atPrefix);
130
+ if (!isAtPrefix) return [];
131
+
132
+ let searchDir: string;
133
+ let searchPrefix: string;
134
+ const expandedPrefix = rawPrefix;
135
+
136
+ const isRootPrefix =
137
+ rawPrefix === "" ||
138
+ rawPrefix === "./" ||
139
+ rawPrefix === "../" ||
140
+ rawPrefix === "/" ||
141
+ (isAtPrefix && rawPrefix === "");
142
+
143
+ if (isRootPrefix) {
144
+ searchDir = join(cwd, expandedPrefix);
145
+ searchPrefix = "";
146
+ } else if (rawPrefix.endsWith("/")) {
147
+ searchDir = join(cwd, expandedPrefix);
148
+ searchPrefix = "";
149
+ } else {
150
+ searchDir = join(cwd, dirname(expandedPrefix));
151
+ searchPrefix = basename(expandedPrefix);
152
+ }
153
+
154
+ const entries = readdirSync(searchDir, { withFileTypes: true });
155
+ const suggestions: AutocompleteItem[] = [];
156
+ const cwdLabel = toDisplayPath(relative(cwd, searchDir) || ".");
157
+
158
+ for (const entry of entries) {
159
+ if (!entry.name.toLowerCase().startsWith(searchPrefix.toLowerCase())) {
160
+ continue;
161
+ }
162
+
163
+ let isDirectory = entry.isDirectory();
164
+ if (!isDirectory && entry.isSymbolicLink()) {
165
+ try {
166
+ isDirectory = statSync(join(searchDir, entry.name)).isDirectory();
167
+ } catch {
168
+ // broken symlink — treat as file
169
+ }
170
+ }
171
+
172
+ let relativePath: string;
173
+ const displayPrefix = rawPrefix;
174
+ const name = entry.name;
175
+
176
+ if (displayPrefix.endsWith("/")) {
177
+ relativePath = displayPrefix + name;
178
+ } else if (displayPrefix.includes("/")) {
179
+ relativePath = join(dirname(displayPrefix), name);
180
+ if (displayPrefix.startsWith("./") && !relativePath.startsWith("./")) {
181
+ relativePath = `./${relativePath}`;
182
+ }
183
+ } else {
184
+ relativePath = name;
185
+ }
186
+
187
+ relativePath = toDisplayPath(relativePath);
188
+ const pathValue = isDirectory ? `${relativePath}/` : relativePath;
189
+ const value = buildCompletionValue(pathValue, { isAtPrefix, isQuotedPrefix });
190
+ const entryRelative = toDisplayPath(relative(cwd, join(searchDir, entry.name)));
191
+
192
+ suggestions.push({
193
+ value,
194
+ label: name + (isDirectory ? "/" : ""),
195
+ description:
196
+ searchDir === cwd && rawPrefix === "" ? entryRelative : `${cwdLabel}/${entryRelative}`,
197
+ });
198
+ }
199
+
200
+ return sortAtPathSuggestions(suggestions, rawPrefix);
201
+ } catch {
202
+ return [];
203
+ }
204
+ }
205
+
206
+ export function extractAtFilePrefix(textBeforeCursor: string): string | null {
207
+ const atPrefix = extractAtPrefix(textBeforeCursor);
208
+ return isAtFileAttachmentPrefix(atPrefix) ? atPrefix : null;
209
+ }
@@ -0,0 +1,7 @@
1
+ export type MentionChipTheme = {
2
+ fg: (role: string, text: string) => string;
3
+ };
4
+ export declare function renderLineWithMentionChips(line: string, theme: MentionChipTheme): string;
5
+ export declare function logicalToVisibleCol(line: string, logicalCol: number): number;
6
+ export declare function visibleToLogicalCol(line: string, visibleCol: number): number;
7
+ //# sourceMappingURL=chat-mention-render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-mention-render.d.ts","sourceRoot":"","sources":["../../src/skills/chat-mention-render.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5C,CAAC;AAwIF,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAIxF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAqB5E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAqB5E"}
@@ -0,0 +1,160 @@
1
+ import { visibleWidth } from "@earendil-works/pi-tui";
2
+ import { PLAN_MENTION_ALIASES } from "./chat-mentions.js";
3
+ const SKILL_SLASH_RE = /\/skill:([a-z0-9_-]+)/gi;
4
+ const AT_SKILL_RE = /@skill\s+([^\s@/]+)/gi;
5
+ const PLAN_TOKEN_RE = /\/mode:plan\b/gi;
6
+ const AT_PLAN_PATTERN = PLAN_MENTION_ALIASES.map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"))
7
+ .sort((a, b) => b.length - a.length)
8
+ .join("|");
9
+ const AT_PLAN_RE = new RegExp(`(?:^|[\\s"'=])(${AT_PLAN_PATTERN})(?=\\s|$)`, "gi");
10
+ const PLAN_VISIBLE_LABEL = "@plan";
11
+ function findNextMentionMatch(line, cursor) {
12
+ const candidates = [];
13
+ SKILL_SLASH_RE.lastIndex = cursor;
14
+ const slashMatch = SKILL_SLASH_RE.exec(line);
15
+ if (slashMatch?.index !== undefined) {
16
+ candidates.push({
17
+ index: slashMatch.index,
18
+ length: slashMatch[0].length,
19
+ span: { kind: "skill", name: slashMatch[1] ?? "", source: "slash" },
20
+ });
21
+ }
22
+ AT_SKILL_RE.lastIndex = cursor;
23
+ const atMatch = AT_SKILL_RE.exec(line);
24
+ if (atMatch?.index !== undefined) {
25
+ candidates.push({
26
+ index: atMatch.index,
27
+ length: atMatch[0].length,
28
+ span: { kind: "skill", name: atMatch[1] ?? "", source: "at" },
29
+ });
30
+ }
31
+ PLAN_TOKEN_RE.lastIndex = cursor;
32
+ const planMatch = PLAN_TOKEN_RE.exec(line);
33
+ if (planMatch?.index !== undefined) {
34
+ candidates.push({
35
+ index: planMatch.index,
36
+ length: planMatch[0].length,
37
+ span: { kind: "plan", logicalToken: planMatch[0] },
38
+ });
39
+ }
40
+ AT_PLAN_RE.lastIndex = cursor;
41
+ const atPlanMatch = AT_PLAN_RE.exec(line);
42
+ if (atPlanMatch?.index !== undefined) {
43
+ const token = atPlanMatch[1] ?? "@plan";
44
+ const leading = atPlanMatch[0].length - token.length;
45
+ const index = atPlanMatch.index + leading;
46
+ candidates.push({
47
+ index,
48
+ length: token.length,
49
+ span: { kind: "plan", logicalToken: token },
50
+ });
51
+ }
52
+ if (candidates.length === 0)
53
+ return null;
54
+ return candidates.reduce((earliest, candidate) => candidate.index < earliest.index ? candidate : earliest);
55
+ }
56
+ function parseMentionSpans(line) {
57
+ const spans = [];
58
+ let cursor = 0;
59
+ while (cursor < line.length) {
60
+ const nextMatch = findNextMentionMatch(line, cursor);
61
+ if (!nextMatch) {
62
+ spans.push({ kind: "text", value: line.slice(cursor) });
63
+ break;
64
+ }
65
+ if (nextMatch.index > cursor) {
66
+ spans.push({ kind: "text", value: line.slice(cursor, nextMatch.index) });
67
+ }
68
+ spans.push(nextMatch.span);
69
+ cursor = nextMatch.index + nextMatch.length;
70
+ }
71
+ if (spans.length === 0) {
72
+ spans.push({ kind: "text", value: line });
73
+ }
74
+ return spans;
75
+ }
76
+ function skillVisibleText(span) {
77
+ return span.source === "at" ? `@${span.name}` : span.name;
78
+ }
79
+ function skillLogicalText(span) {
80
+ return span.source === "at" ? `@skill ${span.name}` : `/skill:${span.name}`;
81
+ }
82
+ function renderSpan(span, theme) {
83
+ if (span.kind === "text")
84
+ return span.value;
85
+ if (span.kind === "skill") {
86
+ const text = skillVisibleText(span);
87
+ try {
88
+ return theme.fg("accent", text);
89
+ }
90
+ catch {
91
+ return theme.fg("text", text);
92
+ }
93
+ }
94
+ try {
95
+ return theme.fg("planAccent", PLAN_VISIBLE_LABEL);
96
+ }
97
+ catch {
98
+ return theme.fg("text", PLAN_VISIBLE_LABEL);
99
+ }
100
+ }
101
+ function spanLogicalWidth(span) {
102
+ if (span.kind === "text")
103
+ return span.value.length;
104
+ if (span.kind === "skill")
105
+ return skillLogicalText(span).length;
106
+ return span.logicalToken.length;
107
+ }
108
+ function spanVisibleText(span) {
109
+ if (span.kind === "text")
110
+ return span.value;
111
+ if (span.kind === "skill")
112
+ return skillVisibleText(span);
113
+ return PLAN_VISIBLE_LABEL;
114
+ }
115
+ export function renderLineWithMentionChips(line, theme) {
116
+ return parseMentionSpans(line)
117
+ .map((span) => renderSpan(span, theme))
118
+ .join("");
119
+ }
120
+ export function logicalToVisibleCol(line, logicalCol) {
121
+ const clamped = Math.max(0, Math.min(logicalCol, line.length));
122
+ let logical = 0;
123
+ let visible = 0;
124
+ for (const span of parseMentionSpans(line)) {
125
+ const logicalLen = spanLogicalWidth(span);
126
+ const visibleLen = visibleWidth(spanVisibleText(span));
127
+ if (logical + logicalLen >= clamped) {
128
+ const offset = clamped - logical;
129
+ if (span.kind === "text") {
130
+ return visible + offset;
131
+ }
132
+ const ratio = logicalLen > 0 ? offset / logicalLen : 0;
133
+ return visible + Math.round(visibleLen * ratio);
134
+ }
135
+ logical += logicalLen;
136
+ visible += visibleLen;
137
+ }
138
+ return visible;
139
+ }
140
+ export function visibleToLogicalCol(line, visibleCol) {
141
+ const clamped = Math.max(0, visibleCol);
142
+ let logical = 0;
143
+ let visible = 0;
144
+ for (const span of parseMentionSpans(line)) {
145
+ const logicalLen = spanLogicalWidth(span);
146
+ const visibleLen = visibleWidth(spanVisibleText(span));
147
+ if (visible + visibleLen >= clamped) {
148
+ const offset = clamped - visible;
149
+ if (span.kind === "text") {
150
+ return logical + offset;
151
+ }
152
+ const ratio = visibleLen > 0 ? offset / visibleLen : 0;
153
+ return logical + Math.round(logicalLen * ratio);
154
+ }
155
+ logical += logicalLen;
156
+ visible += visibleLen;
157
+ }
158
+ return line.length;
159
+ }
160
+ //# sourceMappingURL=chat-mention-render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-mention-render.js","sourceRoot":"","sources":["../../src/skills/chat-mention-render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import { describe, expect, it, vi } from "vitest";
2
+ import {
3
+ logicalToVisibleCol,
4
+ renderLineWithMentionChips,
5
+ visibleToLogicalCol,
6
+ } from "./chat-mention-render.js";
7
+
8
+ function mockTheme() {
9
+ return {
10
+ fg: vi.fn((role: string, text: string) => `[${role}]${text}[/]`),
11
+ };
12
+ }
13
+
14
+ describe("chat-mention-render", () => {
15
+ it("renders skill names with accent token", () => {
16
+ const theme = mockTheme();
17
+ renderLineWithMentionChips("/skill:naus-pipelines validate", theme);
18
+ expect(theme.fg).toHaveBeenCalledWith("accent", "naus-pipelines");
19
+ });
20
+
21
+ it("renders plan chip with planAccent token", () => {
22
+ const theme = mockTheme();
23
+ renderLineWithMentionChips("/mode:plan scope", theme);
24
+ expect(theme.fg).toHaveBeenCalledWith("planAccent", "@plan");
25
+ });
26
+
27
+ it("renders @plan and @planejar as @plan chip", () => {
28
+ const theme = mockTheme();
29
+ renderLineWithMentionChips("@plan scope", theme);
30
+ expect(theme.fg).toHaveBeenCalledWith("planAccent", "@plan");
31
+ theme.fg.mockClear();
32
+ renderLineWithMentionChips("@planejar scope", theme);
33
+ expect(theme.fg).toHaveBeenCalledWith("planAccent", "@plan");
34
+ });
35
+
36
+ it("leaves lines without tokens unchanged", () => {
37
+ const theme = mockTheme();
38
+ expect(renderLineWithMentionChips("hello world", theme)).toBe("hello world");
39
+ expect(theme.fg).not.toHaveBeenCalled();
40
+ });
41
+
42
+ it("maps logical cursor columns through chip width delta", () => {
43
+ const line = "/skill:remediation apply fix";
44
+ const afterSkill = logicalToVisibleCol(line, "/skill:remediation".length);
45
+ expect(afterSkill).toBe("remediation".length);
46
+ const roundTrip = visibleToLogicalCol(line, afterSkill);
47
+ expect(roundTrip).toBe("/skill:remediation".length);
48
+ });
49
+
50
+ it("handles multiple skill chips", () => {
51
+ const theme = mockTheme();
52
+ renderLineWithMentionChips("/skill:a then /skill:b", theme);
53
+ expect(theme.fg).toHaveBeenCalledWith("accent", "a");
54
+ expect(theme.fg).toHaveBeenCalledWith("accent", "b");
55
+ });
56
+
57
+ it("renders @skill name as @name accent chip in the editor", () => {
58
+ const theme = mockTheme();
59
+ renderLineWithMentionChips("@skill aspm-platform validate", theme);
60
+ expect(theme.fg).toHaveBeenCalledWith("accent", "@aspm-platform");
61
+ });
62
+
63
+ it("maps logical cursor columns for @skill mentions", () => {
64
+ const line = "@skill aspm-platform apply fix";
65
+ const afterMention = logicalToVisibleCol(line, "@skill aspm-platform".length);
66
+ expect(afterMention).toBe("@aspm-platform".length);
67
+ const roundTrip = visibleToLogicalCol(line, afterMention);
68
+ expect(roundTrip).toBe("@skill aspm-platform".length);
69
+ });
70
+ });
@@ -0,0 +1,192 @@
1
+ import { visibleWidth } from "@earendil-works/pi-tui";
2
+ import { PLAN_MENTION_ALIASES } from "./chat-mentions.js";
3
+
4
+ export type MentionChipTheme = {
5
+ fg: (role: string, text: string) => string;
6
+ };
7
+
8
+ type MentionSpan =
9
+ | { kind: "text"; value: string }
10
+ | { kind: "skill"; name: string; source: "slash" | "at" }
11
+ | { kind: "plan"; logicalToken: string };
12
+
13
+ const SKILL_SLASH_RE = /\/skill:([a-z0-9_-]+)/gi;
14
+ const AT_SKILL_RE = /@skill\s+([^\s@/]+)/gi;
15
+ const PLAN_TOKEN_RE = /\/mode:plan\b/gi;
16
+
17
+ const AT_PLAN_PATTERN = PLAN_MENTION_ALIASES.map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"))
18
+ .sort((a, b) => b.length - a.length)
19
+ .join("|");
20
+ const AT_PLAN_RE = new RegExp(`(?:^|[\\s"'=])(${AT_PLAN_PATTERN})(?=\\s|$)`, "gi");
21
+
22
+ const PLAN_VISIBLE_LABEL = "@plan";
23
+
24
+ function findNextMentionMatch(
25
+ line: string,
26
+ cursor: number,
27
+ ): { index: number; length: number; span: MentionSpan } | null {
28
+ const candidates: Array<{ index: number; length: number; span: MentionSpan }> = [];
29
+
30
+ SKILL_SLASH_RE.lastIndex = cursor;
31
+ const slashMatch = SKILL_SLASH_RE.exec(line);
32
+ if (slashMatch?.index !== undefined) {
33
+ candidates.push({
34
+ index: slashMatch.index,
35
+ length: slashMatch[0].length,
36
+ span: { kind: "skill", name: slashMatch[1] ?? "", source: "slash" },
37
+ });
38
+ }
39
+
40
+ AT_SKILL_RE.lastIndex = cursor;
41
+ const atMatch = AT_SKILL_RE.exec(line);
42
+ if (atMatch?.index !== undefined) {
43
+ candidates.push({
44
+ index: atMatch.index,
45
+ length: atMatch[0].length,
46
+ span: { kind: "skill", name: atMatch[1] ?? "", source: "at" },
47
+ });
48
+ }
49
+
50
+ PLAN_TOKEN_RE.lastIndex = cursor;
51
+ const planMatch = PLAN_TOKEN_RE.exec(line);
52
+ if (planMatch?.index !== undefined) {
53
+ candidates.push({
54
+ index: planMatch.index,
55
+ length: planMatch[0].length,
56
+ span: { kind: "plan", logicalToken: planMatch[0] },
57
+ });
58
+ }
59
+
60
+ AT_PLAN_RE.lastIndex = cursor;
61
+ const atPlanMatch = AT_PLAN_RE.exec(line);
62
+ if (atPlanMatch?.index !== undefined) {
63
+ const token = atPlanMatch[1] ?? "@plan";
64
+ const leading = atPlanMatch[0].length - token.length;
65
+ const index = atPlanMatch.index + leading;
66
+ candidates.push({
67
+ index,
68
+ length: token.length,
69
+ span: { kind: "plan", logicalToken: token },
70
+ });
71
+ }
72
+
73
+ if (candidates.length === 0) return null;
74
+ return candidates.reduce((earliest, candidate) =>
75
+ candidate.index < earliest.index ? candidate : earliest,
76
+ );
77
+ }
78
+
79
+ function parseMentionSpans(line: string): MentionSpan[] {
80
+ const spans: MentionSpan[] = [];
81
+ let cursor = 0;
82
+
83
+ while (cursor < line.length) {
84
+ const nextMatch = findNextMentionMatch(line, cursor);
85
+
86
+ if (!nextMatch) {
87
+ spans.push({ kind: "text", value: line.slice(cursor) });
88
+ break;
89
+ }
90
+
91
+ if (nextMatch.index > cursor) {
92
+ spans.push({ kind: "text", value: line.slice(cursor, nextMatch.index) });
93
+ }
94
+ spans.push(nextMatch.span);
95
+ cursor = nextMatch.index + nextMatch.length;
96
+ }
97
+
98
+ if (spans.length === 0) {
99
+ spans.push({ kind: "text", value: line });
100
+ }
101
+
102
+ return spans;
103
+ }
104
+
105
+ function skillVisibleText(span: Extract<MentionSpan, { kind: "skill" }>): string {
106
+ return span.source === "at" ? `@${span.name}` : span.name;
107
+ }
108
+
109
+ function skillLogicalText(span: Extract<MentionSpan, { kind: "skill" }>): string {
110
+ return span.source === "at" ? `@skill ${span.name}` : `/skill:${span.name}`;
111
+ }
112
+
113
+ function renderSpan(span: MentionSpan, theme: MentionChipTheme): string {
114
+ if (span.kind === "text") return span.value;
115
+ if (span.kind === "skill") {
116
+ const text = skillVisibleText(span);
117
+ try {
118
+ return theme.fg("accent", text);
119
+ } catch {
120
+ return theme.fg("text", text);
121
+ }
122
+ }
123
+ try {
124
+ return theme.fg("planAccent", PLAN_VISIBLE_LABEL);
125
+ } catch {
126
+ return theme.fg("text", PLAN_VISIBLE_LABEL);
127
+ }
128
+ }
129
+
130
+ function spanLogicalWidth(span: MentionSpan): number {
131
+ if (span.kind === "text") return span.value.length;
132
+ if (span.kind === "skill") return skillLogicalText(span).length;
133
+ return span.logicalToken.length;
134
+ }
135
+
136
+ function spanVisibleText(span: MentionSpan): string {
137
+ if (span.kind === "text") return span.value;
138
+ if (span.kind === "skill") return skillVisibleText(span);
139
+ return PLAN_VISIBLE_LABEL;
140
+ }
141
+
142
+ export function renderLineWithMentionChips(line: string, theme: MentionChipTheme): string {
143
+ return parseMentionSpans(line)
144
+ .map((span) => renderSpan(span, theme))
145
+ .join("");
146
+ }
147
+
148
+ export function logicalToVisibleCol(line: string, logicalCol: number): number {
149
+ const clamped = Math.max(0, Math.min(logicalCol, line.length));
150
+ let logical = 0;
151
+ let visible = 0;
152
+
153
+ for (const span of parseMentionSpans(line)) {
154
+ const logicalLen = spanLogicalWidth(span);
155
+ const visibleLen = visibleWidth(spanVisibleText(span));
156
+ if (logical + logicalLen >= clamped) {
157
+ const offset = clamped - logical;
158
+ if (span.kind === "text") {
159
+ return visible + offset;
160
+ }
161
+ const ratio = logicalLen > 0 ? offset / logicalLen : 0;
162
+ return visible + Math.round(visibleLen * ratio);
163
+ }
164
+ logical += logicalLen;
165
+ visible += visibleLen;
166
+ }
167
+
168
+ return visible;
169
+ }
170
+
171
+ export function visibleToLogicalCol(line: string, visibleCol: number): number {
172
+ const clamped = Math.max(0, visibleCol);
173
+ let logical = 0;
174
+ let visible = 0;
175
+
176
+ for (const span of parseMentionSpans(line)) {
177
+ const logicalLen = spanLogicalWidth(span);
178
+ const visibleLen = visibleWidth(spanVisibleText(span));
179
+ if (visible + visibleLen >= clamped) {
180
+ const offset = clamped - visible;
181
+ if (span.kind === "text") {
182
+ return logical + offset;
183
+ }
184
+ const ratio = visibleLen > 0 ? offset / visibleLen : 0;
185
+ return logical + Math.round(logicalLen * ratio);
186
+ }
187
+ logical += logicalLen;
188
+ visible += visibleLen;
189
+ }
190
+
191
+ return line.length;
192
+ }
@@ -0,0 +1,28 @@
1
+ import type { AutocompleteItem } from "@earendil-works/pi-tui";
2
+ import type { KubbisecSkillEntry } from "./list-bundled-skills.js";
3
+ export declare const SKILL_MENTION_TOKEN = "@skill";
4
+ export declare const PLAN_MENTION_ALIASES: readonly ["@plan", "@planejar"];
5
+ /** Same token rules as Pi CombinedAutocompleteProvider.extractAtPrefix. */
6
+ export declare function extractAtPrefix(textBeforeCursor: string): string | null;
7
+ /** KubbiSec: `@skill` may include a space and partial name (not only the last @ token). */
8
+ export declare function extractSkillMentionPrefix(textBeforeCursor: string): string | null;
9
+ export declare function parseSkillMentionPrefix(atPrefix: string | null): {
10
+ query: string;
11
+ } | null;
12
+ export declare function parsePlanMentionPrefix(atPrefix: string | null): {
13
+ query: string;
14
+ } | null;
15
+ export declare function filterSkillSuggestions(skills: KubbisecSkillEntry[], query: string): AutocompleteItem[];
16
+ /** Pi expands `/skill:name` — map `@skill name` before submit. */
17
+ export declare function transformAtSkillMentions(text: string): string;
18
+ /** Legacy: map `@plan` / `@planejar` to `/mode:plan` (prefer session state + visible @plan). */
19
+ export declare function transformAtPlanMentions(text: string): string;
20
+ /** Apply @skill → /skill:name only. @plan stays visible; plan mode is set via session state. */
21
+ export declare function transformChatMentions(text: string): string;
22
+ export declare function messageActivatesPlanMode(text: string): boolean;
23
+ export declare function applySkillMentionCompletion(lines: string[], cursorLine: number, cursorCol: number, item: AutocompleteItem, prefix: string): {
24
+ lines: string[];
25
+ cursorLine: number;
26
+ cursorCol: number;
27
+ };
28
+ //# sourceMappingURL=chat-mentions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-mentions.d.ts","sourceRoot":"","sources":["../../src/skills/chat-mentions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAE5C,eAAO,MAAM,oBAAoB,iCAAkC,CAAC;AAiBpE,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOvE;AAED,2FAA2F;AAC3F,wBAAgB,yBAAyB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASjF;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAKzF;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CASxF;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,kBAAkB,EAAE,EAC5B,KAAK,EAAE,MAAM,GACZ,gBAAgB,EAAE,CAcpB;AAED,kEAAkE;AAClE,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,gGAAgG;AAChG,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAS5D;AAED,gGAAgG;AAChG,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAK9D;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,MAAM,GACb;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAe5D"}