scc-cli 1.5.3__py3-none-any.whl

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.

Potentially problematic release.


This version of scc-cli might be problematic. Click here for more details.

Files changed (153) hide show
  1. scc_cli/__init__.py +15 -0
  2. scc_cli/audit/__init__.py +37 -0
  3. scc_cli/audit/parser.py +191 -0
  4. scc_cli/audit/reader.py +180 -0
  5. scc_cli/auth.py +145 -0
  6. scc_cli/claude_adapter.py +485 -0
  7. scc_cli/cli.py +311 -0
  8. scc_cli/cli_common.py +190 -0
  9. scc_cli/cli_helpers.py +244 -0
  10. scc_cli/commands/__init__.py +20 -0
  11. scc_cli/commands/admin.py +708 -0
  12. scc_cli/commands/audit.py +246 -0
  13. scc_cli/commands/config.py +528 -0
  14. scc_cli/commands/exceptions.py +696 -0
  15. scc_cli/commands/init.py +272 -0
  16. scc_cli/commands/launch/__init__.py +73 -0
  17. scc_cli/commands/launch/app.py +1247 -0
  18. scc_cli/commands/launch/render.py +309 -0
  19. scc_cli/commands/launch/sandbox.py +135 -0
  20. scc_cli/commands/launch/workspace.py +339 -0
  21. scc_cli/commands/org/__init__.py +49 -0
  22. scc_cli/commands/org/_builders.py +264 -0
  23. scc_cli/commands/org/app.py +41 -0
  24. scc_cli/commands/org/import_cmd.py +267 -0
  25. scc_cli/commands/org/init_cmd.py +269 -0
  26. scc_cli/commands/org/schema_cmd.py +76 -0
  27. scc_cli/commands/org/status_cmd.py +157 -0
  28. scc_cli/commands/org/update_cmd.py +330 -0
  29. scc_cli/commands/org/validate_cmd.py +138 -0
  30. scc_cli/commands/support.py +323 -0
  31. scc_cli/commands/team.py +910 -0
  32. scc_cli/commands/worktree/__init__.py +72 -0
  33. scc_cli/commands/worktree/_helpers.py +57 -0
  34. scc_cli/commands/worktree/app.py +170 -0
  35. scc_cli/commands/worktree/container_commands.py +385 -0
  36. scc_cli/commands/worktree/context_commands.py +61 -0
  37. scc_cli/commands/worktree/session_commands.py +128 -0
  38. scc_cli/commands/worktree/worktree_commands.py +734 -0
  39. scc_cli/config.py +647 -0
  40. scc_cli/confirm.py +20 -0
  41. scc_cli/console.py +562 -0
  42. scc_cli/contexts.py +394 -0
  43. scc_cli/core/__init__.py +68 -0
  44. scc_cli/core/constants.py +101 -0
  45. scc_cli/core/errors.py +297 -0
  46. scc_cli/core/exit_codes.py +91 -0
  47. scc_cli/core/workspace.py +57 -0
  48. scc_cli/deprecation.py +54 -0
  49. scc_cli/deps.py +189 -0
  50. scc_cli/docker/__init__.py +127 -0
  51. scc_cli/docker/core.py +467 -0
  52. scc_cli/docker/credentials.py +726 -0
  53. scc_cli/docker/launch.py +595 -0
  54. scc_cli/doctor/__init__.py +105 -0
  55. scc_cli/doctor/checks/__init__.py +166 -0
  56. scc_cli/doctor/checks/cache.py +314 -0
  57. scc_cli/doctor/checks/config.py +107 -0
  58. scc_cli/doctor/checks/environment.py +182 -0
  59. scc_cli/doctor/checks/json_helpers.py +157 -0
  60. scc_cli/doctor/checks/organization.py +264 -0
  61. scc_cli/doctor/checks/worktree.py +278 -0
  62. scc_cli/doctor/render.py +365 -0
  63. scc_cli/doctor/types.py +66 -0
  64. scc_cli/evaluation/__init__.py +27 -0
  65. scc_cli/evaluation/apply_exceptions.py +207 -0
  66. scc_cli/evaluation/evaluate.py +97 -0
  67. scc_cli/evaluation/models.py +80 -0
  68. scc_cli/git.py +84 -0
  69. scc_cli/json_command.py +166 -0
  70. scc_cli/json_output.py +159 -0
  71. scc_cli/kinds.py +65 -0
  72. scc_cli/marketplace/__init__.py +123 -0
  73. scc_cli/marketplace/adapter.py +74 -0
  74. scc_cli/marketplace/compute.py +377 -0
  75. scc_cli/marketplace/constants.py +87 -0
  76. scc_cli/marketplace/managed.py +135 -0
  77. scc_cli/marketplace/materialize.py +846 -0
  78. scc_cli/marketplace/normalize.py +548 -0
  79. scc_cli/marketplace/render.py +281 -0
  80. scc_cli/marketplace/resolve.py +459 -0
  81. scc_cli/marketplace/schema.py +506 -0
  82. scc_cli/marketplace/sync.py +279 -0
  83. scc_cli/marketplace/team_cache.py +195 -0
  84. scc_cli/marketplace/team_fetch.py +689 -0
  85. scc_cli/marketplace/trust.py +244 -0
  86. scc_cli/models/__init__.py +41 -0
  87. scc_cli/models/exceptions.py +273 -0
  88. scc_cli/models/plugin_audit.py +434 -0
  89. scc_cli/org_templates.py +269 -0
  90. scc_cli/output_mode.py +167 -0
  91. scc_cli/panels.py +113 -0
  92. scc_cli/platform.py +350 -0
  93. scc_cli/profiles.py +960 -0
  94. scc_cli/remote.py +443 -0
  95. scc_cli/schemas/__init__.py +1 -0
  96. scc_cli/schemas/org-v1.schema.json +456 -0
  97. scc_cli/schemas/team-config.v1.schema.json +163 -0
  98. scc_cli/services/__init__.py +1 -0
  99. scc_cli/services/git/__init__.py +79 -0
  100. scc_cli/services/git/branch.py +151 -0
  101. scc_cli/services/git/core.py +216 -0
  102. scc_cli/services/git/hooks.py +108 -0
  103. scc_cli/services/git/worktree.py +444 -0
  104. scc_cli/services/workspace/__init__.py +36 -0
  105. scc_cli/services/workspace/resolver.py +223 -0
  106. scc_cli/services/workspace/suspicious.py +200 -0
  107. scc_cli/sessions.py +425 -0
  108. scc_cli/setup.py +589 -0
  109. scc_cli/source_resolver.py +470 -0
  110. scc_cli/stats.py +378 -0
  111. scc_cli/stores/__init__.py +13 -0
  112. scc_cli/stores/exception_store.py +251 -0
  113. scc_cli/subprocess_utils.py +88 -0
  114. scc_cli/teams.py +383 -0
  115. scc_cli/templates/__init__.py +2 -0
  116. scc_cli/templates/org/__init__.py +0 -0
  117. scc_cli/templates/org/minimal.json +19 -0
  118. scc_cli/templates/org/reference.json +74 -0
  119. scc_cli/templates/org/strict.json +38 -0
  120. scc_cli/templates/org/teams.json +42 -0
  121. scc_cli/templates/statusline.sh +75 -0
  122. scc_cli/theme.py +348 -0
  123. scc_cli/ui/__init__.py +154 -0
  124. scc_cli/ui/branding.py +68 -0
  125. scc_cli/ui/chrome.py +401 -0
  126. scc_cli/ui/dashboard/__init__.py +62 -0
  127. scc_cli/ui/dashboard/_dashboard.py +794 -0
  128. scc_cli/ui/dashboard/loaders.py +452 -0
  129. scc_cli/ui/dashboard/models.py +185 -0
  130. scc_cli/ui/dashboard/orchestrator.py +735 -0
  131. scc_cli/ui/formatters.py +444 -0
  132. scc_cli/ui/gate.py +350 -0
  133. scc_cli/ui/git_interactive.py +869 -0
  134. scc_cli/ui/git_render.py +176 -0
  135. scc_cli/ui/help.py +157 -0
  136. scc_cli/ui/keys.py +615 -0
  137. scc_cli/ui/list_screen.py +437 -0
  138. scc_cli/ui/picker.py +763 -0
  139. scc_cli/ui/prompts.py +201 -0
  140. scc_cli/ui/quick_resume.py +116 -0
  141. scc_cli/ui/wizard.py +576 -0
  142. scc_cli/update.py +680 -0
  143. scc_cli/utils/__init__.py +39 -0
  144. scc_cli/utils/fixit.py +264 -0
  145. scc_cli/utils/fuzzy.py +124 -0
  146. scc_cli/utils/locks.py +114 -0
  147. scc_cli/utils/ttl.py +376 -0
  148. scc_cli/validate.py +455 -0
  149. scc_cli-1.5.3.dist-info/METADATA +401 -0
  150. scc_cli-1.5.3.dist-info/RECORD +153 -0
  151. scc_cli-1.5.3.dist-info/WHEEL +4 -0
  152. scc_cli-1.5.3.dist-info/entry_points.txt +2 -0
  153. scc_cli-1.5.3.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,401 @@
