lkr-dev-cli 0.0.35__tar.gz → 0.0.36__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/PKG-INFO +3 -3
  2. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/README.md +2 -2
  3. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/codemode.md +2 -2
  4. lkr_dev_cli-0.0.36/lkr/codemode/LOCAL.md +56 -0
  5. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/pyproject.toml +1 -1
  6. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/.github/workflows/release.yml +0 -0
  7. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/.github/workflows/test-dependencies.yml +0 -0
  8. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/.gitignore +0 -0
  9. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/.python-version +0 -0
  10. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/.vscode/launch.json +0 -0
  11. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/.vscode/settings.json +0 -0
  12. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/Dockerfile +0 -0
  13. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/LICENSE +0 -0
  14. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/Makefile +0 -0
  15. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/cloudbuild.yaml +0 -0
  16. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/__init__.py +0 -0
  17. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/auth/__init__.py +0 -0
  18. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/auth/main.py +0 -0
  19. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/auth/oauth.py +0 -0
  20. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/auth_service.py +0 -0
  21. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/classes.py +0 -0
  22. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/codemode/__init__.py +0 -0
  23. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/codemode/main.py +0 -0
  24. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/constants.py +0 -0
  25. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/custom_types.py +0 -0
  26. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/exceptions.py +0 -0
  27. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/logger.py +0 -0
  28. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/main.py +0 -0
  29. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/mcp/classes.py +0 -0
  30. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/mcp/main.py +0 -0
  31. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/mcp/utils.py +0 -0
  32. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/observability/classes.py +0 -0
  33. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/observability/embed_container.html +0 -0
  34. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/observability/main.py +0 -0
  35. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/observability/utils.py +0 -0
  36. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/tools/classes.py +0 -0
  37. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/tools/main.py +0 -0
  38. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr/tools/permission_deprecation.py +0 -0
  39. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/lkr.md +0 -0
  40. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/tests/TESTING.md +0 -0
  41. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/tests/test_codemode.py +0 -0
  42. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/tests/test_codemode2.py +0 -0
  43. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/tests/test_dependency_resolution.py +0 -0
  44. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/tests/test_deps.sh +0 -0
  45. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/tests/test_permission_deprecation.py +0 -0
  46. {lkr_dev_cli-0.0.35 → lkr_dev_cli-0.0.36}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lkr-dev-cli
3
- Version: 0.0.35
3
+ Version: 0.0.36
4
4
  Summary: lkr: a command line interface for looker
5
5
  Author: bwebs
6
6
  License-Expression: MIT
