iris-security-cli 0.2.14__tar.gz → 0.2.16__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 (71) hide show
  1. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/PKG-INFO +5 -5
  2. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/README.md +1 -1
  3. iris_security_cli-0.2.16/iris_cli/compliance_scan_cmd.py +216 -0
  4. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/explain.py +1 -1
  5. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/main.py +28 -2
  6. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/quickstart.py +2 -2
  7. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/scm.py +1 -1
  8. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_security_cli.egg-info/PKG-INFO +5 -5
  9. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_security_cli.egg-info/SOURCES.txt +1 -0
  10. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_security_cli.egg-info/requires.txt +1 -1
  11. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/pyproject.toml +4 -4
  12. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/__init__.py +0 -0
  13. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/action_plan.py +0 -0
  14. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/assess.py +0 -0
  15. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/audit_log.py +0 -0
  16. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/cedar_parser.py +0 -0
  17. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/certify.py +0 -0
  18. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/compiler_config.py +0 -0
  19. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/compliance_check_cmd.py +0 -0
  20. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/compliance_fix.py +0 -0
  21. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/cost.py +0 -0
  22. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/declare.py +0 -0
  23. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/delegation.py +0 -0
  24. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/discover.py +0 -0
  25. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/dlp_cmd.py +0 -0
  26. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/drift.py +0 -0
  27. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/enforce.py +0 -0
  28. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/entitlements_cmd.py +0 -0
  29. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/evidence.py +0 -0
  30. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/framework_suggest.py +0 -0
  31. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/framework_test.py +0 -0
  32. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/hitl.py +0 -0
  33. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/license_cmd.py +0 -0
  34. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/list_cmd.py +0 -0
  35. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/mcp_server.py +0 -0
  36. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/models_cmd.py +0 -0
  37. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/onboarding_report.py +0 -0
  38. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/org_policy.py +0 -0
  39. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/policy_cache.py +0 -0
  40. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/policy_commit.py +0 -0
  41. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/policy_diff.py +0 -0
  42. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/policy_status.py +0 -0
  43. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/preview.py +0 -0
  44. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/redteam.py +0 -0
  45. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/regulatory.py +0 -0
  46. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/scan_govern.py +0 -0
  47. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/scan_report.py +0 -0
  48. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/sentinel.py +0 -0
  49. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/status_cmd.py +0 -0
  50. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/users.py +0 -0
  51. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/vault.py +0 -0
  52. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/watch.py +0 -0
  53. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_cli/witness.py +0 -0
  54. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_security_cli.egg-info/dependency_links.txt +0 -0
  55. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_security_cli.egg-info/entry_points.txt +0 -0
  56. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/iris_security_cli.egg-info/top_level.txt +0 -0
  57. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/setup.cfg +0 -0
  58. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/tests/test_audit_log.py +0 -0
  59. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/tests/test_docs_pages_check.py +0 -0
  60. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/tests/test_entitlements_display.py +0 -0
  61. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/tests/test_evidence.py +0 -0
  62. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/tests/test_evidence_export.py +0 -0
  63. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/tests/test_evidence_query.py +0 -0
  64. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/tests/test_framework_suggest.py +0 -0
  65. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/tests/test_framework_test.py +0 -0
  66. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/tests/test_hitl_cli.py +0 -0
  67. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/tests/test_list_cmd.py +0 -0
  68. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/tests/test_mcp_model_governance.py +0 -0
  69. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/tests/test_policy_diff.py +0 -0
  70. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/tests/test_quickstart.py +0 -0
  71. {iris_security_cli-0.2.14 → iris_security_cli-0.2.16}/tests/test_vocabulary.py +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iris-security-cli
3
- Version: 0.2.14
3
+ Version: 0.2.16
4
4
  Summary: IRIS CLI — declare, compile, preview, enforce, witness, certify, sentinel
5
5
  License: Apache-2.0
6
- Project-URL: Homepage, https://iris-security.github.io/iris-sdk/
7
- Project-URL: Repository, https://github.com/IRIS-Security/iris-sdk
6
+ Project-URL: Homepage, https://github.com/gimartinb/iris-sdk
7
+ Project-URL: Repository, https://github.com/gimartinb/iris-sdk
8
8
  Classifier: Development Status :: 3 - Alpha
9
9
  Classifier: Intended Audience :: Developers
10
10
  Classifier: Topic :: Security
@@ -16,7 +16,7 @@ Classifier: Programming Language :: Python :: 3.12
16
16
  Requires-Python: >=3.10
