@kubbisec/ai-linux-arm64 0.1.22 → 0.1.23

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 (358) hide show
  1. package/bin/kubbisec +0 -0
  2. package/bundled/components/kubbisec-model-selector.d.ts +34 -47
  3. package/bundled/components/kubbisec-model-selector.js +177 -187
  4. package/bundled/components/kubbisec-model-selector.js.map +1 -1
  5. package/bundled/config/config.d.ts +6 -6
  6. package/bundled/config/config.d.ts.map +1 -1
  7. package/bundled/config/config.js +52 -54
  8. package/bundled/config/config.js.map +1 -1
  9. package/bundled/config/detect-local-llm-providers.d.ts +16 -26
  10. package/bundled/config/detect-local-llm-providers.js +142 -130
  11. package/bundled/config/ensure-kbs-project-settings.d.ts +20 -0
  12. package/bundled/config/ensure-kbs-project-settings.d.ts.map +1 -0
  13. package/bundled/config/ensure-kbs-project-settings.js +46 -0
  14. package/bundled/config/ensure-kbs-project-settings.js.map +1 -0
  15. package/bundled/config/ensure-kubbisec-project-settings.d.ts +11 -9
  16. package/bundled/config/ensure-kubbisec-project-settings.d.ts.map +1 -1
  17. package/bundled/config/ensure-kubbisec-project-settings.js +72 -44
  18. package/bundled/config/ensure-kubbisec-project-settings.js.map +1 -1
  19. package/bundled/config/extended-context.d.ts +6 -5
  20. package/bundled/config/extended-context.js +22 -23
  21. package/bundled/config/feature-flags.d.ts +2 -10
  22. package/bundled/config/feature-flags.js +2 -8
  23. package/bundled/config/format-kubbisec-footer-status.d.ts +1 -1
  24. package/bundled/config/format-kubbisec-footer-status.js +31 -26
  25. package/bundled/config/kubbisec-extension-manifest.d.ts +2 -22
  26. package/bundled/config/kubbisec-extension-manifest.d.ts.map +1 -1
  27. package/bundled/config/kubbisec-extension-manifest.js +19 -20
  28. package/bundled/config/kubbisec-extension-manifest.js.map +1 -1
  29. package/bundled/config/llm-config-mutations.d.ts +25 -51
  30. package/bundled/config/llm-config-mutations.js +182 -173
  31. package/bundled/config/llm-config.d.ts +41 -54
  32. package/bundled/config/llm-config.js +199 -199
  33. package/bundled/config/llm-provider-catalog.d.ts +15 -18
  34. package/bundled/config/llm-provider-catalog.js +46 -45
  35. package/bundled/config/materialize-kubbisec-pi-resources.d.ts +1 -1
  36. package/bundled/config/materialize-kubbisec-pi-resources.d.ts.map +1 -1
  37. package/bundled/config/materialize-kubbisec-pi-resources.js +182 -174
  38. package/bundled/config/materialize-kubbisec-pi-resources.js.map +1 -1
  39. package/bundled/config/register-custom-llm-providers.d.ts +5 -11
  40. package/bundled/config/register-custom-llm-providers.js +15 -17
  41. package/bundled/config/register-kubbisec-llm-provider.d.ts +10 -14
  42. package/bundled/config/register-kubbisec-llm-provider.js +42 -50
  43. package/bundled/config/resolve-agents-context-file.d.ts +1 -1
  44. package/bundled/config/resolve-agents-context-file.js +34 -33
  45. package/bundled/config/resource-budget.d.ts +12 -12
  46. package/bundled/config/resource-budget.js +28 -28
  47. package/bundled/config/sync-kubbisec-pi-models.d.ts +3 -6
  48. package/bundled/config/sync-kubbisec-pi-models.js +58 -58
  49. package/bundled/copy/cli-reference-index.d.ts +2 -7
  50. package/bundled/copy/cli-reference-index.d.ts.map +1 -1
  51. package/bundled/copy/cli-reference-index.js +2 -62
  52. package/bundled/copy/cli-reference-index.js.map +1 -1
  53. package/bundled/copy/kubbisec-shell-copy.d.ts +6 -11
  54. package/bundled/copy/kubbisec-shell-copy.js +1 -1
  55. package/bundled/extensions/cli-local-shared.d.ts +36 -45
  56. package/bundled/extensions/cli-local-shared.d.ts.map +1 -1
  57. package/bundled/extensions/cli-local-shared.js +129 -128
  58. package/bundled/extensions/cli-local-shared.js.map +1 -1
  59. package/bundled/extensions/kubbisec-aspm-local.extension.d.ts +15 -18
  60. package/bundled/extensions/kubbisec-aspm-local.extension.d.ts.map +1 -1
  61. package/bundled/extensions/kubbisec-aspm-local.extension.js +106 -121
  62. package/bundled/extensions/kubbisec-aspm-local.extension.js.map +1 -1
  63. package/bundled/extensions/kubbisec-brand.extension.d.ts +1 -1
  64. package/bundled/extensions/kubbisec-brand.extension.js +25 -25
  65. package/bundled/extensions/kubbisec-byok-provider.extension.d.ts +1 -1
  66. package/bundled/extensions/kubbisec-byok-provider.extension.js +2 -2
  67. package/bundled/extensions/kubbisec-clarify.extension.d.ts +35 -64
  68. package/bundled/extensions/kubbisec-clarify.extension.d.ts.map +1 -1
  69. package/bundled/extensions/kubbisec-clarify.extension.js +305 -323
  70. package/bundled/extensions/kubbisec-clarify.extension.js.map +1 -1
  71. package/bundled/extensions/kubbisec-exit.extension.d.ts +1 -1
  72. package/bundled/extensions/kubbisec-exit.extension.js +32 -29
  73. package/bundled/extensions/kubbisec-extended-context.extension.d.ts +1 -1
  74. package/bundled/extensions/kubbisec-extended-context.extension.js +43 -56
  75. package/bundled/extensions/kubbisec-footer.extension.d.ts +14 -14
  76. package/bundled/extensions/kubbisec-footer.extension.d.ts.map +1 -1
  77. package/bundled/extensions/kubbisec-footer.extension.js +215 -205
  78. package/bundled/extensions/kubbisec-footer.extension.js.map +1 -1
  79. package/bundled/extensions/kubbisec-github-local.extension.d.ts +18 -29
  80. package/bundled/extensions/kubbisec-github-local.extension.d.ts.map +1 -1
  81. package/bundled/extensions/kubbisec-github-local.extension.js +457 -129
  82. package/bundled/extensions/kubbisec-github-local.extension.js.map +1 -1
  83. package/bundled/extensions/kubbisec-llm-config.extension.d.ts +1 -1
  84. package/bundled/extensions/kubbisec-llm-config.extension.js +181 -200
  85. package/bundled/extensions/kubbisec-memory.extension.d.ts +7 -9
  86. package/bundled/extensions/kubbisec-memory.extension.d.ts.map +1 -1
  87. package/bundled/extensions/kubbisec-memory.extension.js +95 -88
  88. package/bundled/extensions/kubbisec-naus-local.extension.d.ts +15 -18
  89. package/bundled/extensions/kubbisec-naus-local.extension.d.ts.map +1 -1
  90. package/bundled/extensions/kubbisec-naus-local.extension.js +103 -135
  91. package/bundled/extensions/kubbisec-naus-local.extension.js.map +1 -1
  92. package/bundled/extensions/kubbisec-platform-tools.extension.d.ts +21 -31
  93. package/bundled/extensions/kubbisec-platform-tools.extension.d.ts.map +1 -1
  94. package/bundled/extensions/kubbisec-platform-tools.extension.js +152 -152
  95. package/bundled/extensions/kubbisec-platform-tools.extension.js.map +1 -1
  96. package/bundled/extensions/kubbisec-runtime-status.extension.d.ts +8 -10
  97. package/bundled/extensions/kubbisec-runtime-status.extension.js +13 -15
  98. package/bundled/extensions/kubbisec-scope.extension.d.ts +7 -12
  99. package/bundled/extensions/kubbisec-scope.extension.js +13 -13
  100. package/bundled/extensions/kubbisec-skill-mentions.extension.d.ts +16 -27
  101. package/bundled/extensions/kubbisec-skill-mentions.extension.d.ts.map +1 -1
  102. package/bundled/extensions/kubbisec-skill-mentions.extension.js +64 -73
  103. package/bundled/extensions/kubbisec-skill-mentions.extension.js.map +1 -1
  104. package/bundled/extensions/kubbisec-skill-telemetry.extension.d.ts +3 -2
  105. package/bundled/extensions/kubbisec-skill-telemetry.extension.js +64 -59
  106. package/bundled/extensions/kubbisec-theme-lock.extension.d.ts +1 -1
  107. package/bundled/extensions/kubbisec-theme-lock.extension.js +34 -33
  108. package/bundled/extensions/kubbisec-ui.extension.d.ts +1 -1
  109. package/bundled/extensions/kubbisec-ui.extension.d.ts.map +1 -1
  110. package/bundled/extensions/kubbisec-ui.extension.js +122 -116
  111. package/bundled/extensions/kubbisec-ui.extension.js.map +1 -1
  112. package/bundled/extensions/kubbisec-workflow.extension.d.ts +18 -20
  113. package/bundled/extensions/kubbisec-workflow.extension.d.ts.map +1 -1
  114. package/bundled/extensions/kubbisec-workflow.extension.js +140 -138
  115. package/bundled/node_modules/@aspm/shared/dist/ai/index.d.ts +1 -0
  116. package/bundled/node_modules/@aspm/shared/dist/ai/index.d.ts.map +1 -1
  117. package/bundled/node_modules/@aspm/shared/dist/ai/index.js +1 -0
  118. package/bundled/node_modules/@aspm/shared/dist/ai/index.js.map +1 -1
  119. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/build-assistant-system-prompt.d.ts +7 -0
  120. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/build-assistant-system-prompt.d.ts.map +1 -0
  121. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/build-assistant-system-prompt.js +30 -0
  122. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/build-assistant-system-prompt.js.map +1 -0
  123. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/build-chat-system-prompt.d.ts +7 -0
  124. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/build-chat-system-prompt.d.ts.map +1 -0
  125. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/build-chat-system-prompt.js +14 -0
  126. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/build-chat-system-prompt.js.map +1 -0
  127. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/cli-reference-index.d.ts +6 -0
  128. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/cli-reference-index.d.ts.map +1 -0
  129. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/cli-reference-index.js +65 -0
  130. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/cli-reference-index.js.map +1 -0
  131. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/format-mcp-knowledge.d.ts +8 -0
  132. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/format-mcp-knowledge.d.ts.map +1 -0
  133. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/format-mcp-knowledge.js +29 -0
  134. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/format-mcp-knowledge.js.map +1 -0
  135. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/index.d.ts +7 -0
  136. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/index.d.ts.map +1 -0
  137. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/index.js +16 -0
  138. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/index.js.map +1 -0
  139. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/mcp-instructions.d.ts +2 -0
  140. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/mcp-instructions.d.ts.map +1 -0
  141. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/mcp-instructions.js +36 -0
  142. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/mcp-instructions.js.map +1 -0
  143. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/mental-map.d.ts +6 -0
  144. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/mental-map.d.ts.map +1 -0
  145. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/mental-map.js +32 -0
  146. package/bundled/node_modules/@aspm/shared/dist/ai/product-knowledge/mental-map.js.map +1 -0
  147. package/bundled/node_modules/@aspm/shared/dist/api-key/api-key-scope-groups.d.ts +12 -0
  148. package/bundled/node_modules/@aspm/shared/dist/api-key/api-key-scope-groups.d.ts.map +1 -0
  149. package/bundled/node_modules/@aspm/shared/dist/api-key/api-key-scope-groups.js +93 -0
  150. package/bundled/node_modules/@aspm/shared/dist/api-key/api-key-scope-groups.js.map +1 -0
  151. package/bundled/node_modules/@aspm/shared/dist/api-key/api-key-scope-presets.d.ts +13 -0
  152. package/bundled/node_modules/@aspm/shared/dist/api-key/api-key-scope-presets.d.ts.map +1 -0
  153. package/bundled/node_modules/@aspm/shared/dist/api-key/api-key-scope-presets.js +79 -0
  154. package/bundled/node_modules/@aspm/shared/dist/api-key/api-key-scope-presets.js.map +1 -0
  155. package/bundled/node_modules/@aspm/shared/dist/api-key/index.d.ts +4 -0
  156. package/bundled/node_modules/@aspm/shared/dist/api-key/index.d.ts.map +1 -0
  157. package/bundled/node_modules/@aspm/shared/dist/api-key/index.js +20 -0
  158. package/bundled/node_modules/@aspm/shared/dist/api-key/index.js.map +1 -0
  159. package/bundled/node_modules/@aspm/shared/dist/api-key/migrate-api-key-metadata.d.ts +20 -0
  160. package/bundled/node_modules/@aspm/shared/dist/api-key/migrate-api-key-metadata.d.ts.map +1 -0
  161. package/bundled/node_modules/@aspm/shared/dist/api-key/migrate-api-key-metadata.js +78 -0
  162. package/bundled/node_modules/@aspm/shared/dist/api-key/migrate-api-key-metadata.js.map +1 -0
  163. package/bundled/node_modules/@aspm/shared/dist/assistant/assistant-thread.d.ts +19 -0
  164. package/bundled/node_modules/@aspm/shared/dist/assistant/assistant-thread.d.ts.map +1 -0
  165. package/bundled/node_modules/@aspm/shared/dist/assistant/assistant-thread.js +126 -0
  166. package/bundled/node_modules/@aspm/shared/dist/assistant/assistant-thread.js.map +1 -0
  167. package/bundled/node_modules/@aspm/shared/dist/assistant/index.d.ts +1 -0
  168. package/bundled/node_modules/@aspm/shared/dist/assistant/index.d.ts.map +1 -1
  169. package/bundled/node_modules/@aspm/shared/dist/assistant/index.js +1 -0
  170. package/bundled/node_modules/@aspm/shared/dist/assistant/index.js.map +1 -1
  171. package/bundled/node_modules/@aspm/shared/dist/billing/index.d.ts +2 -0
  172. package/bundled/node_modules/@aspm/shared/dist/billing/index.d.ts.map +1 -0
  173. package/bundled/node_modules/@aspm/shared/dist/billing/index.js +18 -0
  174. package/bundled/node_modules/@aspm/shared/dist/billing/index.js.map +1 -0
  175. package/bundled/node_modules/@aspm/shared/dist/billing/plan-limits.d.ts +17 -0
  176. package/bundled/node_modules/@aspm/shared/dist/billing/plan-limits.d.ts.map +1 -0
  177. package/bundled/node_modules/@aspm/shared/dist/billing/plan-limits.js +30 -0
  178. package/bundled/node_modules/@aspm/shared/dist/billing/plan-limits.js.map +1 -0
  179. package/bundled/node_modules/@aspm/shared/dist/ci/ci-job-dependencies.d.ts +42 -0
  180. package/bundled/node_modules/@aspm/shared/dist/ci/ci-job-dependencies.d.ts.map +1 -0
  181. package/bundled/node_modules/@aspm/shared/dist/ci/ci-job-dependencies.js +147 -0
  182. package/bundled/node_modules/@aspm/shared/dist/ci/ci-job-dependencies.js.map +1 -0
  183. package/bundled/node_modules/@aspm/shared/dist/ci/git-checkout-log-policy.d.ts +12 -0
  184. package/bundled/node_modules/@aspm/shared/dist/ci/git-checkout-log-policy.d.ts.map +1 -0
  185. package/bundled/node_modules/@aspm/shared/dist/ci/git-checkout-log-policy.js +70 -0
  186. package/bundled/node_modules/@aspm/shared/dist/ci/git-checkout-log-policy.js.map +1 -0
  187. package/bundled/node_modules/@aspm/shared/dist/ci/index.d.ts +4 -0
  188. package/bundled/node_modules/@aspm/shared/dist/ci/index.d.ts.map +1 -0
  189. package/bundled/node_modules/@aspm/shared/dist/ci/index.js +20 -0
  190. package/bundled/node_modules/@aspm/shared/dist/ci/index.js.map +1 -0
  191. package/bundled/node_modules/@aspm/shared/dist/ci/kubbisec-ci-execution-env.d.ts +16 -0
  192. package/bundled/node_modules/@aspm/shared/dist/ci/kubbisec-ci-execution-env.d.ts.map +1 -0
  193. package/bundled/node_modules/@aspm/shared/dist/ci/kubbisec-ci-execution-env.js +45 -0
  194. package/bundled/node_modules/@aspm/shared/dist/ci/kubbisec-ci-execution-env.js.map +1 -0
  195. package/bundled/node_modules/@aspm/shared/dist/dto/create-report.dto.d.ts +1 -0
  196. package/bundled/node_modules/@aspm/shared/dist/dto/create-report.dto.d.ts.map +1 -1
  197. package/bundled/node_modules/@aspm/shared/dist/dto/create-report.dto.js +6 -0
  198. package/bundled/node_modules/@aspm/shared/dist/dto/create-report.dto.js.map +1 -1
  199. package/bundled/node_modules/@aspm/shared/dist/dto/index.d.ts +5 -3
  200. package/bundled/node_modules/@aspm/shared/dist/dto/index.d.ts.map +1 -1
  201. package/bundled/node_modules/@aspm/shared/dist/dto/index.js +5 -3
  202. package/bundled/node_modules/@aspm/shared/dist/dto/index.js.map +1 -1
  203. package/bundled/node_modules/@aspm/shared/dist/dto/update-project.dto.d.ts +9 -0
  204. package/bundled/node_modules/@aspm/shared/dist/dto/update-project.dto.d.ts.map +1 -0
  205. package/bundled/node_modules/@aspm/shared/dist/dto/update-project.dto.js +52 -0
  206. package/bundled/node_modules/@aspm/shared/dist/dto/update-project.dto.js.map +1 -0
  207. package/bundled/node_modules/@aspm/shared/dist/enums.d.ts +3 -1
  208. package/bundled/node_modules/@aspm/shared/dist/enums.d.ts.map +1 -1
  209. package/bundled/node_modules/@aspm/shared/dist/enums.js +4 -0
  210. package/bundled/node_modules/@aspm/shared/dist/enums.js.map +1 -1
  211. package/bundled/node_modules/@aspm/shared/dist/index.d.ts +8 -2
  212. package/bundled/node_modules/@aspm/shared/dist/index.d.ts.map +1 -1
  213. package/bundled/node_modules/@aspm/shared/dist/index.js +8 -2
  214. package/bundled/node_modules/@aspm/shared/dist/index.js.map +1 -1
  215. package/bundled/node_modules/@aspm/shared/dist/mcp/constants.d.ts +22 -0
  216. package/bundled/node_modules/@aspm/shared/dist/mcp/constants.d.ts.map +1 -0
  217. package/bundled/node_modules/@aspm/shared/dist/mcp/constants.js +52 -0
  218. package/bundled/node_modules/@aspm/shared/dist/mcp/constants.js.map +1 -0
  219. package/bundled/node_modules/@aspm/shared/dist/mcp/oauth-metadata.d.ts +37 -0
  220. package/bundled/node_modules/@aspm/shared/dist/mcp/oauth-metadata.d.ts.map +1 -0
  221. package/bundled/node_modules/@aspm/shared/dist/mcp/oauth-metadata.js +51 -0
  222. package/bundled/node_modules/@aspm/shared/dist/mcp/oauth-metadata.js.map +1 -0
  223. package/bundled/node_modules/@aspm/shared/dist/project-scanner-summary.d.ts +7 -4
  224. package/bundled/node_modules/@aspm/shared/dist/project-scanner-summary.d.ts.map +1 -1
  225. package/bundled/node_modules/@aspm/shared/dist/project-scanner-summary.js +15 -7
  226. package/bundled/node_modules/@aspm/shared/dist/project-scanner-summary.js.map +1 -1
  227. package/bundled/node_modules/@aspm/shared/dist/rbac/index.d.ts +1 -0
  228. package/bundled/node_modules/@aspm/shared/dist/rbac/index.d.ts.map +1 -1
  229. package/bundled/node_modules/@aspm/shared/dist/rbac/index.js +1 -0
  230. package/bundled/node_modules/@aspm/shared/dist/rbac/index.js.map +1 -1
  231. package/bundled/node_modules/@aspm/shared/dist/rbac/kubbisec-permission-descriptions.d.ts.map +1 -1
  232. package/bundled/node_modules/@aspm/shared/dist/rbac/kubbisec-permission-descriptions.js +2 -0
  233. package/bundled/node_modules/@aspm/shared/dist/rbac/kubbisec-permission-descriptions.js.map +1 -1
  234. package/bundled/node_modules/@aspm/shared/dist/rbac/kubbisec-permissions.d.ts +1 -1
  235. package/bundled/node_modules/@aspm/shared/dist/rbac/kubbisec-permissions.d.ts.map +1 -1
  236. package/bundled/node_modules/@aspm/shared/dist/rbac/kubbisec-permissions.js +2 -0
  237. package/bundled/node_modules/@aspm/shared/dist/rbac/kubbisec-permissions.js.map +1 -1
  238. package/bundled/node_modules/@aspm/shared/dist/rbac/member-quota.d.ts +8 -0
  239. package/bundled/node_modules/@aspm/shared/dist/rbac/member-quota.d.ts.map +1 -0
  240. package/bundled/node_modules/@aspm/shared/dist/rbac/member-quota.js +19 -0
  241. package/bundled/node_modules/@aspm/shared/dist/rbac/member-quota.js.map +1 -0
  242. package/bundled/node_modules/@aspm/shared/dist/rbac/resolve-org-permissions.d.ts.map +1 -1
  243. package/bundled/node_modules/@aspm/shared/dist/rbac/resolve-org-permissions.js +4 -0
  244. package/bundled/node_modules/@aspm/shared/dist/rbac/resolve-org-permissions.js.map +1 -1
  245. package/bundled/node_modules/@aspm/shared/dist/redaction.d.ts +1 -0
  246. package/bundled/node_modules/@aspm/shared/dist/redaction.d.ts.map +1 -1
  247. package/bundled/node_modules/@aspm/shared/dist/redaction.js +1 -0
  248. package/bundled/node_modules/@aspm/shared/dist/redaction.js.map +1 -1
  249. package/bundled/node_modules/@aspm/shared/dist/security/aspm-gate-rules.d.ts.map +1 -1
  250. package/bundled/node_modules/@aspm/shared/dist/security/aspm-gate-rules.js.map +1 -1
  251. package/bundled/node_modules/@aspm/shared/dist/security/build-aspm-security-matrix-pipeline-yaml.d.ts.map +1 -1
  252. package/bundled/node_modules/@aspm/shared/dist/security/build-aspm-security-matrix-pipeline-yaml.js.map +1 -1
  253. package/bundled/node_modules/@aspm/shared/dist/security/build-github-security-workflow-yaml.d.ts.map +1 -1
  254. package/bundled/node_modules/@aspm/shared/dist/security/build-github-security-workflow-yaml.js +2 -2
  255. package/bundled/node_modules/@aspm/shared/dist/security/build-github-security-workflow-yaml.js.map +1 -1
  256. package/bundled/node_modules/@aspm/shared/dist/security/index.d.ts +2 -2
  257. package/bundled/node_modules/@aspm/shared/dist/security/index.d.ts.map +1 -1
  258. package/bundled/node_modules/@aspm/shared/dist/security/index.js +2 -2
  259. package/bundled/node_modules/@aspm/shared/dist/security/index.js.map +1 -1
  260. package/bundled/node_modules/@aspm/shared/dist/shared-project/constants.d.ts +4 -0
  261. package/bundled/node_modules/@aspm/shared/dist/shared-project/constants.d.ts.map +1 -0
  262. package/bundled/node_modules/@aspm/shared/dist/shared-project/constants.js +10 -0
  263. package/bundled/node_modules/@aspm/shared/dist/shared-project/constants.js.map +1 -0
  264. package/bundled/node_modules/@aspm/shared/dist/shared-project/index.d.ts +4 -0
  265. package/bundled/node_modules/@aspm/shared/dist/shared-project/index.d.ts.map +1 -0
  266. package/bundled/node_modules/@aspm/shared/dist/shared-project/index.js +20 -0
  267. package/bundled/node_modules/@aspm/shared/dist/shared-project/index.js.map +1 -0
  268. package/bundled/node_modules/@aspm/shared/dist/shared-project/redact-log-lines.d.ts +2 -0
  269. package/bundled/node_modules/@aspm/shared/dist/shared-project/redact-log-lines.d.ts.map +1 -0
  270. package/bundled/node_modules/@aspm/shared/dist/shared-project/redact-log-lines.js +9 -0
  271. package/bundled/node_modules/@aspm/shared/dist/shared-project/redact-log-lines.js.map +1 -0
  272. package/bundled/node_modules/@aspm/shared/dist/shared-project/share-prefix.d.ts +3 -0
  273. package/bundled/node_modules/@aspm/shared/dist/shared-project/share-prefix.d.ts.map +1 -0
  274. package/bundled/node_modules/@aspm/shared/dist/shared-project/share-prefix.js +18 -0
  275. package/bundled/node_modules/@aspm/shared/dist/shared-project/share-prefix.js.map +1 -0
  276. package/bundled/node_modules/@aspm/shared/package.json +27 -5
  277. package/bundled/node_modules/@kubbisec/chat-memory/dist/sanitizer.js +2 -2
  278. package/bundled/node_modules/@kubbisec/chat-memory/dist/sanitizer.js.map +1 -1
  279. package/bundled/node_modules/@kubbisec/chat-memory/package.json +4 -4
  280. package/bundled/node_modules/@kubbisec/home/dist/migrate.d.ts.map +1 -1
  281. package/bundled/node_modules/@kubbisec/home/dist/migrate.js +1 -1
  282. package/bundled/node_modules/@kubbisec/home/dist/migrate.js.map +1 -1
  283. package/bundled/node_modules/@kubbisec/home/package.json +3 -3
  284. package/bundled/resolve-bundled-dist-root.js +130 -122
  285. package/bundled/resolve-bundled-dist-root.js.map +1 -1
  286. package/bundled/skills/aspm-platform/SKILL.md +3 -1
  287. package/bundled/skills/at-path-mentions.d.ts +1 -1
  288. package/bundled/skills/at-path-mentions.js +153 -146
  289. package/bundled/skills/chat-mention-render.d.ts +2 -2
  290. package/bundled/skills/chat-mention-render.js +126 -121
  291. package/bundled/skills/chat-mentions.d.ts +8 -17
  292. package/bundled/skills/chat-mentions.js +76 -76
  293. package/bundled/skills/github-local/SKILL.md +5 -5
  294. package/bundled/skills/kubbisec-resource-router/SKILL.md +3 -0
  295. package/bundled/skills/list-bundled-skills.d.ts +3 -3
  296. package/bundled/skills/list-bundled-skills.js +35 -33
  297. package/bundled/skills/naus-pipelines/SKILL.md +11 -10
  298. package/bundled/skills/remediation/SKILL.md +1 -1
  299. package/bundled/skills/skill-mention.d.ts +2 -10
  300. package/bundled/skills/skill-mention.js +2 -10
  301. package/bundled/theme/clear-terminal.d.ts +1 -1
  302. package/bundled/theme/clear-terminal.js +4 -3
  303. package/bundled/theme/footer-render-hook.d.ts +1 -1
  304. package/bundled/theme/footer-render-hook.js +3 -3
  305. package/bundled/theme/kubbisec-brand-fg.d.ts +1 -1
  306. package/bundled/theme/kubbisec-brand-fg.js +2 -2
  307. package/bundled/theme/kubbisec-menu-themes.d.ts +7 -7
  308. package/bundled/theme/kubbisec-menu-themes.js +31 -30
  309. package/bundled/theme/kubbisec-theme-name.d.ts +1 -1
  310. package/bundled/theme/kubbisec-theme-name.js +1 -1
  311. package/bundled/theme/patch-pi-settings-theme.runtime.d.ts +1 -1
  312. package/bundled/theme/patch-pi-settings-theme.runtime.js +10 -11
  313. package/bundled/theme/render-compact-header.d.ts +5 -13
  314. package/bundled/theme/render-compact-header.js +128 -126
  315. package/bundled/theme/render-compact-header.js.map +1 -1
  316. package/bundled/workflow/session-workflow-mode.d.ts +1 -1
  317. package/bundled/workflow/session-workflow-mode.js +33 -33
  318. package/package.json +1 -1
  319. package/bundled/clarify/clarify-gate-state.d.ts +0 -3
  320. package/bundled/clarify/clarify-gate-state.d.ts.map +0 -1
  321. package/bundled/clarify/clarify-gate-state.js +0 -9
  322. package/bundled/clarify/clarify-gate-state.js.map +0 -1
  323. package/bundled/clarify/clarify-gate.d.ts +0 -35
  324. package/bundled/clarify/clarify-gate.d.ts.map +0 -1
  325. package/bundled/clarify/clarify-gate.js +0 -159
  326. package/bundled/clarify/clarify-gate.js.map +0 -1
  327. package/bundled/clarify/clarify-select-panel.d.ts +0 -21
  328. package/bundled/clarify/clarify-select-panel.d.ts.map +0 -1
  329. package/bundled/clarify/clarify-select-panel.js +0 -80
  330. package/bundled/clarify/clarify-select-panel.js.map +0 -1
  331. package/bundled/clarify/clarify-ui-state.d.ts +0 -23
  332. package/bundled/clarify/clarify-ui-state.d.ts.map +0 -1
  333. package/bundled/clarify/clarify-ui-state.js +0 -48
  334. package/bundled/clarify/clarify-ui-state.js.map +0 -1
  335. package/bundled/clarify/parse-clarify-answer.d.ts +0 -32
  336. package/bundled/clarify/parse-clarify-answer.d.ts.map +0 -1
  337. package/bundled/clarify/parse-clarify-answer.js +0 -51
  338. package/bundled/clarify/parse-clarify-answer.js.map +0 -1
  339. package/bundled/clarify/question-format.d.ts +0 -50
  340. package/bundled/clarify/question-format.d.ts.map +0 -1
  341. package/bundled/clarify/question-format.js +0 -137
  342. package/bundled/clarify/question-format.js.map +0 -1
  343. package/bundled/clarify/questionnaire-tool.d.ts +0 -36
  344. package/bundled/clarify/questionnaire-tool.d.ts.map +0 -1
  345. package/bundled/clarify/questionnaire-tool.js +0 -197
  346. package/bundled/clarify/questionnaire-tool.js.map +0 -1
  347. package/bundled/clarify/scope-discovery.d.ts +0 -12
  348. package/bundled/clarify/scope-discovery.d.ts.map +0 -1
  349. package/bundled/clarify/scope-discovery.js +0 -122
  350. package/bundled/clarify/scope-discovery.js.map +0 -1
  351. package/bundled/clarify/session-questionnaire.d.ts +0 -61
  352. package/bundled/clarify/session-questionnaire.d.ts.map +0 -1
  353. package/bundled/clarify/session-questionnaire.js +0 -364
  354. package/bundled/clarify/session-questionnaire.js.map +0 -1
  355. package/bundled/clarify/session-questionnaire.types.d.ts +0 -49
  356. package/bundled/clarify/session-questionnaire.types.d.ts.map +0 -1
  357. package/bundled/clarify/session-questionnaire.types.js +0 -13
  358. package/bundled/clarify/session-questionnaire.types.js.map +0 -1
