Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
da2035d
feat: implement AST-based code intelligence indexing system
deanq Jan 28, 2026
2e96ea4
feat: implement MCP server for code intelligence integration with Cla…
deanq Jan 28, 2026
7a73745
chore: add MCP server configuration
deanq Jan 28, 2026
8284f2c
chore: allow PSF-2.0 license for MCP SDK dependencies
deanq Jan 28, 2026
ca71056
chore: expand allowed licenses for MCP and common dev dependencies
deanq Jan 28, 2026
23b0a14
Merge branch 'main' into deanq/ae-1923-code-intel-mcp-skill
deanq Jan 28, 2026
efd9e26
Merge branch 'main' into deanq/ae-1923-code-intel-mcp-skill
deanq Jan 28, 2026
affc5cc
Merge branch 'main' into deanq/ae-1923-code-intel-mcp-skill
deanq Jan 29, 2026
3b707ab
Merge branch 'main' into deanq/ae-1923-code-intel-mcp-skill
deanq Jan 29, 2026
b0e4855
Merge branch 'main' into deanq/ae-1923-code-intel-mcp-skill
deanq Jan 29, 2026
daea6fa
fix: address PR #158 code review feedback
deanq Jan 29, 2026
6163131
Merge branch 'main' into deanq/ae-1923-code-intel-mcp-skill
deanq Jan 30, 2026
20fc01b
Merge branch 'main' into deanq/ae-1923-code-intel-mcp-skill
deanq Jan 30, 2026
0558c1c
Merge branch 'main' into deanq/ae-1923-code-intel-mcp-skill
deanq Jan 31, 2026
de7d0a5
feat: smart re-indexing and test output parser for code intel MCP
deanq Jan 31, 2026
1312641
feat: enforce MCP tool usage and eliminate bash command alternatives
deanq Jan 31, 2026
514fd68
feat: add Claude Code project-wide permissions and update project config
deanq Jan 31, 2026
8fb189b
build: update to allow-licenses
deanq Jan 31, 2026
733dce9
fix: add BSD license to allowed list for httpx dependency
deanq Jan 31, 2026
a581325
chore: remove dependency-review workflow
deanq Jan 31, 2026
24b8953
fix: exclude NetworkVolume from undeploy list command
deanq Jan 31, 2026
bd9a2f6
Merge branch 'main' into deanq/ae-1965-bug-undeploy-should-only-show-…
deanq Feb 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 25 additions & 1 deletion src/tetra_rp/cli/commands/undeploy.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,29 @@ def _get_resource_manager():
return ResourceManager()


def _get_serverless_resources(
resources: Dict[str, DeployableResource],
) -> Dict[str, DeployableResource]:
"""Filter resources to only include serverless endpoints.

Excludes other resource types like NetworkVolume that shouldn't be undeployed
through this command.

Args:
resources: Dictionary of resource_id -> DeployableResource

Returns:
Filtered dictionary containing only serverless endpoints
"""
from ...core.resources.serverless import ServerlessResource

return {
resource_id: resource
for resource_id, resource in resources.items()
if isinstance(resource, ServerlessResource)
}


def _get_resource_status(resource) -> Tuple[str, str]:
"""Get resource status with icon and text.

Expand Down Expand Up @@ -67,7 +90,8 @@ def _get_resource_type(resource) -> str:
def list_command():
"""List all deployed endpoints tracked in .tetra_resources.pkl."""
manager = _get_resource_manager()
resources = manager.list_all_resources()
all_resources = manager.list_all_resources()
resources = _get_serverless_resources(all_resources)

if not resources:
console.print(
Expand Down
10 changes: 5 additions & 5 deletions tests/unit/cli/test_undeploy.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,18 +75,18 @@ def test_list_no_endpoints(self, runner):

def test_list_with_endpoints(self, runner):
"""Test list command with endpoints."""
# Create mock resources instead of real ones to avoid Pydantic issues
mock_resource1 = MagicMock()
from tetra_rp.core.resources.serverless import ServerlessResource

# Create mock resources that are instances of ServerlessResource
mock_resource1 = MagicMock(spec=ServerlessResource)
mock_resource1.name = "test-api-1"
mock_resource1.id = "endpoint-id-1"
mock_resource1.is_deployed.return_value = True
mock_resource1.__class__.__name__ = "ServerlessResource"

mock_resource2 = MagicMock()
mock_resource2 = MagicMock(spec=ServerlessResource)
mock_resource2.name = "test-api-2"
mock_resource2.id = "endpoint-id-2"
mock_resource2.is_deployed.return_value = True
mock_resource2.__class__.__name__ = "ServerlessResource"

mock_resources = {
"resource-id-1": mock_resource1,
Expand Down
Loading