17
17
  Description-Content-Type: text/markdown
18
18
  Requires-Dist: iris-security-core>=0.1.16
19
- Requires-Dist: iris-security-sdk>=0.2.14
19
+ Requires-Dist: iris-security-sdk>=0.2.16
20
20
  Requires-Dist: click>=8.1
21
21
  Requires-Dist: rich>=13.0
22
22
  Requires-Dist: pyyaml>=6.0
@@ -29,7 +29,7 @@ IRIS CLI — `iris scan`, `iris register`, `iris policy`, `iris compliance`.
29
29
 
30
30
  Command-line tools for AI agent governance and Colorado AI Act compliance.
31
31
 
32
- Part of the [IRIS SDK](https://github.com/IRIS-Security/iris-sdk).
32
+ Part of the [IRIS SDK](https://github.com/gimartinb/iris-sdk).
33
33
 
34
34
  ## Install
35
35
 
@@ -4,7 +4,7 @@ IRIS CLI — `iris scan`, `iris register`, `iris policy`, `iris compliance`.
4
4
 
5
5
  Command-line tools for AI agent governance and Colorado AI Act compliance.
6
6
 
7
- Part of the [IRIS SDK](https://github.com/IRIS-Security/iris-sdk).
7
+ Part of the [IRIS SDK](https://github.com/gimartinb/iris-sdk).
8
8
 
9
9
  ## Install
10
10
 
@@ -0,0 +1,216 @@
1
+ """iris compliance scan — offline workload detection + local obligation eval."""
2
+
3
+ # Copyright 2024-2025 Gilbert Martin / IRIS Security, Inc.
4
+ # All Rights Reserved.
5
+ # Author: Gilbert Martin <gilbert@iris-security.io>
6
+
7
+ from __future__ import annotations
8
+
9
+ import os
10
+ from pathlib import Path
11
+
12
+ import click
13
+ from rich.console import Console
14
+ from rich.panel import Panel
15
+ from rich.table import Table
16
+
17
+ from iris.scan import detect_workload
18
+ from iris_core.compliance.workload_eval import (
19
+ applicable_frameworks,
20
+ evaluate_workload_profile,
21
+ top_recommended_actions,
22
+ )
23
+
24
+ console = Console()
25
+
26
+
27
+ def _resolve_profile(
28
+ *,
29
+ scan_source: str | None,
30
+ path: str,
31
+ litellm_config: str | None,
32
+ litellm_proxy: str | None,
33
+ lookback_days: int,
34
+ ) -> dict:
35
+ if scan_source is None:
36
+ return detect_workload(path)
37
+
38
+ if scan_source == "langfuse":
39
+ try:
40
+ from iris_langfuse import profile_from_langfuse
41
+ except ImportError as exc:
42
+ raise click.ClickException(
43
+ 'iris-langfuse is not installed. Run: pip install "iris-langfuse[live]"'
44
+ ) from exc
45
+ try:
46
+ return profile_from_langfuse(lookback_days=lookback_days)
47
+ except ImportError as exc:
48
+ raise click.ClickException(
49
+ 'Langfuse SDK missing. Run: pip install "iris-langfuse[live]"'
50
+ ) from exc
51
+ except ValueError as exc:
52
+ raise click.ClickException(str(exc)) from exc
53
+
54
+ if scan_source == "litellm":
55
+ try:
56
+ from iris_litellm import profile_from_litellm_config, profile_from_litellm_proxy
57
+ except ImportError as exc:
58
+ raise click.ClickException(
59
+ 'iris-litellm is not installed. Run: pip install "iris-litellm[live]"'
60
+ ) from exc
61
+ if litellm_config:
62
+ return profile_from_litellm_config(litellm_config)
63
+ if litellm_proxy:
64
+ return profile_from_litellm_proxy(litellm_proxy)
65
+ raise click.ClickException(
66
+ "LiteLLM source requires --config <litellm.config.yaml> or --proxy <base_url>"
67
+ )
68
+
69
+ raise click.ClickException(f"Unknown scan source: {scan_source}")
70
+
71
+
72
+ def _scan_subtitle(scan_source: str | None) -> str:
73
+ if scan_source == "langfuse":
74
+ return "Langfuse trace metadata — no prompt content read."
75
+ if scan_source == "litellm":
76
+ return "LiteLLM config/proxy — models and providers inferred."
77
+ return "Offline detection — no network calls required."
78
+
79
+
80
+ def _print_profile(profile: dict) -> None:
81
+ table = Table(title="What you're building", show_header=True, header_style="bold")
82
+ table.add_column("Attribute")
83
+ table.add_column("Detected values")
84
+ for key in (
85
+ "providers",
86
+ "frameworks",
87
+ "models",
88
+ "data_categories",
89
+ "deployment_regions",
90
+ "agent_count",
91
+ "autonomy_level",
92
+ "customer_facing",
93
+ ):
94
+ value = profile.get(key, [])
95
+ if isinstance(value, bool):
96
+ display = "yes" if value else "no"
97
+ elif isinstance(value, list):
98
+ display = ", ".join(value) if value else "—"
99
+ else:
100
+ display = str(value)
101
+ table.add_row(key.replace("_", " ").title(), display)
102
+ console.print(table)
103
+
104
+
105
+ def _print_frameworks(profile: dict) -> None:
106
+ table = Table(title="Applicable frameworks", show_header=True, header_style="bold")
107
+ table.add_column("Framework")
108
+ table.add_column("Triggered by")
109
+ for fw, reasons in applicable_frameworks(profile):
110
+ table.add_row(fw, ", ".join(reasons))
111
+ console.print(table)
112
+
113
+
114
+ def _print_actions(obligations: list[dict]) -> None:
115
+ actions = top_recommended_actions(obligations, limit=5)
116
+ if not actions:
117
+ console.print("[dim]No obligations triggered for detected profile.[/dim]")
118
+ return
119
+ table = Table(title="Top recommended actions", show_header=True, header_style="bold")
120
+ table.add_column("#", style="dim")
121
+ table.add_column("Severity")
122
+ table.add_column("Framework")
123
+ table.add_column("Action")
124
+ for idx, action in enumerate(actions, 1):
125
+ sev = action.get("severity", "recommended")
126
+ color = {"blocker": "red", "required": "yellow"}.get(sev, "cyan")
127
+ table.add_row(
128
+ str(idx),
129
+ f"[{color}]{sev}[/{color}]",
130
+ action.get("framework_key", ""),
131
+ (action.get("recommended_action") or "")[:80],
132
+ )
133
+ console.print(table)
134
+
135
+
136
+ def _push_profile(profile: dict) -> None:
137
+ api_key = os.environ.get("IRIS_API_KEY") or os.environ.get("IRIS_CLOUD_API_KEY")
138
+ base_url = os.environ.get("IRIS_API_URL", "http://localhost:8000")
139
+ if not api_key:
140
+ console.print("[yellow]Set IRIS_API_KEY to push profile to cloud.[/yellow]")
141
+ return
142
+ import httpx
143
+
144
+ response = httpx.post(
145
+ f"{base_url.rstrip('/')}/intelligence/profile/scan",
146
+ headers={"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"},
147
+ json=profile,
148
+ timeout=30,
149
+ )
150
+ if response.status_code >= 400:
151
+ console.print(f"[red]Push failed ({response.status_code}): {response.text}[/red]")
152
+ return
153
+ console.print("[green]Profile pushed to IRIS Cloud.[/green]")
154
+
155
+
156
+ @click.command("scan")
157
+ @click.option("--path", default=".", help="Project path to scan (default local code scan)")
158
+ @click.option(
159
+ "--from",
160
+ "scan_source",
161
+ type=click.Choice(["langfuse", "litellm"], case_sensitive=False),
162
+ default=None,
163
+ help="Observability source instead of local code scan",
164
+ )
165
+ @click.option("--config", "litellm_config", type=click.Path(exists=True), help="LiteLLM config.yaml")
166
+ @click.option("--proxy", "litellm_proxy", help="LiteLLM proxy base URL")
167
+ @click.option("--lookback-days", default=30, show_default=True, help="Langfuse lookback window")
168
+ @click.option("--push", is_flag=True, help="POST profile to cloud when IRIS_API_KEY is set")
169
+ @click.option("--json", "as_json", is_flag=True, help="Output raw JSON")
170
+ def compliance_scan_cmd(
171
+ path: str,
172
+ scan_source: str | None,
173
+ litellm_config: str | None,
174
+ litellm_proxy: str | None,
175
+ lookback_days: int,
176
+ push: bool,
177
+ as_json: bool,
178
+ ) -> None:
179
+ """Detect workload attributes and evaluate local regulatory obligations (offline)."""
180
+ root = Path(path).resolve()
181
+ if scan_source is None and not root.exists():
182
+ raise click.ClickException(f"Path not found: {root}")
183
+
184
+ profile = _resolve_profile(
185
+ scan_source=scan_source,
186
+ path=str(root),
187
+ litellm_config=litellm_config,
188
+ litellm_proxy=litellm_proxy,
189
+ lookback_days=lookback_days,
190
+ )
191
+ obligations = evaluate_workload_profile(profile)
192
+
193
+ if as_json:
194
+ import json
195
+
196
+ click.echo(json.dumps({"profile": profile, "obligations": obligations}, indent=2))
197
+ if push:
198
+ _push_profile(profile)
199
+ return
200
+
201
+ console.print(
202
+ Panel(
203
+ "[bold]IRIS Compliance Intelligence Scan[/bold]\n"
204
+ + _scan_subtitle(scan_source),
205
+ border_style="cyan",
206
+ )
207
+ )
208
+ _print_profile(profile)
209
+ _print_frameworks(profile)
210
+ _print_actions(obligations)
211
+ console.print(
212
+ "\n[dim]Continuous monitoring, evidence mapping, and team workflows: "
213
+ "iris cloud connect -> https://iris-security.io[/dim]"
214
+ )
215
+ if push:
216
+ _push_profile(profile)
@@ -30,7 +30,7 @@ Your existing tests will pass without modification.
30
30
 
31
31
  To verify: run your test suite after adding IRIS.
32
32
  If any test fails, report it as a bug at:
33
- github.com/IRIS-Security/iris-sdk/issues"""
33
+ github.com/gimartinb/iris-sdk/issues"""
34
34
 
35
35
  TECHNICAL_EXPLANATION = """\
36
36
  Proxy pattern (identical attribute forwarding):
@@ -17,6 +17,7 @@ Every iris scan or iris certify is a weekly active developer event.
17
17
  import click
18
18
  import sys
19
19
  from pathlib import Path
20
+ from typing import Any
20
21
  from rich.console import Console
21
22
  from rich.panel import Panel
22
23
 
@@ -25,9 +26,31 @@ from iris_core.cli_timing.instrument import timed_cli_command
25
26
  console = Console()
26
27
 
27
28
 
28
- @click.group()
29
+ class IrisCLI(click.Group):
30
+ """Click group that records daily aggregated CLI usage after each command."""
31
+
32
+ def invoke(self, ctx: click.Context) -> Any:
33
+ result = super().invoke(ctx)
34
+ if not ctx.resilient_parsing:
35
+ command = self._resolved_command(ctx)
36
+ if command:
37
+ from iris._telemetry import maybe_record_cli_usage
38
+
39
+ maybe_record_cli_usage(command)
40
+ return result
41
+
42
+ @staticmethod
43
+ def _resolved_command(ctx: click.Context) -> str | None:
44
+ if ctx.invoked_subcommand is None:
45
+ return None
46
+ if ctx.command_path:
47
+ return " ".join(ctx.command_path)
48
+ return ctx.invoked_subcommand
49
+
50
+
51
+ @click.group(cls=IrisCLI)
29
52
  @click.version_option(
30
- version="0.2.14",
53
+ version="0.2.16",
31
54
  prog_name="iris",
32
55
  message="%(prog)s %(version)s · AARM Core conformant (R1–R6) · "
33
56
  "AIUC-1 Q1 2026 aligned · https://iris-security.io",
@@ -560,6 +583,9 @@ def ping():
560
583
  from iris_cli.compliance_check_cmd import compliance_check_cmd
561
584
  compliance.add_command(compliance_check_cmd, name="check")
562
585
 
586
+ from iris_cli.compliance_scan_cmd import compliance_scan_cmd
587
+ compliance.add_command(compliance_scan_cmd, name="scan")
588
+
563
589
  cli.add_command(compliance)
564
590
  cli.add_command(framework)
565
591
 
@@ -167,7 +167,7 @@ def _print_welcome() -> None:
167
167
  " · How to register and govern a new agent\n"
168
168
  " · Your compliance score in real time\n\n"
169
169
  "No API key required for most steps.\n"
170
- "github.com/IRIS-Security/iris-sdk",
170
+ "github.com/gimartinb/iris-sdk",
171
171
  title="Welcome to IRIS",
172
172
  style="blue",
173
173
  )
@@ -363,7 +363,7 @@ def _print_summary(findings_count: int) -> None:
363
363
  " [cyan]from iris_anthropic import IrisAnthropic[/cyan]\n"
364
364
  " [cyan]client = IrisAnthropic(passport=passport)[/cyan]\n\n"
365
365
  " 4. Read the full guide:\n"
366
- " github.com/IRIS-Security/iris-sdk/blob/main/QUICKSTART.md\n\n"
366
+ " github.com/gimartinb/iris-sdk/blob/main/QUICKSTART.md\n\n"
367
367
  "Questions? gilbert.martin@gmail.com",
368
368
  title="Quickstart complete",
369
369
  style="green",
@@ -330,7 +330,7 @@ Step 1: Go to github.com/organizations/{org_name}/settings/apps
330
330
  Step 2: Click "New GitHub App"
331
331
  Step 3: Fill in:
332
332
  Name: IRIS Governance
333
- Homepage URL: https://github.com/IRIS-Security/iris-sdk
333
+ Homepage URL: https://github.com/gimartinb/iris-sdk
334
334
  Webhook: leave unchecked for now
335
335
  Step 4: Set permissions (read-only):
336
336
  Repository permissions:
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iris-security-cli
3
- Version: 0.2.14
3
+ Version: 0.2.16
4
4
  Summary: IRIS CLI — declare, compile, preview, enforce, witness, certify, sentinel
5
5
  License: Apache-2.0
6
- Project-URL: Homepage, https://iris-security.github.io/iris-sdk/
7
- Project-URL: Repository, https://github.com/IRIS-Security/iris-sdk
6
+ Project-URL: Homepage, https://github.com/gimartinb/iris-sdk
7
+ Project-URL: Repository, https://github.com/gimartinb/iris-sdk
8
8
  Classifier: Development Status :: 3 - Alpha
9
9
  Classifier: Intended Audience :: Developers
10
10
  Classifier: Topic :: Security
@@ -16,7 +16,7 @@ Classifier: Programming Language :: Python :: 3.12
16
16
  Requires-Python: >=3.10
17
17
  Description-Content-Type: text/markdown
18
18
  Requires-Dist: iris-security-core>=0.1.16
19
- Requires-Dist: iris-security-sdk>=0.2.14
19
+ Requires-Dist: iris-security-sdk>=0.2.16
20
20
  Requires-Dist: click>=8.1
21
21
  Requires-Dist: rich>=13.0
22
22
  Requires-Dist: pyyaml>=6.0
@@ -29,7 +29,7 @@ IRIS CLI — `iris scan`, `iris register`, `iris policy`, `iris compliance`.
29
29
 
30
30
  Command-line tools for AI agent governance and Colorado AI Act compliance.
31
31
 
32
- Part of the [IRIS SDK](https://github.com/IRIS-Security/iris-sdk).
32
+ Part of the [IRIS SDK](https://github.com/gimartinb/iris-sdk).
33
33
 
34
34
  ## Install
35
35
 
@@ -9,6 +9,7 @@ iris_cli/certify.py
9
9
  iris_cli/compiler_config.py
10
10
  iris_cli/compliance_check_cmd.py
11
11
  iris_cli/compliance_fix.py
12
+ iris_cli/compliance_scan_cmd.py
12
13
  iris_cli/cost.py
13
14
  iris_cli/declare.py
14
15
  iris_cli/delegation.py
@@ -1,5 +1,5 @@
1
1
  iris-security-core>=0.1.16
2
- iris-security-sdk>=0.2.14
2
+ iris-security-sdk>=0.2.16
3
3
  click>=8.1
4
4
  rich>=13.0
5
5
  pyyaml>=6.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "iris-security-cli"
7
- version = "0.2.14"
7
+ version = "0.2.16"
8
8
  description = "IRIS CLI — declare, compile, preview, enforce, witness, certify, sentinel"
9
9
  readme = "README.md"
10
10
  license = { text = "Apache-2.0" }
@@ -21,7 +21,7 @@ classifiers = [
21
21
  ]
22
22
  dependencies = [
23
23
  "iris-security-core>=0.1.16",
24
- "iris-security-sdk>=0.2.14",
24
+ "iris-security-sdk>=0.2.16",
25
25
  "click>=8.1",
26
26
  "rich>=13.0",
27
27
  "pyyaml>=6.0",
@@ -31,8 +31,8 @@ dependencies = [
31
31
  scm = ["iris-security-scm[all]>=0.2.0"]
32
32
 
33
33
  [project.urls]
34
- Homepage = "https://iris-security.github.io/iris-sdk/"
35
- Repository = "https://github.com/IRIS-Security/iris-sdk"
34
+ Homepage = "https://github.com/gimartinb/iris-sdk"
35
+ Repository = "https://github.com/gimartinb/iris-sdk"
36
36
 
37
37
  [project.scripts]
38
38
  iris = "iris_cli.main:cli"