@@ -1,159 +0,0 @@
1
- import { hasMinimumScopeForScenario } from "./session-questionnaire.js";
2
- export const REQUIRED_FOR_FIX_INTENT = ["projectId", "severityMin", "remediationMode"];
3
- const FACTUAL_PATTERNS = [
4
- /^(?:o que (?:é|e)|what is|how does|como funciona|explain|defina|define)(?:\s|[?.!,]|$)/iu,
5
- /\b(documentação|documentation|docs)\b/iu,
6
- ];
7
- const EXECUTE_PATTERNS = [
8
- /\b(corrige|corrigir|fix|remediate|remediação|remediacao)\b/i,
9
- /\b(finding|findings|vuln|vulnerability|cve-\d)/i,
10
- ];
11
- const AMBIGUOUS_PATTERNS = [
12
- /\b(melhorar|melhore|improve|harden|reforçar|reforcar)\b.*\b(segurança|seguranca|security)\b/i,
13
- /@plan\b/i,
14
- /\/mode:plan\b/i,
15
- ];
16
- const PROJECT_IN_MESSAGE = /\b(project[:\s]+[\w-]+|projeto[:\s]+[\w-]+)\b/i;
17
- const VULN_IN_MESSAGE = /\b(cve-\d{4}-\d+|vuln(?:erability)?[:\s#]*[\w-]+)\b/i;
18
- const SEVERITY_IN_MESSAGE =
19
- /\b(severity|severidade|critical|critico|crítico|high|alto|medium|medio|médio)\b/i;
20
- /** Classify user intent for ClarifyGate (CLAR-001). */
21
- export function classifyIntent(userMessage) {
22
- const msg = userMessage.trim();
23
- if (!msg) return "ambiguous";
24
- if (FACTUAL_PATTERNS.some((re) => re.test(msg))) {
25
- return "factual";
26
- }
27
- const hasExecuteCue = EXECUTE_PATTERNS.some((re) => re.test(msg));
28
- const hasScopeCue =
29
- PROJECT_IN_MESSAGE.test(msg) || VULN_IN_MESSAGE.test(msg) || SEVERITY_IN_MESSAGE.test(msg);
30
- if (hasExecuteCue && hasScopeCue) {
31
- return "execute";
32
- }
33
- if (AMBIGUOUS_PATTERNS.some((re) => re.test(msg))) {
34
- return "ambiguous";
35
- }
36
- if (hasExecuteCue) {
37
- return "execute";
38
- }
39
- if (msg.length < 40 && !hasExecuteCue) {
40
- return "ambiguous";
41
- }
42
- return "ambiguous";
43
- }
44
- function messageSignalsProject(message) {
45
- return PROJECT_IN_MESSAGE.test(message);
46
- }
47
- function messageSignalsVulnerability(message) {
48
- return VULN_IN_MESSAGE.test(message);
49
- }
50
- function messageSignalsSeverity(message) {
51
- return SEVERITY_IN_MESSAGE.test(message);
52
- }
53
- function fieldsSignalProject(fields) {
54
- return (fields?.projectIds.length ?? 0) > 0;
55
- }
56
- function fieldsSignalSeverity(fields) {
57
- return Boolean(fields?.severityMin);
58
- }
59
- function fieldsSignalRemediation(fields) {
60
- return Boolean(fields?.remediationMode);
61
- }
62
- function fieldsSignalPlanObjective(fields) {
63
- return Boolean(fields?.customNotes?.trim());
64
- }
65
- /** Confidence that required execute fields are present (0–1). */
66
- export function computeGateConfidence(input) {
67
- const msg = input.userMessage;
68
- let score = 0.35;
69
- if (input.hasProjectId || messageSignalsProject(msg) || fieldsSignalProject(input.fields)) {
70
- score += 0.25;
71
- }
72
- if (input.hasVulnerabilityId || messageSignalsVulnerability(msg)) {
73
- score += 0.2;
74
- }
75
- if (
76
- input.hasSeverityFilter ||
77
- messageSignalsSeverity(msg) ||
78
- fieldsSignalSeverity(input.fields)
79
- ) {
80
- score += 0.2;
81
- }
82
- if (classifyIntent(msg) === "factual") {
83
- return Math.min(score, 0.5);
84
- }
85
- return Math.min(score, 1);
86
- }
87
- export function hasRequiredExecuteFields(input) {
88
- const scenario = input.scenario ?? (input.mode === "plan" ? "plan" : "remediation");
89
- const fields = input.fields;
90
- if (!fields) return false;
91
- if (scenario === "plan") {
92
- return fieldsSignalProject(fields) && fieldsSignalPlanObjective(fields);
93
- }
94
- if (scenario === "explore" || scenario === "review") {
95
- return fieldsSignalProject(fields);
96
- }
97
- const msg = input.userMessage;
98
- const hasProject =
99
- input.hasProjectId || messageSignalsProject(msg) || fieldsSignalProject(fields);
100
- const hasSeverity =
101
- input.hasSeverityFilter || messageSignalsSeverity(msg) || fieldsSignalSeverity(fields);
102
- const hasRemediationMode =
103
- fieldsSignalRemediation(fields) ||
104
- /\b(auto|automático|automatico|suggestion|sugestão|sugestao|manual)\b/i.test(msg);
105
- return hasProject && hasSeverity && hasRemediationMode;
106
- }
107
- function hasClarifyCue(message) {
108
- return (
109
- EXECUTE_PATTERNS.some((re) => re.test(message)) ||
110
- AMBIGUOUS_PATTERNS.some((re) => re.test(message))
111
- );
112
- }
113
- /**
114
- * Whether sec-clarify should run for this turn (CLAR-001).
115
- * fix/watch/task-consumer surfaces always return false.
116
- */
117
- export function shouldClarify(input) {
118
- if (input.surface !== "chat") {
119
- return false;
120
- }
121
- if (process.env.KUBBISEC_SKIP_CLARIFY === "1") {
122
- return false;
123
- }
124
- if (input.questionnaireStatus === "ready") {
125
- return false;
126
- }
127
- const msg = input.userMessage.trim();
128
- if (!msg || !hasClarifyCue(msg)) {
129
- return false;
130
- }
131
- const intent = classifyIntent(msg);
132
- if (intent === "factual") {
133
- return false;
134
- }
135
- const maxRounds = input.clarifyMaxRounds ?? 3;
136
- if ((input.historyCount ?? 0) >= maxRounds) {
137
- return false;
138
- }
139
- const scenario = input.scenario ?? (input.mode === "plan" ? "plan" : "remediation");
140
- const fields = input.fields;
141
- if (fields && hasMinimumScopeForScenario(scenario, fields)) {
142
- return false;
143
- }
144
- const confidence = computeGateConfidence(input);
145
- if (intent === "execute" && confidence >= 0.85 && hasRequiredExecuteFields(input)) {
146
- return false;
147
- }
148
- if (intent === "execute" && !hasRequiredExecuteFields(input)) {
149
- return true;
150
- }
151
- if (intent === "ambiguous") {
152
- return true;
153
- }
154
- if (input.mode === "plan" || scenario === "plan") {
155
- return !hasRequiredExecuteFields(input);
156
- }
157
- return confidence < 0.85;
158
- }
159
- //# sourceMappingURL=clarify-gate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clarify-gate.js","sourceRoot":"","sources":["../../src/clarify/clarify-gate.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import type { ClarifyUiSnapshot } from "./clarify-ui-state.js";
2
-
3
- type PanelTheme = {
4
- fg: (role: string, text: string) => string;
5
- bold?: (text: string) => string;
6
- };
7
- export declare function renderClarifySelectPanel(
8
- width: number,
9
- snapshot: ClarifyUiSnapshot,
10
- theme: PanelTheme,
11
- ): string[];
12
- export type ClarifyKeyResult = {
13
- consumed: boolean;
14
- snapshot: ClarifyUiSnapshot;
15
- submitText?: string;
16
- };
17
- export declare function handleClarifyPanelKey(
18
- snapshot: ClarifyUiSnapshot,
19
- data: string,
20
- ): ClarifyKeyResult;
21
- //# sourceMappingURL=clarify-select-panel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clarify-select-panel.d.ts","sourceRoot":"","sources":["../../src/clarify/clarify-select-panel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAM/D,KAAK,UAAU,GAAG;IAChB,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACjC,CAAC;AA2BF,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,UAAU,GAChB,MAAM,EAAE,CAyBV;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAeF,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,CA4BjG"}
@@ -1,80 +0,0 @@
1
- import { truncateToWidth } from "@earendil-works/pi-tui";
2
- import { formatSelectionSubmit } from "./parse-clarify-answer.js";
3
-
4
- const OPTION_IDS = ["A", "B", "C", "D"];
5
- function optionLabel(snapshot, index) {
6
- if (index < 3) return snapshot.optionLabels[index] ?? `Opção ${index + 1}`;
7
- return snapshot.selectionMode === "multi" ? "Outro — escreva abaixo" : "Outro — escreva abaixo";
8
- }
9
- function renderOptionLine(snapshot, index, theme, width) {
10
- const id = OPTION_IDS[index] ?? "D";
11
- const focused = snapshot.focusedIndex === index;
12
- const selected = snapshot.selected.includes(id);
13
- const marker = focused ? "▸" : " ";
14
- const check = selected ? (snapshot.selectionMode === "multi" ? "[x]" : "●") : "[ ]";
15
- const line = `${marker} ${check} ${id}) ${optionLabel(snapshot, index)}`;
16
- const role = focused ? "planAccent" : "warning";
17
- try {
18
- return truncateToWidth(theme.fg(role, line), width, "");
19
- } catch {
20
- return truncateToWidth(line, width, "");
21
- }
22
- }
23
- export function renderClarifySelectPanel(width, snapshot, theme) {
24
- if (snapshot.phase !== "asking" || !snapshot.questionText) return [];
25
- const border = theme.fg("warning", "─".repeat(Math.max(0, width)));
26
- const titleBase = snapshot.progressLabel ?? "Questionário";
27
- const title =
28
- typeof theme.bold === "function"
29
- ? theme.bold(theme.fg("warning", titleBase))
30
- : theme.fg("warning", titleBase);
31
- const lines = [truncateToWidth(border, width, ""), truncateToWidth(title, width, "")];
32
- lines.push(truncateToWidth(theme.fg("text", snapshot.questionText), width, ""));
33
- const optionCount = Math.min(3, snapshot.optionLabels.length) + 1;
34
- for (let i = 0; i < optionCount; i += 1) {
35
- lines.push(renderOptionLine(snapshot, i, theme, width));
36
- }
37
- const hint =
38
- snapshot.selectionMode === "multi"
39
- ? "↑↓ navegar · Espaço alternar · Enter confirmar · ou escreva abaixo"
40
- : "↑↓ navegar · Espaço selecionar · Enter confirmar · ou escreva abaixo";
41
- lines.push(truncateToWidth(theme.fg("dim", hint), width, ""));
42
- lines.push(truncateToWidth(border, width, ""));
43
- return lines;
44
- }
45
- function toggleSelection(snapshot, optionId) {
46
- if (snapshot.selectionMode === "single") {
47
- return { ...snapshot, selected: [optionId] };
48
- }
49
- const selected = new Set(snapshot.selected);
50
- if (selected.has(optionId)) selected.delete(optionId);
51
- else selected.add(optionId);
52
- return { ...snapshot, selected: [...selected] };
53
- }
54
- export function handleClarifyPanelKey(snapshot, data) {
55
- if (snapshot.phase !== "asking") {
56
- return { consumed: false, snapshot };
57
- }
58
- const optionCount = Math.min(3, snapshot.optionLabels.length) + 1;
59
- if (data === "\x1b[A") {
60
- const focusedIndex = (snapshot.focusedIndex - 1 + optionCount) % optionCount;
61
- return { consumed: true, snapshot: { ...snapshot, focusedIndex } };
62
- }
63
- if (data === "\x1b[B") {
64
- const focusedIndex = (snapshot.focusedIndex + 1) % optionCount;
65
- return { consumed: true, snapshot: { ...snapshot, focusedIndex } };
66
- }
67
- if (data === " ") {
68
- const id = OPTION_IDS[snapshot.focusedIndex] ?? "D";
69
- return { consumed: true, snapshot: toggleSelection(snapshot, id) };
70
- }
71
- if (data === "\r" || data === "\n") {
72
- const submit = formatSelectionSubmit(new Set(snapshot.selected), snapshot.selectionMode);
73
- if (submit) {
74
- return { consumed: true, snapshot, submitText: submit };
75
- }
76
- return { consumed: false, snapshot };
77
- }
78
- return { consumed: false, snapshot };
79
- }
80
- //# sourceMappingURL=clarify-select-panel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clarify-select-panel.js","sourceRoot":"","sources":["../../src/clarify/clarify-select-panel.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- import type { ClarifyOptionId, ClarifySelectionMode } from "./session-questionnaire.types.js";
2
- export type ClarifyUiPhase = "idle" | "asking" | "ready";
3
- export type ClarifyUiSnapshot = {
4
- phase: ClarifyUiPhase;
5
- progressLabel: string | null;
6
- questionMarkdown: string | null;
7
- questionText: string | null;
8
- optionLabels: string[];
9
- selectionMode: ClarifySelectionMode;
10
- selected: ClarifyOptionId[];
11
- focusedIndex: number;
12
- };
13
- export declare function setClarifyUiChangeListener(listener: (() => void) | undefined): void;
14
- export declare function setClarifySubmitHandler(
15
- handler: ((text: string) => void | Promise<void>) | undefined,
16
- ): void;
17
- export declare function submitClarifyAnswer(text: string): Promise<void>;
18
- export declare function getClarifyUiSnapshot(): ClarifyUiSnapshot;
19
- export declare function setClarifyUiSnapshot(next: Partial<ClarifyUiSnapshot>): void;
20
- export declare function resetClarifyUiSnapshot(): void;
21
- export declare function isClarifyAsking(): boolean;
22
- export declare function resetClarifySelection(): void;
23
- //# sourceMappingURL=clarify-ui-state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clarify-ui-state.d.ts","sourceRoot":"","sources":["../../src/clarify/clarify-ui-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAE9F,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEzD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,cAAc,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,oBAAoB,CAAC;IACpC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAkBF,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAEnF;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,GAC5D,IAAI,CAEN;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErE;AAMD,wBAAgB,oBAAoB,IAAI,iBAAiB,CAExD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAG3E;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAG7C;AAED,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAO5C"}
@@ -1,48 +0,0 @@
1
- const EMPTY_SNAPSHOT = {
2
- phase: "idle",
3
- progressLabel: null,
4
- questionMarkdown: null,
5
- questionText: null,
6
- optionLabels: [],
7
- selectionMode: "single",
8
- selected: [],
9
- focusedIndex: 0,
10
- };
11
- let snapshot = { ...EMPTY_SNAPSHOT };
12
- let onSnapshotChange;
13
- let onClarifySubmit;
14
- export function setClarifyUiChangeListener(listener) {
15
- onSnapshotChange = listener;
16
- }
17
- export function setClarifySubmitHandler(handler) {
18
- onClarifySubmit = handler;
19
- }
20
- export async function submitClarifyAnswer(text) {
21
- await onClarifySubmit?.(text);
22
- }
23
- function notifySnapshotChange() {
24
- onSnapshotChange?.();
25
- }
26
- export function getClarifyUiSnapshot() {
27
- return snapshot;
28
- }
29
- export function setClarifyUiSnapshot(next) {
30
- snapshot = { ...snapshot, ...next };
31
- notifySnapshotChange();
32
- }
33
- export function resetClarifyUiSnapshot() {
34
- snapshot = { ...EMPTY_SNAPSHOT };
35
- notifySnapshotChange();
36
- }
37
- export function isClarifyAsking() {
38
- return snapshot.phase === "asking";
39
- }
40
- export function resetClarifySelection() {
41
- snapshot = {
42
- ...snapshot,
43
- selected: [],
44
- focusedIndex: 0,
45
- };
46
- notifySnapshotChange();
47
- }
48
- //# sourceMappingURL=clarify-ui-state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clarify-ui-state.js","sourceRoot":"","sources":["../../src/clarify/clarify-ui-state.ts"],"names":[],"mappings":"AAeA,MAAM,cAAc,GAAsB;IACxC,KAAK,EAAE,MAAM;IACb,aAAa,EAAE,IAAI;IACnB,gBAAgB,EAAE,IAAI;IACtB,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,EAAE;IAChB,aAAa,EAAE,QAAQ;IACvB,QAAQ,EAAE,EAAE;IACZ,YAAY,EAAE,CAAC;CAChB,CAAC;AAEF,IAAI,QAAQ,GAAsB,EAAE,GAAG,cAAc,EAAE,CAAC;AAExD,IAAI,gBAA0C,CAAC;AAC/C,IAAI,eAAqE,CAAC;AAE1E,MAAM,UAAU,0BAA0B,CAAC,QAAkC;IAC3E,gBAAgB,GAAG,QAAQ,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,OAA6D;IAE7D,eAAe,GAAG,OAAO,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY;IACpD,MAAM,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,oBAAoB;IAC3B,gBAAgB,EAAE,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAgC;IACnE,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC;IACpC,oBAAoB,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,QAAQ,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;IACjC,oBAAoB,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,QAAQ,GAAG;QACT,GAAG,QAAQ;QACX,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,CAAC;KAChB,CAAC;IACF,oBAAoB,EAAE,CAAC;AACzB,CAAC"}
@@ -1,32 +0,0 @@
1
- import type { ClarifySelectionMode } from "./session-questionnaire.types.js";
2
- export type ClarifyOptionId = "A" | "B" | "C" | "D" | "E";
3
- export type ClarifyAnswer =
4
- | {
5
- kind: "option";
6
- optionId: ClarifyOptionId;
7
- detail?: string;
8
- }
9
- | {
10
- kind: "multi";
11
- optionIds: ClarifyOptionId[];
12
- }
13
- | {
14
- kind: "custom";
15
- text: string;
16
- }
17
- | {
18
- kind: "ready";
19
- }
20
- | {
21
- kind: "invalid";
22
- };
23
- /** Parse a user reply to a sec-clarify multiple-choice question (CLAR-004). */
24
- export declare function parseClarifyAnswer(
25
- text: string,
26
- selectionMode?: ClarifySelectionMode,
27
- ): ClarifyAnswer;
28
- export declare function formatSelectionSubmit(
29
- selected: Set<ClarifyOptionId>,
30
- selectionMode: ClarifySelectionMode,
31
- ): string | null;
32
- //# sourceMappingURL=parse-clarify-answer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-clarify-answer.d.ts","sourceRoot":"","sources":["../../src/clarify/parse-clarify-answer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,MAAM,MAAM,eAAe,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAE1D,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,eAAe,EAAE,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAcxB,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,aAAa,GAAE,oBAA+B,GAC7C,aAAa,CAsCf;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,GAAG,CAAC,eAAe,CAAC,EAC9B,aAAa,EAAE,oBAAoB,GAClC,MAAM,GAAG,IAAI,CAKf"}
@@ -1,51 +0,0 @@
1
- const READY_PHRASE = /^pode\s+executar\b/i;
2
- const OPTION_LETTERS = new Set(["A", "B", "C", "D", "E"]);
3
- function parseMultiLetters(trimmed) {
4
- const compact = trimmed.replace(/[\s,;|]+/g, "").toUpperCase();
5
- if (!compact || !/^[A-D]+$/.test(compact)) return null;
6
- const ids = [...new Set(compact.split("").filter((c) => OPTION_LETTERS.has(c)))];
7
- return ids.length > 0 ? ids : null;
8
- }
9
- /** Parse a user reply to a sec-clarify multiple-choice question (CLAR-004). */
10
- export function parseClarifyAnswer(text, selectionMode = "single") {
11
- const trimmed = text.trim();
12
- if (!trimmed) {
13
- return { kind: "invalid" };
14
- }
15
- if (READY_PHRASE.test(trimmed)) {
16
- return { kind: "ready" };
17
- }
18
- if (selectionMode === "multi") {
19
- const multi = parseMultiLetters(trimmed);
20
- if (multi && multi.length > 1) {
21
- return { kind: "multi", optionIds: multi };
22
- }
23
- if (multi?.length === 1) {
24
- return { kind: "option", optionId: multi[0] };
25
- }
26
- }
27
- const match = trimmed.match(/^([A-D])\b([\s\S]*)$/i);
28
- if (match?.[1]) {
29
- const optionId = match[1].toUpperCase();
30
- const remainder = (match[2] ?? "").trim().replace(/^[\s:,\-–—]+/, "");
31
- if (remainder) {
32
- return { kind: "option", optionId, detail: remainder };
33
- }
34
- return { kind: "option", optionId };
35
- }
36
- // Legacy E) other
37
- const legacyOther = trimmed.match(/^E\b([\s\S]*)$/i);
38
- if (legacyOther) {
39
- const detail = (legacyOther[1] ?? "").trim().replace(/^[\s:,\-–—]+/, "");
40
- if (detail) return { kind: "custom", text: detail };
41
- return { kind: "option", optionId: "D" };
42
- }
43
- return { kind: "custom", text: trimmed };
44
- }
45
- export function formatSelectionSubmit(selected, selectionMode) {
46
- const ids = [...selected].filter((id) => id !== "D" && id !== "E").sort();
47
- if (ids.length === 0) return null;
48
- if (selectionMode === "multi") return ids.join(" ");
49
- return ids[0] ?? null;
50
- }
51
- //# sourceMappingURL=parse-clarify-answer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-clarify-answer.js","sourceRoot":"","sources":["../../src/clarify/parse-clarify-answer.ts"],"names":[],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- import type {
2
- ClarifyOptionId,
3
- ClarifySelectionMode,
4
- QuestionnaireScenario,
5
- SessionQuestionnaireFields,
6
- } from "./session-questionnaire.types.js";
7
- export type ClarifyQuestionOption = {
8
- id: "A" | "B" | "C";
9
- label: string;
10
- };
11
- /** Build a compact structured question (max 3 choices + Outro). */
12
- export declare function formatClarifyQuestionMarkdown(input: {
13
- question: string;
14
- options: ClarifyQuestionOption[];
15
- language?: "pt" | "en";
16
- }): string;
17
- export declare function buildOptionsFromLabels(labels: string[]): ClarifyQuestionOption[];
18
- export declare function selectionModeForField(field: string): ClarifySelectionMode;
19
- export declare function resolveOptionLabel(
20
- optionId: ClarifyOptionId,
21
- optionLabels: string[],
22
- ): string | null;
23
- export declare function severityFromOptionLabel(label: string): string;
24
- export type ScenarioFieldHint = {
25
- field: string;
26
- purpose: string;
27
- exampleQuestion: string;
28
- exampleOptions: string[];
29
- };
30
- /** Scenario-aware hints — suggestions only; agent or auto-ask uses these. */
31
- export declare function suggestScenarioFields(
32
- scenario: QuestionnaireScenario,
33
- fields: SessionQuestionnaireFields,
34
- ): {
35
- scenario: QuestionnaireScenario;
36
- missingFields: string[];
37
- nextHint: ScenarioFieldHint | null;
38
- };
39
- export declare function inferScenarioFromMessage(message: string): QuestionnaireScenario;
40
- export declare function formatQuestionFromInput(input: {
41
- question: string;
42
- options: string[];
43
- language?: "pt" | "en";
44
- field?: string;
45
- }): {
46
- markdown: string;
47
- optionLabels: string[];
48
- selectionMode: ClarifySelectionMode;
49
- };
50
- //# sourceMappingURL=question-format.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"question-format.d.ts","sourceRoot":"","sources":["../../src/clarify/question-format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,kCAAkC,CAAC;AAE1C,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAQF,mEAAmE;AACnE,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB,GAAG,MAAM,CAQT;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,qBAAqB,EAAE,CAKhF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAEzE;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,eAAe,EACzB,YAAY,EAAE,MAAM,EAAE,GACrB,MAAM,GAAG,IAAI,CAKf;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAW7D;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AA0EF,6EAA6E;AAC7E,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,qBAAqB,EAC/B,MAAM,EAAE,0BAA0B,GACjC;IACD,QAAQ,EAAE,qBAAqB,CAAC;IAChC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACpC,CAKA;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAK/E;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,oBAAoB,CAAC;CACrC,CAYA"}
@@ -1,137 +0,0 @@
1
- const OPTION_IDS = ["A", "B", "C"];
2
- const OTHER_OPTION_ID = "D";
3
- const MULTI_SELECT_FIELDS = new Set(["severityMin", "scanners", "findingTypes"]);
4
- /** Build a compact structured question (max 3 choices + Outro). */
5
- export function formatClarifyQuestionMarkdown(input) {
6
- const lines = [input.question.trim(), ""];
7
- for (const opt of input.options.slice(0, 3)) {
8
- lines.push(`${opt.id}) ${opt.label}`);
9
- }
10
- const otherLabel = input.language === "en" ? "Other — type below" : "Outro — escreva abaixo";
11
- lines.push(`${OTHER_OPTION_ID}) ${otherLabel}`);
12
- return lines.join("\n");
13
- }
14
- export function buildOptionsFromLabels(labels) {
15
- return labels.slice(0, 3).map((label, index) => ({
16
- id: OPTION_IDS[index] ?? "C",
17
- label: label.trim(),
18
- }));
19
- }
20
- export function selectionModeForField(field) {
21
- return MULTI_SELECT_FIELDS.has(field) ? "multi" : "single";
22
- }
23
- export function resolveOptionLabel(optionId, optionLabels) {
24
- if (optionId === "D" || optionId === "E") return null;
25
- const index = OPTION_IDS.indexOf(optionId);
26
- if (index < 0 || index >= optionLabels.length) return null;
27
- return optionLabels[index] ?? null;
28
- }
29
- export function severityFromOptionLabel(label) {
30
- const upper = label.trim().toUpperCase();
31
- if (upper.includes("CRITICAL") || upper.includes("CRÍTICO") || upper.includes("CRITICO")) {
32
- return "CRITICAL";
33
- }
34
- if (upper.includes("HIGH") || upper.includes("ALTO")) return "HIGH";
35
- if (upper.includes("MEDIUM") || upper.includes("MÉDIO") || upper.includes("MEDIO")) {
36
- return "MEDIUM";
37
- }
38
- if (upper.includes("TODAS") || upper.includes("ALL")) return "ALL";
39
- return upper;
40
- }
41
- const SCENARIO_HINTS = {
42
- remediation: [
43
- {
44
- field: "projectIds",
45
- purpose: "Projeto/asset alvo",
46
- exampleQuestion: "Qual projeto KubbiSec devemos remediar?",
47
- exampleOptions: ["Projeto padrão da sessão", "Outro projeto", "Listar opções"],
48
- },
49
- {
50
- field: "severityMin",
51
- purpose: "Severidade mínima no escopo",
52
- exampleQuestion: "Qual severidade mínima entra no escopo?",
53
- exampleOptions: ["CRITICAL", "HIGH", "MEDIUM"],
54
- },
55
- {
56
- field: "remediationMode",
57
- purpose: "Modo de remediação",
58
- exampleQuestion: "Como devemos remediar?",
59
- exampleOptions: ["Automático (PR/patch)", "Só sugestões", "Híbrido"],
60
- },
61
- ],
62
- plan: [
63
- {
64
- field: "projectIds",
65
- purpose: "Projeto/asset",
66
- exampleQuestion: "Para qual projeto é este plano?",
67
- exampleOptions: ["Sessão atual", "Outro projeto", "Monorepo"],
68
- },
69
- {
70
- field: "customNotes",
71
- purpose: "Objetivo do plano",
72
- exampleQuestion: "Qual é o objetivo principal deste plano?",
73
- exampleOptions: ["Correção CVE", "Pipeline NAUS", "Hardening"],
74
- },
75
- ],
76
- explore: [
77
- {
78
- field: "projectIds",
79
- purpose: "Contexto do projeto",
80
- exampleQuestion: "Sobre qual projeto quer explorar findings?",
81
- exampleOptions: ["Padrão", "Outro", "Organização inteira"],
82
- },
83
- ],
84
- review: [
85
- {
86
- field: "projectIds",
87
- purpose: "Projeto em revisão",
88
- exampleQuestion: "Qual projeto estamos a rever?",
89
- exampleOptions: ["Atual", "Outro", "PR específico"],
90
- },
91
- ],
92
- };
93
- function isFieldFilled(fields, field) {
94
- switch (field) {
95
- case "projectIds":
96
- return fields.projectIds.length > 0;
97
- case "severityMin":
98
- return Boolean(fields.severityMin);
99
- case "remediationMode":
100
- return Boolean(fields.remediationMode);
101
- case "nausConstraints":
102
- return fields.nausConstraints != null;
103
- case "extendedContext":
104
- return fields.extendedContext != null;
105
- case "customNotes":
106
- return Boolean(fields.customNotes?.trim());
107
- default:
108
- return Boolean(fields.extras[field]?.trim());
109
- }
110
- }
111
- /** Scenario-aware hints — suggestions only; agent or auto-ask uses these. */
112
- export function suggestScenarioFields(scenario, fields) {
113
- const hints = SCENARIO_HINTS[scenario] ?? SCENARIO_HINTS.remediation;
114
- const missingFields = hints.map((h) => h.field).filter((field) => !isFieldFilled(fields, field));
115
- const nextHint = hints.find((h) => !isFieldFilled(fields, h.field)) ?? null;
116
- return { scenario, missingFields, nextHint };
117
- }
118
- export function inferScenarioFromMessage(message) {
119
- if (/@plan\b|\/mode:plan\b|brainstorm|spec\b/i.test(message)) return "plan";
120
- if (/\b(review|revisão|revisao|code review)\b/i.test(message)) return "review";
121
- if (/\b(o que|explain|explor|listar|mostrar)\b/i.test(message)) return "explore";
122
- return "remediation";
123
- }
124
- export function formatQuestionFromInput(input) {
125
- const optionLabels = input.options
126
- .map((o) => o.trim())
127
- .filter(Boolean)
128
- .slice(0, 3);
129
- const markdown = formatClarifyQuestionMarkdown({
130
- question: input.question,
131
- options: buildOptionsFromLabels(optionLabels),
132
- language: input.language,
133
- });
134
- const selectionMode = input.field ? selectionModeForField(input.field) : "single";
135
- return { markdown, optionLabels, selectionMode };
136
- }
137
- //# sourceMappingURL=question-format.js.map