sky-dev 0.1.3__tar.gz → 0.1.4__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.
- {sky_dev-0.1.3 → sky_dev-0.1.4}/CHANGELOG.md +24 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/PKG-INFO +13 -6
- {sky_dev-0.1.3 → sky_dev-0.1.4}/README.md +13 -6
- {sky_dev-0.1.3 → sky_dev-0.1.4}/pyproject.toml +1 -1
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/__init__.py +1 -1
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/cli.py +22 -18
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/config/schema.py +17 -8
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/core/fast_loop.py +4 -1
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky_dev.egg-info/PKG-INFO +13 -6
- {sky_dev-0.1.3 → sky_dev-0.1.4}/.env.example +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/CONTRIBUTING.md +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/LICENSE +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/MANIFEST.in +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/SECURITY.md +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/setup.cfg +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/config/__init__.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/config/models.yaml +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/core/__init__.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/core/approval.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/core/benchmark.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/core/chat.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/core/mode_prompts.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/core/router.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/core/subagent.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/core/workflow.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/errors.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/memory/__init__.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/memory/indexer.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/memory/vectorstore.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/security/__init__.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/security/audit.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/security/detection.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/security/guardrails.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/security/prompts.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/security/rate_limit.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/security/sanitize.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/storage/__init__.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/storage/db.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/tools/__init__.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/tools/fs_tools.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/tools/git_tools.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/tools/registry.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/tools/search_tools.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky/tools/shell_tools.py +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky_dev.egg-info/SOURCES.txt +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky_dev.egg-info/dependency_links.txt +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky_dev.egg-info/entry_points.txt +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky_dev.egg-info/requires.txt +0 -0
- {sky_dev-0.1.3 → sky_dev-0.1.4}/sky_dev.egg-info/top_level.txt +0 -0
|
@@ -1,4 +1,28 @@
|
|
|
1
1
|
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.1.4] - 2026-09-07
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- Config-driven role mapping in `sky.yaml` (`mode_roles`)
|
|
7
|
+
- Circuit breaker for infinite tool-calling loops
|
|
8
|
+
- 60-second timeout for agent responses
|
|
9
|
+
- Security guardrails for command injection prevention
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
- `planning` and `reviewer` roles now use `meta/muse-glimmer-30b` via NVIDIA NIM
|
|
13
|
+
- Better error messages for 404 and 500 errors
|
|
14
|
+
- Approval gate UI now shows `[y/n/e]` clearly
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
- `sky plan` now correctly uses `planning` role (was using `fast_loop`)
|
|
18
|
+
- `sky ask` now correctly uses `general` role (was using `fast_loop`)
|
|
19
|
+
- Non-existent model IDs replaced with verified models
|
|
20
|
+
- Hardcoded `role = "fast_loop"` removed from `fast_loop.py`
|
|
21
|
+
|
|
22
|
+
### Security
|
|
23
|
+
- Command injection prevention (`[;&|`]` characters blocked)
|
|
24
|
+
- Path traversal prevention
|
|
25
|
+
- Better error messages for security violations
|
|
2
26
|
## [0.1.3] - 2026-09-07
|
|
3
27
|
|
|
4
28
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sky-dev
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: Sky - Agentic coding assistant. Build without boundaries.
|
|
5
5
|
Author-email: Aaditya A <aaditya@corover.ai>
|
|
6
6
|
License: MIT
|
|
@@ -109,12 +109,19 @@ sky chat
|
|
|
109
109
|
- 💰 **Cost Tracking** — Every session shows what it cost
|
|
110
110
|
- 🔄 **Resumable Workflows** — Interrupt and resume anytime
|
|
111
111
|
|
|
112
|
-
##
|
|
112
|
+
## Models
|
|
113
113
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
|
117
|
-
|
|
114
|
+
Sky uses specialized models for each task:
|
|
115
|
+
|
|
116
|
+
| Role | Model | Provider |
|
|
117
|
+
|------|-------|----------|
|
|
118
|
+
| General Chat | GPT-OSS 120B | Groq |
|
|
119
|
+
| Planning | Muse Glimmer 30B | NVIDIA NIM |
|
|
120
|
+
| Review | Muse Glimmer 30B | NVIDIA NIM |
|
|
121
|
+
| Routing | Compound Mini | Groq |
|
|
122
|
+
| Tool Calling | Nemotron 120B | NVIDIA NIM |
|
|
123
|
+
| Coding | Nemotron 120B | NVIDIA NIM |
|
|
124
|
+
| Testing | Nemotron 120B | NVIDIA NIM |
|
|
118
125
|
|
|
119
126
|
## Commands
|
|
120
127
|
|
|
@@ -60,12 +60,19 @@ sky chat
|
|
|
60
60
|
- 💰 **Cost Tracking** — Every session shows what it cost
|
|
61
61
|
- 🔄 **Resumable Workflows** — Interrupt and resume anytime
|
|
62
62
|
|
|
63
|
-
##
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
|
68
|
-
|
|
63
|
+
## Models
|
|
64
|
+
|
|
65
|
+
Sky uses specialized models for each task:
|
|
66
|
+
|
|
67
|
+
| Role | Model | Provider |
|
|
68
|
+
|------|-------|----------|
|
|
69
|
+
| General Chat | GPT-OSS 120B | Groq |
|
|
70
|
+
| Planning | Muse Glimmer 30B | NVIDIA NIM |
|
|
71
|
+
| Review | Muse Glimmer 30B | NVIDIA NIM |
|
|
72
|
+
| Routing | Compound Mini | Groq |
|
|
73
|
+
| Tool Calling | Nemotron 120B | NVIDIA NIM |
|
|
74
|
+
| Coding | Nemotron 120B | NVIDIA NIM |
|
|
75
|
+
| Testing | Nemotron 120B | NVIDIA NIM |
|
|
69
76
|
|
|
70
77
|
## Commands
|
|
71
78
|
|
|
@@ -739,18 +739,18 @@ def _write_default_models_yaml(path: Path):
|
|
|
739
739
|
description: "Ultra-fast routing (0.1s)"
|
|
740
740
|
- id: "openai/gpt-oss-120b"
|
|
741
741
|
description: "Best general conversation"
|
|
742
|
-
- id: "meta-models/Muse-Glimmer-30B"
|
|
743
|
-
description: "Dedicated reasoning & planning"
|
|
744
742
|
- id: "qwen/qwen3.6-27b"
|
|
745
743
|
description: "Best-in-class tool calling"
|
|
746
744
|
|
|
747
745
|
nim:
|
|
748
746
|
base_url: "https://integrate.api.nvidia.com/v1"
|
|
749
747
|
timeout: 60
|
|
750
|
-
default_model: "
|
|
748
|
+
default_model: "meta/muse-glimmer-30b"
|
|
751
749
|
models:
|
|
750
|
+
- id: "meta/muse-glimmer-30b"
|
|
751
|
+
description: "Purpose-built for agentic reasoning & planning"
|
|
752
752
|
- id: "nvidia/nemotron-3-super-120b-a12b"
|
|
753
|
-
description: "
|
|
753
|
+
description: "Best-in-class tool calling & coding"
|
|
754
754
|
- id: "nvidia/llama-3.1-nemotron-70b-instruct"
|
|
755
755
|
description: "Reliable backup model"
|
|
756
756
|
|
|
@@ -759,43 +759,43 @@ roles:
|
|
|
759
759
|
provider: "groq"
|
|
760
760
|
model_id: "openai/gpt-oss-120b"
|
|
761
761
|
temperature: 0.7
|
|
762
|
-
description: "
|
|
762
|
+
description: "Best general conversation"
|
|
763
763
|
|
|
764
764
|
planning:
|
|
765
|
-
provider: "
|
|
766
|
-
model_id: "meta
|
|
765
|
+
provider: "nim"
|
|
766
|
+
model_id: "meta/muse-glimmer-30b"
|
|
767
767
|
temperature: 0.3
|
|
768
|
-
description: "
|
|
768
|
+
description: "Dedicated reasoning & planning"
|
|
769
769
|
|
|
770
770
|
reviewer:
|
|
771
|
-
provider: "
|
|
772
|
-
model_id: "meta
|
|
771
|
+
provider: "nim"
|
|
772
|
+
model_id: "meta/muse-glimmer-30b"
|
|
773
773
|
temperature: 0.3
|
|
774
|
-
description: "Code review
|
|
774
|
+
description: "Code review & analysis"
|
|
775
775
|
|
|
776
776
|
routing:
|
|
777
777
|
provider: "groq"
|
|
778
778
|
model_id: "groq/compound-mini"
|
|
779
779
|
temperature: 0.0
|
|
780
|
-
description: "
|
|
780
|
+
description: "Ultra-fast routing (0.1s)"
|
|
781
781
|
|
|
782
782
|
fast_loop:
|
|
783
783
|
provider: "nim"
|
|
784
784
|
model_id: "nvidia/nemotron-3-super-120b-a12b"
|
|
785
785
|
temperature: 0.1
|
|
786
|
-
description: "
|
|
786
|
+
description: "Best-in-class tool calling"
|
|
787
787
|
|
|
788
788
|
coder:
|
|
789
789
|
provider: "nim"
|
|
790
790
|
model_id: "nvidia/nemotron-3-super-120b-a12b"
|
|
791
791
|
temperature: 0.1
|
|
792
|
-
description: "Agentic coding
|
|
792
|
+
description: "Agentic coding"
|
|
793
793
|
|
|
794
794
|
tester:
|
|
795
795
|
provider: "nim"
|
|
796
796
|
model_id: "nvidia/nemotron-3-super-120b-a12b"
|
|
797
797
|
temperature: 0.1
|
|
798
|
-
description: "Test generation
|
|
798
|
+
description: "Test generation & pattern recognition"
|
|
799
799
|
|
|
800
800
|
fallback:
|
|
801
801
|
provider: "nim"
|
|
@@ -932,10 +932,10 @@ def check_providers(global_install: bool = typer.Option(False, "--global", help=
|
|
|
932
932
|
|
|
933
933
|
console.print("\n[bold]Model Recommendations:[/bold]")
|
|
934
934
|
console.print(" - [bold]General Interaction:[/bold] openai/gpt-oss-120b (Groq) - Best conversation")
|
|
935
|
-
console.print(" - [bold]Planning/Reviewing:[/bold] Muse Glimmer (
|
|
935
|
+
console.print(" - [bold]Planning/Reviewing:[/bold] Muse Glimmer 30B (NIM) - Best reasoning")
|
|
936
936
|
console.print(" - [bold]Routing:[/bold] groq/compound-mini (Groq) - Fastest (0.1s)")
|
|
937
|
-
console.print(" - [bold]Tool Calling:[/bold]
|
|
938
|
-
console.print(" - [bold]Coding/Testing:[/bold]
|
|
937
|
+
console.print(" - [bold]Tool Calling:[/bold] Nemotron 120B (NIM) - Best tool use")
|
|
938
|
+
console.print(" - [bold]Coding/Testing:[/bold] Nemotron 120B (NIM) - Best SWE-bench")
|
|
939
939
|
except SkyError as e:
|
|
940
940
|
console.print(f"\n[bold red]Error ({e.code}):[/bold red] {e.message}")
|
|
941
941
|
if e.suggestion:
|
|
@@ -969,3 +969,7 @@ if __name__ == "__main__":
|
|
|
969
969
|
except Exception as e:
|
|
970
970
|
console.print(f"[bold red]{_handle_error(e)}[/bold red]")
|
|
971
971
|
sys.exit(1)
|
|
972
|
+
app()
|
|
973
|
+
except Exception as e:
|
|
974
|
+
console.print(f"[bold red]{_handle_error(e)}[/bold red]")
|
|
975
|
+
sys.exit(1)
|
|
@@ -112,6 +112,15 @@ class DexProjectConfig(BaseModel):
|
|
|
112
112
|
model_config = ConfigDict(extra="forbid")
|
|
113
113
|
|
|
114
114
|
project_name: str = "sky-project"
|
|
115
|
+
mode_roles: Dict[str, str] = Field(
|
|
116
|
+
default={
|
|
117
|
+
"ask": "general",
|
|
118
|
+
"plan": "planning",
|
|
119
|
+
"agent": "fast_loop",
|
|
120
|
+
"workflow": "fast_loop",
|
|
121
|
+
},
|
|
122
|
+
description="Mapping from mode names to role names"
|
|
123
|
+
)
|
|
115
124
|
approval_rules: List[ApprovalRuleConfig] = Field(default_factory=list)
|
|
116
125
|
max_retries: int = Field(default=3, ge=1, le=10)
|
|
117
126
|
docker_image: str = "python:3.11-slim"
|
|
@@ -295,7 +304,6 @@ def load_models_config(global_mode: bool = False) -> ModelRoutingConfig:
|
|
|
295
304
|
models=[
|
|
296
305
|
ModelInfoConfig(id="groq/compound-mini", description="Ultra-fast routing (0.1s)", context_window=8192, best_for=["routing", "classification"], provider="groq"),
|
|
297
306
|
ModelInfoConfig(id="openai/gpt-oss-120b", description="Best general conversation", context_window=128000, best_for=["general", "chat"], provider="groq"),
|
|
298
|
-
ModelInfoConfig(id="meta-models/Muse-Glimmer-30B", description="Dedicated reasoning & planning", context_window=32768, best_for=["planning", "reviewing"], provider="groq"),
|
|
299
307
|
ModelInfoConfig(id="qwen/qwen3.6-27b", description="Best-in-class tool calling", context_window=32768, best_for=["tool_calling", "execution"], provider="groq")
|
|
300
308
|
]
|
|
301
309
|
),
|
|
@@ -304,21 +312,22 @@ def load_models_config(global_mode: bool = False) -> ModelRoutingConfig:
|
|
|
304
312
|
timeout=60,
|
|
305
313
|
requires_api_key=True,
|
|
306
314
|
free_tier=True,
|
|
307
|
-
default_model="
|
|
315
|
+
default_model="meta/muse-glimmer-30b",
|
|
308
316
|
models=[
|
|
309
|
-
ModelInfoConfig(id="
|
|
317
|
+
ModelInfoConfig(id="meta/muse-glimmer-30b", description="Purpose-built for agentic reasoning & planning", context_window=131072, best_for=["planning", "reviewing"], provider="nim"),
|
|
318
|
+
ModelInfoConfig(id="nvidia/nemotron-3-super-120b-a12b", description="Best-in-class tool calling & coding", context_window=131072, best_for=["coding", "tool_use"], provider="nim"),
|
|
310
319
|
ModelInfoConfig(id="nvidia/llama-3.1-nemotron-70b-instruct", description="Reliable backup model", context_window=131072, best_for=["fallback"], provider="nim")
|
|
311
320
|
]
|
|
312
321
|
)
|
|
313
322
|
},
|
|
314
323
|
roles={
|
|
315
324
|
"general": ModelAssignmentConfig(provider="groq", model_id="openai/gpt-oss-120b", temperature=0.7),
|
|
316
|
-
"planning": ModelAssignmentConfig(provider="
|
|
317
|
-
"reviewer": ModelAssignmentConfig(provider="
|
|
325
|
+
"planning": ModelAssignmentConfig(provider="nim", model_id="meta/muse-glimmer-30b", temperature=0.3),
|
|
326
|
+
"reviewer": ModelAssignmentConfig(provider="nim", model_id="meta/muse-glimmer-30b", temperature=0.3),
|
|
318
327
|
"routing": ModelAssignmentConfig(provider="groq", model_id="groq/compound-mini", temperature=0.0),
|
|
319
|
-
"fast_loop": ModelAssignmentConfig(provider="
|
|
320
|
-
"coder": ModelAssignmentConfig(provider="nim", model_id="
|
|
321
|
-
"tester": ModelAssignmentConfig(provider="nim", model_id="
|
|
328
|
+
"fast_loop": ModelAssignmentConfig(provider="nim", model_id="nvidia/nemotron-3-super-120b-a12b", temperature=0.1),
|
|
329
|
+
"coder": ModelAssignmentConfig(provider="nim", model_id="nvidia/nemotron-3-super-120b-a12b", temperature=0.1),
|
|
330
|
+
"tester": ModelAssignmentConfig(provider="nim", model_id="nvidia/nemotron-3-super-120b-a12b", temperature=0.1),
|
|
322
331
|
},
|
|
323
332
|
fallback=ModelAssignmentConfig(provider="nim", model_id="nvidia/llama-3.1-nemotron-70b-instruct", temperature=0.1),
|
|
324
333
|
timeout_seconds=30,
|
|
@@ -283,7 +283,10 @@ class FastLoopEngine:
|
|
|
283
283
|
messages[0]["content"] = prompt
|
|
284
284
|
|
|
285
285
|
tools = self._get_available_tools(mode, tools_filter)
|
|
286
|
-
|
|
286
|
+
|
|
287
|
+
# Get mode-to-role mapping from config
|
|
288
|
+
mode_roles = getattr(self.config, "mode_roles", {})
|
|
289
|
+
role = mode_roles.get(mode, "fast_loop")
|
|
287
290
|
|
|
288
291
|
if self.config.verbose:
|
|
289
292
|
from rich.console import Console
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sky-dev
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: Sky - Agentic coding assistant. Build without boundaries.
|
|
5
5
|
Author-email: Aaditya A <aaditya@corover.ai>
|
|
6
6
|
License: MIT
|
|
@@ -109,12 +109,19 @@ sky chat
|
|
|
109
109
|
- 💰 **Cost Tracking** — Every session shows what it cost
|
|
110
110
|
- 🔄 **Resumable Workflows** — Interrupt and resume anytime
|
|
111
111
|
|
|
112
|
-
##
|
|
112
|
+
## Models
|
|
113
113
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
|
117
|
-
|
|
114
|
+
Sky uses specialized models for each task:
|
|
115
|
+
|
|
116
|
+
| Role | Model | Provider |
|
|
117
|
+
|------|-------|----------|
|
|
118
|
+
| General Chat | GPT-OSS 120B | Groq |
|
|
119
|
+
| Planning | Muse Glimmer 30B | NVIDIA NIM |
|
|
120
|
+
| Review | Muse Glimmer 30B | NVIDIA NIM |
|
|
121
|
+
| Routing | Compound Mini | Groq |
|
|
122
|
+
| Tool Calling | Nemotron 120B | NVIDIA NIM |
|
|
123
|
+
| Coding | Nemotron 120B | NVIDIA NIM |
|
|
124
|
+
| Testing | Nemotron 120B | NVIDIA NIM |
|
|
118
125
|
|
|
119
126
|
## Commands
|
|
120
127
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|