@@ -109,9 +109,9 @@ Go to the Looker API Explorer for Register OAuth App (https://your.looker.instan
109
109
  - This only needs to be done once per instance
110
110
 
111
111
 
112
- ## Code-Mode
112
+ ## Code Mode
113
113
 
114
- Execute Python code safely with full Looker SDK coverage within a secure sandbox environment. Constructed as an MCP tool, it dynamically inspects the Looker SDK for all public methods and injects them into the Monty sandbox safely. For detailed options, safe primitives transformations, and PKCE configurations, view the full [Code-Mode Docs](./codemode.md).
114
+ Execute Python code safely with full Looker SDK coverage within a secure sandbox environment. Constructed as an MCP tool, it dynamically inspects the Looker SDK for all public methods and injects them into the Monty sandbox safely. For detailed options, safe primitives transformations, and PKCE configurations, view the full [Code Mode Docs](./codemode.md).
115
115
 
116
116
  ## MCP
117
117
  Built into the `lkr` is an MCP server. Right now its tools are based on helping you work within an IDE. To use it a tool like [Cursor](https://www.cursor.com/), add this to your mcp.json
@@ -73,9 +73,9 @@ Go to the Looker API Explorer for Register OAuth App (https://your.looker.instan
73
73
  - This only needs to be done once per instance
74
74
 
75
75
 
76
- ## Code-Mode
76
+ ## Code Mode
77
77
 
78
- Execute Python code safely with full Looker SDK coverage within a secure sandbox environment. Constructed as an MCP tool, it dynamically inspects the Looker SDK for all public methods and injects them into the Monty sandbox safely. For detailed options, safe primitives transformations, and PKCE configurations, view the full [Code-Mode Docs](./codemode.md).
78
+ Execute Python code safely with full Looker SDK coverage within a secure sandbox environment. Constructed as an MCP tool, it dynamically inspects the Looker SDK for all public methods and injects them into the Monty sandbox safely. For detailed options, safe primitives transformations, and PKCE configurations, view the full [Code Mode Docs](./codemode.md).
79
79
 
80
80
  ## MCP
81
81
  Built into the `lkr` is an MCP server. Right now its tools are based on helping you work within an IDE. To use it a tool like [Cursor](https://www.cursor.com/), add this to your mcp.json
@@ -1,4 +1,4 @@
1
- # Looker Code-Mode MCP Server
1
+ # Looker Code Mode MCP Server
2
2
 
3
3
  `lkr code-mode` allows you to invoke a Python-based Model Context Protocol (MCP) server. It offers an AI agent the unique capacity to batched-execute Python commands securely within the Monty sandbox against your active Looker instance!
4
4
 
@@ -11,7 +11,7 @@ The tool instantiates Looker SDK natively, searches all bound methods, and passe
11
11
  ### Key Features:
12
12
  - **100% Tool Coverage:** Accesses all Looker SDK public operations smoothly without token limits.
13
13
  - **Recursive Translation:** Complex Looker models like User, Folder, Dashboard get string-converted into dictionaries immediately before ingesting them into Monty.
14
- - **Automatic PKCE Restarter:** Caught an invalid token? Code-Mode immediately catches `InvalidRefreshTokenError` and safely opens up your PKCE authentication browser automatically.
14
+ - **Automatic PKCE Restarter:** Caught an invalid token? Code Mode immediately catches `InvalidRefreshTokenError` and safely opens up your PKCE authentication browser automatically.
15
15
  - **Extremely Secure:** Monty interpreter ensures isolated sandbox processing. No local filesystem accesses are exposed.
16
16
 
17
17
  ## Continuous Usage
@@ -0,0 +1,56 @@
1
+ # Local Development Configuration for lkr:codemode
2
+
3
+ To run this MCP server locally from the repository (for development or testing), you can configure your MCP client (like Claude Desktop or Cursor) to use `uv run` with the `--directory` flag pointing to this project.
4
+
5
+ ### Claude Desktop Configuration
6
+
7
+ Add the following to your `claude_desktop_config.json` (usually located at `~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
8
+
9
+ ```json
10
+ {
11
+ "mcpServers": {
12
+ "lkr_codemode_dev": {
13
+ "command": "/opt/homebrew/bin/uv",
14
+ "args": [
15
+ "-q",
16
+ "run",
17
+ "--directory",
18
+ "/path/to/lkr/cli",
19
+ "lkr",
20
+ "code-mode",
21
+ "run"
22
+ ],
23
+ "env": {
24
+ "LOOKERSDK_BASE_URL": "https://your-instance.cloud.looker.com",
25
+ "LOOKERSDK_CLIENT_ID": "your_client_id",
26
+ "LOOKERSDK_CLIENT_SECRET": "your_client_secret"
27
+ }
28
+ }
29
+ }
30
+ }
31
+ ```
32
+
33
+ > [!WARNING]
34
+ > Do NOT place the directory path directly after `run` without the `--directory` flag (e.g., `["run", "/path/to/project", ...]`). `uv` will attempt to execute the directory as a command, resulting in a `Permission denied (os error 13)` error.
35
+
36
+ > [!TIP]
37
+ > **macOS GUI Apps & PATH:** Claude Desktop and Cursor do not inherit your terminal's `PATH` environment variable. If you simply use `"uv"` as the command, the app may fail to start the server because it cannot find `uv`. Using the absolute path (e.g., `/opt/homebrew/bin/uv` or `~/.cargo/bin/uv`) ensures the IDE can launch the process. Find out your path by running `which uv` in your terminal.
38
+
39
+ ### Cursor Integration
40
+
41
+ To add this local dev server to Cursor:
42
+
43
+ 1. Open **Settings** (`Cmd + ,`).
44
+ 2. Go to **Features** -> **MCP**.
45
+ 3. Click **+ Add New MCP Server**.
46
+ 4. **Name**: `Looker Codemode (Local)`
47
+ 5. **Type**: `command`
48
+ 6. **Command**: `uv run -q --directory /Users/bryanweber/projects/lkr/cli lkr code-mode run`
49
+
50
+ ### Testing Interactively via MCP Inspector
51
+
52
+ You can test the server and its tools interactively in your browser by running the MCP inspector from your terminal:
53
+
54
+ ```bash
55
+ npx @modelcontextprotocol/inspector uv run -q --directory /Users/bryanweber/projects/lkr/cli lkr code-mode run
56
+ ```
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "lkr-dev-cli"
3
- version = "0.0.35"
3
+ version = "0.0.36"
4
4
  description = "lkr: a command line interface for looker"
5
5
  readme = "README.md"
6
6
  license = "MIT"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes