endorlabs 0.2.0__tar.gz

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 (673) hide show
  1. endorlabs-0.2.0/.cursor/rules/agent-knowledge-authoring.mdc +31 -0
  2. endorlabs-0.2.0/.cursor/rules/docs-skillbase-consistency.mdc +22 -0
  3. endorlabs-0.2.0/.cursor/rules/endor-changelog.mdc +95 -0
  4. endorlabs-0.2.0/.cursor/rules/endor-list-query-performance.mdc +45 -0
  5. endorlabs-0.2.0/.cursor/rules/endor-local-context.mdc +44 -0
  6. endorlabs-0.2.0/.cursor/rules/endor-namespace-scoping.mdc +43 -0
  7. endorlabs-0.2.0/.cursor/rules/endor-portable-examples.mdc +45 -0
  8. endorlabs-0.2.0/.cursor/rules/endor-workflow-composition.mdc +74 -0
  9. endorlabs-0.2.0/.cursor/rules/endor-workspace-layout.mdc +61 -0
  10. endorlabs-0.2.0/.cursorignore +17 -0
  11. endorlabs-0.2.0/.github/CODEOWNERS +30 -0
  12. endorlabs-0.2.0/.github/actions/release-build-gate/action.yml +68 -0
  13. endorlabs-0.2.0/.github/actions/setup-python-uv/action.yml +34 -0
  14. endorlabs-0.2.0/.github/copilot-instructions.md +21 -0
  15. endorlabs-0.2.0/.github/pull_request_template.md +23 -0
  16. endorlabs-0.2.0/.github/scripts/check_endorctl_version.py +263 -0
  17. endorlabs-0.2.0/.github/workflows/ci-pr-main.yml +515 -0
  18. endorlabs-0.2.0/.github/workflows/release-pypi.yml +139 -0
  19. endorlabs-0.2.0/.github/workflows/release-tag-publish.yml +215 -0
  20. endorlabs-0.2.0/.github/workflows/release-testpypi.yml +125 -0
  21. endorlabs-0.2.0/.gitignore +80 -0
  22. endorlabs-0.2.0/.gitleaksignore +4 -0
  23. endorlabs-0.2.0/.pre-commit-config.yaml +201 -0
  24. endorlabs-0.2.0/AGENTS.md +113 -0
  25. endorlabs-0.2.0/CONTRIBUTORS.md +176 -0
  26. endorlabs-0.2.0/LICENSE +21 -0
  27. endorlabs-0.2.0/PKG-INFO +232 -0
  28. endorlabs-0.2.0/README.md +193 -0
  29. endorlabs-0.2.0/agent-knowledge/INDEX.md +116 -0
  30. endorlabs-0.2.0/agent-knowledge/README.md +75 -0
  31. endorlabs-0.2.0/agent-knowledge/contracts/canonical-naming.md +14 -0
  32. endorlabs-0.2.0/agent-knowledge/contracts/dependency-metadata.md +27 -0
  33. endorlabs-0.2.0/agent-knowledge/contracts/errors-and-auth.md +32 -0
  34. endorlabs-0.2.0/agent-knowledge/contracts/list-parameters.md +54 -0
  35. endorlabs-0.2.0/agent-knowledge/rules/endor-changelog.md +88 -0
  36. endorlabs-0.2.0/agent-knowledge/rules/endor-list-query-performance.md +45 -0
  37. endorlabs-0.2.0/agent-knowledge/rules/endor-local-context.md +37 -0
  38. endorlabs-0.2.0/agent-knowledge/rules/endor-namespace-scoping.md +42 -0
  39. endorlabs-0.2.0/agent-knowledge/rules/endor-portable-examples.md +38 -0
  40. endorlabs-0.2.0/agent-knowledge/rules/endor-workflow-composition.md +67 -0
  41. endorlabs-0.2.0/agent-knowledge/rules/endor-workspace-layout.md +53 -0
  42. endorlabs-0.2.0/agent-knowledge/schema/README.md +172 -0
  43. endorlabs-0.2.0/agent-knowledge/schema/SKILL.md +38 -0
  44. endorlabs-0.2.0/agent-knowledge/schema/changelog-intake.schema.json +42 -0
  45. endorlabs-0.2.0/agent-knowledge/schema/contract.schema.json +23 -0
  46. endorlabs-0.2.0/agent-knowledge/schema/rule.schema.json +28 -0
  47. endorlabs-0.2.0/agent-knowledge/schema/skill.schema.json +75 -0
  48. endorlabs-0.2.0/agent-knowledge/schema/workflows.schema.json +59 -0
  49. endorlabs-0.2.0/agent-knowledge/skills/endor-custom-sast-rules/AUTHORING.md +311 -0
  50. endorlabs-0.2.0/agent-knowledge/skills/endor-custom-sast-rules/IMPORT_EXPORT.md +453 -0
  51. endorlabs-0.2.0/agent-knowledge/skills/endor-custom-sast-rules/SEMGREP_RULE_SHAPE_GUARDRAILS.md +60 -0
  52. endorlabs-0.2.0/agent-knowledge/skills/endor-custom-sast-rules/SKILL.md +121 -0
  53. endorlabs-0.2.0/agent-knowledge/skills/endor-custom-sast-rules/SYNTAX_REFERENCE.md +411 -0
  54. endorlabs-0.2.0/agent-knowledge/skills/endor-custom-sast-rules/scripts/sast_rule_manager.py +1014 -0
  55. endorlabs-0.2.0/agent-knowledge/skills/endor-dependency-finding-provenance/SKILL.md +193 -0
  56. endorlabs-0.2.0/agent-knowledge/skills/endor-dependency-provenance/SKILL.md +66 -0
  57. endorlabs-0.2.0/agent-knowledge/skills/endor-fetch-and-search-call-graph/CALL_GRAPH_FORMAT_AND_SEARCH.md +102 -0
  58. endorlabs-0.2.0/agent-knowledge/skills/endor-fetch-and-search-call-graph/SKILL.md +124 -0
  59. endorlabs-0.2.0/agent-knowledge/skills/endor-implement-sdk-resource/SKILL.md +67 -0
  60. endorlabs-0.2.0/agent-knowledge/skills/endor-model-sync-drift/SKILL.md +86 -0
  61. endorlabs-0.2.0/agent-knowledge/skills/endor-namespace-relationship-map/SKILL.md +87 -0
  62. endorlabs-0.2.0/agent-knowledge/skills/endor-project-retrieval-bundle/MULTIPASS_LLM_CONTRACT.md +54 -0
  63. endorlabs-0.2.0/agent-knowledge/skills/endor-project-retrieval-bundle/SKILL.md +100 -0
  64. endorlabs-0.2.0/agent-knowledge/skills/endor-reachability-provenance/SKILL.md +172 -0
  65. endorlabs-0.2.0/agent-knowledge/skills/endor-reachability-provenance/examples.md +54 -0
  66. endorlabs-0.2.0/agent-knowledge/skills/endor-retrieve-scan-results/SKILL.md +180 -0
  67. endorlabs-0.2.0/agent-knowledge/skills/endor-sso-integration-validation-troubleshooting/README.md +14 -0
  68. endorlabs-0.2.0/agent-knowledge/skills/endor-sso-integration-validation-troubleshooting/SKILL.md +105 -0
  69. endorlabs-0.2.0/agent-knowledge/skills/endor-sso-integration-validation-troubleshooting/sso_access_spotcheck.py +315 -0
  70. endorlabs-0.2.0/agent-knowledge/skills/endor-troubleshoot-authlog/SKILL.md +69 -0
  71. endorlabs-0.2.0/agent-knowledge/skills/endor-troubleshoot-sdk/KNOWN_ISSUES.md +172 -0
  72. endorlabs-0.2.0/agent-knowledge/skills/endor-troubleshoot-sdk/SKILL.md +119 -0
  73. endorlabs-0.2.0/agent-knowledge/skills/endor-troubleshooting-scans/SKILL.md +191 -0
  74. endorlabs-0.2.0/agent-knowledge/skills/endor-validate-policy/API.md +106 -0
  75. endorlabs-0.2.0/agent-knowledge/skills/endor-validate-policy/ENDORCTL.md +45 -0
  76. endorlabs-0.2.0/agent-knowledge/skills/endor-validate-policy/SKILL.md +162 -0
  77. endorlabs-0.2.0/agent-knowledge/workflows.yaml +27 -0
  78. endorlabs-0.2.0/devtools/README.md +15 -0
  79. endorlabs-0.2.0/devtools/agent_knowledge_catalog.py +444 -0
  80. endorlabs-0.2.0/devtools/check_vcs_version.py +137 -0
  81. endorlabs-0.2.0/devtools/generate_client_stub.py +625 -0
  82. endorlabs-0.2.0/devtools/generate_reference_docs.py +617 -0
  83. endorlabs-0.2.0/devtools/generate_resource_reference_pages.py +326 -0
  84. endorlabs-0.2.0/devtools/history_purge_audit.py +169 -0
  85. endorlabs-0.2.0/devtools/history_purge_verify.py +101 -0
  86. endorlabs-0.2.0/devtools/model_sync.py +14 -0
  87. endorlabs-0.2.0/devtools/model_sync_profiles/aliases.json +5 -0
  88. endorlabs-0.2.0/devtools/model_sync_profiles/base_class_map.json +5 -0
  89. endorlabs-0.2.0/devtools/model_sync_profiles/enum_policy.json +6 -0
  90. endorlabs-0.2.0/devtools/model_sync_profiles/partition_rules.json +8 -0
  91. endorlabs-0.2.0/devtools/model_sync_profiles/resource_descriptions.json +38 -0
  92. endorlabs-0.2.0/devtools/model_sync_profiles/resource_related.json +10 -0
  93. endorlabs-0.2.0/devtools/model_sync_profiles/resource_scope_overrides.json +7 -0
  94. endorlabs-0.2.0/devtools/probe_endor_mcp_tools.py +348 -0
  95. endorlabs-0.2.0/devtools/refresh_token_to_dotenv.py +255 -0
  96. endorlabs-0.2.0/devtools/run_without_endor_token.py +86 -0
  97. endorlabs-0.2.0/devtools/service-requests/enable-nat-network-requests.py +267 -0
  98. endorlabs-0.2.0/devtools/smoke_test_published_install.py +77 -0
  99. endorlabs-0.2.0/devtools/smoke_test_wheel.py +103 -0
  100. endorlabs-0.2.0/devtools/split_dependency_explorer.py +177 -0
  101. endorlabs-0.2.0/devtools/sync/README.md +124 -0
  102. endorlabs-0.2.0/devtools/sync/__init__.py +3 -0
  103. endorlabs-0.2.0/devtools/sync/cli.py +447 -0
  104. endorlabs-0.2.0/devtools/sync/codegen.py +84 -0
  105. endorlabs-0.2.0/devtools/sync/contract.py +974 -0
  106. endorlabs-0.2.0/devtools/sync/path_safety.py +67 -0
  107. endorlabs-0.2.0/devtools/sync/planner.py +107 -0
  108. endorlabs-0.2.0/devtools/sync/policy.py +297 -0
  109. endorlabs-0.2.0/devtools/sync/provenance.py +104 -0
  110. endorlabs-0.2.0/devtools/sync/upstream_verify.py +203 -0
  111. endorlabs-0.2.0/devtools/sync_agent_knowledge.py +790 -0
  112. endorlabs-0.2.0/devtools/verify_ship_artifacts.py +235 -0
  113. endorlabs-0.2.0/docs/README.md +59 -0
  114. endorlabs-0.2.0/docs/assets/endor-auri-platform.webp +0 -0
  115. endorlabs-0.2.0/docs/assets/endor-labs-wordmark-dark.png +0 -0
  116. endorlabs-0.2.0/docs/assets/endor-labs-wordmark-dark.svg +15 -0
  117. endorlabs-0.2.0/docs/assets/endor-labs-wordmark-light.png +0 -0
  118. endorlabs-0.2.0/docs/assets/endor-labs-wordmark.svg +20 -0
  119. endorlabs-0.2.0/docs/changelog.md +142 -0
  120. endorlabs-0.2.0/docs/contracts.md +123 -0
  121. endorlabs-0.2.0/docs/contributing/README.md +16 -0
  122. endorlabs-0.2.0/docs/contributing/api-validation.md +58 -0
  123. endorlabs-0.2.0/docs/contributing/architecture.md +88 -0
  124. endorlabs-0.2.0/docs/contributing/docs-drift-workflow.md +119 -0
  125. endorlabs-0.2.0/docs/contributing/integration-resource-tests.md +60 -0
  126. endorlabs-0.2.0/docs/contributing/list-query-performance.md +79 -0
  127. endorlabs-0.2.0/docs/contributing/namespace-traversal.md +187 -0
  128. endorlabs-0.2.0/docs/contributing/release-publishing.md +276 -0
  129. endorlabs-0.2.0/docs/contributing/repository-layout.md +111 -0
  130. endorlabs-0.2.0/docs/contributing/troubleshooting.md +79 -0
  131. endorlabs-0.2.0/docs/design.md +57 -0
  132. endorlabs-0.2.0/docs/estate/README.md +45 -0
  133. endorlabs-0.2.0/docs/estate/compile-graph.md +43 -0
  134. endorlabs-0.2.0/docs/estate/remediation.md +49 -0
  135. endorlabs-0.2.0/docs/estate/risk-cardinality.md +26 -0
  136. endorlabs-0.2.0/docs/estate/workspace.md +61 -0
  137. endorlabs-0.2.0/docs/generated-reference/README.md +8 -0
  138. endorlabs-0.2.0/docs/generated-reference/api-surfaces.md +161 -0
  139. endorlabs-0.2.0/docs/generated-reference/create-update-payloads.md +148 -0
  140. endorlabs-0.2.0/docs/generated-reference/resources/APIKey.md +66 -0
  141. endorlabs-0.2.0/docs/generated-reference/resources/AuditLog.md +65 -0
  142. endorlabs-0.2.0/docs/generated-reference/resources/AuthenticationLog.md +21 -0
  143. endorlabs-0.2.0/docs/generated-reference/resources/AuthorizationPolicy.md +70 -0
  144. endorlabs-0.2.0/docs/generated-reference/resources/CodeOwners.md +57 -0
  145. endorlabs-0.2.0/docs/generated-reference/resources/DependencyMetadata.md +60 -0
  146. endorlabs-0.2.0/docs/generated-reference/resources/EndorLicense.md +28 -0
  147. endorlabs-0.2.0/docs/generated-reference/resources/Finding.md +98 -0
  148. endorlabs-0.2.0/docs/generated-reference/resources/FindingLog.md +77 -0
  149. endorlabs-0.2.0/docs/generated-reference/resources/Installation.md +86 -0
  150. endorlabs-0.2.0/docs/generated-reference/resources/Invitation.md +62 -0
  151. endorlabs-0.2.0/docs/generated-reference/resources/LinterResult.md +78 -0
  152. endorlabs-0.2.0/docs/generated-reference/resources/Malware.md +28 -0
  153. endorlabs-0.2.0/docs/generated-reference/resources/Metric.md +63 -0
  154. endorlabs-0.2.0/docs/generated-reference/resources/Namespace.md +62 -0
  155. endorlabs-0.2.0/docs/generated-reference/resources/NotificationTarget.md +61 -0
  156. endorlabs-0.2.0/docs/generated-reference/resources/PRCommentConfig.md +61 -0
  157. endorlabs-0.2.0/docs/generated-reference/resources/PackageFirewallLog.md +21 -0
  158. endorlabs-0.2.0/docs/generated-reference/resources/PackageLicense.md +64 -0
  159. endorlabs-0.2.0/docs/generated-reference/resources/PackageVersion.md +81 -0
  160. endorlabs-0.2.0/docs/generated-reference/resources/Policy.md +82 -0
  161. endorlabs-0.2.0/docs/generated-reference/resources/PolicyTemplate.md +21 -0
  162. endorlabs-0.2.0/docs/generated-reference/resources/Project.md +81 -0
  163. endorlabs-0.2.0/docs/generated-reference/resources/QueryMalware.md +70 -0
  164. endorlabs-0.2.0/docs/generated-reference/resources/QueryVulnerability.md +72 -0
  165. endorlabs-0.2.0/docs/generated-reference/resources/README.md +49 -0
  166. endorlabs-0.2.0/docs/generated-reference/resources/Repository.md +74 -0
  167. endorlabs-0.2.0/docs/generated-reference/resources/RepositoryVersion.md +60 -0
  168. endorlabs-0.2.0/docs/generated-reference/resources/ScanLogRequest.md +77 -0
  169. endorlabs-0.2.0/docs/generated-reference/resources/ScanProfile.md +63 -0
  170. endorlabs-0.2.0/docs/generated-reference/resources/ScanResult.md +93 -0
  171. endorlabs-0.2.0/docs/generated-reference/resources/ScanWorkflow.md +21 -0
  172. endorlabs-0.2.0/docs/generated-reference/resources/ScanWorkflowResult.md +21 -0
  173. endorlabs-0.2.0/docs/generated-reference/resources/SemgrepRule.md +67 -0
  174. endorlabs-0.2.0/docs/generated-reference/resources/V1IdentityProvider.md +21 -0
  175. endorlabs-0.2.0/docs/generated-reference/resources/V1Query.md +62 -0
  176. endorlabs-0.2.0/docs/generated-reference/resources/V1QuerySimilarPackages.md +62 -0
  177. endorlabs-0.2.0/docs/generated-reference/resources/V1SavedQuery.md +27 -0
  178. endorlabs-0.2.0/docs/generated-reference/resources/VectorStore.md +31 -0
  179. endorlabs-0.2.0/docs/generated-reference/resources/VectorStoreQuery.md +75 -0
  180. endorlabs-0.2.0/docs/generated-reference/resources/VersionUpgrade.md +21 -0
  181. endorlabs-0.2.0/docs/generated-reference/resources/Vulnerability.md +21 -0
  182. endorlabs-0.2.0/docs/generated-reference/resources.md +68 -0
  183. endorlabs-0.2.0/docs/guides/README.md +20 -0
  184. endorlabs-0.2.0/docs/guides/consumer-ux-list-update.md +68 -0
  185. endorlabs-0.2.0/docs/guides/examples.md +192 -0
  186. endorlabs-0.2.0/docs/guides/retrieving-scan-results.md +39 -0
  187. endorlabs-0.2.0/docs/reference/README.md +25 -0
  188. endorlabs-0.2.0/docs/reference/api-surfaces.md +25 -0
  189. endorlabs-0.2.0/docs/reference/create-update-payloads.md +6 -0
  190. endorlabs-0.2.0/docs/reference/namespace.md +24 -0
  191. endorlabs-0.2.0/docs/reference/resources.md +6 -0
  192. endorlabs-0.2.0/docs/sdk-images/api-spec-codegen.png +0 -0
  193. endorlabs-0.2.0/main.py +241 -0
  194. endorlabs-0.2.0/opengrep-rules/code-quality/endor-sdk-dangerous-operations.yaml +97 -0
  195. endorlabs-0.2.0/opengrep-rules/code-quality/endor-sdk-httpx-client-missing-timeout.yaml +71 -0
  196. endorlabs-0.2.0/opengrep-rules/code-quality/endor-sdk-httpx-tls-verification-disabled.yaml +72 -0
  197. endorlabs-0.2.0/opengrep-rules/code-quality/endor-sdk-mkdir-parents-unchecked.yaml +82 -0
  198. endorlabs-0.2.0/opengrep-rules/code-quality/endor-sdk-raise-bare-valueerror.yaml +96 -0
  199. endorlabs-0.2.0/opengrep-rules/code-quality/endor-sdk-silent-except-exception.yaml +92 -0
  200. endorlabs-0.2.0/opengrep-rules/trust-chain/endor-sdk-filter-parameterization-enforcement.yaml +103 -0
  201. endorlabs-0.2.0/opengrep-rules/trust-chain/endor-sdk-filter-parameterization-validation.yaml +129 -0
  202. endorlabs-0.2.0/opengrep-rules/trust-chain/endor-sdk-namespace-validation-validation.yaml +101 -0
  203. endorlabs-0.2.0/opengrep-rules/trust-chain/endor-sdk-path-containment-enforcement.yaml +99 -0
  204. endorlabs-0.2.0/opengrep-rules/trust-chain/endor-sdk-path-containment-validation.yaml +125 -0
  205. endorlabs-0.2.0/opengrep-rules/trust-chain/endor-sdk-redactionfilter-enforcement.yaml +110 -0
  206. endorlabs-0.2.0/opengrep-rules/trust-chain/endor-sdk-redactionfilter-validation.yaml +141 -0
  207. endorlabs-0.2.0/opengrep-rules/trust-chain/endor-sdk-xml-safe-parsing-enforcement.yaml +87 -0
  208. endorlabs-0.2.0/opengrep-rules/trust-chain/endor-sdk-xml-safe-parsing-validation.yaml +95 -0
  209. endorlabs-0.2.0/opengrep-rules/trust-chain/github-actions-third-party-action-unpinned-sha.yaml +66 -0
  210. endorlabs-0.2.0/pyproject.toml +560 -0
  211. endorlabs-0.2.0/src/endorlabs/__init__.py +202 -0
  212. endorlabs-0.2.0/src/endorlabs/_version.py +24 -0
  213. endorlabs-0.2.0/src/endorlabs/agent_knowledge/INDEX.md +116 -0
  214. endorlabs-0.2.0/src/endorlabs/agent_knowledge/MANIFEST.json +358 -0
  215. endorlabs-0.2.0/src/endorlabs/agent_knowledge/__init__.py +94 -0
  216. endorlabs-0.2.0/src/endorlabs/agent_knowledge/contracts/canonical-naming.md +16 -0
  217. endorlabs-0.2.0/src/endorlabs/agent_knowledge/contracts/dependency-metadata.md +29 -0
  218. endorlabs-0.2.0/src/endorlabs/agent_knowledge/contracts/errors-and-auth.md +34 -0
  219. endorlabs-0.2.0/src/endorlabs/agent_knowledge/contracts/list-parameters.md +57 -0
  220. endorlabs-0.2.0/src/endorlabs/agent_knowledge/rules/endor-changelog.md +90 -0
  221. endorlabs-0.2.0/src/endorlabs/agent_knowledge/rules/endor-list-query-performance.md +47 -0
  222. endorlabs-0.2.0/src/endorlabs/agent_knowledge/rules/endor-local-context.md +39 -0
  223. endorlabs-0.2.0/src/endorlabs/agent_knowledge/rules/endor-namespace-scoping.md +45 -0
  224. endorlabs-0.2.0/src/endorlabs/agent_knowledge/rules/endor-portable-examples.md +40 -0
  225. endorlabs-0.2.0/src/endorlabs/agent_knowledge/rules/endor-workflow-composition.md +69 -0
  226. endorlabs-0.2.0/src/endorlabs/agent_knowledge/rules/endor-workspace-layout.md +56 -0
  227. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-custom-sast-rules/AUTHORING.md +311 -0
  228. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-custom-sast-rules/IMPORT_EXPORT.md +453 -0
  229. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-custom-sast-rules/SEMGREP_RULE_SHAPE_GUARDRAILS.md +60 -0
  230. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-custom-sast-rules/SKILL.md +113 -0
  231. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-custom-sast-rules/SYNTAX_REFERENCE.md +411 -0
  232. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-custom-sast-rules/scripts/sast_rule_manager.py +1014 -0
  233. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-dependency-finding-provenance/SKILL.md +191 -0
  234. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-dependency-provenance/SKILL.md +65 -0
  235. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-fetch-and-search-call-graph/CALL_GRAPH_FORMAT_AND_SEARCH.md +102 -0
  236. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-fetch-and-search-call-graph/SKILL.md +113 -0
  237. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-implement-sdk-resource/SKILL.md +66 -0
  238. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-model-sync-drift/SKILL.md +85 -0
  239. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-namespace-relationship-map/SKILL.md +80 -0
  240. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-project-retrieval-bundle/MULTIPASS_LLM_CONTRACT.md +54 -0
  241. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-project-retrieval-bundle/SKILL.md +87 -0
  242. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-reachability-provenance/SKILL.md +169 -0
  243. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-reachability-provenance/examples.md +54 -0
  244. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-retrieve-scan-results/SKILL.md +179 -0
  245. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-sso-integration-validation-troubleshooting/README.md +14 -0
  246. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-sso-integration-validation-troubleshooting/SKILL.md +104 -0
  247. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-sso-integration-validation-troubleshooting/sso_access_spotcheck.py +315 -0
  248. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-troubleshoot-authlog/SKILL.md +68 -0
  249. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-troubleshoot-sdk/KNOWN_ISSUES.md +172 -0
  250. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-troubleshoot-sdk/SKILL.md +117 -0
  251. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-troubleshooting-scans/SKILL.md +180 -0
  252. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-validate-policy/API.md +106 -0
  253. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-validate-policy/ENDORCTL.md +45 -0
  254. endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-validate-policy/SKILL.md +151 -0
  255. endorlabs-0.2.0/src/endorlabs/agent_knowledge/workflows/entries.json +84 -0
  256. endorlabs-0.2.0/src/endorlabs/agent_knowledge/workflows/index.md +16 -0
  257. endorlabs-0.2.0/src/endorlabs/api_client.py +1636 -0
  258. endorlabs-0.2.0/src/endorlabs/auth_server.py +256 -0
  259. endorlabs-0.2.0/src/endorlabs/client_surface.py +207 -0
  260. endorlabs-0.2.0/src/endorlabs/client_surface.pyi +1050 -0
  261. endorlabs-0.2.0/src/endorlabs/context/__init__.py +150 -0
  262. endorlabs-0.2.0/src/endorlabs/context/_maintainer_refresh.py +148 -0
  263. endorlabs-0.2.0/src/endorlabs/context/_project_context.py +22 -0
  264. endorlabs-0.2.0/src/endorlabs/context/_sync.py +1226 -0
  265. endorlabs-0.2.0/src/endorlabs/context/cli.py +148 -0
  266. endorlabs-0.2.0/src/endorlabs/context/models.py +66 -0
  267. endorlabs-0.2.0/src/endorlabs/context/paths.py +136 -0
  268. endorlabs-0.2.0/src/endorlabs/core/__init__.py +38 -0
  269. endorlabs-0.2.0/src/endorlabs/core/exceptions.py +218 -0
  270. endorlabs-0.2.0/src/endorlabs/core/filter.py +352 -0
  271. endorlabs-0.2.0/src/endorlabs/core/types.py +298 -0
  272. endorlabs-0.2.0/src/endorlabs/facade.py +1279 -0
  273. endorlabs-0.2.0/src/endorlabs/generated/README.md +42 -0
  274. endorlabs-0.2.0/src/endorlabs/generated/__init__.py +1 -0
  275. endorlabs-0.2.0/src/endorlabs/generated/create_convenience.py +602 -0
  276. endorlabs-0.2.0/src/endorlabs/generated/models/__init__.py +1 -0
  277. endorlabs-0.2.0/src/endorlabs/generated/models/a_i_sast_customer_context_service.py +479 -0
  278. endorlabs-0.2.0/src/endorlabs/generated/models/a_p_i_key_service.py +598 -0
  279. endorlabs-0.2.0/src/endorlabs/generated/models/a_p_i_key_validator_service.py +489 -0
  280. endorlabs-0.2.0/src/endorlabs/generated/models/artifact_signature_service.py +616 -0
  281. endorlabs-0.2.0/src/endorlabs/generated/models/audit_log_service.py +599 -0
  282. endorlabs-0.2.0/src/endorlabs/generated/models/authentication_log_service.py +465 -0
  283. endorlabs-0.2.0/src/endorlabs/generated/models/authentication_service.py +320 -0
  284. endorlabs-0.2.0/src/endorlabs/generated/models/authorization_policy_service.py +612 -0
  285. endorlabs-0.2.0/src/endorlabs/generated/models/batch_file_segments_service.py +550 -0
  286. endorlabs-0.2.0/src/endorlabs/generated/models/batch_notification_service.py +809 -0
  287. endorlabs-0.2.0/src/endorlabs/generated/models/call_graph_data_service.py +494 -0
  288. endorlabs-0.2.0/src/endorlabs/generated/models/code_owners_service.py +462 -0
  289. endorlabs-0.2.0/src/endorlabs/generated/models/dependency_metadata_service.py +957 -0
  290. endorlabs-0.2.0/src/endorlabs/generated/models/endor.py +675 -0
  291. endorlabs-0.2.0/src/endorlabs/generated/models/endor_ignore_entry_service.py +750 -0
  292. endorlabs-0.2.0/src/endorlabs/generated/models/exporter_service.py +623 -0
  293. endorlabs-0.2.0/src/endorlabs/generated/models/finding_log_service.py +859 -0
  294. endorlabs-0.2.0/src/endorlabs/generated/models/finding_service.py +6706 -0
  295. endorlabs-0.2.0/src/endorlabs/generated/models/hugging_face_model_service.py +618 -0
  296. endorlabs-0.2.0/src/endorlabs/generated/models/hugging_face_organization_service.py +420 -0
  297. endorlabs-0.2.0/src/endorlabs/generated/models/i_p_address_policy_service.py +463 -0
  298. endorlabs-0.2.0/src/endorlabs/generated/models/identity_provider_service.py +533 -0
  299. endorlabs-0.2.0/src/endorlabs/generated/models/installation_service.py +909 -0
  300. endorlabs-0.2.0/src/endorlabs/generated/models/invitation_service.py +438 -0
  301. endorlabs-0.2.0/src/endorlabs/generated/models/license_dependency_service.py +495 -0
  302. endorlabs-0.2.0/src/endorlabs/generated/models/license_notices_report_service.py +419 -0
  303. endorlabs-0.2.0/src/endorlabs/generated/models/license_summary_service.py +492 -0
  304. endorlabs-0.2.0/src/endorlabs/generated/models/linter_result_service.py +2139 -0
  305. endorlabs-0.2.0/src/endorlabs/generated/models/malware_service.py +3059 -0
  306. endorlabs-0.2.0/src/endorlabs/generated/models/metric.py +5346 -0
  307. endorlabs-0.2.0/src/endorlabs/generated/models/metric_service.py +5460 -0
  308. endorlabs-0.2.0/src/endorlabs/generated/models/namespace_service.py +490 -0
  309. endorlabs-0.2.0/src/endorlabs/generated/models/notification_service.py +840 -0
  310. endorlabs-0.2.0/src/endorlabs/generated/models/notification_target_service.py +937 -0
  311. endorlabs-0.2.0/src/endorlabs/generated/models/on_prem_scheduler_service.py +559 -0
  312. endorlabs-0.2.0/src/endorlabs/generated/models/p_r_comment_config_service.py +509 -0
  313. endorlabs-0.2.0/src/endorlabs/generated/models/package_firewall_log_service.py +597 -0
  314. endorlabs-0.2.0/src/endorlabs/generated/models/package_license_override_service.py +716 -0
  315. endorlabs-0.2.0/src/endorlabs/generated/models/package_license_query_service.py +676 -0
  316. endorlabs-0.2.0/src/endorlabs/generated/models/package_license_service.py +964 -0
  317. endorlabs-0.2.0/src/endorlabs/generated/models/package_manager_service.py +1023 -0
  318. endorlabs-0.2.0/src/endorlabs/generated/models/package_version_service.py +2894 -0
  319. endorlabs-0.2.0/src/endorlabs/generated/models/plugin_binary_service.py +443 -0
  320. endorlabs-0.2.0/src/endorlabs/generated/models/policy_service.py +1032 -0
  321. endorlabs-0.2.0/src/endorlabs/generated/models/policy_template_service.py +854 -0
  322. endorlabs-0.2.0/src/endorlabs/generated/models/project_service.py +807 -0
  323. endorlabs-0.2.0/src/endorlabs/generated/models/provisioning_result_service.py +1137 -0
  324. endorlabs-0.2.0/src/endorlabs/generated/models/query_malware_service.py +3123 -0
  325. endorlabs-0.2.0/src/endorlabs/generated/models/query_service.py +916 -0
  326. endorlabs-0.2.0/src/endorlabs/generated/models/query_similar_packages_service.py +399 -0
  327. endorlabs-0.2.0/src/endorlabs/generated/models/query_vulnerability_service.py +2404 -0
  328. endorlabs-0.2.0/src/endorlabs/generated/models/registry_ingestion_checkpoint_service.py +581 -0
  329. endorlabs-0.2.0/src/endorlabs/generated/models/repository_service.py +770 -0
  330. endorlabs-0.2.0/src/endorlabs/generated/models/repository_version_service.py +691 -0
  331. endorlabs-0.2.0/src/endorlabs/generated/models/rule_set_import_service.py +553 -0
  332. endorlabs-0.2.0/src/endorlabs/generated/models/s_b_o_m_export_service.py +420 -0
  333. endorlabs-0.2.0/src/endorlabs/generated/models/s_b_o_m_import_service.py +663 -0
  334. endorlabs-0.2.0/src/endorlabs/generated/models/s_c_m_credential_service.py +580 -0
  335. endorlabs-0.2.0/src/endorlabs/generated/models/saved_query_service.py +1104 -0
  336. endorlabs-0.2.0/src/endorlabs/generated/models/scan_log_request_service.py +442 -0
  337. endorlabs-0.2.0/src/endorlabs/generated/models/scan_profile_service.py +859 -0
  338. endorlabs-0.2.0/src/endorlabs/generated/models/scan_result_service.py +1644 -0
  339. endorlabs-0.2.0/src/endorlabs/generated/models/scan_workflow_result_service.py +817 -0
  340. endorlabs-0.2.0/src/endorlabs/generated/models/scan_workflow_service.py +694 -0
  341. endorlabs-0.2.0/src/endorlabs/generated/models/secret_rule_service.py +937 -0
  342. endorlabs-0.2.0/src/endorlabs/generated/models/semgrep_rule_service.py +796 -0
  343. endorlabs-0.2.0/src/endorlabs/generated/models/system_config_service.py +1016 -0
  344. endorlabs-0.2.0/src/endorlabs/generated/models/tenant_service.py +454 -0
  345. endorlabs-0.2.0/src/endorlabs/generated/models/v_e_x_export_service.py +401 -0
  346. endorlabs-0.2.0/src/endorlabs/generated/models/vector.py +346 -0
  347. endorlabs-0.2.0/src/endorlabs/generated/models/vector_store_service.py +471 -0
  348. endorlabs-0.2.0/src/endorlabs/generated/models/version_upgrade_service.py +7484 -0
  349. endorlabs-0.2.0/src/endorlabs/generated/models/vulnerability_service.py +2327 -0
  350. endorlabs-0.2.0/src/endorlabs/generated/registry_contract.py +3096 -0
  351. endorlabs-0.2.0/src/endorlabs/generated/resource_index.json +475 -0
  352. endorlabs-0.2.0/src/endorlabs/models/__init__.py +29 -0
  353. endorlabs-0.2.0/src/endorlabs/models/base.py +616 -0
  354. endorlabs-0.2.0/src/endorlabs/models/exception_config.py +23 -0
  355. endorlabs-0.2.0/src/endorlabs/models/field_aliases.py +8 -0
  356. endorlabs-0.2.0/src/endorlabs/models/finding_config.py +29 -0
  357. endorlabs-0.2.0/src/endorlabs/models/notification_config.py +31 -0
  358. endorlabs-0.2.0/src/endorlabs/operations/__init__.py +961 -0
  359. endorlabs-0.2.0/src/endorlabs/py.typed +0 -0
  360. endorlabs-0.2.0/src/endorlabs/registry.py +371 -0
  361. endorlabs-0.2.0/src/endorlabs/registry_overlay.py +73 -0
  362. endorlabs-0.2.0/src/endorlabs/resources/__init__.py +78 -0
  363. endorlabs-0.2.0/src/endorlabs/resources/api_key.py +220 -0
  364. endorlabs-0.2.0/src/endorlabs/resources/audit_log.py +254 -0
  365. endorlabs-0.2.0/src/endorlabs/resources/authentication_log.py +94 -0
  366. endorlabs-0.2.0/src/endorlabs/resources/authorization_policy.py +456 -0
  367. endorlabs-0.2.0/src/endorlabs/resources/code_owners.py +103 -0
  368. endorlabs-0.2.0/src/endorlabs/resources/dependency_metadata.py +63 -0
  369. endorlabs-0.2.0/src/endorlabs/resources/endor_license.py +137 -0
  370. endorlabs-0.2.0/src/endorlabs/resources/finding.py +878 -0
  371. endorlabs-0.2.0/src/endorlabs/resources/finding_log.py +482 -0
  372. endorlabs-0.2.0/src/endorlabs/resources/installation.py +511 -0
  373. endorlabs-0.2.0/src/endorlabs/resources/invitation.py +91 -0
  374. endorlabs-0.2.0/src/endorlabs/resources/linter_result.py +472 -0
  375. endorlabs-0.2.0/src/endorlabs/resources/malware.py +134 -0
  376. endorlabs-0.2.0/src/endorlabs/resources/metric.py +191 -0
  377. endorlabs-0.2.0/src/endorlabs/resources/namespace.py +229 -0
  378. endorlabs-0.2.0/src/endorlabs/resources/notification_target.py +161 -0
  379. endorlabs-0.2.0/src/endorlabs/resources/package_license.py +270 -0
  380. endorlabs-0.2.0/src/endorlabs/resources/package_version.py +515 -0
  381. endorlabs-0.2.0/src/endorlabs/resources/policy.py +434 -0
  382. endorlabs-0.2.0/src/endorlabs/resources/policy_template.py +89 -0
  383. endorlabs-0.2.0/src/endorlabs/resources/pr_comment_config.py +122 -0
  384. endorlabs-0.2.0/src/endorlabs/resources/project.py +554 -0
  385. endorlabs-0.2.0/src/endorlabs/resources/query_malware.py +125 -0
  386. endorlabs-0.2.0/src/endorlabs/resources/query_vulnerability.py +136 -0
  387. endorlabs-0.2.0/src/endorlabs/resources/repository.py +315 -0
  388. endorlabs-0.2.0/src/endorlabs/resources/repository_version.py +211 -0
  389. endorlabs-0.2.0/src/endorlabs/resources/scan_log_request.py +337 -0
  390. endorlabs-0.2.0/src/endorlabs/resources/scan_profile.py +448 -0
  391. endorlabs-0.2.0/src/endorlabs/resources/scan_result.py +577 -0
  392. endorlabs-0.2.0/src/endorlabs/resources/scan_workflow.py +68 -0
  393. endorlabs-0.2.0/src/endorlabs/resources/scan_workflow_result.py +61 -0
  394. endorlabs-0.2.0/src/endorlabs/resources/semgrep_rule.py +666 -0
  395. endorlabs-0.2.0/src/endorlabs/resources/vector_store.py +70 -0
  396. endorlabs-0.2.0/src/endorlabs/resources/vector_store_query.py +119 -0
  397. endorlabs-0.2.0/src/endorlabs/resources/version_upgrade.py +144 -0
  398. endorlabs-0.2.0/src/endorlabs/resources/vulnerability.py +148 -0
  399. endorlabs-0.2.0/src/endorlabs/tools/__init__.py +19 -0
  400. endorlabs-0.2.0/src/endorlabs/tools/dependency_explorer.py +88 -0
  401. endorlabs-0.2.0/src/endorlabs/tools/list_sharding.py +110 -0
  402. endorlabs-0.2.0/src/endorlabs/utils/__init__.py +20 -0
  403. endorlabs-0.2.0/src/endorlabs/utils/api_pagination.py +60 -0
  404. endorlabs-0.2.0/src/endorlabs/utils/artifact_io.py +36 -0
  405. endorlabs-0.2.0/src/endorlabs/utils/create_payload.py +158 -0
  406. endorlabs-0.2.0/src/endorlabs/utils/logging_config.py +87 -0
  407. endorlabs-0.2.0/src/endorlabs/utils/model_validation.py +345 -0
  408. endorlabs-0.2.0/src/endorlabs/utils/namespace.py +34 -0
  409. endorlabs-0.2.0/src/endorlabs/utils/parallel.py +122 -0
  410. endorlabs-0.2.0/src/endorlabs/utils/path_safety.py +65 -0
  411. endorlabs-0.2.0/src/endorlabs/utils/polling.py +54 -0
  412. endorlabs-0.2.0/src/endorlabs/utils/redaction.py +182 -0
  413. endorlabs-0.2.0/src/endorlabs/utils/schema_drift.py +136 -0
  414. endorlabs-0.2.0/src/endorlabs/utils/tabular.py +30 -0
  415. endorlabs-0.2.0/src/endorlabs/workflows/__init__.py +24 -0
  416. endorlabs-0.2.0/src/endorlabs/workflows/agent_context/__init__.py +57 -0
  417. endorlabs-0.2.0/src/endorlabs/workflows/agent_context/cli.py +14 -0
  418. endorlabs-0.2.0/src/endorlabs/workflows/agent_context/export.py +556 -0
  419. endorlabs-0.2.0/src/endorlabs/workflows/agent_context/hydration.py +388 -0
  420. endorlabs-0.2.0/src/endorlabs/workflows/agent_context/package_versions.py +175 -0
  421. endorlabs-0.2.0/src/endorlabs/workflows/agent_context/session_artifacts.py +715 -0
  422. endorlabs-0.2.0/src/endorlabs/workflows/callgraph/__init__.py +13 -0
  423. endorlabs-0.2.0/src/endorlabs/workflows/callgraph/decoded.py +51 -0
  424. endorlabs-0.2.0/src/endorlabs/workflows/callgraph/fetch.py +195 -0
  425. endorlabs-0.2.0/src/endorlabs/workflows/callgraph/proto_decode.py +461 -0
  426. endorlabs-0.2.0/src/endorlabs/workflows/callgraph/render.py +262 -0
  427. endorlabs-0.2.0/src/endorlabs/workflows/callgraph/search.py +135 -0
  428. endorlabs-0.2.0/src/endorlabs/workflows/callgraph/sweep.py +91 -0
  429. endorlabs-0.2.0/src/endorlabs/workflows/common.py +129 -0
  430. endorlabs-0.2.0/src/endorlabs/workflows/dependencies/__init__.py +15 -0
  431. endorlabs-0.2.0/src/endorlabs/workflows/dependencies/bom_graph.py +121 -0
  432. endorlabs-0.2.0/src/endorlabs/workflows/dependencies/coordinates.py +15 -0
  433. endorlabs-0.2.0/src/endorlabs/workflows/dependencies/metadata_fetch.py +84 -0
  434. endorlabs-0.2.0/src/endorlabs/workflows/dependencies/reports.py +141 -0
  435. endorlabs-0.2.0/src/endorlabs/workflows/dependencies/types.py +47 -0
  436. endorlabs-0.2.0/src/endorlabs/workflows/estate/__init__.py +55 -0
  437. endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/cardinality/columns.py +46 -0
  438. endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/cardinality/export.py +861 -0
  439. endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/cardinality/group_list.py +160 -0
  440. endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/cardinality/remediation.py +218 -0
  441. endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/cardinality/tabular.py +316 -0
  442. endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/cardinality/types.py +66 -0
  443. endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/compile_graph/community_detection.py +352 -0
  444. endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/compile_graph/disk_build.py +202 -0
  445. endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/compile_graph/enrich.py +352 -0
  446. endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/compile_graph/pipeline.py +578 -0
  447. endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/graph_metrics/analytics.py +234 -0
  448. endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/project_map/core.py +338 -0
  449. endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/project_map/map.py +115 -0
  450. endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/project_map/run.py +239 -0
  451. endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/risk/cardinality.py +502 -0
  452. endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/risk/consumer_counts.py +113 -0
  453. endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/risk/scoring.py +440 -0
  454. endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/workspace.py +143 -0
  455. endorlabs-0.2.0/src/endorlabs/workflows/estate/cli/__init__.py +7 -0
  456. endorlabs-0.2.0/src/endorlabs/workflows/estate/cli/main.py +294 -0
  457. endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/__init__.py +50 -0
  458. endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/benchmark.py +401 -0
  459. endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/bounds.py +136 -0
  460. endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/dependency_metadata.py +120 -0
  461. endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/finding_loader.py +22 -0
  462. endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/findings.py +164 -0
  463. endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/namespaces.py +89 -0
  464. endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/projects.py +106 -0
  465. endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/runner.py +454 -0
  466. endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/shards.py +24 -0
  467. endorlabs-0.2.0/src/endorlabs/workflows/estate/contracts/__init__.py +71 -0
  468. endorlabs-0.2.0/src/endorlabs/workflows/estate/contracts/ir_artifacts.py +18 -0
  469. endorlabs-0.2.0/src/endorlabs/workflows/estate/contracts/resources.py +72 -0
  470. endorlabs-0.2.0/src/endorlabs/workflows/estate/export/charts/compile_graph_viz.py +571 -0
  471. endorlabs-0.2.0/src/endorlabs/workflows/estate/export/charts/estate_dashboard.py +246 -0
  472. endorlabs-0.2.0/src/endorlabs/workflows/estate/export/summarize.py +194 -0
  473. endorlabs-0.2.0/src/endorlabs/workflows/estate/filters/__init__.py +23 -0
  474. endorlabs-0.2.0/src/endorlabs/workflows/estate/filters/main_context.py +15 -0
  475. endorlabs-0.2.0/src/endorlabs/workflows/estate/filters/masks.py +26 -0
  476. endorlabs-0.2.0/src/endorlabs/workflows/estate/workspace/__init__.py +50 -0
  477. endorlabs-0.2.0/src/endorlabs/workflows/estate/workspace/collect_manifest.py +420 -0
  478. endorlabs-0.2.0/src/endorlabs/workflows/estate/workspace/paths.py +107 -0
  479. endorlabs-0.2.0/src/endorlabs/workflows/findings/__init__.py +21 -0
  480. endorlabs-0.2.0/src/endorlabs/workflows/findings/triage.py +490 -0
  481. endorlabs-0.2.0/src/endorlabs/workflows/notifications/__init__.py +17 -0
  482. endorlabs-0.2.0/src/endorlabs/workflows/notifications/notification_setup.py +331 -0
  483. endorlabs-0.2.0/src/endorlabs/workflows/platform/__init__.py +25 -0
  484. endorlabs-0.2.0/src/endorlabs/workflows/platform/platform_setup.py +282 -0
  485. endorlabs-0.2.0/src/endorlabs/workflows/policies/__init__.py +21 -0
  486. endorlabs-0.2.0/src/endorlabs/workflows/policies/__main__.py +8 -0
  487. endorlabs-0.2.0/src/endorlabs/workflows/policies/validate.py +322 -0
  488. endorlabs-0.2.0/src/endorlabs/workflows/projects/__init__.py +7 -0
  489. endorlabs-0.2.0/src/endorlabs/workflows/projects/resolve.py +82 -0
  490. endorlabs-0.2.0/src/endorlabs/workflows/reachability/__init__.py +5 -0
  491. endorlabs-0.2.0/src/endorlabs/workflows/reachability/cli.py +95 -0
  492. endorlabs-0.2.0/src/endorlabs/workflows/reachability/context.py +395 -0
  493. endorlabs-0.2.0/src/endorlabs/workflows/reachability/resolve.py +91 -0
  494. endorlabs-0.2.0/src/endorlabs/workflows/reachability/stitch.py +93 -0
  495. endorlabs-0.2.0/src/endorlabs/workflows/semgrep/__init__.py +27 -0
  496. endorlabs-0.2.0/src/endorlabs/workflows/semgrep/inventory.py +178 -0
  497. endorlabs-0.2.0/src/endorlabs/workflows/semgrep/rules.py +578 -0
  498. endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/__init__.py +29 -0
  499. endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/common.py +501 -0
  500. endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/diff_scans.py +145 -0
  501. endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/fetch_scan_logs.py +131 -0
  502. endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/fetch_scan_results.py +171 -0
  503. endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/pull_scan_logs.py +326 -0
  504. endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/pull_scan_results.py +148 -0
  505. endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/resolve_projects.py +85 -0
  506. endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/run_troubleshooting_workflow.py +147 -0
  507. endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/scan_logs.py +118 -0
  508. endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/search_projects.py +263 -0
  509. endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/search_scan_errors.py +224 -0
  510. endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/select_anomalous_scans.py +157 -0
  511. endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/summarize_scan_triage.py +546 -0
  512. endorlabs-0.2.0/tests/__init__.py +0 -0
  513. endorlabs-0.2.0/tests/conftest.py +121 -0
  514. endorlabs-0.2.0/tests/fixtures/openapi/create_convenience_vector_store_query.json +35 -0
  515. endorlabs-0.2.0/tests/integration/__init__.py +0 -0
  516. endorlabs-0.2.0/tests/integration/client/test_concurrent_list.py +114 -0
  517. endorlabs-0.2.0/tests/integration/concurrent/__init__.py +0 -0
  518. endorlabs-0.2.0/tests/integration/conftest.py +196 -0
  519. endorlabs-0.2.0/tests/integration/platform/__init__.py +0 -0
  520. endorlabs-0.2.0/tests/integration/platform/context/__init__.py +0 -0
  521. endorlabs-0.2.0/tests/integration/platform/context/test_agent_knowledge_e2e.py +118 -0
  522. endorlabs-0.2.0/tests/integration/resources/__init__.py +0 -0
  523. endorlabs-0.2.0/tests/integration/resources/conftest.py +33 -0
  524. endorlabs-0.2.0/tests/integration/resources/test_api_key.py +153 -0
  525. endorlabs-0.2.0/tests/integration/resources/test_audit_log.py +235 -0
  526. endorlabs-0.2.0/tests/integration/resources/test_authentication_log.py +42 -0
  527. endorlabs-0.2.0/tests/integration/resources/test_authorization_policy.py +256 -0
  528. endorlabs-0.2.0/tests/integration/resources/test_code_owners.py +71 -0
  529. endorlabs-0.2.0/tests/integration/resources/test_endor_license.py +81 -0
  530. endorlabs-0.2.0/tests/integration/resources/test_finding.py +281 -0
  531. endorlabs-0.2.0/tests/integration/resources/test_finding_log.py +106 -0
  532. endorlabs-0.2.0/tests/integration/resources/test_installation.py +142 -0
  533. endorlabs-0.2.0/tests/integration/resources/test_invitation.py +47 -0
  534. endorlabs-0.2.0/tests/integration/resources/test_linter_result.py +169 -0
  535. endorlabs-0.2.0/tests/integration/resources/test_metric.py +175 -0
  536. endorlabs-0.2.0/tests/integration/resources/test_namespace.py +294 -0
  537. endorlabs-0.2.0/tests/integration/resources/test_notification_target.py +74 -0
  538. endorlabs-0.2.0/tests/integration/resources/test_package_version.py +274 -0
  539. endorlabs-0.2.0/tests/integration/resources/test_policy.py +614 -0
  540. endorlabs-0.2.0/tests/integration/resources/test_policy_template.py +58 -0
  541. endorlabs-0.2.0/tests/integration/resources/test_pr_comment_config.py +103 -0
  542. endorlabs-0.2.0/tests/integration/resources/test_project.py +379 -0
  543. endorlabs-0.2.0/tests/integration/resources/test_repository.py +201 -0
  544. endorlabs-0.2.0/tests/integration/resources/test_repository_version.py +266 -0
  545. endorlabs-0.2.0/tests/integration/resources/test_scan_log_request.py +293 -0
  546. endorlabs-0.2.0/tests/integration/resources/test_scan_profile.py +298 -0
  547. endorlabs-0.2.0/tests/integration/resources/test_scan_result.py +181 -0
  548. endorlabs-0.2.0/tests/integration/resources/test_scan_workflow.py +52 -0
  549. endorlabs-0.2.0/tests/integration/resources/test_semgrep_rule.py +197 -0
  550. endorlabs-0.2.0/tests/integration/resources/test_vector_store_query.py +86 -0
  551. endorlabs-0.2.0/tests/integration/resources/test_version_upgrade.py +52 -0
  552. endorlabs-0.2.0/tests/integration/resources/test_vulnerability_malware.py +116 -0
  553. endorlabs-0.2.0/tests/integration/workflows/__init__.py +0 -0
  554. endorlabs-0.2.0/tests/integration/workflows/reachability/test_reachability_cli_smoke.py +51 -0
  555. endorlabs-0.2.0/tests/integration/workflows/test_retrieving_scan_results.py +186 -0
  556. endorlabs-0.2.0/tests/unit/__init__.py +0 -0
  557. endorlabs-0.2.0/tests/unit/client/__init__.py +0 -0
  558. endorlabs-0.2.0/tests/unit/client/conftest.py +21 -0
  559. endorlabs-0.2.0/tests/unit/client/test_api_client_auth.py +115 -0
  560. endorlabs-0.2.0/tests/unit/client/test_client_facade.py +1130 -0
  561. endorlabs-0.2.0/tests/unit/client/test_concurrent_list.py +485 -0
  562. endorlabs-0.2.0/tests/unit/client/test_facade_helper_branches.py +83 -0
  563. endorlabs-0.2.0/tests/unit/client/test_list_unknown_kwargs.py +30 -0
  564. endorlabs-0.2.0/tests/unit/client/test_polling.py +57 -0
  565. endorlabs-0.2.0/tests/unit/client/test_registry_contract_authoritative.py +74 -0
  566. endorlabs-0.2.0/tests/unit/client/test_whoami.py +178 -0
  567. endorlabs-0.2.0/tests/unit/conftest.py +72 -0
  568. endorlabs-0.2.0/tests/unit/core/test_list_parameters_mask.py +25 -0
  569. endorlabs-0.2.0/tests/unit/devtools/sync/test_create_convenience_fields.py +73 -0
  570. endorlabs-0.2.0/tests/unit/devtools/test_client_surface_pyi_create_kwargs.py +24 -0
  571. endorlabs-0.2.0/tests/unit/devtools/test_generate_resource_reference_pages.py +66 -0
  572. endorlabs-0.2.0/tests/unit/platform/context/test_agent_knowledge.py +116 -0
  573. endorlabs-0.2.0/tests/unit/platform/context/test_agent_knowledge_drift.py +21 -0
  574. endorlabs-0.2.0/tests/unit/platform/context/test_agent_knowledge_sync.py +50 -0
  575. endorlabs-0.2.0/tests/unit/platform/context/test_context_cli.py +137 -0
  576. endorlabs-0.2.0/tests/unit/platform/context/test_context_docs_sync.py +102 -0
  577. endorlabs-0.2.0/tests/unit/platform/context/test_context_init.py +482 -0
  578. endorlabs-0.2.0/tests/unit/platform/context/test_context_legacy_reconcile.py +78 -0
  579. endorlabs-0.2.0/tests/unit/platform/context/test_context_maintainer_refresh.py +102 -0
  580. endorlabs-0.2.0/tests/unit/platform/context/test_context_paths.py +45 -0
  581. endorlabs-0.2.0/tests/unit/platform/context/test_context_skill_sync.py +200 -0
  582. endorlabs-0.2.0/tests/unit/platform/core/test_exceptions.py +155 -0
  583. endorlabs-0.2.0/tests/unit/platform/core/test_filter.py +367 -0
  584. endorlabs-0.2.0/tests/unit/platform/core/test_import_smoke.py +20 -0
  585. endorlabs-0.2.0/tests/unit/platform/core/test_integration_pagination_guard.py +131 -0
  586. endorlabs-0.2.0/tests/unit/platform/core/test_openapi_quality_gates.py +160 -0
  587. endorlabs-0.2.0/tests/unit/platform/core/test_openapi_spec.py +38 -0
  588. endorlabs-0.2.0/tests/unit/platform/core/test_operations_helpers.py +57 -0
  589. endorlabs-0.2.0/tests/unit/platform/core/test_pagination.py +305 -0
  590. endorlabs-0.2.0/tests/unit/platform/core/test_project_scan_profile_helpers.py +54 -0
  591. endorlabs-0.2.0/tests/unit/platform/core/test_test_taxonomy_guard.py +23 -0
  592. endorlabs-0.2.0/tests/unit/platform/models/test_base_update.py +389 -0
  593. endorlabs-0.2.0/tests/unit/platform/models/test_greenfield_aliases.py +137 -0
  594. endorlabs-0.2.0/tests/unit/platform/models/test_installation_schema_drift.py +64 -0
  595. endorlabs-0.2.0/tests/unit/platform/models/test_json_default_model.py +104 -0
  596. endorlabs-0.2.0/tests/unit/platform/models/test_model_validation.py +252 -0
  597. endorlabs-0.2.0/tests/unit/platform/operations/test_base_resource_list_mask.py +58 -0
  598. endorlabs-0.2.0/tests/unit/platform/transport/test_api_client_auth.py +570 -0
  599. endorlabs-0.2.0/tests/unit/platform/transport/test_api_client_config.py +456 -0
  600. endorlabs-0.2.0/tests/unit/platform/transport/test_api_client_helper_branches.py +81 -0
  601. endorlabs-0.2.0/tests/unit/platform/transport/test_api_client_response_handling.py +104 -0
  602. endorlabs-0.2.0/tests/unit/platform/transport/test_auth_server.py +348 -0
  603. endorlabs-0.2.0/tests/unit/platform/utils/test_logging_config.py +221 -0
  604. endorlabs-0.2.0/tests/unit/platform/utils/test_namespace.py +37 -0
  605. endorlabs-0.2.0/tests/unit/resources/test_code_owners.py +42 -0
  606. endorlabs-0.2.0/tests/unit/resources/test_scan_log_request.py +42 -0
  607. endorlabs-0.2.0/tests/unit/resources/test_semgrep_rule_validate.py +33 -0
  608. endorlabs-0.2.0/tests/unit/resources/test_vector_store_query.py +128 -0
  609. endorlabs-0.2.0/tests/unit/tooling/scripts/test_agent_knowledge_bootstrap.py +141 -0
  610. endorlabs-0.2.0/tests/unit/tooling/scripts/test_agent_knowledge_catalog.py +177 -0
  611. endorlabs-0.2.0/tests/unit/tooling/scripts/test_check_vcs_version.py +64 -0
  612. endorlabs-0.2.0/tests/unit/tooling/scripts/test_generate_client_stub.py +96 -0
  613. endorlabs-0.2.0/tests/unit/tooling/scripts/test_generated_contract_quality_gates.py +143 -0
  614. endorlabs-0.2.0/tests/unit/tooling/scripts/test_path_safety.py +58 -0
  615. endorlabs-0.2.0/tests/unit/tooling/scripts/test_provenance.py +67 -0
  616. endorlabs-0.2.0/tests/unit/tooling/scripts/test_refresh_token_to_dotenv.py +153 -0
  617. endorlabs-0.2.0/tests/unit/tooling/scripts/test_sast_rule_manager.py +312 -0
  618. endorlabs-0.2.0/tests/unit/tooling/scripts/test_sso_access_spotcheck.py +86 -0
  619. endorlabs-0.2.0/tests/unit/tooling/scripts/test_sync_cli.py +96 -0
  620. endorlabs-0.2.0/tests/unit/tooling/scripts/test_sync_contract.py +340 -0
  621. endorlabs-0.2.0/tests/unit/tooling/scripts/test_sync_planner.py +57 -0
  622. endorlabs-0.2.0/tests/unit/tooling/scripts/test_sync_policy.py +81 -0
  623. endorlabs-0.2.0/tests/unit/tooling/scripts/test_upstream_verify.py +93 -0
  624. endorlabs-0.2.0/tests/unit/tooling/scripts/test_verify_ship_artifacts.py +140 -0
  625. endorlabs-0.2.0/tests/unit/tooling/tools/test_dependency_explorer.py +1006 -0
  626. endorlabs-0.2.0/tests/unit/tools/test_list_sharding.py +54 -0
  627. endorlabs-0.2.0/tests/unit/utils/test_create_payload_promote.py +73 -0
  628. endorlabs-0.2.0/tests/unit/workflows/__init__.py +0 -0
  629. endorlabs-0.2.0/tests/unit/workflows/agent_context/test_cli_dispatch.py +13 -0
  630. endorlabs-0.2.0/tests/unit/workflows/agent_context/test_export_project_context.py +508 -0
  631. endorlabs-0.2.0/tests/unit/workflows/agent_context/test_session_artifacts_helpers.py +24 -0
  632. endorlabs-0.2.0/tests/unit/workflows/callgraph/test_decoded.py +57 -0
  633. endorlabs-0.2.0/tests/unit/workflows/estate/analyze/cardinality/test_tabular.py +104 -0
  634. endorlabs-0.2.0/tests/unit/workflows/estate/analyze/risk/test_consumer_counts.py +16 -0
  635. endorlabs-0.2.0/tests/unit/workflows/estate/analyze/risk/test_risk_ranked_cardinality.py +409 -0
  636. endorlabs-0.2.0/tests/unit/workflows/estate/collect/test_collect_runner_findings.py +93 -0
  637. endorlabs-0.2.0/tests/unit/workflows/estate/collect/test_list_bounds.py +104 -0
  638. endorlabs-0.2.0/tests/unit/workflows/estate/collect/test_sharded_collect.py +71 -0
  639. endorlabs-0.2.0/tests/unit/workflows/estate/export/test_compile_graph_viz.py +84 -0
  640. endorlabs-0.2.0/tests/unit/workflows/estate/export/test_estate_dashboard.py +73 -0
  641. endorlabs-0.2.0/tests/unit/workflows/estate/test_analyze_workspace.py +139 -0
  642. endorlabs-0.2.0/tests/unit/workflows/estate/test_collect_manifest.py +147 -0
  643. endorlabs-0.2.0/tests/unit/workflows/estate/test_community_detection.py +199 -0
  644. endorlabs-0.2.0/tests/unit/workflows/estate/test_dependency_graph.py +408 -0
  645. endorlabs-0.2.0/tests/unit/workflows/estate/test_disk_build_helpers.py +132 -0
  646. endorlabs-0.2.0/tests/unit/workflows/estate/test_estate_cli.py +155 -0
  647. endorlabs-0.2.0/tests/unit/workflows/estate/test_estate_public_api.py +12 -0
  648. endorlabs-0.2.0/tests/unit/workflows/estate/test_graph_analytics.py +67 -0
  649. endorlabs-0.2.0/tests/unit/workflows/estate/test_graph_enrich.py +104 -0
  650. endorlabs-0.2.0/tests/unit/workflows/estate/test_map_cli.py +103 -0
  651. endorlabs-0.2.0/tests/unit/workflows/estate/test_masks.py +15 -0
  652. endorlabs-0.2.0/tests/unit/workflows/estate/test_relationship_map_core.py +242 -0
  653. endorlabs-0.2.0/tests/unit/workflows/estate/test_relationship_map_focus.py +108 -0
  654. endorlabs-0.2.0/tests/unit/workflows/estate/test_summarize_workspace.py +140 -0
  655. endorlabs-0.2.0/tests/unit/workflows/policies/test_validate.py +60 -0
  656. endorlabs-0.2.0/tests/unit/workflows/reachability/test_cli.py +81 -0
  657. endorlabs-0.2.0/tests/unit/workflows/reachability/test_context_list_bounds.py +39 -0
  658. endorlabs-0.2.0/tests/unit/workflows/reachability/test_context_stitching.py +59 -0
  659. endorlabs-0.2.0/tests/unit/workflows/reachability/test_resolve.py +79 -0
  660. endorlabs-0.2.0/tests/unit/workflows/reachability/test_stitch.py +47 -0
  661. endorlabs-0.2.0/tests/unit/workflows/test_common.py +172 -0
  662. endorlabs-0.2.0/tests/unit/workflows/test_diagnostics.py +214 -0
  663. endorlabs-0.2.0/tests/unit/workflows/test_finding_triage.py +326 -0
  664. endorlabs-0.2.0/tests/unit/workflows/test_notification_setup.py +224 -0
  665. endorlabs-0.2.0/tests/unit/workflows/test_platform_setup.py +181 -0
  666. endorlabs-0.2.0/tests/unit/workflows/test_semgrep_inventory.py +43 -0
  667. endorlabs-0.2.0/tests/unit/workflows/test_semgrep_management.py +401 -0
  668. endorlabs-0.2.0/tests/unit/workflows/test_session_context.py +417 -0
  669. endorlabs-0.2.0/tests/unit/workflows/troubleshooting_scans/test_fetch_and_diff_scans.py +165 -0
  670. endorlabs-0.2.0/tests/unit/workflows/troubleshooting_scans/test_scan_result_list.py +66 -0
  671. endorlabs-0.2.0/tests/unit/workflows/troubleshooting_scans/test_summarize_scan_triage.py +133 -0
  672. endorlabs-0.2.0/tests/unit/workflows/troubleshooting_scans/test_troubleshooting_scans.py +146 -0
  673. endorlabs-0.2.0/uv.lock +2038 -0