1
+ Metadata-Version: 2.4
2
+ Name: scc-cli
3
+ Version: 1.5.3
4
+ Summary: Run Claude Code in Docker sandboxes with team configs and git worktree support
5
+ Project-URL: Homepage, https://github.com/CCimen/scc
6
+ Project-URL: Documentation, https://github.com/CCimen/scc#readme
7
+ Project-URL: Repository, https://github.com/CCimen/scc
8
+ Project-URL: Issues, https://github.com/CCimen/scc/issues
9
+ Author-email: Cagri Cimen <cagricimeenn@gmail.com>
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Keywords: ai,claude,cli,docker,git,worktree
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Topic :: Software Development
23
+ Requires-Python: >=3.10
24
+ Requires-Dist: jsonschema>=4.25.1
25
+ Requires-Dist: pydantic>=2.0.0
26
+ Requires-Dist: pyyaml>=6.0.0
27
+ Requires-Dist: readchar>=4.0.0
28
+ Requires-Dist: requests>=2.32.5
29
+ Requires-Dist: rich>=13.0.0
30
+ Requires-Dist: typer>=0.9.0
31
+ Provides-Extra: dev
32
+ Requires-Dist: mypy>=1.0.0; extra == 'dev'
33
+ Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
34
+ Requires-Dist: pytest>=7.0.0; extra == 'dev'
35
+ Requires-Dist: ruff>=0.1.0; extra == 'dev'
36
+ Description-Content-Type: text/markdown
37
+
38
+ <h1 align="center">SCC - Sandboxed Claude CLI</h1>
39
+
40
+ <p align="center">
41
+ <a href="https://pypi.org/project/scc-cli/"><img src="https://img.shields.io/pypi/v/scc-cli?style=flat-square&label=PyPI" alt="PyPI"></a>
42
+ <a href="https://pypi.org/project/scc-cli/"><img src="https://img.shields.io/pypi/pyversions/scc-cli?style=flat-square&label=Python" alt="Python"></a>
43
+ <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-blue?style=flat-square" alt="License: MIT"></a>
44
+ <a href="#contributing"><img src="https://img.shields.io/badge/Contributions-Welcome-brightgreen?style=flat-square" alt="Contributions Welcome"></a>
45
+ </p>
46
+
47
+ <p align="center">
48
+ <a href="#quick-start">Quick Start</a> ·
49
+ <a href="#commands">Commands</a> ·
50
+ <a href="https://scc-cli.dev">Documentation</a> ·
51
+ <a href="#configuration">Configuration</a> ·
52
+ <a href="https://scc-cli.dev/architecture/overview/">Architecture</a>
53
+ </p>
54
+
55
+ <p align="center">
56
+ <strong>📚 Full Documentation: <a href="https://scc-cli.dev">scc-cli.dev</a></strong>
57
+ </p>
58
+
59
+ ---
60
+
61
+ Run [Claude Code](https://docs.anthropic.com/en/docs/claude-code) (Anthropic's AI coding CLI) in Docker sandboxes with organization-managed team profiles and git worktree support.
62
+
63
+ SCC isolates AI execution in containers, enforces branch safety, and prevents destructive git commands. Organizations distribute plugins through a central config—developers get standardized setups without manual configuration.
64
+
65
+ > **Plugin Marketplace:** Extend Claude with the [official plugin marketplace](https://github.com/CCimen/sandboxed-code-plugins). Start with [**scc-safety-net**](https://scc-cli.dev/plugins/safety-net/) to block destructive git commands like `push --force`.
66
+
67
+ ## 30-Second Guide
68
+
69
+ **Requires:** Python 3.10+, Docker Desktop 4.50+, Git 2.30+
70
+
71
+ ```bash
72
+ pip install scc-cli # Install
73
+ scc setup # Configure (paste your org URL, pick your team)
74
+ cd ~/project && scc # Auto-detect workspace and launch (or scc start ~/project)
75
+ ```
76
+
77
+ Run `scc doctor` to verify your environment or troubleshoot issues.
78
+
79
+ ### Smart Start Flow
80
+
81
+ When you run `scc` or `scc start`:
82
+ - **Auto-detects workspace** from git repository root or `.scc.yaml` location
83
+ - **Shows Quick Resume** if you have recent sessions for this workspace
84
+ - **Prints brief context** (workspace root, entry directory, team) before launching
85
+ - **Safety guard**: Won't auto-launch from suspicious directories (home, `/tmp`). Explicit paths like `scc start ~/` prompt for confirmation
86
+
87
+ **Keyboard shortcuts in interactive mode:**
88
+ - `Enter` — Select/resume session
89
+ - `n` — Start new session
90
+ - `Esc` — Go back
91
+ - `q` — Quit
92
+
93
+ ---
94
+
95
+ ### Find Your Path
96
+
97
+ | You are... | Start here |
98
+ |------------|------------|
99
+ | **Developer** joining a team | [Developer Onboarding](#developer-onboarding) — what you get automatically |
100
+ | **Team Lead** setting up your team | [Team Setup](#team-setup) — manage plugins in your own repo |
101
+ | **Org Admin** configuring security | [Organization Setup](#organization-setup) — control what's allowed org-wide |
102
+ | Exploring **plugins** | [Plugin Marketplace](https://scc-cli.dev/plugins/marketplace/) — official plugins & safety tools |
103
+
104
+ ---
105
+
106
+ ### Developer Onboarding
107
+
108
+ **New to a team?** After running `scc setup` and `scc start`, you get:
109
+
110
+ - **Your team's approved plugins and MCP servers** — pre-configured and ready
111
+ - **Organization security policies** — applied automatically, no action needed
112
+ - **Command guardrails** — block destructive git commands like `push --force` (when scc-safety-net plugin is enabled)
113
+ - **Isolated git worktrees** — your main branch stays clean while Claude experiments
114
+
115
+ **What you never need to do:**
116
+ - Edit config files manually
117
+ - Download or configure plugins
118
+ - Worry about security settings
119
+
120
+ Your org admin and team lead handle the configuration. You just code.
121
+
122
+ ---
123
+
124
+ ### Who Controls What
125
+
126
+ | Setting | Org Admin | Team Lead | Developer |
127
+ |---------|:---------:|:---------:|:---------:|
128
+ | Block dangerous plugins/servers | ✅ **Sets** | ❌ Cannot override | ❌ Cannot override |
129
+ | Default plugins for all teams | ✅ **Sets** | — | — |
130
+ | Team-specific plugins | ✅ Approves | ✅ **Chooses** | — |
131
+ | Project-local config (.scc.yaml) | ✅ Can restrict | ✅ Can restrict | ✅ **Extends** |
132
+ | Safety-net policy (block/warn) | ✅ **Sets** | ❌ Cannot override | ❌ Cannot override |
133
+
134
+ Organization security blocks cannot be overridden by teams or developers.
135
+
136
+ *"Approves" = teams can only select from org-allowed marketplaces; blocks always apply. "Extends" = can add plugins/settings, cannot remove org defaults.*
137
+
138
+ ---
139
+
140
+ ### Organization Setup
141
+
142
+ Org admins create a single JSON config that controls security for all teams:
143
+
144
+ ```json
145
+ {
146
+ "schema_version": "1.0.0",
147
+ "organization": { "name": "Acme Corp", "id": "acme" },
148
+ "marketplaces": {
149
+ "sandboxed-code-official": {
150
+ "source": "github",
151
+ "owner": "CCimen",
152
+ "repo": "sandboxed-code-plugins"
153
+ }
154
+ },
155
+ "security": {
156
+ "blocked_plugins": ["*malicious*"],
157
+ "blocked_mcp_servers": ["*.untrusted.com"],
158
+ "safety_net": { "action": "block" }
159
+ },
160
+ "defaults": {
161
+ "allowed_plugins": ["*"],
162
+ "network_policy": "unrestricted"
163
+ },
164
+ "profiles": {
165
+ "backend": { "additional_plugins": ["scc-safety-net@sandboxed-code-official"] },
166
+ "frontend": { "additional_plugins": ["scc-safety-net@sandboxed-code-official"] }
167
+ }
168
+ }
169
+ ```
170
+
171
+ Host this anywhere: GitHub, GitLab, S3, or any HTTPS URL. Private repos work with token auth.
172
+
173
+ See [examples/](examples/) for complete org configs and [Governance](https://scc-cli.dev/architecture/governance-model/) for delegation rules.
174
+
175
+ ---
176
+
177
+ ### Team Setup
178
+
179
+ Teams can manage their plugins **two ways**:
180
+
181
+ **Option A: Inline (simple)** — Team config lives in the org config file.
182
+ ```json
183
+ "profiles": {
184
+ "backend": {
185
+ "additional_plugins": ["scc-safety-net@sandboxed-code-official"]
186
+ }
187
+ }
188
+ ```
189
+
190
+ **Option B: Team Repo (GitOps)** — Team maintains their own config repo.
191
+ ```json
192
+ "profiles": {
193
+ "backend": {
194
+ "config_source": {
195
+ "source": "github",
196
+ "owner": "acme",
197
+ "repo": "backend-team-scc-config"
198
+ }
199
+ }
200
+ }
201
+ ```
202
+
203
+ With Option B, team leads can update plugins via PRs to their own repo—no org admin approval needed for allowed additions.
204
+
205
+ **Config precedence:** Org defaults → Team profile → Project `.scc.yaml` (additive merge; blocks apply after merge).
206
+
207
+ ---
208
+
209
+ ## Commands
210
+
211
+ ### Essential Commands
212
+
213
+ | Command | Description |
214
+ |---------|-------------|
215
+ | `scc` | Smart start: auto-detect workspace, show Quick Resume, or launch |
216
+ | `scc setup` | Configure organization connection |
217
+ | `scc doctor` | Check system health and diagnose issues |
218
+ | `scc stop` | Stop running sandbox(es) |
219
+
220
+ ### Session & Team
221
+
222
+ | Command | Description |
223
+ |---------|-------------|
224
+ | `scc start --resume` | Resume most recent session |
225
+ | `scc start --select` | Pick from recent sessions |
226
+ | `scc team switch` | Switch to a different team profile |
227
+ | `scc sessions` | List recent sessions |
228
+
229
+ ### Worktrees
230
+
231
+ | Command | Description |
232
+ |---------|-------------|
233
+ | `scc worktree create <repo> <name>` | Create git worktree for parallel development |
234
+ | `scc worktree enter [target]` | Enter worktree in subshell (no shell config needed) |
235
+ | `scc worktree list -v` | List worktrees with git status |
236
+
237
+ ### Governance & Admin
238
+
239
+ | Command | Description |
240
+ |---------|-------------|
241
+ | `scc config explain` | Show effective config with sources |
242
+ | `scc exceptions list` | View active exceptions |
243
+ | `scc audit plugins` | Audit installed plugins |
244
+ | `scc support bundle` | Generate support bundle for troubleshooting |
245
+
246
+ Run `scc <command> --help` for options. See **[CLI Reference](https://scc-cli.dev/reference/cli/overview/)** for the complete command list (40+ commands).
247
+
248
+ ### Git Worktrees
249
+
250
+ **Primary method (no shell config needed):**
251
+
252
+ ```bash
253
+ scc worktree enter feature-auth # Opens a subshell in the worktree
254
+ # Type 'exit' to return to your previous directory
255
+ ```
256
+
257
+ **Power users:** Add this shell wrapper for seamless `cd` switching:
258
+
259
+ ```bash
260
+ # Add to ~/.bashrc or ~/.zshrc
261
+ wt() {
262
+ local p
263
+ p="$(scc worktree switch "$@")" || return $?
264
+ cd "$p" || return 1
265
+ }
266
+ ```
267
+
268
+ **Usage examples (both methods):**
269
+
270
+ ```bash
271
+ scc worktree enter ^ # Enter main branch worktree
272
+ scc worktree enter - # Enter previous worktree (like cd -)
273
+ wt feature-auth # Switch with shell wrapper
274
+ wt scc/feature-x # Match by full branch name
275
+ ```
276
+
277
+ **Note:** Branch names with `/` are sanitized to `-` (e.g., `feature/auth` → `feature-auth`).
278
+
279
+ **Status indicators in `list -v`:**
280
+
281
+ | Symbol | Meaning |
282
+ |--------|---------|
283
+ | `+N` | N staged files |
284
+ | `!N` | N modified files |
285
+ | `?N` | N untracked files |
286
+ | `.` | Clean worktree |
287
+ | `…` | Status timed out |
288
+
289
+ **Cleanup stale entries:**
290
+
291
+ ```bash
292
+ scc worktree prune -n # Dry-run: show what would be pruned
293
+ scc worktree prune # Actually prune stale entries
294
+ ```
295
+
296
+ ---
297
+
298
+ ## Configuration
299
+
300
+ ### Setup Modes
301
+
302
+ **Organization mode** (recommended):
303
+ ```bash
304
+ scc setup
305
+ # Enter URL when prompted: https://gitlab.example.org/devops/scc-config.json
306
+ ```
307
+
308
+ **Standalone mode** (no org config):
309
+ ```bash
310
+ scc setup --standalone
311
+ ```
312
+
313
+ ### Project Config
314
+
315
+ Add `.scc.yaml` to your repository root for project-specific settings:
316
+
317
+ ```yaml
318
+ additional_plugins:
319
+ - "project-linter@internal"
320
+
321
+ session:
322
+ timeout_hours: 4
323
+ ```
324
+
325
+ ### File Locations
326
+
327
+ ```
328
+ ~/.config/scc/config.json # Org URL, team, preferences
329
+ ~/.cache/scc/ # Cache (safe to delete)
330
+ <repo>/.scc.yaml # Project-specific config
331
+ ```
332
+
333
+ ---
334
+
335
+ ## Troubleshooting
336
+
337
+ Run `scc doctor` to diagnose issues.
338
+
339
+ | Problem | Solution |
340
+ |---------|----------|
341
+ | Docker not reachable | Start Docker Desktop |
342
+ | Organization config fetch failed | Check URL and token |
343
+ | Plugin blocked | Check `scc config explain` for security blocks |
344
+
345
+ See [Troubleshooting Guide](https://scc-cli.dev/troubleshooting/) for more solutions.
346
+
347
+ ---
348
+
349
+ ## Documentation
350
+
351
+ Visit **[scc-cli.dev](https://scc-cli.dev)** for comprehensive documentation:
352
+
353
+ - [Getting Started](https://scc-cli.dev/getting-started/quick-start/) — installation and first steps
354
+ - [CLI Reference](https://scc-cli.dev/reference/cli/overview/) — complete command reference (40+ commands)
355
+ - [Architecture](https://scc-cli.dev/architecture/overview/) — system design, module structure
356
+ - [Governance](https://scc-cli.dev/architecture/governance-model/) — delegation model, security boundaries
357
+ - [Plugin Marketplace](https://scc-cli.dev/plugins/marketplace/) — plugin distribution and safety-net
358
+ - [Troubleshooting](https://scc-cli.dev/troubleshooting/) — common problems and solutions
359
+ - [Examples](https://scc-cli.dev/examples/) — ready-to-use organization config templates
360
+
361
+ ---
362
+
363
+ ## Automation & CI
364
+
365
+ SCC supports non-interactive operation for CI/CD pipelines and scripting.
366
+
367
+ ```bash
368
+ # CI pipeline example
369
+ scc start --non-interactive --team backend ~/project
370
+
371
+ # Preview configuration as JSON
372
+ scc start --dry-run --json
373
+
374
+ # Full automation mode
375
+ scc start --dry-run --json --non-interactive ~/project
376
+ ```
377
+
378
+ **Key flags:**
379
+ - `--non-interactive` — Fail fast instead of prompting
380
+ - `--json` — Machine-readable output with standardized envelope
381
+ - `--dry-run` — Preview configuration without launching
382
+
383
+ **Exit codes:** 0 (success), 2 (usage error), 3 (config error), 4 (tool error), 5 (prerequisites), 6 (governance block), 130 (cancelled)
384
+
385
+ See [CLI Reference → Exit Codes](https://scc-cli.dev/reference/cli/overview/#exit-codes) for complete documentation.
386
+
387
+ ---
388
+
389
+ ## Development
390
+
391
+ ```bash
392
+ uv sync # Install dependencies
393
+ uv run pytest # Run tests
394
+ uv run ruff check # Run linter
395
+ ```
396
+
397
+ ---
398
+
399
+ ## License
400
+
401
+ MIT
@@ -0,0 +1,153 @@
1
+ scc_cli/__init__.py,sha256=it1SC7TzewmuZCAhc2lJ6oahTky9-PJoLxLUQ-TFmm4,438
2
+ scc_cli/auth.py,sha256=2la9Ny4BuIffef0SzZOh7oreYIXJVDkL7dDPgpWRByE,4481
3
+ scc_cli/claude_adapter.py,sha256=gxoB4FOvZHjw0c2MdiVX-8Z9PuaCpBLNgBswTKXRWXc,17700
4
+ scc_cli/cli.py,sha256=ZoiJTgYXIavY-sXrprbUCSIOBtUWNMP8cqPHOEow4cA,12523
5
+ scc_cli/cli_common.py,sha256=xfM-9PAkg90EeNTICmhMkN2S8dsu-Rj6Y_sJEpb6PWU,7744
6
+ scc_cli/cli_helpers.py,sha256=YyJKc7gjamlMZkFaTHK6m_YIHLDonrNODj964ff6qzg,7139
7
+ scc_cli/config.py,sha256=sl-eBf3xzVRZm_7sH7cqBkkhQDCStLMAVQWpPWIIgr4,24323
8
+ scc_cli/confirm.py,sha256=4fWY_hBnJ_V_gupPWJMY3ZvcVzNmwa3i2VRvkxK_pXM,650
9
+ scc_cli/console.py,sha256=nOU2gbEn1y-_bDDM3YpRgq1zHfmEpMm9CkmZh-v0KAg,21225
10
+ scc_cli/contexts.py,sha256=NFwl-6w5Seo9mDLPHjjafN36jKdt_1YT-JSUqvBn22g,14006
11
+ scc_cli/deprecation.py,sha256=1iCVOGUgm5oXJG0OsXtRZlp_TZFl2DBPhZyX536DqzA,1884
12
+ scc_cli/deps.py,sha256=HpXXpJ4sBwceJfU4c5en3lg3zSaJR9YBL-tYOb2-Iw0,6959
13
+ scc_cli/git.py,sha256=-nW96tfoQ6zywMdWBGJ1QLHWZiLFuhRTwxcv0msl8vU,3240
14
+ scc_cli/json_command.py,sha256=_VowpwtJQAjOU8vlFvbpNhu9kSbKM6tXyDydTgOdib8,6332
15
+ scc_cli/json_output.py,sha256=hwLX-aOO7jhCgkDTCOXoDpOX1ZyZR31DpzsPeQo0CK4,5201
16
+ scc_cli/kinds.py,sha256=QZhWZouPWQ6Ag4otwXHLrzvO3YP5pnyW0CYdCsrAEoU,1592
17
+ scc_cli/org_templates.py,sha256=JjkfcCjLwDCoHeqFsvY6kq-Bs0zaja2tbjBrJ_aOKWI,9050
18
+ scc_cli/output_mode.py,sha256=BZpkUx7tAfk-VYP-GOzui7NeHN-19sxdXdSo7HRcc5Y,6500
19
+ scc_cli/panels.py,sha256=fg8OJ3It44Jt7-q4LufGi9KFrA7i9ViuA4xBO8--1W8,3269
20
+ scc_cli/platform.py,sha256=qZEuUOgRA-v2le6_mYrt61uWkWW01Osyt9R5gPA9Qls,11080
21
+ scc_cli/profiles.py,sha256=RjTGdrSf81SlU-DZ-PWDDPEeBTk0xwP_JRPXMv7dtmc,36084
22
+ scc_cli/remote.py,sha256=Nu-G4MLyh0ffR6shLlS-vwUjG-HxmcegAOEA5f6h3qQ,16947
23
+ scc_cli/sessions.py,sha256=I7Aie8CYd0wuvQaSannsJun8dguDXMihWnjYmIJVAxg,13959
24
+ scc_cli/setup.py,sha256=MDGehFKR9jZVJoJxx7otEcBzit2Fzg5861lScrTrLU4,21838
25
+ scc_cli/source_resolver.py,sha256=QBVYzSaCipmTM_b1eboamTYjIdXTXOceBXRpyQDG7D8,16024
26
+ scc_cli/stats.py,sha256=wbCHY-Qu5VLDp2bXhvfcMcWZgWUgbl9mNwqeE3h0ALE,13749
27
+ scc_cli/subprocess_utils.py,sha256=dXE-IsYsc53dx0rwN0bxWe7Oc5wv7kf3a9-auEXshww,2264
28
+ scc_cli/teams.py,sha256=3UZRTV8oLC8DZrl1_pcKtdJ9xWfFOWfteNQycFihfMg,13185
29
+ scc_cli/theme.py,sha256=PW9K77wCeJfDUfHr_bDkA1udlJI2pDUJklztVZCkmWw,13575
30
+ scc_cli/update.py,sha256=9_EgGhdl_QMsP4e2NT6qAuqvUPLiCklcNf_yRKPkTZA,24092
31
+ scc_cli/validate.py,sha256=46HaZ5jngKNg6E2BNDYbD8JsHMnjUnGHlrgHFhb5TYc,18964
32
+ scc_cli/audit/__init__.py,sha256=hkFttaKDpMN6OQIVoiGtMZNrGtlKNX3ahaspbUJ_rp4,890
33
+ scc_cli/audit/parser.py,sha256=LzEILJP0D8Jy-4616YXtuczacPVi2lgULNmNWLmp_gw,5113
34
+ scc_cli/audit/reader.py,sha256=FirKgcXrFiE4lxX189x7D-nboimx4KZ2buu6L6ShM-4,5468
35
+ scc_cli/commands/__init__.py,sha256=395qxllNJK-7G2sJED1WA2633dpPeQvTYoB1z8npBcs,338
36
+ scc_cli/commands/admin.py,sha256=x8uYSs6J42Qz182U1Ti0X2YFuDJmTQcHJdNoSGsP1iY,26861
37
+ scc_cli/commands/audit.py,sha256=GlF8RHTCoRgzQHzCjqMGqLuVk5HTNfc5BQtqYOFrp70,7816
38
+ scc_cli/commands/config.py,sha256=ra9ZL_M526L9q10bdLuEI-4GIIGTYZvujbvwuUCVUPk,20029
39
+ scc_cli/commands/exceptions.py,sha256=OgM1kR6MCULzrIN7vy0iSI22ueKO_nkaHiEF1PP_uQk,25305
40
+ scc_cli/commands/init.py,sha256=ebJZmF0bbilmSfFcf5IEzlEXkbdvOQmtnkPvvyROVcQ,9755
41
+ scc_cli/commands/support.py,sha256=o0k7Qz3OyTx-4ECXNQ1swa7lIqGbdM-zy04ubXyfo6Q,11421
42
+ scc_cli/commands/team.py,sha256=7iw0gk2flMgVnVFn-Ukc2h2cbI3d4x2KeC_0ygxrjA0,35536
43
+ scc_cli/commands/launch/__init__.py,sha256=ZNjr8Y--xr8Lr8aS17TPjvRo6kLkW9FHtPOX6vudh5Y,2092
44
+ scc_cli/commands/launch/app.py,sha256=x345I0FEBWjgqPr9b2wMXjzQvoKPLa0iDid1BOAKXLc,56583
45
+ scc_cli/commands/launch/render.py,sha256=Cs6wqFSpCnX7qpwzWOLqQE2QFIfStM7h-_qSYAoGwsY,10002
46
+ scc_cli/commands/launch/sandbox.py,sha256=axsmVjSsC1qPmWgeJ8Y3EG09ZQun9UkgzkAHdu-e8wk,4717
47
+ scc_cli/commands/launch/workspace.py,sha256=_uRALngpfSzPYuHLWGS3kKzM22qbD8sdsHcWuH0ZngI,11830
48
+ scc_cli/commands/org/__init__.py,sha256=NxR2Ow0eVRG3M3q9Py6Jein0pEeB8DkreozQ_0qcE_4,1373
49
+ scc_cli/commands/org/_builders.py,sha256=tVYiGqwQAdVt9-Y3NlIsjBCgrfRSaVTh177DCndKC3U,8476
50
+ scc_cli/commands/org/app.py,sha256=i99nVq2HrGDuoLhe0WWQlaREzJmYuxFNw8tpc2ansDA,1665
51
+ scc_cli/commands/org/import_cmd.py,sha256=Q21a-uQAHSniAkZp0Gzi3Cp8egYWx6Q6YDYqygGU3D8,9488
52
+ scc_cli/commands/org/init_cmd.py,sha256=T0NOlupRCOvaOHtIpxAZ8UU6mrWA6hqzvOSRVTI_Nt8,8359
53
+ scc_cli/commands/org/schema_cmd.py,sha256=Iw7lHxR54QC_7y3us4obQD-qJxVmo9y9yRqVW4lVypY,2405
54
+ scc_cli/commands/org/status_cmd.py,sha256=OuY-0vVEDVqN8oKtjyXn_Fg-2Ic6NpwjDcYGpDVJKhI,5408
55
+ scc_cli/commands/org/update_cmd.py,sha256=6E4tNsefQKUS5Je527q3Scyyh4YZADz2L067XdCQmzc,11999
56
+ scc_cli/commands/org/validate_cmd.py,sha256=EIuwKQd0ePULiIuTJrqV7f7XO3MjsPWTYGHdassFF44,4591
57
+ scc_cli/commands/worktree/__init__.py,sha256=utFRZuyokb8Ng0Ppgu6Uaub2CJ0WBhHV2aFH2Z6iw4g,1883
58
+ scc_cli/commands/worktree/_helpers.py,sha256=NbF7Y9pSHeW2nDx4OR7xJc_NYc82U8naZVhxrVpQ91U,1737
59
+ scc_cli/commands/worktree/app.py,sha256=-_p5cK8zDJnempEJvMUXfuMhpDXznnqha5Eea69G0KI,6652
60
+ scc_cli/commands/worktree/container_commands.py,sha256=PSrdDRDPrscbC7arXtu6tMGT5t9kbU8kSXhqojGPIsc,12990
61
+ scc_cli/commands/worktree/context_commands.py,sha256=9j5TAZe5nfiP2W51rOxwFNYnh5o69qP4jVCwlIG8l3E,1792
62
+ scc_cli/commands/worktree/session_commands.py,sha256=n7dGXEZB0ceozlYeOXWXpq_DQrVD41NSI8cGJFCWUUo,4160
63
+ scc_cli/commands/worktree/worktree_commands.py,sha256=caJ0BmumGRikdhGk01VksCfBVHP7fZSN_5STurYxUZ4,27519
64
+ scc_cli/core/__init__.py,sha256=yExQWPpPHn2ttPH5cbk6fg4NjoioUVeGwJ72-ttsvgU,1416
65
+ scc_cli/core/constants.py,sha256=0eeKLy_DPSHnHcrzVM3vX3AHuQ_QzkdWfh-0FhgjYec,5185
66
+ scc_cli/core/errors.py,sha256=z2Dkw2Tdw_Th1spK1cAE9H6RX5Bmed3rs3d1aXLiJS4,9084
67
+ scc_cli/core/exit_codes.py,sha256=4y7Fzp-nN8rKP74C2VlqR4xgFyOsJiwF9QbwZkup5Nc,3507
68
+ scc_cli/core/workspace.py,sha256=QhpC1kE2PV6mGSQUj7XbwJAVB_MR5pGMDhzpKi6wQog,2437
69
+ scc_cli/docker/__init__.py,sha256=-YctA9kc1OJwv-sg86sIIKiGe6GtuOs-zd7Y9jEx_IY,3697
70
+ scc_cli/docker/core.py,sha256=2y4Ror4Zkc55kgsAJQP0TmgBQ8WQqDT1Rj2vnGM58Uw,14827
71
+ scc_cli/docker/credentials.py,sha256=HKiQnghbda1MGebLekQ-sEL4KZ7Tk_Ha9JToTDmNreE,26260
72
+ scc_cli/docker/launch.py,sha256=dvgOJJ5CGZW8J6jRJqvzXV7ZeBz6OIVEFSvHw_WokZ4,22230
73
+ scc_cli/doctor/__init__.py,sha256=RxYszMI1C5aYXjXf8GRlpepeOc4SPYjlWV7mWiWr_a4,2887
74
+ scc_cli/doctor/render.py,sha256=CpO5iyWYRN88joze-az36p4TEx2V1p8W0ZWwyTQIuw8,12941
75
+ scc_cli/doctor/types.py,sha256=GXVNLUaAPYb0K_8IDKfWO23WFhFVzgqH95xnDGRAXKU,1884
76
+ scc_cli/doctor/checks/__init__.py,sha256=mJxQEFHhJirUg5-VkpvvPBtl-AnfCt4pHb3QCgVB6vY,4281
77
+ scc_cli/doctor/checks/cache.py,sha256=F-PH3qk99piJRaWQtT5M-MH9LW-xsE7mT49x82d0R_0,9760
78
+ scc_cli/doctor/checks/config.py,sha256=nTmXA9zXK7jKQc61i2_t8OBp3ggXPYruGyxJg_SSjJ0,3201
79
+ scc_cli/doctor/checks/environment.py,sha256=Zoxen7nBp0iXvy5sCtI3hK0blUKv6D04VNM-bVn4Tfc,5556
80
+ scc_cli/doctor/checks/json_helpers.py,sha256=M82lrFLCvWs9txje9R-E7fiVxOyrltc1qr2pEedvDSY,5069
81
+ scc_cli/doctor/checks/organization.py,sha256=7ugvXfNT5PaaRY94EuN35vmCj844toE078B-4cCSYtc,7615
82
+ scc_cli/doctor/checks/worktree.py,sha256=GmjSwAN52Y90_YO0_DD_wj2rEA6i6eFyghAAQWEO0jQ,9032
83
+ scc_cli/evaluation/__init__.py,sha256=k9AcfESzr6nA87sY52x0-QlZ69V7K-p10e9zKIG3g0E,607
84
+ scc_cli/evaluation/apply_exceptions.py,sha256=MkS6L00h4kojtirs3uVn5Rp2DKDPMuQ3DOo5PlQLuF0,6863
85
+ scc_cli/evaluation/evaluate.py,sha256=XPVOE_Zxl4QDz_OvtdRNZW9owZyz8MiN0bBBxN9rgKk,3071
86
+ scc_cli/evaluation/models.py,sha256=9dEUmf2P_RI26RU6bm4Nr2-jHGIIjU80JP3JkuhR-28,2789
87
+ scc_cli/marketplace/__init__.py,sha256=b1W_LXi-W03JsJeKzQaL_gSF1fMG09sGSc3sVco0Kpo,3305
88
+ scc_cli/marketplace/adapter.py,sha256=2DgPcd5PNJvM0fcYNdO8wZEszK0jHUI3MIduX-Hg-X4,2934
89
+ scc_cli/marketplace/compute.py,sha256=pB8b1Q6pESBvxZqUGUHsctPAizNdXg-N0KlwjKaW_Xw,19736
90
+ scc_cli/marketplace/constants.py,sha256=xnJmHxNYaOpQBas1Lod1qbTI_6W56vSjuNy7krxTFZw,4529
91
+ scc_cli/marketplace/managed.py,sha256=BImC4O1zDGgQqt4M7u34YsmwgZsFFp7oAoagkdjtNAs,4324
92
+ scc_cli/marketplace/materialize.py,sha256=-q_PHh3PUjAcxzbkPIS6EcY2SpdmInjnHdXmhKgBS5I,31545
93
+ scc_cli/marketplace/normalize.py,sha256=GQxhERrHP3GFFkfsYl1WrF829rNSgNx_zoiIB1e_1K0,18861
94
+ scc_cli/marketplace/render.py,sha256=dy2uMYkpEQJHc7ZUlbTWvo8g1jbVlTnb59c53IHfm-A,12775
95
+ scc_cli/marketplace/resolve.py,sha256=Z0jEtXWdphDe6QAD4YpcYXWjnixrXbcfF3mttcklha8,19899
96
+ scc_cli/marketplace/schema.py,sha256=ihfAKjPfBaet9q2-HlDaWvt88_JCzaYb58BWPJqRrQs,17549
97
+ scc_cli/marketplace/sync.py,sha256=UDhG8M1kSoekdwTDj2kVWEitin49n4ymAEOEmdademk,11303
98
+ scc_cli/marketplace/team_cache.py,sha256=HrabN9dLIi-5lg8LOP30PWdXqWjR4kp4JLKX0fuAMR4,6937
99
+ scc_cli/marketplace/team_fetch.py,sha256=Ca2XBep7O2C6JP5MATI093LiXJMMGUIob6BbMyMHwEc,23065
100
+ scc_cli/marketplace/trust.py,sha256=_5BE86cH_EeqPt8xhryjx_iT_1DYCrt2DnDCEavpuTg,9450
101
+ scc_cli/models/__init__.py,sha256=LCCDNsFG15TVPyOoW8SP61nnlzYbWFjkdiZaIevww6Y,849
102
+ scc_cli/models/exceptions.py,sha256=BWG78KlQPaBGWKQNwtEsb9UpSMCr_YxIT8NSOJqRw98,8688
103
+ scc_cli/models/plugin_audit.py,sha256=4KZpTCg1xNmmA0xEqmy0FuO9MkMntfSUUqGMeeiLgY0,12925
104
+ scc_cli/schemas/__init__.py,sha256=DdfRQqD1txSEPjBg7HLm-3s-gsbfSRO3fxjxDe6mQjo,51
105
+ scc_cli/schemas/org-v1.schema.json,sha256=ALNu1yUAp3hbmCd8U9bnD_uliZwlEXAp9QrQNaChp94,20846
106
+ scc_cli/schemas/team-config.v1.schema.json,sha256=kLcWWVu9_Dg0KT3MJB39MU4obMb071bTXBaR1T3c_98,6233
107
+ scc_cli/services/__init__.py,sha256=By-Xjwj1KuTAJ1H-b7UTFya2xZkqKNgpwG043JxFdOg,55
108
+ scc_cli/services/git/__init__.py,sha256=6dmYKyC7Fq0db179vStwRzBvgmhOUz57s7Apkt0h4Vk,1776
109
+ scc_cli/services/git/branch.py,sha256=ggV6hhT0aUq-0etpv93YD39FNQ0KJigRGp_yZQ6tdps,4818
110
+ scc_cli/services/git/core.py,sha256=kR1DQAK-jX3M6vC5AgmBH4rKPA9KrBcPD4MvISHGJgg,6909
111
+ scc_cli/services/git/hooks.py,sha256=5yJuiSIahLpXksE-7OvntGzcctLjUERheoUospK2MBI,3272
112
+ scc_cli/services/git/worktree.py,sha256=xk53wcyBNRkQ55O5bouEcNqcn2JPdJkKRTrY5UnwK8Y,14807
113
+ scc_cli/services/workspace/__init__.py,sha256=Q_l_1EClcar1K9nxSj70dHG8b29y-SOxJyuM1HMlXcc,1117
114
+ scc_cli/services/workspace/resolver.py,sha256=pkMLX8y5wu7V2GK3GUOKy-9rbHmr3RS_dQJ_XeFbxTM,7540
115
+ scc_cli/services/workspace/suspicious.py,sha256=qOwY3aT1lER2PjdU7N5Kgk8gDNaGVoDR0Xu_78w_Njo,6749
116
+ scc_cli/stores/__init__.py,sha256=_g6LgPobP1Uc9qmP5Y_pAFgy-2zaT5Lx6nBkTdWjahI,211
117
+ scc_cli/stores/exception_store.py,sha256=6im0L9uGKLvLZfLTTzsA_nnoyymJ7FKzCiZpGD9qDEw,8111
118
+ scc_cli/templates/__init__.py,sha256=5Qbr_rm2GpsYXCxuvhUu8h9qMvz69uFhGOKTLLv70b0,73
119
+ scc_cli/templates/statusline.sh,sha256=WstSweqpIAbr3zfrUxz1cyQPEeYqyTbDfiLcwr1YFMM,2240
120
+ scc_cli/templates/org/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
+ scc_cli/templates/org/minimal.json,sha256=PWGKMpViq6uDchxQLSldCa8lmWCafdcNqYjO5cGt1-k,428
122
+ scc_cli/templates/org/reference.json,sha256=Ot5r19LAwKm_SVmg90Bldi9I7GFqXMyXaWgnOzlLbkg,1999
123
+ scc_cli/templates/org/strict.json,sha256=O5KAC97k6gWrupPlRmn1oKQsrUugWBnmFO7Dehj0Zlc,978
124
+ scc_cli/templates/org/teams.json,sha256=VRommOQpmhHBu2xd3wlNPzAkjkzsm7fBrrP9iAidZJA,1071
125
+ scc_cli/ui/__init__.py,sha256=C6HWwFLwXiHtiPNubQtmYs09AjDqihQlJYYYCCMy69E,4483
126
+ scc_cli/ui/branding.py,sha256=mOPVmGsdEbSk6bv2-56v9c4lAizxcCUEKo-4FKs_6Z4,2452
127
+ scc_cli/ui/chrome.py,sha256=_61_ROnA3IdDf_beDyiw0hGsRgopXZLCvLEelU5MUz0,13234
128
+ scc_cli/ui/formatters.py,sha256=KwooAvNEpoUXv7Bq-HalesnqqOo58llktcmuL29Ihi0,13305
129
+ scc_cli/ui/gate.py,sha256=HCC4wJ_gdpXcYlfInZFoz_Xuw222nXaqoUWqR1h2z8w,11471
130
+ scc_cli/ui/git_interactive.py,sha256=BGxqcbjfGQfuxZdAzalUnIaE2cFsrvVM6R-RpB3J11Y,29681
131
+ scc_cli/ui/git_render.py,sha256=k1IMfQX99YWEis3WE5YdhzLbTVFuIoF_P9HdBzDQgVc,5413
132
+ scc_cli/ui/help.py,sha256=I83vTRR1IyQPIlIjuCVnJ5lg6noYneXvodbwpwrhx6k,4722
133
+ scc_cli/ui/keys.py,sha256=oz2wMg3ReCvqp5D4ra6YDcNTvYaqr1vo28pjaVZf-OQ,22392
134
+ scc_cli/ui/list_screen.py,sha256=z4_pwupKADs3hYFRTXcf9z4qR0t-NwEKHopAndz6hY4,15408
135
+ scc_cli/ui/picker.py,sha256=1P5ms2puUK111hoPXmqGU6NTS2sHMC2oFKDBpapKPxI,26132
136
+ scc_cli/ui/prompts.py,sha256=qPdvje0YYak3dF6hBMukFZTCJHJzTBQ2vhdMoG4tx_8,6462
137
+ scc_cli/ui/quick_resume.py,sha256=6uV2lGZQCBmqTNrBsl7LvzSpGhlhCI4TJ9XntLyvXTY,3224
138
+ scc_cli/ui/wizard.py,sha256=s-vcYUye-QeV2ZYi2EPNgnO7vuy9SNJWsPPSxWbxt8E,20326
139
+ scc_cli/ui/dashboard/__init__.py,sha256=8Gt3i30HohPAnvtdjkaUlzvXy4lJ3v_aPVMUvGQISoY,1845
140
+ scc_cli/ui/dashboard/_dashboard.py,sha256=S1WCmacGmYbpfP02NIvDm4XKry35CJjgUFuQyVhi6-E,35117
141
+ scc_cli/ui/dashboard/loaders.py,sha256=uoiySu5H_TIcJMtBe9U9yz0QkFvFxe9m9v_5KLEsU8g,13978
142
+ scc_cli/ui/dashboard/models.py,sha256=c0xm7irxxvn5rAsEWNHUdaL37CU85r8x8by9pxbJZkk,5879
143
+ scc_cli/ui/dashboard/orchestrator.py,sha256=KJTtCFpef1jdNr4nqUx0aTud7-e0icofgpi5QKtlSy0,25120
144
+ scc_cli/utils/__init__.py,sha256=3W3MNrlzIBZVfQeKmYiwskDby_QLyqXMKxUaha00iww,858
145
+ scc_cli/utils/fixit.py,sha256=nPAfbuprUtdeGU_oi7yBG9oRztXVe1aSAOcpZOD1L94,7218
146
+ scc_cli/utils/fuzzy.py,sha256=kbqa-V1NZV8qU150MSU5sVct4jvl9Dd13WpXPhen4fw,3717
147
+ scc_cli/utils/locks.py,sha256=zjSkY3IgndKCTWlifJFimSZ0ISj-fPxuoVB3hC2JSGI,3054
148
+ scc_cli/utils/ttl.py,sha256=qmoG_gy0i8zbAt035otiWRPBIQ0XHRYhOn26oUW6MvI,14117
149
+ scc_cli-1.5.3.dist-info/METADATA,sha256=P2dhBKjHXn3FoDkFV7Nq5r2FDGyjsTrGML0s53X7icQ,13167
150
+ scc_cli-1.5.3.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
151
+ scc_cli-1.5.3.dist-info/entry_points.txt,sha256=9J2SwHzS8UJI_CWb331bSoNMwGYFGvy3CYwWuxIAhxM,41
152
+ scc_cli-1.5.3.dist-info/licenses/LICENSE,sha256=VPkRI_D_65MtQecIM3Wgkw_SYdkGABksxbaTilghVxE,1068
153
+ scc_cli-1.5.3.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.28.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ scc = scc_cli.cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Cagri Cimen
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.