@kubbisec/ai-linux-arm64 0.1.24 → 0.1.27

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 (70) hide show
  1. package/bin/kubbisec +0 -0
  2. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/build-chat-system-prompt.js +1 -1
  3. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/cli-reference-index.d.ts +1 -1
  4. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/cli-reference-index.d.ts.map +1 -1
  5. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/cli-reference-index.js +4 -4
  6. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/format-mcp-knowledge.d.ts +1 -1
  7. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/format-mcp-knowledge.d.ts.map +1 -1
  8. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/format-mcp-knowledge.js +4 -4
  9. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/format-mcp-knowledge.js.map +1 -1
  10. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/mcp-instructions.d.ts +1 -1
  11. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/mcp-instructions.d.ts.map +1 -1
  12. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/mcp-instructions.js +8 -9
  13. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/mcp-instructions.js.map +1 -1
  14. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/mental-map.d.ts +2 -2
  15. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/mental-map.d.ts.map +1 -1
  16. package/bundled/node_modules/@kubbisec/shared/dist/ai/product-knowledge/mental-map.js +4 -4
  17. package/bundled/node_modules/@kubbisec/shared/dist/dto/bulk-import-bitbucket-projects.dto.d.ts +15 -0
  18. package/bundled/node_modules/@kubbisec/shared/dist/dto/bulk-import-bitbucket-projects.dto.d.ts.map +1 -0
  19. package/bundled/node_modules/@kubbisec/shared/dist/dto/bulk-import-bitbucket-projects.dto.js +75 -0
  20. package/bundled/node_modules/@kubbisec/shared/dist/dto/bulk-import-bitbucket-projects.dto.js.map +1 -0
  21. package/bundled/node_modules/@kubbisec/shared/dist/dto/index.d.ts +1 -0
  22. package/bundled/node_modules/@kubbisec/shared/dist/dto/index.d.ts.map +1 -1
  23. package/bundled/node_modules/@kubbisec/shared/dist/dto/index.js +5 -1
  24. package/bundled/node_modules/@kubbisec/shared/dist/dto/index.js.map +1 -1
  25. package/bundled/node_modules/@kubbisec/shared/dist/index.d.ts +1 -0
  26. package/bundled/node_modules/@kubbisec/shared/dist/index.d.ts.map +1 -1
  27. package/bundled/node_modules/@kubbisec/shared/dist/index.js +1 -0
  28. package/bundled/node_modules/@kubbisec/shared/dist/index.js.map +1 -1
  29. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/ai-docs-bundle.loader.d.ts +6 -0
  30. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/ai-docs-bundle.loader.d.ts.map +1 -0
  31. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/ai-docs-bundle.loader.js +68 -0
  32. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/ai-docs-bundle.loader.js.map +1 -0
  33. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/aspm-docs-bundle.loader.d.ts +8 -0
  34. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/aspm-docs-bundle.loader.d.ts.map +1 -0
  35. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/aspm-docs-bundle.loader.js +115 -0
  36. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/aspm-docs-bundle.loader.js.map +1 -0
  37. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/doc-bundle-utils.d.ts +12 -0
  38. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/doc-bundle-utils.d.ts.map +1 -0
  39. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/doc-bundle-utils.js +86 -0
  40. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/doc-bundle-utils.js.map +1 -0
  41. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/index.d.ts +8 -0
  42. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/index.d.ts.map +1 -0
  43. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/index.js +33 -0
  44. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/index.js.map +1 -0
  45. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/mcp-tools-catalog.d.ts +4 -0
  46. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/mcp-tools-catalog.d.ts.map +1 -0
  47. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/mcp-tools-catalog.js +23 -0
  48. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/mcp-tools-catalog.js.map +1 -0
  49. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/monorepo-root.d.ts +4 -0
  50. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/monorepo-root.d.ts.map +1 -0
  51. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/monorepo-root.js +19 -0
  52. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/monorepo-root.js.map +1 -0
  53. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/naus-pipeline-docs-bundle.loader.d.ts +11 -0
  54. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/naus-pipeline-docs-bundle.loader.d.ts.map +1 -0
  55. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/naus-pipeline-docs-bundle.loader.js +148 -0
  56. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/naus-pipeline-docs-bundle.loader.js.map +1 -0
  57. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/naus-schema-overview.d.ts +2 -0
  58. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/naus-schema-overview.d.ts.map +1 -0
  59. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/naus-schema-overview.js +36 -0
  60. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/naus-schema-overview.js.map +1 -0
  61. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/security-scanner-playbooks.d.ts +49 -0
  62. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/security-scanner-playbooks.d.ts.map +1 -0
  63. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/security-scanner-playbooks.js +600 -0
  64. package/bundled/node_modules/@kubbisec/shared/dist/product-docs/security-scanner-playbooks.js.map +1 -0
  65. package/bundled/node_modules/@kubbisec/shared/dist/rbac/platform-staff.d.ts +2 -0
  66. package/bundled/node_modules/@kubbisec/shared/dist/rbac/platform-staff.d.ts.map +1 -1
  67. package/bundled/node_modules/@kubbisec/shared/dist/rbac/platform-staff.js +5 -0
  68. package/bundled/node_modules/@kubbisec/shared/dist/rbac/platform-staff.js.map +1 -1
  69. package/bundled/node_modules/@kubbisec/shared/package.json +4 -0
  70. package/package.json +1 -1
package/bin/kubbisec CHANGED
Binary file
@@ -4,7 +4,7 @@ exports.buildChatSystemPrompt = buildChatSystemPrompt;
4
4
  const mental_map_1 = require("./mental-map");