@@ -0,0 +1,31 @@
1
+ ---
2
+ description: Author or update agent knowledge under agent-knowledge/ using the schema-driven authoring guide.
3
+ globs: agent-knowledge/**
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Agent knowledge authoring
8
+
9
+ When editing files under `agent-knowledge/`, follow the canonical authoring spec:
10
+
11
+ - [agent-knowledge/schema/README.md](../../agent-knowledge/schema/README.md) — portable frontmatter, `endorlabs.catalog` extension, **skill composition and handoffs**, rules, contracts, workflows.yaml
12
+ - [agent-knowledge/schema/skill.schema.json](../../agent-knowledge/schema/skill.schema.json) — machine validation
13
+
14
+ For multi-step or narrow-scope skills, document **Scope**, **Related skills** (with reciprocal links on peers), and optional **Optional stops** / routing tables — see [Skill composition and handoffs](../../agent-knowledge/schema/README.md#skill-composition-and-handoffs). Every skill id must use the **`endor-*`** prefix (see [schema/README.md](../../agent-knowledge/schema/README.md)).
15
+
16
+ After changes, run `uv run python devtools/sync_agent_knowledge.py`. Shipped `SKILL.md` files must contain **only** portable frontmatter (`name`, `description`, optional `disable-model-invocation`).
17
+
18
+ ## Path consistency (tests and docs)
19
+
20
+ When renaming a skill directory, script, or cited runtime path, **keep tests and docs aligned in the same change**:
21
+
22
+ - Grep `tests/` for the old skill id or script path; update any `candidate_paths` loaders (see `tests/unit/tooling/scripts/test_*` for precedent).
23
+ - Update skill body examples (`.cursor/skills/endor-<name>/…` in commands) and cross-links under `agent-knowledge/skills/`.
24
+ - Run sync so `src/endorlabs/agent_knowledge/` matches authoring; integration tests may assert materialized paths under `.endorlabs-context/sdk/skills/`.
25
+ - Do **not** add shared test helper modules for path resolution — inline loaders in the tests that need them are the contract.
26
+
27
+ ## Tests (manifest and drift)
28
+
29
+ - **Drift gate:** `tests/unit/platform/context/test_agent_knowledge_drift.py` runs `devtools/sync_agent_knowledge.py --verify`. That is the authoritative check that authoring, shipped bundle, INDEX, workflows, and `MANIFEST.json` stay aligned.
30
+ - **Do not hardcode skill or workflow counts** in unit tests (same principle as [docs-skillbase-consistency.mdc](docs-skillbase-consistency.mdc): no brittle “complete inventory” assertions). Adding or removing a skill should not require bumping a magic number.
31
+ - Prefer **structural** manifest checks: unique ids, required fields, on-disk paths under `agent_knowledge_dir()`, bootstrap `rule_ids` matches `rules[]`, and targeted presence/absence for the change under test (e.g. workflow row with `skill: null`).
@@ -0,0 +1,22 @@
1
+ ---
2
+ description: Keep docs aligned with codebase and skillbase paths
3
+ globs: **/*.{md,mdc}
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Docs and Skillbase Consistency
8
+
9
+ When editing repository docs or rules, keep documentation references aligned with the current repo layout and generated sources of truth.
10
+
11
+ - Prefer `agent-knowledge/skills/...` links/paths in git-tracked docs.
12
+ - If `.cursor/skills/...` is mentioned, label it as the mirrored runtime path used by Cursor.
13
+ - Do not maintain hardcoded "complete" resource inventories in hand-edited docs; point to `docs/generated-reference/resources.md` for the canonical current list.
14
+ - Apply the same rule to **tests**: do not assert exact skill/workflow counts in `test_agent_knowledge.py`; use `sync_agent_knowledge.py --verify` (see `test_agent_knowledge_drift.py`) plus structural manifest checks.
15
+ - Keep workflow and CLI inventory statements synchronized with:
16
+ - `src/endorlabs/workflows/__init__.py`
17
+ - `[project.scripts]` in `pyproject.toml`
18
+ - For doc corrections, preserve OS-agnostic command examples where possible.
19
+ - When editing skill playbooks, follow [agent-knowledge/schema/README.md — Skill composition and handoffs](../../agent-knowledge/schema/README.md#skill-composition-and-handoffs) for **Scope**, **Related skills**, and reciprocal peer links.
20
+ - When renaming skills, scripts, or path examples, **maintain consistency with tests and docs**: grep `tests/` for the old id/path, update skill command examples and `MANIFEST.json` refs (via sync), and keep the three trees aligned (`agent-knowledge/skills/`, shipped `src/endorlabs/agent_knowledge/skills/`, mirrored `.cursor/skills/`).
21
+ - **Doc placement:** tracked `docs/` is public-safe and durable — `docs/guides/` for SDK consumers, `docs/contributing/` for maintainers/release/CI. Do not commit session reports, readiness assessments, or implemented feature PR playbooks under `docs/`; use `.endorlabs-context/workspace/sessions/<user>/notes/` instead. No `docs/findings/` or tracked `*-draft.md` / `*-assessment.md`.
22
+ - **Changelog:** breaking changes and user-notable **Added** entries go in [`docs/changelog.md`](../../docs/changelog.md) under **Unreleased**; PR intake in [`.github/pull_request_template.md`](../../.github/pull_request_template.md). At release, promote to `## X.Y.Z`. Do not add parallel `*-migration.md` files or duplicate breaking tables elsewhere.
@@ -0,0 +1,95 @@
1
+ ---
2
+ description: Record breaking changes and notable features in docs/changelog.md only; keep Unreleased high-signal; use PR intake block before merge.
3
+ globs:
4
+ - src/endorlabs/**
5
+ - **/*.py
6
+ - **/.endorlabs-context/**
7
+ - agent-knowledge/**
8
+ - docs/**
9
+ - devtools/**
10
+ alwaysApply: false
11
+ x-endor-generated: true
12
+ x-endor-source: agent-knowledge/rules/endor-changelog.md
13
+ x-endor-source-sha256: 4a624cbdd0073ab9eb26873faa56d06a5b0e02a8c03e98f0b22385c2e764ef8d
14
+ ---
15
+
16
+ # Changelog (maintainer)
17
+
18
+ **Canonical file:** [`docs/changelog.md`](../../docs/changelog.md)
19
+
20
+ ## What belongs in the changelog
21
+
22
+ | Section | Include | Exclude |
23
+ |---------|---------|---------|
24
+ | **Breaking** | Removed CLI/API paths, renames, layout changes users must act on | Internal refactors, test-only changes |
25
+ | **Added** | New `[project.scripts]` CLI, new `Client.<Kind>` / public API, shipped agent skills with distinct playbooks | Maintainer scripts, CI-only wiring, routine model regen |
26
+ | **Changed** | Behavior or defaults that affect consumers without a hard break; optional release footnote when models align to a new OpenAPI snapshot | Doc-only edits unless user-visible |
27
+
28
+ ### Added — detail
29
+
30
+ **Include when upgraders gain a new capability:**
31
+
32
+ - New console script or workflow CLI (`pyproject.toml` → `[project.scripts]`).
33
+ - New registry facade, operation, or public `endorlabs.*` helper consumers call.
34
+ - New shipped skill under `sdk/skills/` (one bullet per skill id, or one grouped bullet listing ids).
35
+ - New optional PyPI extra or contract behavior documented in `contracts.md`.
36
+
37
+ **Prefer one grouped bullet** when landing several skills in one release: “Agent skills: `endor-foo`, `endor-bar` (shipped `MANIFEST.json`).”
38
+
39
+ ### Model sync / backend OpenAPI
40
+
41
+ | Situation | Changelog |
42
+ |-----------|-----------|
43
+ | Regen only; same resources and ops | **Omit** (or one **Changed** footnote at release: “Models aligned to platform OpenAPI snapshot.”) |
44
+ | New resources, ops, or create kwargs in generated reference | **Added** — name the resource or capability |
45
+ | Removed resource, stricter validation, facade break | **Breaking** |
46
+ | Payload tolerance / validation fixes callers saw | **Changed** |
47
+
48
+ Detail stays in [`docs/contributing/docs-drift-workflow.md`](../docs/contributing/docs-drift-workflow.md) and `docs/generated-reference/` — do not replay every regen PR.
49
+
50
+ ### Skills / workflows
51
+
52
+ - **New skill** → **Added** (or grouped).
53
+ - **Skill playbook fix** → **Changed** only when behavior materially changes for agents/users.
54
+ - **Workflow module without new console script** → usually omit unless it is the main upgrade reason.
55
+
56
+ ## PR intake (before merge)
57
+
58
+ Copy into the PR description ([`.github/pull_request_template.md`](../../.github/pull_request_template.md)). When **user-facing**, append the **Summary** line to **`docs/changelog.md` → Unreleased** in the same PR.
59
+
60
+ ```markdown
61
+ - [ ] Not user-facing → no Unreleased edit
62
+ - [ ] User-facing → one bullet under Added | Changed | Breaking
63
+
64
+ Section: Added | Changed | Breaking | none
65
+ Summary: (one imperative sentence)
66
+ Audience: sdk-user | agent-skill | both
67
+ Migration: (Breaking only)
68
+ ```
69
+
70
+ Optional structured fields: [`agent-knowledge/schema/changelog-intake.schema.json`](../schema/changelog-intake.schema.json) (reference only; not CI-gated).
71
+
72
+ **PR title hints (triage, not auto-changelog):** `feat(cli): …` · `fix(sdk): …` · `chore(model-sync): …` (usually no Unreleased line).
73
+
74
+ ## Workflow
75
+
76
+ 1. Stage under **`## Unreleased`** while work lands on `main`.
77
+ 2. At release, rename **Unreleased** → **`## X.Y.Z`** (keep subsections Added / Changed / Breaking).
78
+ 3. Leave a fresh empty **Unreleased** (subsection headers only until the next entry).
79
+ 4. Link from product docs (e.g. [estate/README.md](../../docs/estate/README.md)) to **`docs/changelog.md`** — not duplicate migration files.
80
+
81
+ **Release cut checklist** (see also [release-publishing.md](../../docs/contributing/release-publishing.md)):
82
+
83
+ 1. Collapse model-sync-only PRs into one **Changed** footnote or omit.
84
+ 2. Promote **Unreleased** → `## X.Y.Z`; reset **Unreleased** headers.
85
+ 3. Grep for removed CLI/API names; update durable docs to **current** behavior only.
86
+
87
+ Do **not** auto-generate `docs/changelog.md` from `git log`.
88
+
89
+ ## Do not
90
+
91
+ - Add `docs/**/*-migration.md` or long breaking tables outside the changelog.
92
+ - Put session reports or readiness assessments in the changelog (use workspace `notes/`).
93
+ - Duplicate the same breaking table in skills, contributing guides, and changelog.
94
+
95
+ When you add a **Breaking** entry, grep for old names/paths and update durable docs ([`docs/estate/`](../../docs/estate/), skills) to describe **current** behavior only; point upgraders at the changelog.
@@ -0,0 +1,45 @@
1
+ ---
2
+ description: Do not set page_size unless explicitly asked; scope and filter before raising max_pages.
3
+ alwaysApply: true
4
+ x-endor-generated: true
5
+ x-endor-source: agent-knowledge/rules/endor-list-query-performance.md
6
+ x-endor-source-sha256: f421ebe7b623c25e9987e0b0b59b951e636ba2a3ca727e5140a4341d518952b5
7
+ ---
8
+
9
+ # List query performance
10
+
11
+ Guidance for SDK `list()` / `list_iter()` calls, workflow CLIs, and session scripts.
12
+
13
+ ## Scope first
14
+
15
+ - Prefer **`Client(tenant="<child-or-leaf-namespace>")`** and **list without `traverse`**
16
+ when you only need resources in that namespace.
17
+ - Use **`traverse=True`** from the tenant root only when you intentionally need the
18
+ whole hierarchy.
19
+
20
+ A single `list(traverse=True)` minimizes round-trips; it does not guarantee a fast
21
+ server-side plan for broad unfiltered queries.
22
+
23
+ ## Filters
24
+
25
+ - Prefer **selective filters** that narrow rows before pagination.
26
+ - **Filter** selects rows; **mask** trims returned fields — do not conflate them.
27
+ - A non-empty **mask** returns **`dict`** rows, not Pydantic models.
28
+
29
+ ## Pagination
30
+
31
+ - **Do not set `page_size`** unless the user explicitly asks. Rely on API/SDK defaults.
32
+ Very small `page_size` (especially `1`) can be pathologically slow on log-style resources
33
+ (`AuditLog`, `FindingLog`, `AuthenticationLog`, …).
34
+ - **`max_pages`** caps client-side fetch depth — acceptable for bounding cost; it does not
35
+ replace selective `filter` or namespace scope.
36
+ - For log resources, cap **`max_pages` only** and leave `page_size` unset.
37
+
38
+ ## Debugging slow lists
39
+
40
+ 1. Narrow to a **child namespace** without `traverse`.
41
+ 2. Add or tighten **`filter`** when supported.
42
+ 3. Compare with `endorctl api list` (same resource, namespace, filter, traverse).
43
+ 4. Use a shorter read timeout when iterating locally.
44
+
45
+ See also `rules/endor-namespace-scoping.md` and `contracts/list-parameters.md`.
@@ -0,0 +1,44 @@
1
+ ---
2
+ description: Check gitignored .endorlabs-context paths explicitly; prefer local platform docs before the web; never print secrets.
3
+ globs:
4
+ - src/endorlabs/**
5
+ - **/*.py
6
+ - **/.endorlabs-context/**
7
+ - agent-knowledge/**
8
+ - docs/**
9
+ - devtools/**
10
+ alwaysApply: false
11
+ x-endor-generated: true
12
+ x-endor-source: agent-knowledge/rules/endor-local-context.md
13
+ x-endor-source-sha256: e395b9b272f410d52e9114c0afadee7f39d2e1d05338f89cbf42c47ebfcb1ee0
14
+ ---
15
+
16
+ # Local context discovery
17
+
18
+ When guidance references local context under gitignored paths, do not assume those
19
+ files are absent because a broad search did not show them.
20
+
21
+ ## Check explicitly
22
+
23
+ - `.endorlabs-context/`
24
+ - `.endorlabs-context/context.json`
25
+ - `.endorlabs-context/sdk/INDEX.md`
26
+ - `.endorlabs-context/sdk/MANIFEST.json`
27
+ - `.endorlabs-context/platform/openapi/openapiv2.swagger.json` (canonical OpenAPI)
28
+ - `.endorlabs-context/platform/user-docs/`
29
+ - `.env` (confirm variables exist only — **never print secrets**)
30
+
31
+ Do **not** use legacy flat paths (`.endorlabs-context/openapiv2.swagger.json`,
32
+ `.endorlabs-context/user-docs/`). `endorlabs.init(include_openapi=True)` and
33
+ `sync_openapi()` reconcile or remove them when syncing to `platform/`.
34
+
35
+ Gitignored paths may be missing from workspace search; try targeted reads before
36
+ concluding context is unavailable.
37
+
38
+ ## Research order
39
+
40
+ 1. Wheel: `agent_knowledge_index_path()` / `agent_knowledge_manifest()` (site-packages), or materialized `.endorlabs-context/sdk/` after `init()`.
41
+ 2. Local OpenAPI and user docs under `.endorlabs-context/platform/` (when bootstrapped).
42
+ 3. Online API spec and docs only as fallback.
43
+
44
+ Materialize with `endorlabs.init()` when a cwd-relative tree is needed.
@@ -0,0 +1,43 @@
1
+ ---
2
+ description: Resolve Project first; pass namespace=project.namespace on project-scoped lists.
3
+ alwaysApply: true
4
+ x-endor-generated: true
5
+ x-endor-source: agent-knowledge/rules/endor-namespace-scoping.md
6
+ x-endor-source-sha256: fe36b3e092afebd2332980b5803663d10a38070fde802733020da860312186a3
7
+ ---
8
+
9
+ # Namespace scoping
10
+
11
+ ## OSS catalog plane
12
+
13
+ `Vulnerability`, `Malware`, `QueryVulnerability`, and `QueryMalware` use registry `scope="oss"`.
14
+ List/get and catalog query creates hit `/v1/namespaces/oss/…` regardless of `Client(tenant=…)`.
15
+
16
+ ## Resource-scoped operations
17
+
18
+ When you have a resource instance (from `list(traverse=True)`), pass the resource object to
19
+ `get`, `update`, or `delete` so namespace is resolved from the resource.
20
+
21
+ - **List/filter scoped to a resource:** Use **`namespace=resource.namespace`** or
22
+ `list(parent=resource)` where supported.
23
+ - **Discovery:** Root namespace + `traverse=True` (concurrent namespace fan-out is
24
+ the SDK default; pass `concurrent=False` to opt out).
25
+
26
+ ## Project-scoped lists (MUST)
27
+
28
+ `Client(tenant=<client_tenant>)` with default `traverse=False` lists **only that path segment**—not
29
+ child namespaces where projects usually live. A filter such as `spec.project_uuid==…` does **not**
30
+ widen the path.
31
+
32
+ **Resolve the `Project` row first**, then pass **`namespace=project.namespace`** on downstream lists
33
+ (`Finding`, `ScanResult`, `PackageVersion`, `DependencyMetadata`, …). Otherwise you often get
34
+ **empty results with no error** (the SDK may emit a `UserWarning` on empty tenant-root lists for
35
+ these resources).
36
+
37
+ **Do not confuse:** `Client(tenant=…)` (auth) with **`--namespace` scope** on bulk workflows (`endor-estate pull -n …`) — namespace scope may be tenant root **or** a child namespace; see [docs/estate/README.md](../../docs/estate/README.md). Do not run bulk pull unless the user explicitly requests it.
38
+
39
+ Alternatives:
40
+
41
+ - `Client(tenant=project.namespace)` for the rest of the session, or
42
+ - `traverse=True` only when deliberately searching tenant-wide (higher cost).
43
+ Pass `concurrent=False` for a single sequential traverse query.
@@ -0,0 +1,45 @@
1
+ ---
2
+ description: Use placeholders in git-tracked agent content; never commit customer estate identifiers (tenants, project URLs, production UUIDs).
3
+ globs:
4
+ - src/endorlabs/**
5
+ - **/*.py
6
+ - **/.endorlabs-context/**
7
+ - agent-knowledge/**
8
+ - docs/**
9
+ - devtools/**
10
+ alwaysApply: false
11
+ x-endor-generated: true
12
+ x-endor-source: agent-knowledge/rules/endor-portable-examples.md
13
+ x-endor-source-sha256: b45b085c3017366ce44ac2b0a9646a9d4fdc2b27ee7f58d4250d222a7d89b84e
14
+ ---
15
+
16
+ # Portable examples
17
+
18
+ Git-tracked agent skills, contracts, and generated bundle content must not embed
19
+ **estate identifiers** from customer organizations. There is **no** automated
20
+ substring allowlist—apply judgment using the classes below.
21
+
22
+ ## Name classes
23
+
24
+ | Class | Meaning | In git-tracked agent content |
25
+ |-------|---------|------------------------------|
26
+ | **Placeholders** | `<tenant>`, `<namespace>`, `<project-uuid>`, `tenant.namespace`, `https://github.com/org/repo.git` | **Required** in commands and snippets |
27
+ | **Product vocabulary** | Platform features, connector types, resource kinds, scan categories in product/user-docs | OK when describing *how the product works* |
28
+ | **Estate identifiers** | Tenant roots, child namespaces, registered project URLs/names, production UUIDs | **Never** commit; resolve from env, user input, or API at runtime |
29
+
30
+ ## Integration surface vs inventory record
31
+
32
+ A label may name a **platform integration surface** (documented connector or SCM
33
+ capability) or a **tenant-owned inventory record** (a Project UUID or registered
34
+ repository URL). Portable docs use only the former class generically; inventory
35
+ records are session data.
36
+
37
+ When unsure, prefer a placeholder. Do not add repo-specific "exceptions" for
38
+ particular customer names, tenant paths, or UUIDs—those belong in session context,
39
+ integration tests with env vars, or user-provided inputs.
40
+
41
+ ## Runtime resolution
42
+
43
+ - Tenant/namespace: `ENDOR_NAMESPACE`, CLI `--tenant` / `--namespace`, or `Client(tenant=…)`.
44
+ - Project: user-provided URL/UUID or `Project.list` / `resolve_project` at runtime.
45
+ - Never hardcode production UUIDs in skills or contracts.
@@ -0,0 +1,74 @@
1
+ ---
2
+ description: Prefer workflow CLI, then library imports, then Client; extend artifacts instead of re-fetching discovery.
3
+ globs:
4
+ - src/endorlabs/**
5
+ - **/*.py
6
+ - **/.endorlabs-context/**
7
+ - agent-knowledge/**
8
+ - docs/**
9
+ - devtools/**
10
+ alwaysApply: false
11
+ x-endor-generated: true
12
+ x-endor-source: agent-knowledge/rules/endor-workflow-composition.md
13
+ x-endor-source-sha256: 79c7285a426c54a55605c3868226ac5f0cf085d055ef6b971abefdf0f9f75eb7
14
+ ---
15
+
16
+ # Workflow composition
17
+
18
+ ## Layer boundaries
19
+
20
+ | Layer | Location | Responsibility | Must not |
21
+ |-------|----------|----------------|----------|
22
+ | **Primitives** | `Client`, `APIClient` | CRUD/list/get per resource | Orchestration, file I/O, argparse |
23
+ | **Tools** | `endorlabs.tools.*` | Reusable domain utilities (e.g. dependency explorer) | Tenant-wide workflow opinions, CLI mains |
24
+ | **Workflow libraries** | `endorlabs.workflows.*` (non-`cli`) | `Client` in → typed `WorkflowResult` out | `print()`, argparse, cwd-relative writes |
25
+ | **Workflow CLIs** | `*.cli`, `troubleshooting_scans/*` | Args, artifacts, filenames | Become copy-paste targets for agents |
26
+ | **Session scripts** | `workspace/sessions/<user>/scripts/` | Thin glue on artifacts + library imports | Live in `src/`, reimplement discovery |
27
+
28
+ `endorlabs.workflows` ships **documented contracts** — prefer importing
29
+ `library_entrypoints` from `MANIFEST.json` over vendoring workflow source.
30
+
31
+ ## Escalation ladder
32
+
33
+ Use one step at a time:
34
+
35
+ 1. **Workflow CLI** — run the skill's documented command with defaults.
36
+ 2. **Workflow library** — import composable functions (see `MANIFEST.json` `library_entrypoints`).
37
+ 3. **`Client` facade** — when no workflow covers the query.
38
+ 4. **Session script** — minimal glue under `sessions/<user>/scripts/` (see `endor-workspace-layout`).
39
+
40
+ ## Artifact-first
41
+
42
+ After a workflow run, treat outputs as source of truth:
43
+
44
+ - Read `context_manifest.json`, troubleshooting JSON, or step artifacts **before** re-listing the API.
45
+ - Thread `namespace` and UUIDs from artifacts into downstream calls.
46
+ - Do not repeat `Project.list(traverse=True)` when a prior step already wrote project JSON.
47
+
48
+ ## Supported library imports
49
+
50
+ Generic entrypoints (no estate literals):
51
+
52
+ - `endorlabs.workflows.projects.resolve.resolve_project`
53
+ - `endorlabs.workflows.common.WorkflowResult`
54
+ - `endorlabs.workflows.policies.run_validate_policy`
55
+ - `endorlabs.workflows.estate.export_version_cardinality_for_package_match`
56
+ - `endorlabs.workflows.callgraph.run_callgraph_sweep`
57
+ - `endorlabs.workflows.troubleshooting_scans` — `list_scan_results_for_project`, `resolve_project`, …
58
+ - `endorlabs.workflows.agent_context.hydration` — per-project BOM/CG hydration primitive; not a workflow orchestrator
59
+ - `endorlabs.tools.dependency_explorer` — backward-compatible re-exports of the hydration/call-graph modules above
60
+
61
+ See `MANIFEST.json` → `workflows[].library_entrypoints` for the catalog row tied to each skill.
62
+
63
+ ## Anti-patterns
64
+
65
+ - Run **`endor-estate pull`** (namespace-wide bulk collect) unless the user explicitly requests it — see [docs/estate/README.md](../../docs/estate/README.md).
66
+ - Copy-paste a workflow CLI `main()` into a session script.
67
+ - Unbounded re-fetch to "fix" empty rows (check namespace first).
68
+ - Add triage code under `src/endorlabs/` during an investigation.
69
+ - Fork filename/JSON contracts when extending troubleshooting pipelines.
70
+
71
+ ## When to promote
72
+
73
+ Reusable, tested orchestration belongs in `endorlabs.workflows` (contributor PR), not a
74
+ permanent session script.
@@ -0,0 +1,61 @@
1
+ ---
2
+ description: Write session/triage artifacts under workspace/sessions/<user>/; not repo-root .tmp/.
3
+ globs:
4
+ - src/endorlabs/**
5
+ - **/*.py
6
+ - **/.endorlabs-context/**
7
+ - agent-knowledge/**
8
+ - docs/**
9
+ - devtools/**
10
+ alwaysApply: false
11
+ x-endor-generated: true
12
+ x-endor-source: agent-knowledge/rules/endor-workspace-layout.md
13
+ x-endor-source-sha256: 18bd45fc8873c9654680a3f18bf343769abfa5f92a4e6b5b017f578d913523fb
14
+ ---
15
+
16
+ # Workspace layout
17
+
18
+ Run outputs and agent-written files belong under **`.endorlabs-context/workspace/`**
19
+ (gitignored). Do **not** write session/triage debugging artifacts or ad-hoc probe
20
+ scripts to repo-root `.tmp/` unless the user explicitly requests that path.
21
+
22
+ ## Subdirectories
23
+
24
+ | Subdir | Use for |
25
+ |--------|---------|
26
+ | `<slug>-<YYYYMMDD>/` | Estate pull + analyze (`endor-estate`; `data/`, `intermediate-representation/`, `viz/`) |
27
+ | `projects/<uuid>/` | Project-scoped workflow bundles (`endor-agent-context`, reachability exports, relationship maps) |
28
+ | `sessions/<user>/` | Interactive session, RCA/triage exports, one-off scripts, and other non-project scratch work |
29
+ | `artifacts/` | Namespace-scoped inventory outputs (e.g. **`SemgrepRule`** metadata inventory from `endor-semgrep-inventory`) |
30
+
31
+ Common session subfolders (create as needed):
32
+
33
+ - `sessions/<user>/troubleshooting/` — scan RCA (`troubleshooting_scans` workflow default)
34
+ - `sessions/<user>/scripts/` — temporary probe/debug `.py` files for the current investigation
35
+ - `sessions/<user>/exports/` — structured JSON/CSV from auth/SSO/policy spot-checks
36
+ - `sessions/<user>/notes/` — ephemeral markdown (readiness reports, doc audits, design spikes)
37
+
38
+ ## Ephemeral markdown (do not commit)
39
+
40
+ Short-shelf-life notes belong under **`sessions/<user>/notes/`**, not tracked `docs/`.
41
+ Do not add `docs/findings/`, `*-draft.md`, or `*-assessment.md` under git. Durable
42
+ public docs live in `docs/guides/` (consumers) and `docs/contributing/` (maintainers).
43
+ Breaking changes and notable releases: [docs/changelog.md](../../docs/changelog.md) only — no parallel `*-migration.md`.
44
+ See [docs/design.md](../../docs/design.md) placement rules.
45
+
46
+ ## Resolving `<user>`
47
+
48
+ Derive a short directory slug from `Client().whoami()` (email local-part, sanitized).
49
+ When identity is unknown, use `agent`.
50
+
51
+ ## Agent rules
52
+
53
+ 1. **Project workflows** — pass `--output-dir .endorlabs-context/workspace/projects/` (or omit when the CLI default is already `workspace/projects`).
54
+ 2. **Triage / debugging** — write artifacts under `.endorlabs-context/workspace/sessions/<user>/` (add a task subdir when helpful).
55
+ 3. **Temp scripts** — create under `sessions/<user>/scripts/`; never commit them to `src/` or repo root.
56
+ 4. **Ephemeral markdown** — readiness assessments, audit logs, and spike notes go under
57
+ `sessions/<user>/notes/`; do not commit under `docs/`.
58
+ 5. **Do not** assume `.endorlabs-context/` exists; `mkdir -p` parent dirs before writing.
59
+
60
+ Path helpers (SDK): `endorlabs.context.paths.workflow_projects_root`,
61
+ `workflow_sessions_root`, `workflow_artifacts_root`.
@@ -0,0 +1,17 @@
1
+ # Override .gitignore — let Cursor AI see these gitignored directories.
2
+ # .gitignore keeps them out of version control; ! negations here let Cursor index them.
3
+
4
+ # API spec + user docs (context bootstrap)
5
+ !.endorlabs-context/
6
+ !.endorlabs-context/**
7
+ !.endorlabs-context/docs/
8
+ !.endorlabs-context/docs/**
9
+ !.endorlabs-context/session-*
10
+
11
+ # Research files, responses
12
+ !.tmp/
13
+ !.tmp/**
14
+
15
+ # Generated files
16
+ !.generated/
17
+ !.generated/**
@@ -0,0 +1,30 @@
1
+ # CODEOWNERS — last matching pattern wins.
2
+ # Teams: @endorlabs/<slug> Users: @username
3
+
4
+ # Default owner for the SDK repo
5
+ * @endorlabs/engineering
6
+
7
+ # CI, releases, GitHub automation
8
+ /.github/ @endorlabs/engineering
9
+
10
+ # IDE agent rules and skill mirrors
11
+ /.cursor/ @endorlabs/engineering
12
+
13
+ # Maintainer automation and model sync
14
+ /devtools/ @endorlabs/engineering
15
+
16
+ # Agent knowledge (authoring + shipped wheel copy)
17
+ /agent-knowledge/ @endorlabs/engineering
18
+ /src/endorlabs/agent_knowledge/ @endorlabs/engineering
19
+
20
+ # Runtime SDK
21
+ /src/ @endorlabs/engineering
22
+
23
+ # Tests
24
+ /tests/ @endorlabs/engineering
25
+
26
+ # Documentation (user + contributor guides)
27
+ /docs/ @endorlabs/technical-documentation
28
+ /README.md @endorlabs/technical-documentation
29
+ /CONTRIBUTORS.md @endorlabs/technical-documentation
30
+ /AGENTS.md @endorlabs/engineering
@@ -0,0 +1,68 @@
1
+ name: Release Build Gate
2
+ description: >-
3
+ Quality gate, ship-artifact verification, and wheel build shared by production
4
+ and TestPyPI release workflows.
5
+
6
+ inputs:
7
+ version:
8
+ description: PEP 440 version (sets SETUPTOOLS_SCM_PRETEND_VERSION)
9
+ required: true
10
+ fetch-spec:
11
+ description: Download live OpenAPI spec before ship-artifact verify
12
+ required: false
13
+ default: "true"
14
+ verify-changelog:
15
+ description: Require docs/changelog.md section ## {version}
16
+ required: false
17
+ default: "true"
18
+
19
+ runs:
20
+ using: composite
21
+ steps:
22
+ - name: Set release version
23
+ shell: bash
24
+ run: |
25
+ echo "SETUPTOOLS_SCM_PRETEND_VERSION=${{ inputs.version }}" >> "$GITHUB_ENV"
26
+ echo "Release version: ${{ inputs.version }}"
27
+
28
+ - name: Verify hatch-vcs version resolution
29
+ shell: bash
30
+ run: >-
31
+ uv run python devtools/check_vcs_version.py
32
+ --expect "${{ inputs.version }}"
33
+ --release-only
34
+
35
+ - name: Run quality gate
36
+ shell: bash
37
+ run: |
38
+ uv run ruff check .
39
+ uv run ruff format --check .
40
+ uv run pyright
41
+ uv run pytest tests/unit/ -x -m "not interactive and not long"
42
+
43
+ - name: Verify ship artifacts
44
+ shell: bash
45
+ run: |
46
+ set -euo pipefail
47
+ ARGS=(run python devtools/verify_ship_artifacts.py)
48
+ if [ "${{ inputs.fetch-spec }}" = "true" ]; then
49
+ ARGS+=(--fetch-spec)
50
+ fi
51
+ if [ "${{ inputs.verify-changelog }}" = "true" ]; then
52
+ ARGS+=(--verify-changelog "${{ inputs.version }}")
53
+ fi
54
+ uv "${ARGS[@]}"
55
+
56
+ - name: Build package
57
+ shell: bash
58
+ run: uv build
59
+
60
+ - name: Verify distribution metadata
61
+ shell: bash
62
+ run: uv run twine check dist/*
63
+
64
+ - name: Smoke test built wheel
65
+ shell: bash
66
+ run: >-
67
+ uv run python devtools/smoke_test_wheel.py
68
+ --expect-version "${{ inputs.version }}"
@@ -0,0 +1,34 @@
1
+ name: 'Setup Python with UV'
2
+ description: 'Setup Python and UV with dependency caching for Endor Labs SDK'
3
+ inputs:
4
+ python-version:
5
+ description: 'Python version to use'
6
+ required: true
7
+ default: '3.13'
8
+ uv-version:
9
+ description: 'UV version to install'
10
+ required: false
11
+ default: '0.9.3'
12
+ install-dependencies:
13
+ description: 'Whether to install dependencies'
14
+ required: false
15
+ default: 'true'
16
+ runs:
17
+ using: 'composite'
18
+ steps:
19
+ - name: Install UV
20
+ uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
21
+ with:
22
+ version: ${{ inputs.uv-version }}
23
+ python-version: ${{ inputs.python-version }}
24
+ enable-cache: true
25
+ cache-dependency-glob: |
26
+ **/pyproject.toml
27
+ **/uv.lock
28
+
29
+ - name: Install dependencies (dev only)
30
+ if: inputs.install-dependencies == 'true'
31
+ shell: bash
32
+ run: |
33
+ echo "Installing dependencies..."
34
+ uv sync --dev
@@ -0,0 +1,21 @@
1
+ # Endor Labs SDK – Repository instructions for GitHub Copilot
2
+
3
+ **Project**: Endor Labs SDK for Endor Labs. API-first platform for security governance.
4
+
5
+ ---
6
+
7
+ ## What to seek when suggesting or reviewing code
8
+
9
+ **Security**: Actively look for security issues. Examples: credential or secret handling (use env only; no hardcoding); injection or unsafe use of user-controlled input in paths or request bodies; missing or weak validation of API responses; dependency or supply-chain concerns. Prefer safe defaults and fail closed where appropriate.
10
+
11
+ **SDK consumer UX**: View changes from the perspective of someone using this SDK in their application. Prefer clear, consistent naming; predictable error handling (use exception classes exported by `endorlabs`, implemented in `endorlabs.core.exceptions`; no silent swallowing); helpful docstrings and type hints; ergonomic defaults (e.g. `traverse=True` for tenant-wide queries where documented). Avoid breaking or surprising behavior for existing callers; preserve backward compatibility unless explicitly changing the contract.
12
+
13
+ **Consistency and parity with API spec and docs**: Keep SDK models and resource behavior aligned with the authoritative API definition and user documentation. When adding or changing resources or models, check the OpenAPI spec and user docs for path names, request/response shapes, required vs optional fields, and documented semantics. Flag drift (e.g. SDK fields or behavior that no longer match the spec or docs) and suggest corrections. Use the references below.
14
+
15
+ ---
16
+
17
+ ## Reference – API spec and user docs
18
+
19
+ - **API spec (OpenAPI)**: <https://api.endorlabs.com/download/openapiv2.swagger.json> (schema drift workflow downloads to `.endorlabs-context/platform/openapi/` in CI; folder is gitignored)
20
+ - **User documentation**: <https://docs.endorlabs.com/> — sitemap <https://docs.endorlabs.com/sitemap.xml>
21
+ - **In-repo docs**: `docs/README.md` (index), `docs/contracts.md` (naming, traverse, ListParameters), `docs/reference/namespace.md`, `docs/contributing/architecture.md`, `docs/contributing/api-validation.md`, `docs/contributing/integration-resource-tests.md`, `docs/contributing/docs-drift-workflow.md`