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.
- endorlabs-0.2.0/.cursor/rules/agent-knowledge-authoring.mdc +31 -0
- endorlabs-0.2.0/.cursor/rules/docs-skillbase-consistency.mdc +22 -0
- endorlabs-0.2.0/.cursor/rules/endor-changelog.mdc +95 -0
- endorlabs-0.2.0/.cursor/rules/endor-list-query-performance.mdc +45 -0
- endorlabs-0.2.0/.cursor/rules/endor-local-context.mdc +44 -0
- endorlabs-0.2.0/.cursor/rules/endor-namespace-scoping.mdc +43 -0
- endorlabs-0.2.0/.cursor/rules/endor-portable-examples.mdc +45 -0
- endorlabs-0.2.0/.cursor/rules/endor-workflow-composition.mdc +74 -0
- endorlabs-0.2.0/.cursor/rules/endor-workspace-layout.mdc +61 -0
- endorlabs-0.2.0/.cursorignore +17 -0
- endorlabs-0.2.0/.github/CODEOWNERS +30 -0
- endorlabs-0.2.0/.github/actions/release-build-gate/action.yml +68 -0
- endorlabs-0.2.0/.github/actions/setup-python-uv/action.yml +34 -0
- endorlabs-0.2.0/.github/copilot-instructions.md +21 -0
- endorlabs-0.2.0/.github/pull_request_template.md +23 -0
- endorlabs-0.2.0/.github/scripts/check_endorctl_version.py +263 -0
- endorlabs-0.2.0/.github/workflows/ci-pr-main.yml +515 -0
- endorlabs-0.2.0/.github/workflows/release-pypi.yml +139 -0
- endorlabs-0.2.0/.github/workflows/release-tag-publish.yml +215 -0
- endorlabs-0.2.0/.github/workflows/release-testpypi.yml +125 -0
- endorlabs-0.2.0/.gitignore +80 -0
- endorlabs-0.2.0/.gitleaksignore +4 -0
- endorlabs-0.2.0/.pre-commit-config.yaml +201 -0
- endorlabs-0.2.0/AGENTS.md +113 -0
- endorlabs-0.2.0/CONTRIBUTORS.md +176 -0
- endorlabs-0.2.0/LICENSE +21 -0
- endorlabs-0.2.0/PKG-INFO +232 -0
- endorlabs-0.2.0/README.md +193 -0
- endorlabs-0.2.0/agent-knowledge/INDEX.md +116 -0
- endorlabs-0.2.0/agent-knowledge/README.md +75 -0
- endorlabs-0.2.0/agent-knowledge/contracts/canonical-naming.md +14 -0
- endorlabs-0.2.0/agent-knowledge/contracts/dependency-metadata.md +27 -0
- endorlabs-0.2.0/agent-knowledge/contracts/errors-and-auth.md +32 -0
- endorlabs-0.2.0/agent-knowledge/contracts/list-parameters.md +54 -0
- endorlabs-0.2.0/agent-knowledge/rules/endor-changelog.md +88 -0
- endorlabs-0.2.0/agent-knowledge/rules/endor-list-query-performance.md +45 -0
- endorlabs-0.2.0/agent-knowledge/rules/endor-local-context.md +37 -0
- endorlabs-0.2.0/agent-knowledge/rules/endor-namespace-scoping.md +42 -0
- endorlabs-0.2.0/agent-knowledge/rules/endor-portable-examples.md +38 -0
- endorlabs-0.2.0/agent-knowledge/rules/endor-workflow-composition.md +67 -0
- endorlabs-0.2.0/agent-knowledge/rules/endor-workspace-layout.md +53 -0
- endorlabs-0.2.0/agent-knowledge/schema/README.md +172 -0
- endorlabs-0.2.0/agent-knowledge/schema/SKILL.md +38 -0
- endorlabs-0.2.0/agent-knowledge/schema/changelog-intake.schema.json +42 -0
- endorlabs-0.2.0/agent-knowledge/schema/contract.schema.json +23 -0
- endorlabs-0.2.0/agent-knowledge/schema/rule.schema.json +28 -0
- endorlabs-0.2.0/agent-knowledge/schema/skill.schema.json +75 -0
- endorlabs-0.2.0/agent-knowledge/schema/workflows.schema.json +59 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-custom-sast-rules/AUTHORING.md +311 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-custom-sast-rules/IMPORT_EXPORT.md +453 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-custom-sast-rules/SEMGREP_RULE_SHAPE_GUARDRAILS.md +60 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-custom-sast-rules/SKILL.md +121 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-custom-sast-rules/SYNTAX_REFERENCE.md +411 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-custom-sast-rules/scripts/sast_rule_manager.py +1014 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-dependency-finding-provenance/SKILL.md +193 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-dependency-provenance/SKILL.md +66 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-fetch-and-search-call-graph/CALL_GRAPH_FORMAT_AND_SEARCH.md +102 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-fetch-and-search-call-graph/SKILL.md +124 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-implement-sdk-resource/SKILL.md +67 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-model-sync-drift/SKILL.md +86 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-namespace-relationship-map/SKILL.md +87 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-project-retrieval-bundle/MULTIPASS_LLM_CONTRACT.md +54 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-project-retrieval-bundle/SKILL.md +100 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-reachability-provenance/SKILL.md +172 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-reachability-provenance/examples.md +54 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-retrieve-scan-results/SKILL.md +180 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-sso-integration-validation-troubleshooting/README.md +14 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-sso-integration-validation-troubleshooting/SKILL.md +105 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-sso-integration-validation-troubleshooting/sso_access_spotcheck.py +315 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-troubleshoot-authlog/SKILL.md +69 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-troubleshoot-sdk/KNOWN_ISSUES.md +172 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-troubleshoot-sdk/SKILL.md +119 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-troubleshooting-scans/SKILL.md +191 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-validate-policy/API.md +106 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-validate-policy/ENDORCTL.md +45 -0
- endorlabs-0.2.0/agent-knowledge/skills/endor-validate-policy/SKILL.md +162 -0
- endorlabs-0.2.0/agent-knowledge/workflows.yaml +27 -0
- endorlabs-0.2.0/devtools/README.md +15 -0
- endorlabs-0.2.0/devtools/agent_knowledge_catalog.py +444 -0
- endorlabs-0.2.0/devtools/check_vcs_version.py +137 -0
- endorlabs-0.2.0/devtools/generate_client_stub.py +625 -0
- endorlabs-0.2.0/devtools/generate_reference_docs.py +617 -0
- endorlabs-0.2.0/devtools/generate_resource_reference_pages.py +326 -0
- endorlabs-0.2.0/devtools/history_purge_audit.py +169 -0
- endorlabs-0.2.0/devtools/history_purge_verify.py +101 -0
- endorlabs-0.2.0/devtools/model_sync.py +14 -0
- endorlabs-0.2.0/devtools/model_sync_profiles/aliases.json +5 -0
- endorlabs-0.2.0/devtools/model_sync_profiles/base_class_map.json +5 -0
- endorlabs-0.2.0/devtools/model_sync_profiles/enum_policy.json +6 -0
- endorlabs-0.2.0/devtools/model_sync_profiles/partition_rules.json +8 -0
- endorlabs-0.2.0/devtools/model_sync_profiles/resource_descriptions.json +38 -0
- endorlabs-0.2.0/devtools/model_sync_profiles/resource_related.json +10 -0
- endorlabs-0.2.0/devtools/model_sync_profiles/resource_scope_overrides.json +7 -0
- endorlabs-0.2.0/devtools/probe_endor_mcp_tools.py +348 -0
- endorlabs-0.2.0/devtools/refresh_token_to_dotenv.py +255 -0
- endorlabs-0.2.0/devtools/run_without_endor_token.py +86 -0
- endorlabs-0.2.0/devtools/service-requests/enable-nat-network-requests.py +267 -0
- endorlabs-0.2.0/devtools/smoke_test_published_install.py +77 -0
- endorlabs-0.2.0/devtools/smoke_test_wheel.py +103 -0
- endorlabs-0.2.0/devtools/split_dependency_explorer.py +177 -0
- endorlabs-0.2.0/devtools/sync/README.md +124 -0
- endorlabs-0.2.0/devtools/sync/__init__.py +3 -0
- endorlabs-0.2.0/devtools/sync/cli.py +447 -0
- endorlabs-0.2.0/devtools/sync/codegen.py +84 -0
- endorlabs-0.2.0/devtools/sync/contract.py +974 -0
- endorlabs-0.2.0/devtools/sync/path_safety.py +67 -0
- endorlabs-0.2.0/devtools/sync/planner.py +107 -0
- endorlabs-0.2.0/devtools/sync/policy.py +297 -0
- endorlabs-0.2.0/devtools/sync/provenance.py +104 -0
- endorlabs-0.2.0/devtools/sync/upstream_verify.py +203 -0
- endorlabs-0.2.0/devtools/sync_agent_knowledge.py +790 -0
- endorlabs-0.2.0/devtools/verify_ship_artifacts.py +235 -0
- endorlabs-0.2.0/docs/README.md +59 -0
- endorlabs-0.2.0/docs/assets/endor-auri-platform.webp +0 -0
- endorlabs-0.2.0/docs/assets/endor-labs-wordmark-dark.png +0 -0
- endorlabs-0.2.0/docs/assets/endor-labs-wordmark-dark.svg +15 -0
- endorlabs-0.2.0/docs/assets/endor-labs-wordmark-light.png +0 -0
- endorlabs-0.2.0/docs/assets/endor-labs-wordmark.svg +20 -0
- endorlabs-0.2.0/docs/changelog.md +142 -0
- endorlabs-0.2.0/docs/contracts.md +123 -0
- endorlabs-0.2.0/docs/contributing/README.md +16 -0
- endorlabs-0.2.0/docs/contributing/api-validation.md +58 -0
- endorlabs-0.2.0/docs/contributing/architecture.md +88 -0
- endorlabs-0.2.0/docs/contributing/docs-drift-workflow.md +119 -0
- endorlabs-0.2.0/docs/contributing/integration-resource-tests.md +60 -0
- endorlabs-0.2.0/docs/contributing/list-query-performance.md +79 -0
- endorlabs-0.2.0/docs/contributing/namespace-traversal.md +187 -0
- endorlabs-0.2.0/docs/contributing/release-publishing.md +276 -0
- endorlabs-0.2.0/docs/contributing/repository-layout.md +111 -0
- endorlabs-0.2.0/docs/contributing/troubleshooting.md +79 -0
- endorlabs-0.2.0/docs/design.md +57 -0
- endorlabs-0.2.0/docs/estate/README.md +45 -0
- endorlabs-0.2.0/docs/estate/compile-graph.md +43 -0
- endorlabs-0.2.0/docs/estate/remediation.md +49 -0
- endorlabs-0.2.0/docs/estate/risk-cardinality.md +26 -0
- endorlabs-0.2.0/docs/estate/workspace.md +61 -0
- endorlabs-0.2.0/docs/generated-reference/README.md +8 -0
- endorlabs-0.2.0/docs/generated-reference/api-surfaces.md +161 -0
- endorlabs-0.2.0/docs/generated-reference/create-update-payloads.md +148 -0
- endorlabs-0.2.0/docs/generated-reference/resources/APIKey.md +66 -0
- endorlabs-0.2.0/docs/generated-reference/resources/AuditLog.md +65 -0
- endorlabs-0.2.0/docs/generated-reference/resources/AuthenticationLog.md +21 -0
- endorlabs-0.2.0/docs/generated-reference/resources/AuthorizationPolicy.md +70 -0
- endorlabs-0.2.0/docs/generated-reference/resources/CodeOwners.md +57 -0
- endorlabs-0.2.0/docs/generated-reference/resources/DependencyMetadata.md +60 -0
- endorlabs-0.2.0/docs/generated-reference/resources/EndorLicense.md +28 -0
- endorlabs-0.2.0/docs/generated-reference/resources/Finding.md +98 -0
- endorlabs-0.2.0/docs/generated-reference/resources/FindingLog.md +77 -0
- endorlabs-0.2.0/docs/generated-reference/resources/Installation.md +86 -0
- endorlabs-0.2.0/docs/generated-reference/resources/Invitation.md +62 -0
- endorlabs-0.2.0/docs/generated-reference/resources/LinterResult.md +78 -0
- endorlabs-0.2.0/docs/generated-reference/resources/Malware.md +28 -0
- endorlabs-0.2.0/docs/generated-reference/resources/Metric.md +63 -0
- endorlabs-0.2.0/docs/generated-reference/resources/Namespace.md +62 -0
- endorlabs-0.2.0/docs/generated-reference/resources/NotificationTarget.md +61 -0
- endorlabs-0.2.0/docs/generated-reference/resources/PRCommentConfig.md +61 -0
- endorlabs-0.2.0/docs/generated-reference/resources/PackageFirewallLog.md +21 -0
- endorlabs-0.2.0/docs/generated-reference/resources/PackageLicense.md +64 -0
- endorlabs-0.2.0/docs/generated-reference/resources/PackageVersion.md +81 -0
- endorlabs-0.2.0/docs/generated-reference/resources/Policy.md +82 -0
- endorlabs-0.2.0/docs/generated-reference/resources/PolicyTemplate.md +21 -0
- endorlabs-0.2.0/docs/generated-reference/resources/Project.md +81 -0
- endorlabs-0.2.0/docs/generated-reference/resources/QueryMalware.md +70 -0
- endorlabs-0.2.0/docs/generated-reference/resources/QueryVulnerability.md +72 -0
- endorlabs-0.2.0/docs/generated-reference/resources/README.md +49 -0
- endorlabs-0.2.0/docs/generated-reference/resources/Repository.md +74 -0
- endorlabs-0.2.0/docs/generated-reference/resources/RepositoryVersion.md +60 -0
- endorlabs-0.2.0/docs/generated-reference/resources/ScanLogRequest.md +77 -0
- endorlabs-0.2.0/docs/generated-reference/resources/ScanProfile.md +63 -0
- endorlabs-0.2.0/docs/generated-reference/resources/ScanResult.md +93 -0
- endorlabs-0.2.0/docs/generated-reference/resources/ScanWorkflow.md +21 -0
- endorlabs-0.2.0/docs/generated-reference/resources/ScanWorkflowResult.md +21 -0
- endorlabs-0.2.0/docs/generated-reference/resources/SemgrepRule.md +67 -0
- endorlabs-0.2.0/docs/generated-reference/resources/V1IdentityProvider.md +21 -0
- endorlabs-0.2.0/docs/generated-reference/resources/V1Query.md +62 -0
- endorlabs-0.2.0/docs/generated-reference/resources/V1QuerySimilarPackages.md +62 -0
- endorlabs-0.2.0/docs/generated-reference/resources/V1SavedQuery.md +27 -0
- endorlabs-0.2.0/docs/generated-reference/resources/VectorStore.md +31 -0
- endorlabs-0.2.0/docs/generated-reference/resources/VectorStoreQuery.md +75 -0
- endorlabs-0.2.0/docs/generated-reference/resources/VersionUpgrade.md +21 -0
- endorlabs-0.2.0/docs/generated-reference/resources/Vulnerability.md +21 -0
- endorlabs-0.2.0/docs/generated-reference/resources.md +68 -0
- endorlabs-0.2.0/docs/guides/README.md +20 -0
- endorlabs-0.2.0/docs/guides/consumer-ux-list-update.md +68 -0
- endorlabs-0.2.0/docs/guides/examples.md +192 -0
- endorlabs-0.2.0/docs/guides/retrieving-scan-results.md +39 -0
- endorlabs-0.2.0/docs/reference/README.md +25 -0
- endorlabs-0.2.0/docs/reference/api-surfaces.md +25 -0
- endorlabs-0.2.0/docs/reference/create-update-payloads.md +6 -0
- endorlabs-0.2.0/docs/reference/namespace.md +24 -0
- endorlabs-0.2.0/docs/reference/resources.md +6 -0
- endorlabs-0.2.0/docs/sdk-images/api-spec-codegen.png +0 -0
- endorlabs-0.2.0/main.py +241 -0
- endorlabs-0.2.0/opengrep-rules/code-quality/endor-sdk-dangerous-operations.yaml +97 -0
- endorlabs-0.2.0/opengrep-rules/code-quality/endor-sdk-httpx-client-missing-timeout.yaml +71 -0
- endorlabs-0.2.0/opengrep-rules/code-quality/endor-sdk-httpx-tls-verification-disabled.yaml +72 -0
- endorlabs-0.2.0/opengrep-rules/code-quality/endor-sdk-mkdir-parents-unchecked.yaml +82 -0
- endorlabs-0.2.0/opengrep-rules/code-quality/endor-sdk-raise-bare-valueerror.yaml +96 -0
- endorlabs-0.2.0/opengrep-rules/code-quality/endor-sdk-silent-except-exception.yaml +92 -0
- endorlabs-0.2.0/opengrep-rules/trust-chain/endor-sdk-filter-parameterization-enforcement.yaml +103 -0
- endorlabs-0.2.0/opengrep-rules/trust-chain/endor-sdk-filter-parameterization-validation.yaml +129 -0
- endorlabs-0.2.0/opengrep-rules/trust-chain/endor-sdk-namespace-validation-validation.yaml +101 -0
- endorlabs-0.2.0/opengrep-rules/trust-chain/endor-sdk-path-containment-enforcement.yaml +99 -0
- endorlabs-0.2.0/opengrep-rules/trust-chain/endor-sdk-path-containment-validation.yaml +125 -0
- endorlabs-0.2.0/opengrep-rules/trust-chain/endor-sdk-redactionfilter-enforcement.yaml +110 -0
- endorlabs-0.2.0/opengrep-rules/trust-chain/endor-sdk-redactionfilter-validation.yaml +141 -0
- endorlabs-0.2.0/opengrep-rules/trust-chain/endor-sdk-xml-safe-parsing-enforcement.yaml +87 -0
- endorlabs-0.2.0/opengrep-rules/trust-chain/endor-sdk-xml-safe-parsing-validation.yaml +95 -0
- endorlabs-0.2.0/opengrep-rules/trust-chain/github-actions-third-party-action-unpinned-sha.yaml +66 -0
- endorlabs-0.2.0/pyproject.toml +560 -0
- endorlabs-0.2.0/src/endorlabs/__init__.py +202 -0
- endorlabs-0.2.0/src/endorlabs/_version.py +24 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/INDEX.md +116 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/MANIFEST.json +358 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/__init__.py +94 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/contracts/canonical-naming.md +16 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/contracts/dependency-metadata.md +29 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/contracts/errors-and-auth.md +34 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/contracts/list-parameters.md +57 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/rules/endor-changelog.md +90 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/rules/endor-list-query-performance.md +47 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/rules/endor-local-context.md +39 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/rules/endor-namespace-scoping.md +45 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/rules/endor-portable-examples.md +40 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/rules/endor-workflow-composition.md +69 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/rules/endor-workspace-layout.md +56 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-custom-sast-rules/AUTHORING.md +311 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-custom-sast-rules/IMPORT_EXPORT.md +453 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-custom-sast-rules/SEMGREP_RULE_SHAPE_GUARDRAILS.md +60 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-custom-sast-rules/SKILL.md +113 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-custom-sast-rules/SYNTAX_REFERENCE.md +411 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-custom-sast-rules/scripts/sast_rule_manager.py +1014 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-dependency-finding-provenance/SKILL.md +191 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-dependency-provenance/SKILL.md +65 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-fetch-and-search-call-graph/CALL_GRAPH_FORMAT_AND_SEARCH.md +102 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-fetch-and-search-call-graph/SKILL.md +113 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-implement-sdk-resource/SKILL.md +66 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-model-sync-drift/SKILL.md +85 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-namespace-relationship-map/SKILL.md +80 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-project-retrieval-bundle/MULTIPASS_LLM_CONTRACT.md +54 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-project-retrieval-bundle/SKILL.md +87 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-reachability-provenance/SKILL.md +169 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-reachability-provenance/examples.md +54 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-retrieve-scan-results/SKILL.md +179 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-sso-integration-validation-troubleshooting/README.md +14 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-sso-integration-validation-troubleshooting/SKILL.md +104 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-sso-integration-validation-troubleshooting/sso_access_spotcheck.py +315 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-troubleshoot-authlog/SKILL.md +68 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-troubleshoot-sdk/KNOWN_ISSUES.md +172 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-troubleshoot-sdk/SKILL.md +117 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-troubleshooting-scans/SKILL.md +180 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-validate-policy/API.md +106 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-validate-policy/ENDORCTL.md +45 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/skills/endor-validate-policy/SKILL.md +151 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/workflows/entries.json +84 -0
- endorlabs-0.2.0/src/endorlabs/agent_knowledge/workflows/index.md +16 -0
- endorlabs-0.2.0/src/endorlabs/api_client.py +1636 -0
- endorlabs-0.2.0/src/endorlabs/auth_server.py +256 -0
- endorlabs-0.2.0/src/endorlabs/client_surface.py +207 -0
- endorlabs-0.2.0/src/endorlabs/client_surface.pyi +1050 -0
- endorlabs-0.2.0/src/endorlabs/context/__init__.py +150 -0
- endorlabs-0.2.0/src/endorlabs/context/_maintainer_refresh.py +148 -0
- endorlabs-0.2.0/src/endorlabs/context/_project_context.py +22 -0
- endorlabs-0.2.0/src/endorlabs/context/_sync.py +1226 -0
- endorlabs-0.2.0/src/endorlabs/context/cli.py +148 -0
- endorlabs-0.2.0/src/endorlabs/context/models.py +66 -0
- endorlabs-0.2.0/src/endorlabs/context/paths.py +136 -0
- endorlabs-0.2.0/src/endorlabs/core/__init__.py +38 -0
- endorlabs-0.2.0/src/endorlabs/core/exceptions.py +218 -0
- endorlabs-0.2.0/src/endorlabs/core/filter.py +352 -0
- endorlabs-0.2.0/src/endorlabs/core/types.py +298 -0
- endorlabs-0.2.0/src/endorlabs/facade.py +1279 -0
- endorlabs-0.2.0/src/endorlabs/generated/README.md +42 -0
- endorlabs-0.2.0/src/endorlabs/generated/__init__.py +1 -0
- endorlabs-0.2.0/src/endorlabs/generated/create_convenience.py +602 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/__init__.py +1 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/a_i_sast_customer_context_service.py +479 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/a_p_i_key_service.py +598 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/a_p_i_key_validator_service.py +489 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/artifact_signature_service.py +616 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/audit_log_service.py +599 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/authentication_log_service.py +465 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/authentication_service.py +320 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/authorization_policy_service.py +612 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/batch_file_segments_service.py +550 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/batch_notification_service.py +809 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/call_graph_data_service.py +494 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/code_owners_service.py +462 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/dependency_metadata_service.py +957 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/endor.py +675 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/endor_ignore_entry_service.py +750 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/exporter_service.py +623 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/finding_log_service.py +859 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/finding_service.py +6706 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/hugging_face_model_service.py +618 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/hugging_face_organization_service.py +420 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/i_p_address_policy_service.py +463 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/identity_provider_service.py +533 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/installation_service.py +909 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/invitation_service.py +438 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/license_dependency_service.py +495 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/license_notices_report_service.py +419 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/license_summary_service.py +492 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/linter_result_service.py +2139 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/malware_service.py +3059 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/metric.py +5346 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/metric_service.py +5460 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/namespace_service.py +490 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/notification_service.py +840 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/notification_target_service.py +937 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/on_prem_scheduler_service.py +559 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/p_r_comment_config_service.py +509 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/package_firewall_log_service.py +597 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/package_license_override_service.py +716 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/package_license_query_service.py +676 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/package_license_service.py +964 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/package_manager_service.py +1023 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/package_version_service.py +2894 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/plugin_binary_service.py +443 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/policy_service.py +1032 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/policy_template_service.py +854 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/project_service.py +807 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/provisioning_result_service.py +1137 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/query_malware_service.py +3123 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/query_service.py +916 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/query_similar_packages_service.py +399 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/query_vulnerability_service.py +2404 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/registry_ingestion_checkpoint_service.py +581 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/repository_service.py +770 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/repository_version_service.py +691 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/rule_set_import_service.py +553 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/s_b_o_m_export_service.py +420 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/s_b_o_m_import_service.py +663 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/s_c_m_credential_service.py +580 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/saved_query_service.py +1104 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/scan_log_request_service.py +442 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/scan_profile_service.py +859 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/scan_result_service.py +1644 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/scan_workflow_result_service.py +817 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/scan_workflow_service.py +694 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/secret_rule_service.py +937 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/semgrep_rule_service.py +796 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/system_config_service.py +1016 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/tenant_service.py +454 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/v_e_x_export_service.py +401 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/vector.py +346 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/vector_store_service.py +471 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/version_upgrade_service.py +7484 -0
- endorlabs-0.2.0/src/endorlabs/generated/models/vulnerability_service.py +2327 -0
- endorlabs-0.2.0/src/endorlabs/generated/registry_contract.py +3096 -0
- endorlabs-0.2.0/src/endorlabs/generated/resource_index.json +475 -0
- endorlabs-0.2.0/src/endorlabs/models/__init__.py +29 -0
- endorlabs-0.2.0/src/endorlabs/models/base.py +616 -0
- endorlabs-0.2.0/src/endorlabs/models/exception_config.py +23 -0
- endorlabs-0.2.0/src/endorlabs/models/field_aliases.py +8 -0
- endorlabs-0.2.0/src/endorlabs/models/finding_config.py +29 -0
- endorlabs-0.2.0/src/endorlabs/models/notification_config.py +31 -0
- endorlabs-0.2.0/src/endorlabs/operations/__init__.py +961 -0
- endorlabs-0.2.0/src/endorlabs/py.typed +0 -0
- endorlabs-0.2.0/src/endorlabs/registry.py +371 -0
- endorlabs-0.2.0/src/endorlabs/registry_overlay.py +73 -0
- endorlabs-0.2.0/src/endorlabs/resources/__init__.py +78 -0
- endorlabs-0.2.0/src/endorlabs/resources/api_key.py +220 -0
- endorlabs-0.2.0/src/endorlabs/resources/audit_log.py +254 -0
- endorlabs-0.2.0/src/endorlabs/resources/authentication_log.py +94 -0
- endorlabs-0.2.0/src/endorlabs/resources/authorization_policy.py +456 -0
- endorlabs-0.2.0/src/endorlabs/resources/code_owners.py +103 -0
- endorlabs-0.2.0/src/endorlabs/resources/dependency_metadata.py +63 -0
- endorlabs-0.2.0/src/endorlabs/resources/endor_license.py +137 -0
- endorlabs-0.2.0/src/endorlabs/resources/finding.py +878 -0
- endorlabs-0.2.0/src/endorlabs/resources/finding_log.py +482 -0
- endorlabs-0.2.0/src/endorlabs/resources/installation.py +511 -0
- endorlabs-0.2.0/src/endorlabs/resources/invitation.py +91 -0
- endorlabs-0.2.0/src/endorlabs/resources/linter_result.py +472 -0
- endorlabs-0.2.0/src/endorlabs/resources/malware.py +134 -0
- endorlabs-0.2.0/src/endorlabs/resources/metric.py +191 -0
- endorlabs-0.2.0/src/endorlabs/resources/namespace.py +229 -0
- endorlabs-0.2.0/src/endorlabs/resources/notification_target.py +161 -0
- endorlabs-0.2.0/src/endorlabs/resources/package_license.py +270 -0
- endorlabs-0.2.0/src/endorlabs/resources/package_version.py +515 -0
- endorlabs-0.2.0/src/endorlabs/resources/policy.py +434 -0
- endorlabs-0.2.0/src/endorlabs/resources/policy_template.py +89 -0
- endorlabs-0.2.0/src/endorlabs/resources/pr_comment_config.py +122 -0
- endorlabs-0.2.0/src/endorlabs/resources/project.py +554 -0
- endorlabs-0.2.0/src/endorlabs/resources/query_malware.py +125 -0
- endorlabs-0.2.0/src/endorlabs/resources/query_vulnerability.py +136 -0
- endorlabs-0.2.0/src/endorlabs/resources/repository.py +315 -0
- endorlabs-0.2.0/src/endorlabs/resources/repository_version.py +211 -0
- endorlabs-0.2.0/src/endorlabs/resources/scan_log_request.py +337 -0
- endorlabs-0.2.0/src/endorlabs/resources/scan_profile.py +448 -0
- endorlabs-0.2.0/src/endorlabs/resources/scan_result.py +577 -0
- endorlabs-0.2.0/src/endorlabs/resources/scan_workflow.py +68 -0
- endorlabs-0.2.0/src/endorlabs/resources/scan_workflow_result.py +61 -0
- endorlabs-0.2.0/src/endorlabs/resources/semgrep_rule.py +666 -0
- endorlabs-0.2.0/src/endorlabs/resources/vector_store.py +70 -0
- endorlabs-0.2.0/src/endorlabs/resources/vector_store_query.py +119 -0
- endorlabs-0.2.0/src/endorlabs/resources/version_upgrade.py +144 -0
- endorlabs-0.2.0/src/endorlabs/resources/vulnerability.py +148 -0
- endorlabs-0.2.0/src/endorlabs/tools/__init__.py +19 -0
- endorlabs-0.2.0/src/endorlabs/tools/dependency_explorer.py +88 -0
- endorlabs-0.2.0/src/endorlabs/tools/list_sharding.py +110 -0
- endorlabs-0.2.0/src/endorlabs/utils/__init__.py +20 -0
- endorlabs-0.2.0/src/endorlabs/utils/api_pagination.py +60 -0
- endorlabs-0.2.0/src/endorlabs/utils/artifact_io.py +36 -0
- endorlabs-0.2.0/src/endorlabs/utils/create_payload.py +158 -0
- endorlabs-0.2.0/src/endorlabs/utils/logging_config.py +87 -0
- endorlabs-0.2.0/src/endorlabs/utils/model_validation.py +345 -0
- endorlabs-0.2.0/src/endorlabs/utils/namespace.py +34 -0
- endorlabs-0.2.0/src/endorlabs/utils/parallel.py +122 -0
- endorlabs-0.2.0/src/endorlabs/utils/path_safety.py +65 -0
- endorlabs-0.2.0/src/endorlabs/utils/polling.py +54 -0
- endorlabs-0.2.0/src/endorlabs/utils/redaction.py +182 -0
- endorlabs-0.2.0/src/endorlabs/utils/schema_drift.py +136 -0
- endorlabs-0.2.0/src/endorlabs/utils/tabular.py +30 -0
- endorlabs-0.2.0/src/endorlabs/workflows/__init__.py +24 -0
- endorlabs-0.2.0/src/endorlabs/workflows/agent_context/__init__.py +57 -0
- endorlabs-0.2.0/src/endorlabs/workflows/agent_context/cli.py +14 -0
- endorlabs-0.2.0/src/endorlabs/workflows/agent_context/export.py +556 -0
- endorlabs-0.2.0/src/endorlabs/workflows/agent_context/hydration.py +388 -0
- endorlabs-0.2.0/src/endorlabs/workflows/agent_context/package_versions.py +175 -0
- endorlabs-0.2.0/src/endorlabs/workflows/agent_context/session_artifacts.py +715 -0
- endorlabs-0.2.0/src/endorlabs/workflows/callgraph/__init__.py +13 -0
- endorlabs-0.2.0/src/endorlabs/workflows/callgraph/decoded.py +51 -0
- endorlabs-0.2.0/src/endorlabs/workflows/callgraph/fetch.py +195 -0
- endorlabs-0.2.0/src/endorlabs/workflows/callgraph/proto_decode.py +461 -0
- endorlabs-0.2.0/src/endorlabs/workflows/callgraph/render.py +262 -0
- endorlabs-0.2.0/src/endorlabs/workflows/callgraph/search.py +135 -0
- endorlabs-0.2.0/src/endorlabs/workflows/callgraph/sweep.py +91 -0
- endorlabs-0.2.0/src/endorlabs/workflows/common.py +129 -0
- endorlabs-0.2.0/src/endorlabs/workflows/dependencies/__init__.py +15 -0
- endorlabs-0.2.0/src/endorlabs/workflows/dependencies/bom_graph.py +121 -0
- endorlabs-0.2.0/src/endorlabs/workflows/dependencies/coordinates.py +15 -0
- endorlabs-0.2.0/src/endorlabs/workflows/dependencies/metadata_fetch.py +84 -0
- endorlabs-0.2.0/src/endorlabs/workflows/dependencies/reports.py +141 -0
- endorlabs-0.2.0/src/endorlabs/workflows/dependencies/types.py +47 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/__init__.py +55 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/cardinality/columns.py +46 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/cardinality/export.py +861 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/cardinality/group_list.py +160 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/cardinality/remediation.py +218 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/cardinality/tabular.py +316 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/cardinality/types.py +66 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/compile_graph/community_detection.py +352 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/compile_graph/disk_build.py +202 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/compile_graph/enrich.py +352 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/compile_graph/pipeline.py +578 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/graph_metrics/analytics.py +234 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/project_map/core.py +338 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/project_map/map.py +115 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/project_map/run.py +239 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/risk/cardinality.py +502 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/risk/consumer_counts.py +113 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/risk/scoring.py +440 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/analyze/workspace.py +143 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/cli/__init__.py +7 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/cli/main.py +294 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/__init__.py +50 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/benchmark.py +401 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/bounds.py +136 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/dependency_metadata.py +120 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/finding_loader.py +22 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/findings.py +164 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/namespaces.py +89 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/projects.py +106 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/runner.py +454 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/collect/shards.py +24 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/contracts/__init__.py +71 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/contracts/ir_artifacts.py +18 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/contracts/resources.py +72 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/export/charts/compile_graph_viz.py +571 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/export/charts/estate_dashboard.py +246 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/export/summarize.py +194 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/filters/__init__.py +23 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/filters/main_context.py +15 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/filters/masks.py +26 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/workspace/__init__.py +50 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/workspace/collect_manifest.py +420 -0
- endorlabs-0.2.0/src/endorlabs/workflows/estate/workspace/paths.py +107 -0
- endorlabs-0.2.0/src/endorlabs/workflows/findings/__init__.py +21 -0
- endorlabs-0.2.0/src/endorlabs/workflows/findings/triage.py +490 -0
- endorlabs-0.2.0/src/endorlabs/workflows/notifications/__init__.py +17 -0
- endorlabs-0.2.0/src/endorlabs/workflows/notifications/notification_setup.py +331 -0
- endorlabs-0.2.0/src/endorlabs/workflows/platform/__init__.py +25 -0
- endorlabs-0.2.0/src/endorlabs/workflows/platform/platform_setup.py +282 -0
- endorlabs-0.2.0/src/endorlabs/workflows/policies/__init__.py +21 -0
- endorlabs-0.2.0/src/endorlabs/workflows/policies/__main__.py +8 -0
- endorlabs-0.2.0/src/endorlabs/workflows/policies/validate.py +322 -0
- endorlabs-0.2.0/src/endorlabs/workflows/projects/__init__.py +7 -0
- endorlabs-0.2.0/src/endorlabs/workflows/projects/resolve.py +82 -0
- endorlabs-0.2.0/src/endorlabs/workflows/reachability/__init__.py +5 -0
- endorlabs-0.2.0/src/endorlabs/workflows/reachability/cli.py +95 -0
- endorlabs-0.2.0/src/endorlabs/workflows/reachability/context.py +395 -0
- endorlabs-0.2.0/src/endorlabs/workflows/reachability/resolve.py +91 -0
- endorlabs-0.2.0/src/endorlabs/workflows/reachability/stitch.py +93 -0
- endorlabs-0.2.0/src/endorlabs/workflows/semgrep/__init__.py +27 -0
- endorlabs-0.2.0/src/endorlabs/workflows/semgrep/inventory.py +178 -0
- endorlabs-0.2.0/src/endorlabs/workflows/semgrep/rules.py +578 -0
- endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/__init__.py +29 -0
- endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/common.py +501 -0
- endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/diff_scans.py +145 -0
- endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/fetch_scan_logs.py +131 -0
- endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/fetch_scan_results.py +171 -0
- endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/pull_scan_logs.py +326 -0
- endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/pull_scan_results.py +148 -0
- endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/resolve_projects.py +85 -0
- endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/run_troubleshooting_workflow.py +147 -0
- endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/scan_logs.py +118 -0
- endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/search_projects.py +263 -0
- endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/search_scan_errors.py +224 -0
- endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/select_anomalous_scans.py +157 -0
- endorlabs-0.2.0/src/endorlabs/workflows/troubleshooting_scans/summarize_scan_triage.py +546 -0
- endorlabs-0.2.0/tests/__init__.py +0 -0
- endorlabs-0.2.0/tests/conftest.py +121 -0
- endorlabs-0.2.0/tests/fixtures/openapi/create_convenience_vector_store_query.json +35 -0
- endorlabs-0.2.0/tests/integration/__init__.py +0 -0
- endorlabs-0.2.0/tests/integration/client/test_concurrent_list.py +114 -0
- endorlabs-0.2.0/tests/integration/concurrent/__init__.py +0 -0
- endorlabs-0.2.0/tests/integration/conftest.py +196 -0
- endorlabs-0.2.0/tests/integration/platform/__init__.py +0 -0
- endorlabs-0.2.0/tests/integration/platform/context/__init__.py +0 -0
- endorlabs-0.2.0/tests/integration/platform/context/test_agent_knowledge_e2e.py +118 -0
- endorlabs-0.2.0/tests/integration/resources/__init__.py +0 -0
- endorlabs-0.2.0/tests/integration/resources/conftest.py +33 -0
- endorlabs-0.2.0/tests/integration/resources/test_api_key.py +153 -0
- endorlabs-0.2.0/tests/integration/resources/test_audit_log.py +235 -0
- endorlabs-0.2.0/tests/integration/resources/test_authentication_log.py +42 -0
- endorlabs-0.2.0/tests/integration/resources/test_authorization_policy.py +256 -0
- endorlabs-0.2.0/tests/integration/resources/test_code_owners.py +71 -0
- endorlabs-0.2.0/tests/integration/resources/test_endor_license.py +81 -0
- endorlabs-0.2.0/tests/integration/resources/test_finding.py +281 -0
- endorlabs-0.2.0/tests/integration/resources/test_finding_log.py +106 -0
- endorlabs-0.2.0/tests/integration/resources/test_installation.py +142 -0
- endorlabs-0.2.0/tests/integration/resources/test_invitation.py +47 -0
- endorlabs-0.2.0/tests/integration/resources/test_linter_result.py +169 -0
- endorlabs-0.2.0/tests/integration/resources/test_metric.py +175 -0
- endorlabs-0.2.0/tests/integration/resources/test_namespace.py +294 -0
- endorlabs-0.2.0/tests/integration/resources/test_notification_target.py +74 -0
- endorlabs-0.2.0/tests/integration/resources/test_package_version.py +274 -0
- endorlabs-0.2.0/tests/integration/resources/test_policy.py +614 -0
- endorlabs-0.2.0/tests/integration/resources/test_policy_template.py +58 -0
- endorlabs-0.2.0/tests/integration/resources/test_pr_comment_config.py +103 -0
- endorlabs-0.2.0/tests/integration/resources/test_project.py +379 -0
- endorlabs-0.2.0/tests/integration/resources/test_repository.py +201 -0
- endorlabs-0.2.0/tests/integration/resources/test_repository_version.py +266 -0
- endorlabs-0.2.0/tests/integration/resources/test_scan_log_request.py +293 -0
- endorlabs-0.2.0/tests/integration/resources/test_scan_profile.py +298 -0
- endorlabs-0.2.0/tests/integration/resources/test_scan_result.py +181 -0
- endorlabs-0.2.0/tests/integration/resources/test_scan_workflow.py +52 -0
- endorlabs-0.2.0/tests/integration/resources/test_semgrep_rule.py +197 -0
- endorlabs-0.2.0/tests/integration/resources/test_vector_store_query.py +86 -0
- endorlabs-0.2.0/tests/integration/resources/test_version_upgrade.py +52 -0
- endorlabs-0.2.0/tests/integration/resources/test_vulnerability_malware.py +116 -0
- endorlabs-0.2.0/tests/integration/workflows/__init__.py +0 -0
- endorlabs-0.2.0/tests/integration/workflows/reachability/test_reachability_cli_smoke.py +51 -0
- endorlabs-0.2.0/tests/integration/workflows/test_retrieving_scan_results.py +186 -0
- endorlabs-0.2.0/tests/unit/__init__.py +0 -0
- endorlabs-0.2.0/tests/unit/client/__init__.py +0 -0
- endorlabs-0.2.0/tests/unit/client/conftest.py +21 -0
- endorlabs-0.2.0/tests/unit/client/test_api_client_auth.py +115 -0
- endorlabs-0.2.0/tests/unit/client/test_client_facade.py +1130 -0
- endorlabs-0.2.0/tests/unit/client/test_concurrent_list.py +485 -0
- endorlabs-0.2.0/tests/unit/client/test_facade_helper_branches.py +83 -0
- endorlabs-0.2.0/tests/unit/client/test_list_unknown_kwargs.py +30 -0
- endorlabs-0.2.0/tests/unit/client/test_polling.py +57 -0
- endorlabs-0.2.0/tests/unit/client/test_registry_contract_authoritative.py +74 -0
- endorlabs-0.2.0/tests/unit/client/test_whoami.py +178 -0
- endorlabs-0.2.0/tests/unit/conftest.py +72 -0
- endorlabs-0.2.0/tests/unit/core/test_list_parameters_mask.py +25 -0
- endorlabs-0.2.0/tests/unit/devtools/sync/test_create_convenience_fields.py +73 -0
- endorlabs-0.2.0/tests/unit/devtools/test_client_surface_pyi_create_kwargs.py +24 -0
- endorlabs-0.2.0/tests/unit/devtools/test_generate_resource_reference_pages.py +66 -0
- endorlabs-0.2.0/tests/unit/platform/context/test_agent_knowledge.py +116 -0
- endorlabs-0.2.0/tests/unit/platform/context/test_agent_knowledge_drift.py +21 -0
- endorlabs-0.2.0/tests/unit/platform/context/test_agent_knowledge_sync.py +50 -0
- endorlabs-0.2.0/tests/unit/platform/context/test_context_cli.py +137 -0
- endorlabs-0.2.0/tests/unit/platform/context/test_context_docs_sync.py +102 -0
- endorlabs-0.2.0/tests/unit/platform/context/test_context_init.py +482 -0
- endorlabs-0.2.0/tests/unit/platform/context/test_context_legacy_reconcile.py +78 -0
- endorlabs-0.2.0/tests/unit/platform/context/test_context_maintainer_refresh.py +102 -0
- endorlabs-0.2.0/tests/unit/platform/context/test_context_paths.py +45 -0
- endorlabs-0.2.0/tests/unit/platform/context/test_context_skill_sync.py +200 -0
- endorlabs-0.2.0/tests/unit/platform/core/test_exceptions.py +155 -0
- endorlabs-0.2.0/tests/unit/platform/core/test_filter.py +367 -0
- endorlabs-0.2.0/tests/unit/platform/core/test_import_smoke.py +20 -0
- endorlabs-0.2.0/tests/unit/platform/core/test_integration_pagination_guard.py +131 -0
- endorlabs-0.2.0/tests/unit/platform/core/test_openapi_quality_gates.py +160 -0
- endorlabs-0.2.0/tests/unit/platform/core/test_openapi_spec.py +38 -0
- endorlabs-0.2.0/tests/unit/platform/core/test_operations_helpers.py +57 -0
- endorlabs-0.2.0/tests/unit/platform/core/test_pagination.py +305 -0
- endorlabs-0.2.0/tests/unit/platform/core/test_project_scan_profile_helpers.py +54 -0
- endorlabs-0.2.0/tests/unit/platform/core/test_test_taxonomy_guard.py +23 -0
- endorlabs-0.2.0/tests/unit/platform/models/test_base_update.py +389 -0
- endorlabs-0.2.0/tests/unit/platform/models/test_greenfield_aliases.py +137 -0
- endorlabs-0.2.0/tests/unit/platform/models/test_installation_schema_drift.py +64 -0
- endorlabs-0.2.0/tests/unit/platform/models/test_json_default_model.py +104 -0
- endorlabs-0.2.0/tests/unit/platform/models/test_model_validation.py +252 -0
- endorlabs-0.2.0/tests/unit/platform/operations/test_base_resource_list_mask.py +58 -0
- endorlabs-0.2.0/tests/unit/platform/transport/test_api_client_auth.py +570 -0
- endorlabs-0.2.0/tests/unit/platform/transport/test_api_client_config.py +456 -0
- endorlabs-0.2.0/tests/unit/platform/transport/test_api_client_helper_branches.py +81 -0
- endorlabs-0.2.0/tests/unit/platform/transport/test_api_client_response_handling.py +104 -0
- endorlabs-0.2.0/tests/unit/platform/transport/test_auth_server.py +348 -0
- endorlabs-0.2.0/tests/unit/platform/utils/test_logging_config.py +221 -0
- endorlabs-0.2.0/tests/unit/platform/utils/test_namespace.py +37 -0
- endorlabs-0.2.0/tests/unit/resources/test_code_owners.py +42 -0
- endorlabs-0.2.0/tests/unit/resources/test_scan_log_request.py +42 -0
- endorlabs-0.2.0/tests/unit/resources/test_semgrep_rule_validate.py +33 -0
- endorlabs-0.2.0/tests/unit/resources/test_vector_store_query.py +128 -0
- endorlabs-0.2.0/tests/unit/tooling/scripts/test_agent_knowledge_bootstrap.py +141 -0
- endorlabs-0.2.0/tests/unit/tooling/scripts/test_agent_knowledge_catalog.py +177 -0
- endorlabs-0.2.0/tests/unit/tooling/scripts/test_check_vcs_version.py +64 -0
- endorlabs-0.2.0/tests/unit/tooling/scripts/test_generate_client_stub.py +96 -0
- endorlabs-0.2.0/tests/unit/tooling/scripts/test_generated_contract_quality_gates.py +143 -0
- endorlabs-0.2.0/tests/unit/tooling/scripts/test_path_safety.py +58 -0
- endorlabs-0.2.0/tests/unit/tooling/scripts/test_provenance.py +67 -0
- endorlabs-0.2.0/tests/unit/tooling/scripts/test_refresh_token_to_dotenv.py +153 -0
- endorlabs-0.2.0/tests/unit/tooling/scripts/test_sast_rule_manager.py +312 -0
- endorlabs-0.2.0/tests/unit/tooling/scripts/test_sso_access_spotcheck.py +86 -0
- endorlabs-0.2.0/tests/unit/tooling/scripts/test_sync_cli.py +96 -0
- endorlabs-0.2.0/tests/unit/tooling/scripts/test_sync_contract.py +340 -0
- endorlabs-0.2.0/tests/unit/tooling/scripts/test_sync_planner.py +57 -0
- endorlabs-0.2.0/tests/unit/tooling/scripts/test_sync_policy.py +81 -0
- endorlabs-0.2.0/tests/unit/tooling/scripts/test_upstream_verify.py +93 -0
- endorlabs-0.2.0/tests/unit/tooling/scripts/test_verify_ship_artifacts.py +140 -0
- endorlabs-0.2.0/tests/unit/tooling/tools/test_dependency_explorer.py +1006 -0
- endorlabs-0.2.0/tests/unit/tools/test_list_sharding.py +54 -0
- endorlabs-0.2.0/tests/unit/utils/test_create_payload_promote.py +73 -0
- endorlabs-0.2.0/tests/unit/workflows/__init__.py +0 -0
- endorlabs-0.2.0/tests/unit/workflows/agent_context/test_cli_dispatch.py +13 -0
- endorlabs-0.2.0/tests/unit/workflows/agent_context/test_export_project_context.py +508 -0
- endorlabs-0.2.0/tests/unit/workflows/agent_context/test_session_artifacts_helpers.py +24 -0
- endorlabs-0.2.0/tests/unit/workflows/callgraph/test_decoded.py +57 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/analyze/cardinality/test_tabular.py +104 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/analyze/risk/test_consumer_counts.py +16 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/analyze/risk/test_risk_ranked_cardinality.py +409 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/collect/test_collect_runner_findings.py +93 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/collect/test_list_bounds.py +104 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/collect/test_sharded_collect.py +71 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/export/test_compile_graph_viz.py +84 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/export/test_estate_dashboard.py +73 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/test_analyze_workspace.py +139 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/test_collect_manifest.py +147 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/test_community_detection.py +199 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/test_dependency_graph.py +408 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/test_disk_build_helpers.py +132 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/test_estate_cli.py +155 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/test_estate_public_api.py +12 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/test_graph_analytics.py +67 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/test_graph_enrich.py +104 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/test_map_cli.py +103 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/test_masks.py +15 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/test_relationship_map_core.py +242 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/test_relationship_map_focus.py +108 -0
- endorlabs-0.2.0/tests/unit/workflows/estate/test_summarize_workspace.py +140 -0
- endorlabs-0.2.0/tests/unit/workflows/policies/test_validate.py +60 -0
- endorlabs-0.2.0/tests/unit/workflows/reachability/test_cli.py +81 -0
- endorlabs-0.2.0/tests/unit/workflows/reachability/test_context_list_bounds.py +39 -0
- endorlabs-0.2.0/tests/unit/workflows/reachability/test_context_stitching.py +59 -0
- endorlabs-0.2.0/tests/unit/workflows/reachability/test_resolve.py +79 -0
- endorlabs-0.2.0/tests/unit/workflows/reachability/test_stitch.py +47 -0
- endorlabs-0.2.0/tests/unit/workflows/test_common.py +172 -0
- endorlabs-0.2.0/tests/unit/workflows/test_diagnostics.py +214 -0
- endorlabs-0.2.0/tests/unit/workflows/test_finding_triage.py +326 -0
- endorlabs-0.2.0/tests/unit/workflows/test_notification_setup.py +224 -0
- endorlabs-0.2.0/tests/unit/workflows/test_platform_setup.py +181 -0
- endorlabs-0.2.0/tests/unit/workflows/test_semgrep_inventory.py +43 -0
- endorlabs-0.2.0/tests/unit/workflows/test_semgrep_management.py +401 -0
- endorlabs-0.2.0/tests/unit/workflows/test_session_context.py +417 -0
- endorlabs-0.2.0/tests/unit/workflows/troubleshooting_scans/test_fetch_and_diff_scans.py +165 -0
- endorlabs-0.2.0/tests/unit/workflows/troubleshooting_scans/test_scan_result_list.py +66 -0
- endorlabs-0.2.0/tests/unit/workflows/troubleshooting_scans/test_summarize_scan_triage.py +133 -0
- endorlabs-0.2.0/tests/unit/workflows/troubleshooting_scans/test_troubleshooting_scans.py +146 -0
- 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`
|