5
5
  function buildChatSystemPrompt(input) {
6
6
  return `<kubbisec-ai>
7
- <role>${input.productName} — ASPM findings, NAUS CI/CD pipelines, secure remediation, and coding in the repository. Same knowledge and tool contracts as @kubbisec/mcp (kubbisec:// resources).</role>
7
+ <role>${input.productName} — ASPM findings, NAUS CI/CD pipelines, secure remediation, and coding in the repository. Same knowledge and tool contracts as @kubbisec/mcp (MCP tools).</role>
8
8
  ${mental_map_1.KUBBISEC_PRODUCT_MENTAL_MAP_XML}
9
9
  <rules>
10
10
  ${input.channelRulesXml}
@@ -2,5 +2,5 @@
2
2
  * Compact CLI index preloaded into kubbisec chat system prompt.
3
3
  * Keep in sync with apps/web/.../aspm-commands.md, naus-commands.md, and ai-commands.md.
4
4
  */
5
- export declare const KUBBISEC_CLI_REFERENCE_INDEX = "<cli-reference-index>\nASPM CLI (npm install -g @kubbisec/aspm):\n| Command | Purpose |\n| aspm init | Interactive setup |\n| aspm login | Configure credentials |\n| aspm whoami | Show current config |\n| aspm doctor | Diagnose configuration |\n| aspm scan <file> -s <source> | Local parse only (no API upload) |\n| aspm parse <file> -s <source> | Local dry-run parse |\n| aspm upload <file> -s <source> | Upload security report to API |\n| aspm coverage <file> | Upload coverage (lcov) |\n| aspm parse-coverage <file> | Local coverage parse |\n| aspm gate | Evaluate local reports against inline rules |\n| aspm projects | List org projects |\n| aspm dashboard | Terminal security posture summary |\nGlobal flags: -k/--api-key, -o/--org (org slug, e.g. minha-empresa), -p/--project\nAPI key: Perfil \u2192 API Keys (/profile/api-keys), prefix aspm_\nEnv: KUBBISEC_API_KEY, KUBBISEC_ORG_ID (slug), KUBBISEC_PROJECT (aliases ASPM_API_URL, ASPM_API_KEY, ASPM_ORG_ID)\nScanners (-s): trivy, gitleaks, syft, osv, semgrep, sonar, nmap, skipfish\nReport files: trivy-report.json, gitleaks-report.json, sbom.json, osv-report.json, semgrep-report.json, sonar-report.json, nmap-report.xml, skipfish-report.json\nPer-scanner install (Linux/macOS/Windows): kubbisec://aspm/aspm-scanner-{name} (e.g. aspm-scanner-trivy, aspm-scanner-semgrep)\nCoverage frameworks: kubbisec://aspm/aspm-coverage (Jest, Vitest, pytest, JaCoCo\u2192lcov, PHPUnit/clover, Go)\n\nNAUS CLI (npm install -g @kubbisec/naus):\n| Command | Purpose |\n| naus register [token] [--renew] | Enroll runner (mTLS bootstrap) |\n| naus start [--daemon] [--allow-privileged] | Start runner daemon |\n| naus migrate | Migrate legacy token runner to mTLS |\n| naus validate <file> / naus check <file> | Validate pipeline YAML |\n| naus plan <file> [--format mermaid] | Show dependency waves |\n| naus run <file> | Execute pipeline locally |\n| naus daemon list / naus daemon stop | Background runner sessions |\nDefault pipeline file: .naus.yml\nLocal env: naus run .naus.yml [--env-file .env] [--secret-file .secrets|.secret] (repeatable; defaults .env/.secrets in cwd).\nCloud secrets: Env Packs in KubbiSec UI (not .secrets on remote runner).\nEnv: NAUS_BOOTSTRAP_TOKEN, NAUS_RENEW_RUNNER\n\nKubbiSec AI CLI (npm install -g @kubbisec/ai):\n| Command | Purpose |\n| kubbisec login / logout / whoami | API session |\n| kubbisec doctor | Diagnose CLI setup |\n| kubbisec ls / show <id> | List/show findings |\n| kubbisec fix <id> [-m auto] | AI remediation |\n| kubbisec chat | Interactive terminal chat |\n| kubbisec do [intent] | Orchestrated agent run |\n| kubbisec watch [--logs] | Remediation queue daemon |\n| kubbisec daemon list|logs|stop | Manage watch sessions |\n| kubbisec ap | Trigger Autopilot cycle |\n| kubbisec naus \u2026 / kubbisec aspm \u2026 | CLI hub forwarding |\nAPI key: Perfil \u2192 API Keys (/profile/api-keys), prefix kbs_\nOrg: -o minha-empresa (slug)\nFull docs: kubbisec://ai/README, section ai-commands\n\nNAUS YAML (NOT GitHub Actions): top-level run: (never jobs:); script: + depends_on: (never commands:/needs:); ASPM jobs kind: aspm|aspm_matrix|aspm_gate with tool: (never scanner:).\nFull docs via tools: aspm_docs (section aspm-commands), naus_pipeline_docs (naus-commands, naus-pipeline-overview, naus-aspm-integration), kubbisec://ai/* (KubbiSec AI CLI).\naspm-cicd.md is GitHub Actions only \u2014 do not use for NAUS pipelines.\n</cli-reference-index>";
5
+ export declare const KUBBISEC_CLI_REFERENCE_INDEX = "<cli-reference-index>\nASPM CLI (npm install -g @kubbisec/aspm):\n| Command | Purpose |\n| aspm init | Interactive setup |\n| aspm login | Configure credentials |\n| aspm whoami | Show current config |\n| aspm doctor | Diagnose configuration |\n| aspm scan <file> -s <source> | Local parse only (no API upload) |\n| aspm parse <file> -s <source> | Local dry-run parse |\n| aspm upload <file> -s <source> | Upload security report to API |\n| aspm coverage <file> | Upload coverage (lcov) |\n| aspm parse-coverage <file> | Local coverage parse |\n| aspm gate | Evaluate local reports against inline rules |\n| aspm projects | List org projects |\n| aspm dashboard | Terminal security posture summary |\nGlobal flags: -k/--api-key, -o/--org (org slug, e.g. minha-empresa), -p/--project\nAPI key: Perfil \u2192 API Keys (/profile/api-keys), prefix aspm_\nEnv: KUBBISEC_API_KEY, KUBBISEC_ORG_ID (slug), KUBBISEC_PROJECT (aliases ASPM_API_URL, ASPM_API_KEY, ASPM_ORG_ID)\nScanners (-s): trivy, gitleaks, syft, osv, semgrep, sonar, nmap, skipfish\nReport files: trivy-report.json, gitleaks-report.json, sbom.json, osv-report.json, semgrep-report.json, sonar-report.json, nmap-report.xml, skipfish-report.json\nPer-scanner install (Linux/macOS/Windows): aspm_docs section aspm-scanner-{name} (e.g. aspm-scanner-trivy, aspm-scanner-semgrep)\nCoverage frameworks: aspm_docs section aspm-coverage (Jest, Vitest, pytest, JaCoCo\u2192lcov, PHPUnit/clover, Go)\n\nNAUS CLI (npm install -g @kubbisec/naus):\n| Command | Purpose |\n| naus register [token] [--renew] | Enroll runner (mTLS bootstrap) |\n| naus start [--daemon] [--allow-privileged] | Start runner daemon |\n| naus migrate | Migrate legacy token runner to mTLS |\n| naus validate <file> / naus check <file> | Validate pipeline YAML |\n| naus plan <file> [--format mermaid] | Show dependency waves |\n| naus run <file> | Execute pipeline locally |\n| naus daemon list / naus daemon stop | Background runner sessions |\nDefault pipeline file: .naus.yml\nLocal env: naus run .naus.yml [--env-file .env] [--secret-file .secrets|.secret] (repeatable; defaults .env/.secrets in cwd).\nCloud secrets: Env Packs in KubbiSec UI (not .secrets on remote runner).\nEnv: NAUS_BOOTSTRAP_TOKEN, NAUS_RENEW_RUNNER\n\nKubbiSec AI CLI (npm install -g @kubbisec/ai):\n| Command | Purpose |\n| kubbisec login / logout / whoami | API session |\n| kubbisec doctor | Diagnose CLI setup |\n| kubbisec ls / show <id> | List/show findings |\n| kubbisec fix <id> [-m auto] | AI remediation |\n| kubbisec chat | Interactive terminal chat |\n| kubbisec do [intent] | Orchestrated agent run |\n| kubbisec watch [--logs] | Remediation queue daemon |\n| kubbisec daemon list|logs|stop | Manage watch sessions |\n| kubbisec ap | Trigger Autopilot cycle |\n| kubbisec naus \u2026 / kubbisec aspm \u2026 | CLI hub forwarding |\nAPI key: Perfil \u2192 API Keys (/profile/api-keys), prefix kbs_\nOrg: -o minha-empresa (slug)\nFull docs: ai_docs (index) or section ai-commands\n\nNAUS YAML (NOT GitHub Actions): top-level run: (never jobs:); script: + depends_on: (never commands:/needs:); ASPM jobs kind: aspm|aspm_matrix|aspm_gate with tool: (never scanner:).\nFull docs via tools: aspm_docs (section aspm-commands), naus_pipeline_docs (naus-commands, naus-pipeline-overview, naus-aspm-integration), ai_docs (KubbiSec AI CLI).\naspm-cicd.md is GitHub Actions only \u2014 do not use for NAUS pipelines.\n</cli-reference-index>";
6
6
  //# sourceMappingURL=cli-reference-index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-reference-index.d.ts","sourceRoot":"","sources":["../../../src/ai/product-knowledge/cli-reference-index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,4BAA4B,y3GAwDlB,CAAC"}
1
+ {"version":3,"file":"cli-reference-index.d.ts","sourceRoot":"","sources":["../../../src/ai/product-knowledge/cli-reference-index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,4BAA4B,k3GAwDlB,CAAC"}
@@ -25,8 +25,8 @@ API key: Perfil → API Keys (/profile/api-keys), prefix aspm_
25
25
  Env: KUBBISEC_API_KEY, KUBBISEC_ORG_ID (slug), KUBBISEC_PROJECT (aliases ASPM_API_URL, ASPM_API_KEY, ASPM_ORG_ID)
26
26
  Scanners (-s): trivy, gitleaks, syft, osv, semgrep, sonar, nmap, skipfish
27
27
  Report files: trivy-report.json, gitleaks-report.json, sbom.json, osv-report.json, semgrep-report.json, sonar-report.json, nmap-report.xml, skipfish-report.json
28
- Per-scanner install (Linux/macOS/Windows): kubbisec://aspm/aspm-scanner-{name} (e.g. aspm-scanner-trivy, aspm-scanner-semgrep)
29
- Coverage frameworks: kubbisec://aspm/aspm-coverage (Jest, Vitest, pytest, JaCoCo→lcov, PHPUnit/clover, Go)
28
+ Per-scanner install (Linux/macOS/Windows): aspm_docs section aspm-scanner-{name} (e.g. aspm-scanner-trivy, aspm-scanner-semgrep)
29
+ Coverage frameworks: aspm_docs section aspm-coverage (Jest, Vitest, pytest, JaCoCo→lcov, PHPUnit/clover, Go)
30
30
 
31
31
  NAUS CLI (npm install -g @kubbisec/naus):
32
32
  | Command | Purpose |
@@ -56,10 +56,10 @@ KubbiSec AI CLI (npm install -g @kubbisec/ai):
56
56
  | kubbisec naus … / kubbisec aspm … | CLI hub forwarding |
57
57
  API key: Perfil → API Keys (/profile/api-keys), prefix kbs_
58
58
  Org: -o minha-empresa (slug)
59
- Full docs: kubbisec://ai/README, section ai-commands
59
+ Full docs: ai_docs (index) or section ai-commands
60
60
 
61
61
  NAUS YAML (NOT GitHub Actions): top-level run: (never jobs:); script: + depends_on: (never commands:/needs:); ASPM jobs kind: aspm|aspm_matrix|aspm_gate with tool: (never scanner:).
62
- Full docs via tools: aspm_docs (section aspm-commands), naus_pipeline_docs (naus-commands, naus-pipeline-overview, naus-aspm-integration), kubbisec://ai/* (KubbiSec AI CLI).
62
+ Full docs via tools: aspm_docs (section aspm-commands), naus_pipeline_docs (naus-commands, naus-pipeline-overview, naus-aspm-integration), ai_docs (KubbiSec AI CLI).
63
63
  aspm-cicd.md is GitHub Actions only — do not use for NAUS pipelines.
64
64
  </cli-reference-index>`;
65
65
  //# sourceMappingURL=cli-reference-index.js.map
@@ -1,6 +1,6 @@
1
1
  export type McpKnowledgePayload = {
2
2
  instructions?: string;
3
- resources?: Record<string, unknown>;
3
+ tools?: string[] | Record<string, unknown>;
4
4
  assistantToolsAlignedWithMcp?: Record<string, string>;
5
5
  cursorMcpPackage?: string;
6
6
  };
@@ -1 +1 @@
1
- {"version":3,"file":"format-mcp-knowledge.d.ts","sourceRoot":"","sources":["../../../src/ai/product-knowledge/format-mcp-knowledge.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CA0BtF"}
1
+ {"version":3,"file":"format-mcp-knowledge.d.ts","sourceRoot":"","sources":["../../../src/ai/product-knowledge/format-mcp-knowledge.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CA0BtF"}
@@ -5,14 +5,14 @@ const MAX_MCP_PROMPT_CHARS = 28_000;
5
5
  function formatMcpKnowledgeForSystemPrompt(payload) {
6
6
  const parts = [
7
7
  "<kubbisec-mcp-knowledge>",
8
- "You have the same KubbiSec knowledge surface as the @kubbisec/mcp server (tools + kubbisec:// resources).",
9
- "Use assistant tools listed below — they mirror MCP tools and docs.",
8
+ "You have the same KubbiSec knowledge surface as the @kubbisec/mcp server (action tools; docs via Platform Assistant).",
9
+ "Use assistant tools listed below — they mirror MCP tools where applicable.",
10
10
  ];
11
11
  if (payload.instructions?.trim()) {
12
12
  parts.push("", "## MCP instructions", payload.instructions.trim());
13
13
  }
14
- if (payload.resources) {
15
- parts.push("", "## kubbisec:// resources", JSON.stringify(payload.resources, null, 2));
14
+ if (payload.tools) {
15
+ parts.push("", "## MCP tools", JSON.stringify(payload.tools, null, 2));
16
16
  }
17
17
  if (payload.assistantToolsAlignedWithMcp) {
18
18
  parts.push("", "## Tool mapping (MCP ↔ kubbisec chat)", JSON.stringify(payload.assistantToolsAlignedWithMcp, null, 2));
@@ -1 +1 @@
1
- {"version":3,"file":"format-mcp-knowledge.js","sourceRoot":"","sources":["../../../src/ai/product-knowledge/format-mcp-knowledge.ts"],"names":[],"mappings":";;AASA,8EA0BC;AAnCD,MAAM,oBAAoB,GAAG,MAAM,CAAC;AASpC,SAAgB,iCAAiC,CAAC,OAA4B;IAC5E,MAAM,KAAK,GAAa;QACtB,0BAA0B;QAC1B,2GAA2G;QAC3G,oEAAoE;KACrE,CAAC;IACF,IAAI,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,qBAAqB,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,0BAA0B,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,OAAO,CAAC,4BAA4B,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CACR,EAAE,EACF,uCAAuC,EACvC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,4BAA4B,EAAE,IAAI,EAAE,CAAC,CAAC,CAC9D,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,IAAI,CAAC,MAAM,IAAI,oBAAoB;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,8GAA8G,CAAC;AAC9J,CAAC"}
1
+ {"version":3,"file":"format-mcp-knowledge.js","sourceRoot":"","sources":["../../../src/ai/product-knowledge/format-mcp-knowledge.ts"],"names":[],"mappings":";;AASA,8EA0BC;AAnCD,MAAM,oBAAoB,GAAG,MAAM,CAAC;AASpC,SAAgB,iCAAiC,CAAC,OAA4B;IAC5E,MAAM,KAAK,GAAa;QACtB,0BAA0B;QAC1B,uHAAuH;QACvH,4EAA4E;KAC7E,CAAC;IACF,IAAI,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,qBAAqB,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,OAAO,CAAC,4BAA4B,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CACR,EAAE,EACF,uCAAuC,EACvC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,4BAA4B,EAAE,IAAI,EAAE,CAAC,CAAC,CAC9D,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,IAAI,CAAC,MAAM,IAAI,oBAAoB;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,8GAA8G,CAAC;AAC9J,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const KUBBISEC_MCP_INSTRUCTIONS = "<kubbisec-mcp-instructions>\n<kubbisec-product-knowledge>\n <products>\n <product id=\"naus\" npm=\"@kubbisec/naus\" bin=\"naus\">KubbiSec CI engine: .naus.yml pipelines, runners, validate/plan/run. Cloud CI uses Env Packs; local run uses --env-file / --secret-file.</product>\n <product id=\"aspm\" npm=\"@kubbisec/aspm\" bin=\"aspm\">Security CLI: parse/upload scanner reports (trivy, gitleaks, syft, osv, semgrep, sonar, nmap, skipfish), coverage, gate.</product>\n <product id=\"ai\" npm=\"@kubbisec/ai\" bin=\"kubbisec\">CLI hub: login, findings (ls/show), fix/watch/chat, optional naus/aspm forwarding when binaries are on PATH.</product>\n </products>\n <boundaries>\n <boundary>NAUS YAML is NOT GitHub Actions: top-level run: (never jobs:); script: + depends_on: (never commands:/needs:/steps:); ASPM jobs use kind: aspm|aspm_matrix|aspm_gate with tool: (never scanner:).</boundary>\n <boundary>aspm-cicd.md / aspm_docs section aspm-cicd describe GitHub Actions only. For KubbiSec native CI use naus_pipeline_docs (naus-aspm-integration, naus-aspm-preset, naus-aspm-matrix, naus-aspm-gate).</boundary>\n <boundary>Do not mix CLIs: naus for pipelines/runners; aspm for scan upload/parse; kubbisec for AI remediation/chat. Org flag -o uses organization slug.</boundary>\n </boundaries>\n <anti-hallucination>\n <rule>HARD-GATE: never invent CLI flags or full command lines \u2014 call naus_pipeline_docs (naus-commands), aspm_docs (aspm-commands), kubbisec://ai/ai-commands, or security_scanner_playbook first.</rule>\n <rule>HARD-GATE: never output fenced NAUS pipeline YAML unless naus_validate_yaml (or naus_local_validate) returned ok in this session.</rule>\n <rule>HARD-GATE: never claim a tool/action succeeded without a successful tool_result in this turn.</rule>\n </anti-hallucination>\n <tool-routing>\n <route intent=\"platform-knowledge\">kubbisec_mcp_knowledge (start of naus/aspm/ai product questions)</route>\n <route intent=\"naus-docs-yaml\">naus_pipeline_docs \u2192 naus_schema_overview \u2192 naus_validate_yaml</route>\n <route intent=\"aspm-docs\">aspm_docs; scanners: security_scanners_catalog \u2192 security_scanner_playbook</route>\n <route intent=\"ai-cli-docs\">kubbisec://ai/* (ai-commands, ai-watch, ai-login)</route>\n <route intent=\"local-clis\">naus_local_* / aspm_local_* / github_local_* always available in chat (no --extended-context); github uses host-first auth; missing naus/aspm auto-install @kubbisec/naus|aspm</route>\n </tool-routing>\n</kubbisec-product-knowledge>\n\n<flows>\n <flow id=\"findings\">Recommended flow: use resolve_project_by_repository with repository_url or repositoryUrl (Git URL or org/repo), then list_vulnerabilities with the same repository fields or project_id/projectId. Tools accept snake_case and camelCase interchangeably. To act on a finding, use get_vulnerability (MCP) or get_finding_summary / list_findings (assistant CLI), then generate_remediation_plan and, if you want automation, start_ai_remediation_run followed by get_ai_remediation_run_status/get_ai_remediation_run_logs (run_id or runId). Pass vulnerabilityId (or vulnerability_id) in tool arguments when using kbs chat \u2014 there is no separate set_active_finding tool. kubbisec:// resources expose the same project \u2194 repository mapping.</flow>\n <flow id=\"naus-cloud\">Naus CI YAML (cloud / kbs chat): (1) naus_pipeline_docs or kubbisec://naus/* (same web markdown), (2) naus_validate_yaml / validate_naus_pipeline_yaml before persisting, (3) set_editor_yaml \u2192 set_pipeline_yaml \u2192 trigger_run \u2192 get_run_logs_excerpt.</flow>\n <flow id=\"naus-aspm-local\">Naus / ASPM / git on the developer machine (kbs or kubbisec chat; no --extended-context required): naus_local_validate | naus_local_plan | naus_local_run; aspm_local_scan | aspm_local_upload | aspm_local_doctor; github_local_* uses host-first gh/git auth (platform token only as remediation fallback). Missing naus/aspm binaries auto-install @kubbisec/naus and @kubbisec/aspm globally via npm/pnpm (allowlist). Local naus run/plan: default .secrets and .env in cwd, or --env-file / --secret-file; naus_local_run and naus_local_plan accept envFiles/secretFiles arrays. Cloud runners use Env Packs instead. Runner enrollment (naus register / naus start) is documented in naus_pipeline_docs (runner-management) \u2014 do not spawn long-lived daemons from chat.</flow>\n <flow id=\"kubbisec-scan\">Hybrid local scan: MCP cannot run Pi/Superpowers on the host. (1) resolve_project_by_repository with repository_url or repositoryUrl (Git URL or org/repo), or project_id/projectId. (2) trigger_kubbisec_scan with profile quick|full|ci (default full), upload (default true), require_scanners/requireScanners optional. (3) get_kubbisec_scan_status with task_id/taskId until status is done, failed, or cancelled; list_kubbisec_scan_tasks or cancel_kubbisec_scan_task as needed. Requires kubbisec watch or kubbisec scan --watch on a developer machine with repo checkout \u2014 task stays pending until claimed. Findings upload with source=KUBBISEC_AI; filter via list_vulnerabilities source=KUBBISEC_AI. Docs: kubbisec://ai/scan, kubbisec://ai/scan-watch, kubbisec://ai/mcp-login. For immediate local scan without queue, user runs kubbisec scan in terminal (not an MCP tool).</flow>\n</flows>\n\n<intent-matrix>\n| Intent | Cloud (API/MCP) | Local (host CLI) |\n| Validate YAML | naus_validate_yaml | naus_local_validate |\n| Run pipeline | trigger_run | naus_local_run (prefer cloud for KubbiSec CI) |\n| Dependency graph | \u2014 | naus_local_plan |\n| Upload scan report | CI / findings API | aspm_local_upload |\n| ASPM CLI health | \u2014 | aspm_local_doctor |\n| Hybrid AI scan | trigger_kubbisec_scan | kubbisec scan |\n| Scan status | get_kubbisec_scan_status | stdout / .kubbisec/scan/&lt;runId&gt;/ |\n| Filter AI findings | list_vulnerabilities + source=KUBBISEC_AI | \u2014 |\n| MCP auth | hosted OAuth / device login | kubbisec mcp login |\n</intent-matrix>\n\n<rules>\n <rule id=\"superpowers-mcp\">MCP agents must NOT invoke Pi/Superpowers skills or spawn kubbisec chat for scan orchestration. Read kubbisec://ai/* and kubbisec://naus/* for documentation only. Scan = trigger_kubbisec_scan; remediation = start_ai_remediation_run.</rule>\n <rule id=\"hosted-mcp\">Hosted MCP endpoint: https://mcp.kubbisec.com/mcp (OAuth2 for cloud IDEs). Local stdio: set KUBBISEC_ORGANIZATION_SLUG (preferred, e.g. minha-empresa) and KUBBISEC_API_KEY, or run kubbisec mcp login for device flow. Legacy KUBBISEC_ORGANIZATION_ID remains supported.</rule>\n</rules>\n\n<aspm>ASPM CLI: aspm_docs includes web guides plus docs/aspm/docker-cli (init, login, doctor, scan, upload).</aspm>\n</kubbisec-mcp-instructions>";
1
+ export declare const KUBBISEC_MCP_INSTRUCTIONS = "<kubbisec-mcp-instructions>\n<kubbisec-product-knowledge>\n <products>\n <product id=\"naus\" npm=\"@kubbisec/naus\" bin=\"naus\">KubbiSec CI engine: .naus.yml pipelines, runners, validate/plan/run. Cloud CI uses Env Packs; local run uses --env-file / --secret-file.</product>\n <product id=\"aspm\" npm=\"@kubbisec/aspm\" bin=\"aspm\">Security CLI: parse/upload scanner reports (trivy, gitleaks, syft, osv, semgrep, sonar, nmap, skipfish), coverage, gate.</product>\n <product id=\"ai\" npm=\"@kubbisec/ai\" bin=\"kubbisec\">CLI hub: login, findings (ls/show), fix/watch/chat, optional naus/aspm forwarding when binaries are on PATH.</product>\n </products>\n <boundaries>\n <boundary>NAUS YAML is NOT GitHub Actions: top-level run: (never jobs:); script: + depends_on: (never commands:/needs:/steps:); ASPM jobs use kind: aspm|aspm_matrix|aspm_gate with tool: (never scanner:).</boundary>\n <boundary>aspm-cicd.md / aspm_docs section aspm-cicd describe GitHub Actions only. For KubbiSec native CI use naus_pipeline_docs (naus-aspm-integration, naus-aspm-preset, naus-aspm-matrix, naus-aspm-gate).</boundary>\n <boundary>Do not mix CLIs: naus for pipelines/runners; aspm for scan upload/parse; kubbisec for AI remediation/chat. Org flag -o uses organization slug.</boundary>\n </boundaries>\n <anti-hallucination>\n <rule>HARD-GATE: never invent CLI flags or full command lines \u2014 call naus_pipeline_docs (naus-commands), aspm_docs (aspm-commands), ai_docs (ai-commands), or security_scanner_playbook first.</rule>\n <rule>HARD-GATE: never output fenced NAUS pipeline YAML unless naus_validate_yaml (or naus_local_validate) returned ok in this session.</rule>\n <rule>HARD-GATE: never claim a tool/action succeeded without a successful tool_result in this turn.</rule>\n </anti-hallucination>\n <tool-routing>\n <route intent=\"platform-knowledge\">kubbisec_mcp_knowledge (start of naus/aspm/ai product questions)</route>\n <route intent=\"naus-docs-yaml\">naus_pipeline_docs \u2192 naus_schema_overview \u2192 validate_naus_pipeline_yaml</route>\n <route intent=\"aspm-docs\">aspm_docs; scanners: security_scanners_catalog \u2192 security_scanner_playbook</route>\n <route intent=\"ai-cli-docs\">ai_docs (ai-commands, ai-watch, mcp-login, scan, scan-watch)</route>\n <route intent=\"local-clis\">naus_local_* / aspm_local_* / github_local_* always available in chat (no --extended-context); github uses host-first auth; missing naus/aspm auto-install @kubbisec/naus|aspm</route>\n </tool-routing>\n</kubbisec-product-knowledge>\n\n<flows>\n <flow id=\"findings\">Recommended flow: use resolve_project_by_repository with repository_url or repositoryUrl (Git URL or org/repo), then list_vulnerabilities with the same repository fields or project_id/projectId. Tools accept snake_case and camelCase interchangeably. To act on a finding, use get_vulnerability (MCP) or get_finding_summary / list_findings (assistant CLI), then generate_remediation_plan and, if you want automation, start_ai_remediation_run followed by get_ai_remediation_run_status/get_ai_remediation_run_logs (run_id or runId). Pass vulnerabilityId (or vulnerability_id) in tool arguments when using kbs chat \u2014 there is no separate set_active_finding tool.</flow>\n <flow id=\"naus-cloud\">Naus CI YAML in MCP: call validate_naus_pipeline_yaml before proposing or persisting YAML. Pipeline IDE flows (set_editor_yaml, trigger_run) are Platform Assistant only.</flow>\n <flow id=\"naus-aspm-local\">Naus / ASPM / git on the developer machine (kbs or kubbisec chat; no --extended-context required): naus_local_validate | naus_local_plan | naus_local_run; aspm_local_scan | aspm_local_upload | aspm_local_doctor; github_local_* uses host-first gh/git auth (platform token only as remediation fallback). Missing naus/aspm binaries auto-install @kubbisec/naus and @kubbisec/aspm globally via npm/pnpm (allowlist). Local naus run/plan: default .secrets and .env in cwd, or --env-file / --secret-file; naus_local_run and naus_local_plan accept envFiles/secretFiles arrays. Cloud runners use Env Packs instead. Runner enrollment: naus register / naus start \u2014 do not spawn long-lived daemons from MCP chat.</flow>\n <flow id=\"kubbisec-scan\">Hybrid local scan: MCP cannot run Pi/Superpowers on the host. (1) resolve_project_by_repository with repository_url or repositoryUrl (Git URL or org/repo), or project_id/projectId. (2) trigger_kubbisec_scan with profile quick|full|ci (default full), upload (default true), require_scanners/requireScanners optional. (3) get_kubbisec_scan_status with task_id/taskId until status is done, failed, or cancelled; list_kubbisec_scan_tasks or cancel_kubbisec_scan_task as needed. Requires kubbisec watch or kubbisec scan --watch on a developer machine with repo checkout \u2014 task stays pending until claimed. Findings upload with source=KUBBISEC_AI; filter via list_vulnerabilities source=KUBBISEC_AI. For immediate local scan without queue, user runs kubbisec scan in terminal (not an MCP tool).</flow>\n</flows>\n\n<intent-matrix>\n| Intent | Cloud (API/MCP) | Local (host CLI) |\n| Validate YAML | validate_naus_pipeline_yaml | naus_local_validate |\n| Run pipeline | trigger_run (assistant) | naus_local_run |\n| Dependency graph | \u2014 | naus_local_plan |\n| Upload scan report | CI / findings API | aspm_local_upload |\n| ASPM CLI health | \u2014 | aspm_local_doctor |\n| Hybrid AI scan | trigger_kubbisec_scan | kubbisec scan |\n| Scan status | get_kubbisec_scan_status | stdout / .kubbisec/scan/&lt;runId&gt;/ |\n| Filter AI findings | list_vulnerabilities + source=KUBBISEC_AI | \u2014 |\n| MCP auth | hosted OAuth / device login | kubbisec mcp login |\n| Product docs | Platform Assistant / kubbisec chat | \u2014 |\n</intent-matrix>\n\n<rules>\n <rule id=\"superpowers-mcp\">MCP agents must NOT invoke Pi/Superpowers skills or spawn kubbisec chat for scan orchestration. MCP has no documentation tools \u2014 use validate_naus_pipeline_yaml for YAML. Scan = trigger_kubbisec_scan; remediation = start_ai_remediation_run.</rule>\n <rule id=\"hosted-mcp\">Hosted MCP endpoint: https://mcp.kubbisec.com/mcp (OAuth2 for cloud IDEs). Local stdio: set KUBBISEC_ORGANIZATION_SLUG (preferred, e.g. minha-empresa) and KUBBISEC_API_KEY, or run kubbisec mcp login for device flow. Legacy KUBBISEC_ORGANIZATION_ID remains supported.</rule>\n</rules>\n</kubbisec-mcp-instructions>";
2
2
  //# sourceMappingURL=mcp-instructions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-instructions.d.ts","sourceRoot":"","sources":["../../../src/ai/product-knowledge/mcp-instructions.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,yBAAyB,goNA6BT,CAAC"}
1
+ {"version":3,"file":"mcp-instructions.d.ts","sourceRoot":"","sources":["../../../src/ai/product-knowledge/mcp-instructions.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,yBAAyB,ozMA4BT,CAAC"}
@@ -7,16 +7,16 @@ exports.KUBBISEC_MCP_INSTRUCTIONS = `<kubbisec-mcp-instructions>
7
7
  ${mental_map_1.KUBBISEC_PRODUCT_MENTAL_MAP_XML}
8
8
 
9
9
  <flows>
10
- <flow id="findings">Recommended flow: use resolve_project_by_repository with repository_url or repositoryUrl (Git URL or org/repo), then list_vulnerabilities with the same repository fields or project_id/projectId. Tools accept snake_case and camelCase interchangeably. To act on a finding, use get_vulnerability (MCP) or get_finding_summary / list_findings (assistant CLI), then generate_remediation_plan and, if you want automation, start_ai_remediation_run followed by get_ai_remediation_run_status/get_ai_remediation_run_logs (run_id or runId). Pass vulnerabilityId (or vulnerability_id) in tool arguments when using kbs chat — there is no separate set_active_finding tool. kubbisec:// resources expose the same project ↔ repository mapping.</flow>
11
- <flow id="naus-cloud">Naus CI YAML (cloud / kbs chat): (1) naus_pipeline_docs or kubbisec://naus/* (same web markdown), (2) naus_validate_yaml / validate_naus_pipeline_yaml before persisting, (3) set_editor_yaml set_pipeline_yaml → trigger_run → get_run_logs_excerpt.</flow>
12
- <flow id="naus-aspm-local">Naus / ASPM / git on the developer machine (kbs or kubbisec chat; no --extended-context required): naus_local_validate | naus_local_plan | naus_local_run; aspm_local_scan | aspm_local_upload | aspm_local_doctor; github_local_* uses host-first gh/git auth (platform token only as remediation fallback). Missing naus/aspm binaries auto-install @kubbisec/naus and @kubbisec/aspm globally via npm/pnpm (allowlist). Local naus run/plan: default .secrets and .env in cwd, or --env-file / --secret-file; naus_local_run and naus_local_plan accept envFiles/secretFiles arrays. Cloud runners use Env Packs instead. Runner enrollment (naus register / naus start) is documented in naus_pipeline_docs (runner-management) — do not spawn long-lived daemons from chat.</flow>
13
- <flow id="kubbisec-scan">Hybrid local scan: MCP cannot run Pi/Superpowers on the host. (1) resolve_project_by_repository with repository_url or repositoryUrl (Git URL or org/repo), or project_id/projectId. (2) trigger_kubbisec_scan with profile quick|full|ci (default full), upload (default true), require_scanners/requireScanners optional. (3) get_kubbisec_scan_status with task_id/taskId until status is done, failed, or cancelled; list_kubbisec_scan_tasks or cancel_kubbisec_scan_task as needed. Requires kubbisec watch or kubbisec scan --watch on a developer machine with repo checkout — task stays pending until claimed. Findings upload with source=KUBBISEC_AI; filter via list_vulnerabilities source=KUBBISEC_AI. Docs: kubbisec://ai/scan, kubbisec://ai/scan-watch, kubbisec://ai/mcp-login. For immediate local scan without queue, user runs kubbisec scan in terminal (not an MCP tool).</flow>
10
+ <flow id="findings">Recommended flow: use resolve_project_by_repository with repository_url or repositoryUrl (Git URL or org/repo), then list_vulnerabilities with the same repository fields or project_id/projectId. Tools accept snake_case and camelCase interchangeably. To act on a finding, use get_vulnerability (MCP) or get_finding_summary / list_findings (assistant CLI), then generate_remediation_plan and, if you want automation, start_ai_remediation_run followed by get_ai_remediation_run_status/get_ai_remediation_run_logs (run_id or runId). Pass vulnerabilityId (or vulnerability_id) in tool arguments when using kbs chat — there is no separate set_active_finding tool.</flow>
11
+ <flow id="naus-cloud">Naus CI YAML in MCP: call validate_naus_pipeline_yaml before proposing or persisting YAML. Pipeline IDE flows (set_editor_yaml, trigger_run) are Platform Assistant only.</flow>
12
+ <flow id="naus-aspm-local">Naus / ASPM / git on the developer machine (kbs or kubbisec chat; no --extended-context required): naus_local_validate | naus_local_plan | naus_local_run; aspm_local_scan | aspm_local_upload | aspm_local_doctor; github_local_* uses host-first gh/git auth (platform token only as remediation fallback). Missing naus/aspm binaries auto-install @kubbisec/naus and @kubbisec/aspm globally via npm/pnpm (allowlist). Local naus run/plan: default .secrets and .env in cwd, or --env-file / --secret-file; naus_local_run and naus_local_plan accept envFiles/secretFiles arrays. Cloud runners use Env Packs instead. Runner enrollment: naus register / naus start — do not spawn long-lived daemons from MCP chat.</flow>
13
+ <flow id="kubbisec-scan">Hybrid local scan: MCP cannot run Pi/Superpowers on the host. (1) resolve_project_by_repository with repository_url or repositoryUrl (Git URL or org/repo), or project_id/projectId. (2) trigger_kubbisec_scan with profile quick|full|ci (default full), upload (default true), require_scanners/requireScanners optional. (3) get_kubbisec_scan_status with task_id/taskId until status is done, failed, or cancelled; list_kubbisec_scan_tasks or cancel_kubbisec_scan_task as needed. Requires kubbisec watch or kubbisec scan --watch on a developer machine with repo checkout — task stays pending until claimed. Findings upload with source=KUBBISEC_AI; filter via list_vulnerabilities source=KUBBISEC_AI. For immediate local scan without queue, user runs kubbisec scan in terminal (not an MCP tool).</flow>
14
14
  </flows>
15
15
 
16
16
  <intent-matrix>
17
17
  | Intent | Cloud (API/MCP) | Local (host CLI) |
18
- | Validate YAML | naus_validate_yaml | naus_local_validate |
19
- | Run pipeline | trigger_run | naus_local_run (prefer cloud for KubbiSec CI) |
18
+ | Validate YAML | validate_naus_pipeline_yaml | naus_local_validate |
19
+ | Run pipeline | trigger_run (assistant) | naus_local_run |
20
20
  | Dependency graph | — | naus_local_plan |
21
21
  | Upload scan report | CI / findings API | aspm_local_upload |
22
22
  | ASPM CLI health | — | aspm_local_doctor |
@@ -24,13 +24,12 @@ ${mental_map_1.KUBBISEC_PRODUCT_MENTAL_MAP_XML}
24
24
  | Scan status | get_kubbisec_scan_status | stdout / .kubbisec/scan/&lt;runId&gt;/ |
25
25
  | Filter AI findings | list_vulnerabilities + source=KUBBISEC_AI | — |
26
26
  | MCP auth | hosted OAuth / device login | kubbisec mcp login |
27
+ | Product docs | Platform Assistant / kubbisec chat | — |
27
28
  </intent-matrix>
28
29
 
29
30
  <rules>
30
- <rule id="superpowers-mcp">MCP agents must NOT invoke Pi/Superpowers skills or spawn kubbisec chat for scan orchestration. Read kubbisec://ai/* and kubbisec://naus/* for documentation only. Scan = trigger_kubbisec_scan; remediation = start_ai_remediation_run.</rule>
31
+ <rule id="superpowers-mcp">MCP agents must NOT invoke Pi/Superpowers skills or spawn kubbisec chat for scan orchestration. MCP has no documentation tools — use validate_naus_pipeline_yaml for YAML. Scan = trigger_kubbisec_scan; remediation = start_ai_remediation_run.</rule>
31
32
  <rule id="hosted-mcp">Hosted MCP endpoint: ${constants_1.KUBBISEC_HOSTED_MCP_URL} (OAuth2 for cloud IDEs). Local stdio: set KUBBISEC_ORGANIZATION_SLUG (preferred, e.g. minha-empresa) and KUBBISEC_API_KEY, or run kubbisec mcp login for device flow. Legacy KUBBISEC_ORGANIZATION_ID remains supported.</rule>
32
33
  </rules>
33
-
34
- <aspm>ASPM CLI: aspm_docs includes web guides plus docs/aspm/docker-cli (init, login, doctor, scan, upload).</aspm>
35
34
  </kubbisec-mcp-instructions>`;
36
35
  //# sourceMappingURL=mcp-instructions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-instructions.js","sourceRoot":"","sources":["../../../src/ai/product-knowledge/mcp-instructions.ts"],"names":[],"mappings":";;;AAAA,mDAA8D;AAC9D,6CAA+D;AAElD,QAAA,yBAAyB,GAAG;EACvC,4CAA+B;;;;;;;;;;;;;;;;;;;;;;;;+CAwBc,mCAAuB;;;;6BAIzC,CAAC"}
1
+ {"version":3,"file":"mcp-instructions.js","sourceRoot":"","sources":["../../../src/ai/product-knowledge/mcp-instructions.ts"],"names":[],"mappings":";;;AAAA,mDAA8D;AAC9D,6CAA+D;AAElD,QAAA,yBAAyB,GAAG;EACvC,4CAA+B;;;;;;;;;;;;;;;;;;;;;;;;;+CAyBc,mCAAuB;;6BAEzC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Always-on AI product knowledge map (pseudo-XML).
3
- * Keep under ~8k chars. Detail lives in tools / kubbisec:// resources.
3
+ * Keep under ~8k chars. Detail lives in MCP / assistant tools.
4
4
  */
5
- export declare const KUBBISEC_PRODUCT_MENTAL_MAP_XML = "<kubbisec-product-knowledge>\n <products>\n <product id=\"naus\" npm=\"@kubbisec/naus\" bin=\"naus\">KubbiSec CI engine: .naus.yml pipelines, runners, validate/plan/run. Cloud CI uses Env Packs; local run uses --env-file / --secret-file.</product>\n <product id=\"aspm\" npm=\"@kubbisec/aspm\" bin=\"aspm\">Security CLI: parse/upload scanner reports (trivy, gitleaks, syft, osv, semgrep, sonar, nmap, skipfish), coverage, gate.</product>\n <product id=\"ai\" npm=\"@kubbisec/ai\" bin=\"kubbisec\">CLI hub: login, findings (ls/show), fix/watch/chat, optional naus/aspm forwarding when binaries are on PATH.</product>\n </products>\n <boundaries>\n <boundary>NAUS YAML is NOT GitHub Actions: top-level run: (never jobs:); script: + depends_on: (never commands:/needs:/steps:); ASPM jobs use kind: aspm|aspm_matrix|aspm_gate with tool: (never scanner:).</boundary>\n <boundary>aspm-cicd.md / aspm_docs section aspm-cicd describe GitHub Actions only. For KubbiSec native CI use naus_pipeline_docs (naus-aspm-integration, naus-aspm-preset, naus-aspm-matrix, naus-aspm-gate).</boundary>\n <boundary>Do not mix CLIs: naus for pipelines/runners; aspm for scan upload/parse; kubbisec for AI remediation/chat. Org flag -o uses organization slug.</boundary>\n </boundaries>\n <anti-hallucination>\n <rule>HARD-GATE: never invent CLI flags or full command lines \u2014 call naus_pipeline_docs (naus-commands), aspm_docs (aspm-commands), kubbisec://ai/ai-commands, or security_scanner_playbook first.</rule>\n <rule>HARD-GATE: never output fenced NAUS pipeline YAML unless naus_validate_yaml (or naus_local_validate) returned ok in this session.</rule>\n <rule>HARD-GATE: never claim a tool/action succeeded without a successful tool_result in this turn.</rule>\n </anti-hallucination>\n <tool-routing>\n <route intent=\"platform-knowledge\">kubbisec_mcp_knowledge (start of naus/aspm/ai product questions)</route>\n <route intent=\"naus-docs-yaml\">naus_pipeline_docs \u2192 naus_schema_overview \u2192 naus_validate_yaml</route>\n <route intent=\"aspm-docs\">aspm_docs; scanners: security_scanners_catalog \u2192 security_scanner_playbook</route>\n <route intent=\"ai-cli-docs\">kubbisec://ai/* (ai-commands, ai-watch, ai-login)</route>\n <route intent=\"local-clis\">naus_local_* / aspm_local_* / github_local_* always available in chat (no --extended-context); github uses host-first auth; missing naus/aspm auto-install @kubbisec/naus|aspm</route>\n </tool-routing>\n</kubbisec-product-knowledge>";
5
+ export declare const KUBBISEC_PRODUCT_MENTAL_MAP_XML = "<kubbisec-product-knowledge>\n <products>\n <product id=\"naus\" npm=\"@kubbisec/naus\" bin=\"naus\">KubbiSec CI engine: .naus.yml pipelines, runners, validate/plan/run. Cloud CI uses Env Packs; local run uses --env-file / --secret-file.</product>\n <product id=\"aspm\" npm=\"@kubbisec/aspm\" bin=\"aspm\">Security CLI: parse/upload scanner reports (trivy, gitleaks, syft, osv, semgrep, sonar, nmap, skipfish), coverage, gate.</product>\n <product id=\"ai\" npm=\"@kubbisec/ai\" bin=\"kubbisec\">CLI hub: login, findings (ls/show), fix/watch/chat, optional naus/aspm forwarding when binaries are on PATH.</product>\n </products>\n <boundaries>\n <boundary>NAUS YAML is NOT GitHub Actions: top-level run: (never jobs:); script: + depends_on: (never commands:/needs:/steps:); ASPM jobs use kind: aspm|aspm_matrix|aspm_gate with tool: (never scanner:).</boundary>\n <boundary>aspm-cicd.md / aspm_docs section aspm-cicd describe GitHub Actions only. For KubbiSec native CI use naus_pipeline_docs (naus-aspm-integration, naus-aspm-preset, naus-aspm-matrix, naus-aspm-gate).</boundary>\n <boundary>Do not mix CLIs: naus for pipelines/runners; aspm for scan upload/parse; kubbisec for AI remediation/chat. Org flag -o uses organization slug.</boundary>\n </boundaries>\n <anti-hallucination>\n <rule>HARD-GATE: never invent CLI flags or full command lines \u2014 call naus_pipeline_docs (naus-commands), aspm_docs (aspm-commands), ai_docs (ai-commands), or security_scanner_playbook first.</rule>\n <rule>HARD-GATE: never output fenced NAUS pipeline YAML unless naus_validate_yaml (or naus_local_validate) returned ok in this session.</rule>\n <rule>HARD-GATE: never claim a tool/action succeeded without a successful tool_result in this turn.</rule>\n </anti-hallucination>\n <tool-routing>\n <route intent=\"platform-knowledge\">kubbisec_mcp_knowledge (start of naus/aspm/ai product questions)</route>\n <route intent=\"naus-docs-yaml\">naus_pipeline_docs \u2192 naus_schema_overview \u2192 validate_naus_pipeline_yaml</route>\n <route intent=\"aspm-docs\">aspm_docs; scanners: security_scanners_catalog \u2192 security_scanner_playbook</route>\n <route intent=\"ai-cli-docs\">ai_docs (ai-commands, ai-watch, mcp-login, scan, scan-watch)</route>\n <route intent=\"local-clis\">naus_local_* / aspm_local_* / github_local_* always available in chat (no --extended-context); github uses host-first auth; missing naus/aspm auto-install @kubbisec/naus|aspm</route>\n </tool-routing>\n</kubbisec-product-knowledge>";
6
6
  //# sourceMappingURL=mental-map.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mental-map.d.ts","sourceRoot":"","sources":["../../../src/ai/product-knowledge/mental-map.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,+BAA+B,++EAuBd,CAAC"}
1
+ {"version":3,"file":"mental-map.d.ts","sourceRoot":"","sources":["../../../src/ai/product-knowledge/mental-map.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,+BAA+B,+/EAuBd,CAAC"}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.KUBBISEC_PRODUCT_MENTAL_MAP_XML = void 0;
4
4
  /**
5
5
  * Always-on AI product knowledge map (pseudo-XML).
6
- * Keep under ~8k chars. Detail lives in tools / kubbisec:// resources.
6
+ * Keep under ~8k chars. Detail lives in MCP / assistant tools.
7
7
  */
8
8
  exports.KUBBISEC_PRODUCT_MENTAL_MAP_XML = `<kubbisec-product-knowledge>
9
9
  <products>
@@ -17,15 +17,15 @@ exports.KUBBISEC_PRODUCT_MENTAL_MAP_XML = `<kubbisec-product-knowledge>
17
17
  <boundary>Do not mix CLIs: naus for pipelines/runners; aspm for scan upload/parse; kubbisec for AI remediation/chat. Org flag -o uses organization slug.</boundary>
18
18
  </boundaries>
19
19
  <anti-hallucination>
20
- <rule>HARD-GATE: never invent CLI flags or full command lines — call naus_pipeline_docs (naus-commands), aspm_docs (aspm-commands), kubbisec://ai/ai-commands, or security_scanner_playbook first.</rule>
20
+ <rule>HARD-GATE: never invent CLI flags or full command lines — call naus_pipeline_docs (naus-commands), aspm_docs (aspm-commands), ai_docs (ai-commands), or security_scanner_playbook first.</rule>
21
21
  <rule>HARD-GATE: never output fenced NAUS pipeline YAML unless naus_validate_yaml (or naus_local_validate) returned ok in this session.</rule>
22
22
  <rule>HARD-GATE: never claim a tool/action succeeded without a successful tool_result in this turn.</rule>
23
23
  </anti-hallucination>
24
24
  <tool-routing>
25
25
  <route intent="platform-knowledge">kubbisec_mcp_knowledge (start of naus/aspm/ai product questions)</route>
26
- <route intent="naus-docs-yaml">naus_pipeline_docs → naus_schema_overview → naus_validate_yaml</route>
26
+ <route intent="naus-docs-yaml">naus_pipeline_docs → naus_schema_overview → validate_naus_pipeline_yaml</route>
27
27
  <route intent="aspm-docs">aspm_docs; scanners: security_scanners_catalog → security_scanner_playbook</route>
28
- <route intent="ai-cli-docs">kubbisec://ai/* (ai-commands, ai-watch, ai-login)</route>
28
+ <route intent="ai-cli-docs">ai_docs (ai-commands, ai-watch, mcp-login, scan, scan-watch)</route>
29
29
  <route intent="local-clis">naus_local_* / aspm_local_* / github_local_* always available in chat (no --extended-context); github uses host-first auth; missing naus/aspm auto-install @kubbisec/naus|aspm</route>
30
30
  </tool-routing>
31
31
  </kubbisec-product-knowledge>`;
@@ -0,0 +1,15 @@
1
+ import { CreateProjectDto } from "./create-project.dto";
2
+ export declare const BULK_IMPORT_BITBUCKET_PIPELINE_MODES: readonly ["none", "ai", "ai_migrate", "template", "secure_baseline"];
3
+ export type BulkImportBitbucketPipelineMode = (typeof BULK_IMPORT_BITBUCKET_PIPELINE_MODES)[number];
4
+ export declare class BulkImportBitbucketProjectRowDto extends CreateProjectDto {
5
+ pipelineMode?: BulkImportBitbucketPipelineMode;
6
+ templateKey?: string;
7
+ pipelinePaths?: string[];
8
+ }
9
+ export declare class BulkImportBitbucketProjectsDto {
10
+ projects: BulkImportBitbucketProjectRowDto[];
11
+ pipelineMode?: BulkImportBitbucketPipelineMode;
12
+ templateKey?: string;
13
+ }
14
+ export declare const BULK_IMPORT_BITBUCKET_PROJECTS_MAX = 50;
15
+ //# sourceMappingURL=bulk-import-bitbucket-projects.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk-import-bitbucket-projects.dto.d.ts","sourceRoot":"","sources":["../../src/dto/bulk-import-bitbucket-projects.dto.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD,eAAO,MAAM,oCAAoC,sEAMvC,CAAC;AAEX,MAAM,MAAM,+BAA+B,GAAG,CAAC,OAAO,oCAAoC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpG,qBAAa,gCAAiC,SAAQ,gBAAgB;IAGpE,YAAY,CAAC,EAAE,+BAA+B,CAAC;IAK/C,WAAW,CAAC,EAAE,MAAM,CAAC;IAOrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,qBAAa,8BAA8B;IAMzC,QAAQ,EAAG,gCAAgC,EAAE,CAAC;IAI9C,YAAY,CAAC,EAAE,+BAA+B,CAAC;IAK/C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,kCAAkC,KAA2B,CAAC"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.BULK_IMPORT_BITBUCKET_PROJECTS_MAX = exports.BulkImportBitbucketProjectsDto = exports.BulkImportBitbucketProjectRowDto = exports.BULK_IMPORT_BITBUCKET_PIPELINE_MODES = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const create_project_dto_1 = require("./create-project.dto");
16
+ const BULK_IMPORT_MAX_PROJECTS = 50;
17
+ exports.BULK_IMPORT_BITBUCKET_PIPELINE_MODES = [
18
+ "none",
19
+ "ai",
20
+ "ai_migrate",
21
+ "template",
22
+ "secure_baseline",
23
+ ];
24
+ class BulkImportBitbucketProjectRowDto extends create_project_dto_1.CreateProjectDto {
25
+ pipelineMode;
26
+ templateKey;
27
+ pipelinePaths;
28
+ }
29
+ exports.BulkImportBitbucketProjectRowDto = BulkImportBitbucketProjectRowDto;
30
+ __decorate([
31
+ (0, class_validator_1.IsOptional)(),
32
+ (0, class_validator_1.IsIn)(exports.BULK_IMPORT_BITBUCKET_PIPELINE_MODES),
33
+ __metadata("design:type", String)
34
+ ], BulkImportBitbucketProjectRowDto.prototype, "pipelineMode", void 0);
35
+ __decorate([
36
+ (0, class_validator_1.IsOptional)(),
37
+ (0, class_validator_1.IsString)(),
38
+ (0, class_validator_1.MaxLength)(64),
39
+ __metadata("design:type", String)
40
+ ], BulkImportBitbucketProjectRowDto.prototype, "templateKey", void 0);
41
+ __decorate([
42
+ (0, class_validator_1.IsOptional)(),
43
+ (0, class_validator_1.IsArray)(),
44
+ (0, class_validator_1.ArrayMaxSize)(30),
45
+ (0, class_validator_1.IsString)({ each: true }),
46
+ (0, class_validator_1.MaxLength)(260, { each: true }),
47
+ __metadata("design:type", Array)
48
+ ], BulkImportBitbucketProjectRowDto.prototype, "pipelinePaths", void 0);
49
+ class BulkImportBitbucketProjectsDto {
50
+ projects;
51
+ pipelineMode;
52
+ templateKey;
53
+ }
54
+ exports.BulkImportBitbucketProjectsDto = BulkImportBitbucketProjectsDto;
55
+ __decorate([
56
+ (0, class_validator_1.IsArray)(),
57
+ (0, class_validator_1.ArrayMinSize)(1, { message: "bulkImport.projectsMin" }),
58
+ (0, class_validator_1.ArrayMaxSize)(BULK_IMPORT_MAX_PROJECTS, { message: "bulkImport.projectsMax" }),
59
+ (0, class_validator_1.ValidateNested)({ each: true }),
60
+ (0, class_transformer_1.Type)(() => BulkImportBitbucketProjectRowDto),
61
+ __metadata("design:type", Array)
62
+ ], BulkImportBitbucketProjectsDto.prototype, "projects", void 0);
63
+ __decorate([
64
+ (0, class_validator_1.IsOptional)(),
65
+ (0, class_validator_1.IsIn)(exports.BULK_IMPORT_BITBUCKET_PIPELINE_MODES),
66
+ __metadata("design:type", String)
67
+ ], BulkImportBitbucketProjectsDto.prototype, "pipelineMode", void 0);
68
+ __decorate([
69
+ (0, class_validator_1.IsOptional)(),
70
+ (0, class_validator_1.IsString)(),
71
+ (0, class_validator_1.MaxLength)(64),
72
+ __metadata("design:type", String)
73
+ ], BulkImportBitbucketProjectsDto.prototype, "templateKey", void 0);
74
+ exports.BULK_IMPORT_BITBUCKET_PROJECTS_MAX = BULK_IMPORT_MAX_PROJECTS;
75
+ //# sourceMappingURL=bulk-import-bitbucket-projects.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk-import-bitbucket-projects.dto.js","sourceRoot":"","sources":["../../src/dto/bulk-import-bitbucket-projects.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAyC;AACzC,qDASyB;AACzB,6DAAwD;AAExD,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAEvB,QAAA,oCAAoC,GAAG;IAClD,MAAM;IACN,IAAI;IACJ,YAAY;IACZ,UAAU;IACV,iBAAiB;CACT,CAAC;AAIX,MAAa,gCAAiC,SAAQ,qCAAgB;IAGpE,YAAY,CAAmC;IAK/C,WAAW,CAAU;IAOrB,aAAa,CAAY;CAC1B;AAhBD,4EAgBC;AAbC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,sBAAI,EAAC,4CAAoC,CAAC;;sEACI;AAK/C;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,EAAE,CAAC;;qEACO;AAOrB;IALC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;IACT,IAAA,8BAAY,EAAC,EAAE,CAAC;IAChB,IAAA,0BAAQ,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,IAAA,2BAAS,EAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;uEACN;AAG3B,MAAa,8BAA8B;IAMzC,QAAQ,CAAsC;IAI9C,YAAY,CAAmC;IAK/C,WAAW,CAAU;CACtB;AAhBD,wEAgBC;AAVC;IALC,IAAA,yBAAO,GAAE;IACT,IAAA,8BAAY,EAAC,CAAC,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACtD,IAAA,8BAAY,EAAC,wBAAwB,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;IAC7E,IAAA,gCAAc,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,gCAAgC,CAAC;;gEACC;AAI9C;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,sBAAI,EAAC,4CAAoC,CAAC;;oEACI;AAK/C;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,EAAE,CAAC;;mEACO;AAGV,QAAA,kCAAkC,GAAG,wBAAwB,CAAC"}
@@ -1,3 +1,4 @@
1
+ export { BULK_IMPORT_BITBUCKET_PROJECTS_MAX, BulkImportBitbucketProjectRowDto, BulkImportBitbucketProjectsDto, } from "./bulk-import-bitbucket-projects.dto";
1
2
  export { BULK_IMPORT_GITHUB_PROJECTS_MAX, BulkImportGithubProjectRowDto, BulkImportGithubProjectsDto, } from "./bulk-import-github-projects.dto";
2
3
  export { BundleEntryDto, CreateBundleReportDto } from "./create-bundle-report.dto";
3
4
  export { CoverageFileDetailDto, CreateCoverageReportDto } from "./create-coverage-report.dto";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EACL,sBAAsB,EACtB,8BAA8B,GAC/B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,6BAA6B,EAC7B,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,gCAAgC,EAChC,8BAA8B,GAC/B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EACL,sBAAsB,EACtB,8BAA8B,GAC/B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,6BAA6B,EAC7B,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UpdateVulnerabilityDto = exports.UpdateSecurityGateDto = exports.UpdateProjectDto = exports.UpdatePerformanceGateDto = exports.UpdateCoverageGateDto = exports.RecordGateResultDto = exports.UploadSessionStatus = exports.PlanType = exports.IngestionQueueName = exports.ErrorCategory = exports.EnterpriseVulnerabilityDataDto = exports.CreateVulnerabilityDto = exports.CreateScanTargetDto = exports.ExecutionContextDto = exports.CreateReportDto = exports.CreateProjectDto = exports.ASSET_TYPES = exports.ASSET_POLICY_LEVELS = exports.ASSET_EXPOSURES = exports.ASSET_ENVIRONMENTS = exports.ASSET_CRITICALITIES = exports.ASSET_CI_PROVIDERS = exports.CreateCoverageReportDto = exports.CoverageFileDetailDto = exports.CreateBundleReportDto = exports.BundleEntryDto = exports.BulkImportGithubProjectsDto = exports.BulkImportGithubProjectRowDto = exports.BULK_IMPORT_GITHUB_PROJECTS_MAX = void 0;
3
+ exports.UpdateVulnerabilityDto = exports.UpdateSecurityGateDto = exports.UpdateProjectDto = exports.UpdatePerformanceGateDto = exports.UpdateCoverageGateDto = exports.RecordGateResultDto = exports.UploadSessionStatus = exports.PlanType = exports.IngestionQueueName = exports.ErrorCategory = exports.EnterpriseVulnerabilityDataDto = exports.CreateVulnerabilityDto = exports.CreateScanTargetDto = exports.ExecutionContextDto = exports.CreateReportDto = exports.CreateProjectDto = exports.ASSET_TYPES = exports.ASSET_POLICY_LEVELS = exports.ASSET_EXPOSURES = exports.ASSET_ENVIRONMENTS = exports.ASSET_CRITICALITIES = exports.ASSET_CI_PROVIDERS = exports.CreateCoverageReportDto = exports.CoverageFileDetailDto = exports.CreateBundleReportDto = exports.BundleEntryDto = exports.BulkImportGithubProjectsDto = exports.BulkImportGithubProjectRowDto = exports.BULK_IMPORT_GITHUB_PROJECTS_MAX = exports.BulkImportBitbucketProjectsDto = exports.BulkImportBitbucketProjectRowDto = exports.BULK_IMPORT_BITBUCKET_PROJECTS_MAX = void 0;
4
+ var bulk_import_bitbucket_projects_dto_1 = require("./bulk-import-bitbucket-projects.dto");
5
+ Object.defineProperty(exports, "BULK_IMPORT_BITBUCKET_PROJECTS_MAX", { enumerable: true, get: function () { return bulk_import_bitbucket_projects_dto_1.BULK_IMPORT_BITBUCKET_PROJECTS_MAX; } });
6
+ Object.defineProperty(exports, "BulkImportBitbucketProjectRowDto", { enumerable: true, get: function () { return bulk_import_bitbucket_projects_dto_1.BulkImportBitbucketProjectRowDto; } });
7
+ Object.defineProperty(exports, "BulkImportBitbucketProjectsDto", { enumerable: true, get: function () { return bulk_import_bitbucket_projects_dto_1.BulkImportBitbucketProjectsDto; } });
4
8
  var bulk_import_github_projects_dto_1 = require("./bulk-import-github-projects.dto");
5
9
  Object.defineProperty(exports, "BULK_IMPORT_GITHUB_PROJECTS_MAX", { enumerable: true, get: function () { return bulk_import_github_projects_dto_1.BULK_IMPORT_GITHUB_PROJECTS_MAX; } });
6
10
  Object.defineProperty(exports, "BulkImportGithubProjectRowDto", { enumerable: true, get: function () { return bulk_import_github_projects_dto_1.BulkImportGithubProjectRowDto; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dto/index.ts"],"names":[],"mappings":";;;AAAA,qFAI2C;AAHzC,kJAAA,+BAA+B,OAAA;AAC/B,gJAAA,6BAA6B,OAAA;AAC7B,8IAAA,2BAA2B,OAAA;AAE7B,uEAAmF;AAA1E,0HAAA,cAAc,OAAA;AAAE,iIAAA,qBAAqB,OAAA;AAC9C,2EAA8F;AAArF,mIAAA,qBAAqB,OAAA;AAAE,qIAAA,uBAAuB,OAAA;AACvD,2DAc8B;AAb5B,wHAAA,kBAAkB,OAAA;AAClB,yHAAA,mBAAmB,OAAA;AACnB,wHAAA,kBAAkB,OAAA;AAClB,qHAAA,eAAe,OAAA;AACf,yHAAA,mBAAmB,OAAA;AACnB,iHAAA,WAAW,OAAA;AAOX,sHAAA,gBAAgB,OAAA;AAElB,yDAA2E;AAAlE,oHAAA,eAAe,OAAA;AAAE,wHAAA,mBAAmB,OAAA;AAC7C,mEAA+D;AAAtD,6HAAA,mBAAmB,OAAA;AAC5B,uEAGoC;AAFlC,kIAAA,sBAAsB,OAAA;AACtB,0IAAA,8BAA8B,OAAA;AAehC,6CAKuB;AAJrB,4GAAA,aAAa,OAAA;AACb,iHAAA,kBAAkB,OAAA;AAClB,uGAAA,QAAQ,OAAA;AACR,kHAAA,mBAAmB,OAAA;AAErB,mEAA+D;AAAtD,6HAAA,mBAAmB,OAAA;AAC5B,uEAAmE;AAA1D,iIAAA,qBAAqB,OAAA;AAC9B,6EAAyE;AAAhE,uIAAA,wBAAwB,OAAA;AACjC,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,uEAAmE;AAA1D,iIAAA,qBAAqB,OAAA;AAC9B,uEAAoE;AAA3D,kIAAA,sBAAsB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dto/index.ts"],"names":[],"mappings":";;;AAAA,2FAI8C;AAH5C,wJAAA,kCAAkC,OAAA;AAClC,sJAAA,gCAAgC,OAAA;AAChC,oJAAA,8BAA8B,OAAA;AAEhC,qFAI2C;AAHzC,kJAAA,+BAA+B,OAAA;AAC/B,gJAAA,6BAA6B,OAAA;AAC7B,8IAAA,2BAA2B,OAAA;AAE7B,uEAAmF;AAA1E,0HAAA,cAAc,OAAA;AAAE,iIAAA,qBAAqB,OAAA;AAC9C,2EAA8F;AAArF,mIAAA,qBAAqB,OAAA;AAAE,qIAAA,uBAAuB,OAAA;AACvD,2DAc8B;AAb5B,wHAAA,kBAAkB,OAAA;AAClB,yHAAA,mBAAmB,OAAA;AACnB,wHAAA,kBAAkB,OAAA;AAClB,qHAAA,eAAe,OAAA;AACf,yHAAA,mBAAmB,OAAA;AACnB,iHAAA,WAAW,OAAA;AAOX,sHAAA,gBAAgB,OAAA;AAElB,yDAA2E;AAAlE,oHAAA,eAAe,OAAA;AAAE,wHAAA,mBAAmB,OAAA;AAC7C,mEAA+D;AAAtD,6HAAA,mBAAmB,OAAA;AAC5B,uEAGoC;AAFlC,kIAAA,sBAAsB,OAAA;AACtB,0IAAA,8BAA8B,OAAA;AAehC,6CAKuB;AAJrB,4GAAA,aAAa,OAAA;AACb,iHAAA,kBAAkB,OAAA;AAClB,uGAAA,QAAQ,OAAA;AACR,kHAAA,mBAAmB,OAAA;AAErB,mEAA+D;AAAtD,6HAAA,mBAAmB,OAAA;AAC5B,uEAAmE;AAA1D,iIAAA,qBAAqB,OAAA;AAC9B,6EAAyE;AAAhE,uIAAA,wBAAwB,OAAA;AACjC,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,uEAAmE;AAA1D,iIAAA,qBAAqB,OAAA;AAC9B,uEAAoE;AAA3D,kIAAA,sBAAsB,OAAA"}
@@ -10,6 +10,7 @@ export * from "./enums";
10
10
  export * from "./github/kubbisec-github-label";
11
11
  export * from "./mcp/constants";
12
12
  export * from "./mcp/oauth-metadata";
13
+ export * from "./product-docs";
13
14
  export * from "./project-scanner-summary";
14
15
  export * from "./rbac";
15
16
  export * from "./redaction";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,MAAM,CAAC;AACrB,cAAc,kBAAkB,CAAC;AACjC,cAAc,OAAO,CAAC;AACtB,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,MAAM,CAAC;AACrB,cAAc,kBAAkB,CAAC;AACjC,cAAc,OAAO,CAAC;AACtB,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
@@ -26,6 +26,7 @@ __exportStar(require("./enums"), exports);
26
26
  __exportStar(require("./github/kubbisec-github-label"), exports);
27
27
  __exportStar(require("./mcp/constants"), exports);
28
28
  __exportStar(require("./mcp/oauth-metadata"), exports);
29
+ __exportStar(require("./product-docs"), exports);
29
30
  __exportStar(require("./project-scanner-summary"), exports);
30
31
  __exportStar(require("./rbac"), exports);
31
32
  __exportStar(require("./redaction"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uCAAqB;AACrB,4CAA0B;AAC1B,8CAA4B;AAC5B,4CAA0B;AAC1B,uCAAqB;AACrB,mDAAiC;AACjC,wCAAsB;AACtB,oDAAkC;AAClC,0CAAwB;AACxB,iEAA+C;AAC/C,kDAAgC;AAChC,uDAAqC;AACrC,4DAA0C;AAC1C,yCAAuB;AACvB,8CAA4B;AAC5B,6CAA2B;AAC3B,iDAA+B;AAC/B,mDAAiC;AACjC,sDAAoC;AACpC,kDAAgC;AAChC,iDAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uCAAqB;AACrB,4CAA0B;AAC1B,8CAA4B;AAC5B,4CAA0B;AAC1B,uCAAqB;AACrB,mDAAiC;AACjC,wCAAsB;AACtB,oDAAkC;AAClC,0CAAwB;AACxB,iEAA+C;AAC/C,kDAAgC;AAChC,uDAAqC;AACrC,iDAA+B;AAC/B,4DAA0C;AAC1C,yCAAuB;AACvB,8CAA4B;AAC5B,6CAA2B;AAC3B,iDAA+B;AAC/B,mDAAiC;AACjC,sDAAoC;AACpC,kDAAgC;AAChC,iDAA+B"}
@@ -0,0 +1,6 @@
1
+ export declare function loadAiDocsBundleFromDisk(): Promise<{
2
+ bundle: string;
3
+ sourceDir: string | null;
4
+ triedPaths: string[];
5
+ }>;
6
+ //# sourceMappingURL=ai-docs-bundle.loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-docs-bundle.loader.d.ts","sourceRoot":"","sources":["../../src/product-docs/ai-docs-bundle.loader.ts"],"names":[],"mappings":"AAuCA,wBAAsB,wBAAwB,IAAI,OAAO,CAAC;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC,CA6BD"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadAiDocsBundleFromDisk = loadAiDocsBundleFromDisk;
4
+ const node_fs_1 = require("node:fs");
5
+ const promises_1 = require("node:fs/promises");
6
+ const node_path_1 = require("node:path");
7
+ const monorepo_root_js_1 = require("./monorepo-root.js");
8
+ function listAiDocDirCandidates() {
9
+ const out = [];
10
+ const add = (p) => {
11
+ if (!out.includes(p))
12
+ out.push(p);
13
+ };
14
+ const envDir = process.env.AI_DOCS_DIR?.trim();
15
+ if (envDir)
16
+ add(envDir);
17
+ const mcpSynced = process.env.MCP_DOCS_CONTENT_ROOT?.trim();
18
+ if (mcpSynced)
19
+ add((0, node_path_1.join)(mcpSynced, "ai"));
20
+ const root = (0, monorepo_root_js_1.monorepoRootFromSharedModule)();
21
+ add((0, node_path_1.join)(root, "apps", "mcp", "src", "resources", "content", "ai"));
22
+ add((0, node_path_1.join)(root, "apps", "mcp", "dist", "resources", "content", "ai"));
23
+ add((0, node_path_1.join)(root, "apps", "web", "src", "pages", "private", "docs", "content", "ai"));
24
+ const cwd = process.cwd();
25
+ add((0, node_path_1.join)(cwd, "apps", "web", "src", "pages", "private", "docs", "content", "ai"));
26
+ add((0, node_path_1.join)(cwd, "src", "resources", "content", "ai"));
27
+ add((0, node_path_1.join)(cwd, "resources", "content", "ai"));
28
+ add((0, node_path_1.join)(cwd, "..", "apps", "web", "src", "pages", "private", "docs", "content", "ai"));
29
+ add((0, node_path_1.join)(cwd, "..", "..", "apps", "web", "src", "pages", "private", "docs", "content", "ai"));
30
+ return out;
31
+ }
32
+ function listAiMarkdownIds(dir) {
33
+ return (0, node_fs_1.readdirSync)(dir)
34
+ .filter((name) => name.endsWith(".md") && name !== "index.md")
35
+ .map((name) => name.replace(/\.md$/u, ""))
36
+ .sort((a, b) => a.localeCompare(b));
37
+ }
38
+ async function loadAiDocsBundleFromDisk() {
39
+ const candidates = listAiDocDirCandidates();
40
+ for (const dir of candidates) {
41
+ if (!(0, node_fs_1.existsSync)(dir))
42
+ continue;
43
+ const ids = listAiMarkdownIds(dir);
44
+ if (ids.length === 0)
45
+ continue;
46
+ const chunks = [];
47
+ for (const id of ids) {
48
+ const fp = (0, node_path_1.join)(dir, `${id}.md`);
49
+ if (!(0, node_fs_1.existsSync)(fp))
50
+ continue;
51
+ const text = await (0, promises_1.readFile)(fp, "utf8");
52
+ chunks.push(`## ai/${id}.md\n\n${text.trim()}\n`);
53
+ }
54
+ if (chunks.length > 0) {
55
+ return {
56
+ bundle: chunks.join("\n---\n\n"),
57
+ sourceDir: dir,
58
+ triedPaths: candidates,
59
+ };
60
+ }
61
+ }
62
+ return {
63
+ bundle: "",
64
+ sourceDir: null,
65
+ triedPaths: candidates,
66
+ };
67
+ }
68
+ //# sourceMappingURL=ai-docs-bundle.loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-docs-bundle.loader.js","sourceRoot":"","sources":["../../src/product-docs/ai-docs-bundle.loader.ts"],"names":[],"mappings":";;AAuCA,4DAiCC;AAxED,qCAAkD;AAClD,+CAA4C;AAC5C,yCAAiC;AACjC,yDAAkE;AAElE,SAAS,sBAAsB;IAC7B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE;QACxB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IAC/C,IAAI,MAAM;QAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAExB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAC;IAC5D,IAAI,SAAS;QAAE,GAAG,CAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAE1C,MAAM,IAAI,GAAG,IAAA,+CAA4B,GAAE,CAAC;IAC5C,GAAG,CAAC,IAAA,gBAAI,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IACpE,GAAG,CAAC,IAAA,gBAAI,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IACrE,GAAG,CAAC,IAAA,gBAAI,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAEnF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,GAAG,CAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAClF,GAAG,CAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IACpD,GAAG,CAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7C,GAAG,CAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IACxF,GAAG,CAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAE9F,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,OAAO,IAAA,qBAAW,EAAC,GAAG,CAAC;SACpB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,UAAU,CAAC;SAC7D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SACzC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC;AAEM,KAAK,UAAU,wBAAwB;IAK5C,MAAM,UAAU,GAAG,sBAAsB,EAAE,CAAC;IAC5C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAA,oBAAU,EAAC,GAAG,CAAC;YAAE,SAAS;QAC/B,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAE/B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,MAAM,EAAE,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,IAAA,oBAAU,EAAC,EAAE,CAAC;gBAAE,SAAS;YAC9B,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAQ,EAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBAChC,SAAS,EAAE,GAAG;gBACd,UAAU,EAAE,UAAU;aACvB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,UAAU;KACvB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ /** Markdown under apps/web private docs — overview first. */
2
+ export declare const ASPM_DOC_FILES: readonly ["aspm-quickstart.md", "aspm-login.md", "aspm-scan.md", "aspm-upload.md", "aspm-parse.md", "aspm-cicd.md", "aspm-commands.md", "aspm-gate.md", "aspm-coverage.md", "aspm-api-keys.md", "aspm-scanner-trivy.md", "aspm-scanner-gitleaks.md", "aspm-scanner-syft.md", "aspm-scanner-osv.md", "aspm-scanner-semgrep.md", "aspm-scanner-sonar.md", "aspm-scanner-nmap.md", "aspm-scanner-skipfish.md", "aspm-multiple-scanners.md", "aspm-troubleshooting.md"];
3
+ export declare function loadAspmDocsBundleFromDisk(): Promise<{
4
+ bundle: string;
5
+ sourceDir: string | null;
6
+ triedPaths: string[];
7
+ }>;
8
+ //# sourceMappingURL=aspm-docs-bundle.loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aspm-docs-bundle.loader.d.ts","sourceRoot":"","sources":["../../src/product-docs/aspm-docs-bundle.loader.ts"],"names":[],"mappings":"AAKA,6DAA6D;AAC7D,eAAO,MAAM,cAAc,qcAqBjB,CAAC;AAoDX,wBAAsB,0BAA0B,IAAI,OAAO,CAAC;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC,CAmCD"}