pawly 0.1.0__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.
- pawly/__init__.py +154 -0
- pawly/__pycache__/__init__.cpython-311.pyc +0 -0
- pawly/__pycache__/__init__.cpython-313.pyc +0 -0
- pawly/__pycache__/action_selection.cpython-311.pyc +0 -0
- pawly/__pycache__/action_selection.cpython-313.pyc +0 -0
- pawly/__pycache__/api.cpython-311.pyc +0 -0
- pawly/__pycache__/api.cpython-313.pyc +0 -0
- pawly/__pycache__/contracts.cpython-311.pyc +0 -0
- pawly/__pycache__/contracts.cpython-313.pyc +0 -0
- pawly/__pycache__/decision_engine.cpython-311.pyc +0 -0
- pawly/__pycache__/decision_engine.cpython-313.pyc +0 -0
- pawly/__pycache__/pawprint_loader.cpython-311.pyc +0 -0
- pawly/__pycache__/pawprint_loader.cpython-313.pyc +0 -0
- pawly/__pycache__/protected_oss.cpython-311.pyc +0 -0
- pawly/__pycache__/protected_oss.cpython-313.pyc +0 -0
- pawly/__pycache__/runtime.cpython-311.pyc +0 -0
- pawly/__pycache__/runtime.cpython-313.pyc +0 -0
- pawly/__pycache__/runtime_bootstrap.cpython-311.pyc +0 -0
- pawly/__pycache__/runtime_bootstrap.cpython-313.pyc +0 -0
- pawly/__pycache__/runtime_decision.cpython-311.pyc +0 -0
- pawly/__pycache__/runtime_decision.cpython-313.pyc +0 -0
- pawly/__pycache__/runtime_execute.cpython-311.pyc +0 -0
- pawly/__pycache__/runtime_execute.cpython-313.pyc +0 -0
- pawly/__pycache__/runtime_flow.cpython-311.pyc +0 -0
- pawly/__pycache__/runtime_flow.cpython-313.pyc +0 -0
- pawly/__pycache__/runtime_ids.cpython-311.pyc +0 -0
- pawly/__pycache__/runtime_ids.cpython-313.pyc +0 -0
- pawly/__pycache__/runtime_report.cpython-311.pyc +0 -0
- pawly/__pycache__/runtime_report.cpython-313.pyc +0 -0
- pawly/__pycache__/runtime_request.cpython-311.pyc +0 -0
- pawly/__pycache__/runtime_request.cpython-313.pyc +0 -0
- pawly/__pycache__/runtime_result.cpython-311.pyc +0 -0
- pawly/__pycache__/runtime_result.cpython-313.pyc +0 -0
- pawly/__pycache__/runtime_scoring.cpython-311.pyc +0 -0
- pawly/__pycache__/runtime_scoring.cpython-313.pyc +0 -0
- pawly/__pycache__/shield.cpython-311.pyc +0 -0
- pawly/__pycache__/shield.cpython-313.pyc +0 -0
- pawly/__pycache__/skill_registry.cpython-311.pyc +0 -0
- pawly/__pycache__/skill_registry.cpython-313.pyc +0 -0
- pawly/__pycache__/task_request.cpython-311.pyc +0 -0
- pawly/__pycache__/task_request.cpython-313.pyc +0 -0
- pawly/__pycache__/types.cpython-311.pyc +0 -0
- pawly/__pycache__/types.cpython-313.pyc +0 -0
- pawly/action_selection.py +64 -0
- pawly/adapters/__init__.py +25 -0
- pawly/adapters/__pycache__/__init__.cpython-311.pyc +0 -0
- pawly/adapters/__pycache__/__init__.cpython-313.pyc +0 -0
- pawly/adapters/__pycache__/claude_skills.cpython-311.pyc +0 -0
- pawly/adapters/__pycache__/claude_skills.cpython-313.pyc +0 -0
- pawly/adapters/__pycache__/openai_agents.cpython-311.pyc +0 -0
- pawly/adapters/__pycache__/openai_agents.cpython-313.pyc +0 -0
- pawly/adapters/claude_skills.py +210 -0
- pawly/adapters/openai_agents.py +208 -0
- pawly/api.py +57 -0
- pawly/approval/__init__.py +18 -0
- pawly/approval/__pycache__/__init__.cpython-311.pyc +0 -0
- pawly/approval/__pycache__/__init__.cpython-313.pyc +0 -0
- pawly/approval/__pycache__/callback.cpython-311.pyc +0 -0
- pawly/approval/__pycache__/callback.cpython-313.pyc +0 -0
- pawly/approval/__pycache__/handler.cpython-311.pyc +0 -0
- pawly/approval/__pycache__/handler.cpython-313.pyc +0 -0
- pawly/approval/__pycache__/models.cpython-311.pyc +0 -0
- pawly/approval/__pycache__/models.cpython-313.pyc +0 -0
- pawly/approval/__pycache__/queue.cpython-311.pyc +0 -0
- pawly/approval/__pycache__/queue.cpython-313.pyc +0 -0
- pawly/approval/__pycache__/router.cpython-311.pyc +0 -0
- pawly/approval/__pycache__/router.cpython-313.pyc +0 -0
- pawly/approval/__pycache__/timeout.cpython-311.pyc +0 -0
- pawly/approval/__pycache__/timeout.cpython-313.pyc +0 -0
- pawly/approval/callback.py +16 -0
- pawly/approval/handler.py +34 -0
- pawly/approval/models.py +119 -0
- pawly/approval/queue.py +109 -0
- pawly/approval/router.py +66 -0
- pawly/approval/timeout.py +18 -0
- pawly/audit/__pycache__/diff.cpython-311.pyc +0 -0
- pawly/audit/__pycache__/diff.cpython-313.pyc +0 -0
- pawly/audit/__pycache__/events.cpython-311.pyc +0 -0
- pawly/audit/__pycache__/events.cpython-313.pyc +0 -0
- pawly/audit/__pycache__/ledger.cpython-311.pyc +0 -0
- pawly/audit/__pycache__/ledger.cpython-313.pyc +0 -0
- pawly/audit/__pycache__/replay.cpython-311.pyc +0 -0
- pawly/audit/__pycache__/replay.cpython-313.pyc +0 -0
- pawly/audit/diff.py +24 -0
- pawly/audit/events.py +156 -0
- pawly/audit/ledger.py +39 -0
- pawly/audit/replay.py +45 -0
- pawly/backends/__init__.py +39 -0
- pawly/backends/__pycache__/__init__.cpython-311.pyc +0 -0
- pawly/backends/__pycache__/__init__.cpython-313.pyc +0 -0
- pawly/backends/__pycache__/approval.cpython-311.pyc +0 -0
- pawly/backends/__pycache__/approval.cpython-313.pyc +0 -0
- pawly/backends/__pycache__/audit.cpython-311.pyc +0 -0
- pawly/backends/__pycache__/audit.cpython-313.pyc +0 -0
- pawly/backends/__pycache__/reviewer.cpython-311.pyc +0 -0
- pawly/backends/__pycache__/reviewer.cpython-313.pyc +0 -0
- pawly/backends/__pycache__/risk.cpython-311.pyc +0 -0
- pawly/backends/__pycache__/risk.cpython-313.pyc +0 -0
- pawly/backends/approval.py +85 -0
- pawly/backends/audit.py +189 -0
- pawly/backends/reviewer.py +127 -0
- pawly/backends/risk.py +71 -0
- pawly/budget/__pycache__/checker.cpython-311.pyc +0 -0
- pawly/budget/__pycache__/checker.cpython-313.pyc +0 -0
- pawly/budget/__pycache__/state.cpython-311.pyc +0 -0
- pawly/budget/__pycache__/state.cpython-313.pyc +0 -0
- pawly/budget/checker.py +37 -0
- pawly/budget/state.py +15 -0
- pawly/cli.py +44 -0
- pawly/contracts.py +153 -0
- pawly/decision_engine.py +6 -0
- pawly/escalation/__pycache__/patterns.cpython-311.pyc +0 -0
- pawly/escalation/__pycache__/patterns.cpython-313.pyc +0 -0
- pawly/escalation/patterns.py +33 -0
- pawly/gateway/__init__.py +4 -0
- pawly/gateway/__pycache__/__init__.cpython-311.pyc +0 -0
- pawly/gateway/__pycache__/__init__.cpython-313.pyc +0 -0
- pawly/gateway/__pycache__/adapter_support.cpython-311.pyc +0 -0
- pawly/gateway/__pycache__/adapter_support.cpython-313.pyc +0 -0
- pawly/gateway/__pycache__/protocol.cpython-311.pyc +0 -0
- pawly/gateway/__pycache__/protocol.cpython-313.pyc +0 -0
- pawly/gateway/__pycache__/result.cpython-311.pyc +0 -0
- pawly/gateway/__pycache__/result.cpython-313.pyc +0 -0
- pawly/gateway/__pycache__/wrapper.cpython-311.pyc +0 -0
- pawly/gateway/__pycache__/wrapper.cpython-313.pyc +0 -0
- pawly/gateway/adapter_support.py +56 -0
- pawly/gateway/protocol.py +24 -0
- pawly/gateway/result.py +67 -0
- pawly/gateway/wrapper.py +273 -0
- pawly/loader/__pycache__/schema_loader.cpython-311.pyc +0 -0
- pawly/loader/__pycache__/schema_loader.cpython-313.pyc +0 -0
- pawly/loader/__pycache__/yaml_loader.cpython-311.pyc +0 -0
- pawly/loader/__pycache__/yaml_loader.cpython-313.pyc +0 -0
- pawly/loader/schema_loader.py +51 -0
- pawly/loader/yaml_loader.py +164 -0
- pawly/memory/__pycache__/store.cpython-311.pyc +0 -0
- pawly/memory/__pycache__/store.cpython-313.pyc +0 -0
- pawly/memory/__pycache__/tiers.cpython-311.pyc +0 -0
- pawly/memory/__pycache__/tiers.cpython-313.pyc +0 -0
- pawly/memory/store.py +23 -0
- pawly/memory/tiers.py +9 -0
- pawly/middleware/__init__.py +1 -0
- pawly/middleware/__pycache__/__init__.cpython-311.pyc +0 -0
- pawly/middleware/__pycache__/__init__.cpython-313.pyc +0 -0
- pawly/middleware/__pycache__/hooks.cpython-311.pyc +0 -0
- pawly/middleware/__pycache__/hooks.cpython-313.pyc +0 -0
- pawly/middleware/hooks.py +20 -0
- pawly/pawprint_loader.py +301 -0
- pawly/performance/__pycache__/metrics.cpython-311.pyc +0 -0
- pawly/performance/__pycache__/metrics.cpython-313.pyc +0 -0
- pawly/performance/__pycache__/report.cpython-311.pyc +0 -0
- pawly/performance/__pycache__/report.cpython-313.pyc +0 -0
- pawly/performance/metrics.py +48 -0
- pawly/performance/report.py +44 -0
- pawly/policy/__init__.py +15 -0
- pawly/policy/__pycache__/__init__.cpython-311.pyc +0 -0
- pawly/policy/__pycache__/__init__.cpython-313.pyc +0 -0
- pawly/policy/__pycache__/base.cpython-311.pyc +0 -0
- pawly/policy/__pycache__/base.cpython-313.pyc +0 -0
- pawly/policy/__pycache__/heuristic.cpython-311.pyc +0 -0
- pawly/policy/__pycache__/heuristic.cpython-313.pyc +0 -0
- pawly/policy/__pycache__/resolve.cpython-311.pyc +0 -0
- pawly/policy/__pycache__/resolve.cpython-313.pyc +0 -0
- pawly/policy/base.py +84 -0
- pawly/policy/cloud.py +18 -0
- pawly/policy/heuristic.py +141 -0
- pawly/policy/resolve.py +60 -0
- pawly/policy_engine/__pycache__/decision.cpython-311.pyc +0 -0
- pawly/policy_engine/__pycache__/decision.cpython-313.pyc +0 -0
- pawly/policy_engine/__pycache__/engine.cpython-311.pyc +0 -0
- pawly/policy_engine/__pycache__/engine.cpython-313.pyc +0 -0
- pawly/policy_engine/__pycache__/models.cpython-311.pyc +0 -0
- pawly/policy_engine/__pycache__/models.cpython-313.pyc +0 -0
- pawly/policy_engine/__pycache__/runtime_overlay.cpython-311.pyc +0 -0
- pawly/policy_engine/__pycache__/runtime_overlay.cpython-313.pyc +0 -0
- pawly/policy_engine/decision.py +40 -0
- pawly/policy_engine/engine.py +152 -0
- pawly/policy_engine/models.py +62 -0
- pawly/policy_engine/risk.py +24 -0
- pawly/policy_engine/runtime_overlay.py +37 -0
- pawly/protected_oss.py +168 -0
- pawly/runtime.py +1004 -0
- pawly/runtime_bootstrap.py +104 -0
- pawly/runtime_decision.py +52 -0
- pawly/runtime_execute.py +59 -0
- pawly/runtime_flow.py +50 -0
- pawly/runtime_ids.py +19 -0
- pawly/runtime_report.py +18 -0
- pawly/runtime_request.py +23 -0
- pawly/runtime_result.py +142 -0
- pawly/runtime_scoring.py +25 -0
- pawly/schemas/decision.schema.json +38 -0
- pawly/schemas/intent.schema.json +33 -0
- pawly/schemas/report.schema.json +36 -0
- pawly/shield.py +436 -0
- pawly/skill_registry.py +31 -0
- pawly/task_request.py +27 -0
- pawly/types.py +15 -0
- pawly/validator/__pycache__/validator.cpython-311.pyc +0 -0
- pawly/validator/__pycache__/validator.cpython-313.pyc +0 -0
- pawly/validator/validator.py +177 -0
- pawly-0.1.0.dist-info/METADATA +7 -0
- pawly-0.1.0.dist-info/RECORD +206 -0
- pawly-0.1.0.dist-info/WHEEL +4 -0
- pawly-0.1.0.dist-info/entry_points.txt +2 -0
- pawly-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from dataclasses import dataclass
|
|
4
|
+
import re
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
from pawly.loader.schema_loader import load_schema
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@dataclass(slots=True)
|
|
11
|
+
class ValidationResult:
|
|
12
|
+
valid: bool
|
|
13
|
+
errors: list[str]
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class SchemaValidationError(ValueError):
|
|
17
|
+
pass
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class PawprintValidator:
|
|
21
|
+
def __init__(self) -> None:
|
|
22
|
+
self.schemas = {
|
|
23
|
+
"pawprint.schema.json": load_schema("pawprint.schema.json"),
|
|
24
|
+
"intent.schema.json": load_schema("intent.schema.json"),
|
|
25
|
+
"decision.schema.json": load_schema("decision.schema.json"),
|
|
26
|
+
"report.schema.json": load_schema("report.schema.json"),
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
def validate_agent_config(self, config: dict[str, Any]) -> ValidationResult:
|
|
30
|
+
errors = self._validate_with_schema(
|
|
31
|
+
config,
|
|
32
|
+
self.schemas["pawprint.schema.json"],
|
|
33
|
+
"$",
|
|
34
|
+
self.schemas["pawprint.schema.json"],
|
|
35
|
+
)
|
|
36
|
+
errors.extend(self._validate_pawprint_rules(config))
|
|
37
|
+
return ValidationResult(valid=not errors, errors=errors)
|
|
38
|
+
|
|
39
|
+
def validate_report(self, report: dict[str, Any]) -> ValidationResult:
|
|
40
|
+
errors = self._validate_with_schema(report, self.schemas["report.schema.json"], "$", self.schemas["report.schema.json"])
|
|
41
|
+
return ValidationResult(valid=not errors, errors=errors)
|
|
42
|
+
|
|
43
|
+
def validate_intent(self, intent: dict[str, Any]) -> ValidationResult:
|
|
44
|
+
errors = self._validate_with_schema(intent, self.schemas["intent.schema.json"], "$", self.schemas["intent.schema.json"])
|
|
45
|
+
return ValidationResult(valid=not errors, errors=errors)
|
|
46
|
+
|
|
47
|
+
def validate_decision(self, decision: dict[str, Any]) -> ValidationResult:
|
|
48
|
+
errors = self._validate_with_schema(
|
|
49
|
+
decision,
|
|
50
|
+
self.schemas["decision.schema.json"],
|
|
51
|
+
"$",
|
|
52
|
+
self.schemas["decision.schema.json"],
|
|
53
|
+
)
|
|
54
|
+
return ValidationResult(valid=not errors, errors=errors)
|
|
55
|
+
|
|
56
|
+
def _validate_with_schema(self, instance: Any, schema: dict[str, Any], path: str, root_schema: dict[str, Any]) -> list[str]:
|
|
57
|
+
errors: list[str] = []
|
|
58
|
+
if "$ref" in schema:
|
|
59
|
+
resolved, resolved_root = self._resolve_ref(schema["$ref"], root_schema)
|
|
60
|
+
return self._validate_with_schema(instance, resolved, path, resolved_root)
|
|
61
|
+
if "oneOf" in schema:
|
|
62
|
+
variants = []
|
|
63
|
+
for option in schema["oneOf"]:
|
|
64
|
+
option_errors = self._validate_with_schema(instance, option, path, root_schema)
|
|
65
|
+
if not option_errors:
|
|
66
|
+
variants.append(option)
|
|
67
|
+
if len(variants) != 1:
|
|
68
|
+
errors.append(f"{path} must match exactly one schema option")
|
|
69
|
+
return errors
|
|
70
|
+
if "const" in schema and instance != schema["const"]:
|
|
71
|
+
errors.append(f"{path} must equal {schema['const']!r}")
|
|
72
|
+
if "enum" in schema and instance not in schema["enum"]:
|
|
73
|
+
errors.append(f"{path} must be one of {schema['enum']!r}")
|
|
74
|
+
if instance is None:
|
|
75
|
+
return errors
|
|
76
|
+
schema_type = schema.get("type")
|
|
77
|
+
if schema_type == "object":
|
|
78
|
+
if not isinstance(instance, dict):
|
|
79
|
+
return errors + [f"{path} must be an object"]
|
|
80
|
+
required = schema.get("required", [])
|
|
81
|
+
for key in required:
|
|
82
|
+
if key not in instance:
|
|
83
|
+
errors.append(f"{path}.{key} is required")
|
|
84
|
+
properties = schema.get("properties", {})
|
|
85
|
+
pattern_properties = schema.get("patternProperties", {})
|
|
86
|
+
additional_allowed = schema.get("additionalProperties", True)
|
|
87
|
+
for key, value in instance.items():
|
|
88
|
+
if key in properties:
|
|
89
|
+
errors.extend(self._validate_with_schema(value, properties[key], f"{path}.{key}", root_schema))
|
|
90
|
+
continue
|
|
91
|
+
matched_pattern = False
|
|
92
|
+
for pattern, pattern_schema in pattern_properties.items():
|
|
93
|
+
if re.fullmatch(pattern, key):
|
|
94
|
+
errors.extend(self._validate_with_schema(value, pattern_schema, f"{path}.{key}", root_schema))
|
|
95
|
+
matched_pattern = True
|
|
96
|
+
break
|
|
97
|
+
if matched_pattern:
|
|
98
|
+
continue
|
|
99
|
+
if additional_allowed is False:
|
|
100
|
+
errors.append(f"{path}.{key} is not allowed by the Pawprint schema")
|
|
101
|
+
elif isinstance(additional_allowed, dict):
|
|
102
|
+
errors.extend(self._validate_with_schema(value, additional_allowed, f"{path}.{key}", root_schema))
|
|
103
|
+
return errors
|
|
104
|
+
if schema_type == "array":
|
|
105
|
+
if not isinstance(instance, list):
|
|
106
|
+
return errors + [f"{path} must be an array"]
|
|
107
|
+
if len(instance) < schema.get("minItems", 0):
|
|
108
|
+
errors.append(f"{path} must contain at least {schema['minItems']} items")
|
|
109
|
+
item_schema = schema.get("items")
|
|
110
|
+
if item_schema is not None:
|
|
111
|
+
for index, item in enumerate(instance):
|
|
112
|
+
errors.extend(self._validate_with_schema(item, item_schema, f"{path}[{index}]", root_schema))
|
|
113
|
+
return errors
|
|
114
|
+
if schema_type == "string":
|
|
115
|
+
if not isinstance(instance, str):
|
|
116
|
+
return errors + [f"{path} must be a string"]
|
|
117
|
+
if len(instance) < schema.get("minLength", 0):
|
|
118
|
+
errors.append(f"{path} must be at least {schema['minLength']} characters")
|
|
119
|
+
if "pattern" in schema and not re.fullmatch(schema["pattern"], instance):
|
|
120
|
+
errors.append(f"{path} does not match required pattern")
|
|
121
|
+
return errors
|
|
122
|
+
if schema_type == "integer":
|
|
123
|
+
if not isinstance(instance, int) or isinstance(instance, bool):
|
|
124
|
+
return errors + [f"{path} must be an integer"]
|
|
125
|
+
if "minimum" in schema and instance < schema["minimum"]:
|
|
126
|
+
errors.append(f"{path} must be >= {schema['minimum']}")
|
|
127
|
+
if "exclusiveMinimum" in schema and instance <= schema["exclusiveMinimum"]:
|
|
128
|
+
errors.append(f"{path} must be > {schema['exclusiveMinimum']}")
|
|
129
|
+
return errors
|
|
130
|
+
if schema_type == "number":
|
|
131
|
+
if not isinstance(instance, (int, float)) or isinstance(instance, bool):
|
|
132
|
+
return errors + [f"{path} must be a number"]
|
|
133
|
+
if "minimum" in schema and instance < schema["minimum"]:
|
|
134
|
+
errors.append(f"{path} must be >= {schema['minimum']}")
|
|
135
|
+
if "maximum" in schema and instance > schema["maximum"]:
|
|
136
|
+
errors.append(f"{path} must be <= {schema['maximum']}")
|
|
137
|
+
if "exclusiveMinimum" in schema and instance <= schema["exclusiveMinimum"]:
|
|
138
|
+
errors.append(f"{path} must be > {schema['exclusiveMinimum']}")
|
|
139
|
+
return errors
|
|
140
|
+
if schema_type == "boolean":
|
|
141
|
+
if not isinstance(instance, bool):
|
|
142
|
+
errors.append(f"{path} must be a boolean")
|
|
143
|
+
return errors
|
|
144
|
+
return errors
|
|
145
|
+
|
|
146
|
+
def _resolve_ref(self, ref: str, root_schema: dict[str, Any]) -> tuple[dict[str, Any], dict[str, Any]]:
|
|
147
|
+
if ref.startswith("#/"):
|
|
148
|
+
target = root_schema
|
|
149
|
+
for part in ref[2:].split("/"):
|
|
150
|
+
target = target[part]
|
|
151
|
+
return target, root_schema
|
|
152
|
+
if ref.endswith(".json"):
|
|
153
|
+
target_root = self.schemas[ref]
|
|
154
|
+
return target_root, target_root
|
|
155
|
+
raise SchemaValidationError(f"Unsupported schema reference: {ref}")
|
|
156
|
+
|
|
157
|
+
def _validate_pawprint_rules(self, config: dict[str, Any]) -> list[str]:
|
|
158
|
+
errors: list[str] = []
|
|
159
|
+
capabilities = config.get("capabilities")
|
|
160
|
+
metadata = config.get("metadata")
|
|
161
|
+
boundaries = config.get("boundaries")
|
|
162
|
+
if isinstance(metadata, dict):
|
|
163
|
+
if not isinstance(capabilities, list) or not isinstance(boundaries, dict):
|
|
164
|
+
return errors
|
|
165
|
+
capability_set = {
|
|
166
|
+
str(item.get("name", ""))
|
|
167
|
+
for item in capabilities
|
|
168
|
+
if isinstance(item, dict) and str(item.get("name", "")).strip()
|
|
169
|
+
}
|
|
170
|
+
else:
|
|
171
|
+
if not isinstance(capabilities, list) or not isinstance(boundaries, dict):
|
|
172
|
+
return errors
|
|
173
|
+
capability_set = {item for item in capabilities if isinstance(item, str)}
|
|
174
|
+
|
|
175
|
+
if not capability_set:
|
|
176
|
+
return errors
|
|
177
|
+
return errors
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
pawly/__init__.py,sha256=LSqAGEQm0D0cYkHS3JTy_8KSn3-joU3vHhArE5mmarI,4182
|
|
2
|
+
pawly/action_selection.py,sha256=NZltY0c_U9cyqXZe0DEXJLISOcssJQxpWh9akbeO1gc,2387
|
|
3
|
+
pawly/api.py,sha256=gpRaWHi8DPpgkEpV_rLhkIkM1rRtDNxjnPPD1YxNoqo,1594
|
|
4
|
+
pawly/cli.py,sha256=N4csILBA4RJmhb9nQ8qxAeGtpmdmzpLpIiRR9CKkbgM,1867
|
|
5
|
+
pawly/contracts.py,sha256=XkGp5jfW_3LPrORQFbjV_a00f5Y54hwjDmpXEX1KAPY,5254
|
|
6
|
+
pawly/decision_engine.py,sha256=ziQGcJIFVVLpcz_dAJ5CP2iPGNuxwU6VVy97GpCQM3E,241
|
|
7
|
+
pawly/pawprint_loader.py,sha256=PgC3l1W1SJ8Q0cqFcCrtLuNQhGeUMiGOSz8-dGAlAaQ,10292
|
|
8
|
+
pawly/protected_oss.py,sha256=GOdJTvm4s6zFmYgxVK3pL7Lhy6PBH87FQ4TT-_OkAvk,6440
|
|
9
|
+
pawly/runtime.py,sha256=jlrUkTRYSZKBL2b9Bo_qJ9aE5FrOyu9szZoSIdXPeQc,38398
|
|
10
|
+
pawly/runtime_bootstrap.py,sha256=KFsBhJIaIi77f01OGou8uHRKU6fu3Sm3Ih2IVWvyyO0,3871
|
|
11
|
+
pawly/runtime_decision.py,sha256=ale5Q-xEt2W1_yuzp2VAqvGAjme5myUd3XaYok4LISA,1563
|
|
12
|
+
pawly/runtime_execute.py,sha256=5aj_RdlvXpnAOKy8RmZaO626G76p4jKI3emyNKOoII4,2196
|
|
13
|
+
pawly/runtime_flow.py,sha256=PNuhhQ0xoF55ALzi0rwOcgU0oOE9nR1-oUUyPLeXy-c,1695
|
|
14
|
+
pawly/runtime_ids.py,sha256=pfTC0_iuxslXosm5PlxcnySs3I_51mgydGFHam1SW4Y,575
|
|
15
|
+
pawly/runtime_report.py,sha256=uWV4Hl7PUTE4KMpXv4NNf7a5Kt2PQJSJ2-44GJhGpxA,584
|
|
16
|
+
pawly/runtime_request.py,sha256=ptvbWOszx7dYcdSg7geIq9wwHc00jqDlP0F4Cy0hk-I,528
|
|
17
|
+
pawly/runtime_result.py,sha256=2dHWUUCy0X9-sj7MaeRvp0hprG01jL32jnBWooSSjQI,4485
|
|
18
|
+
pawly/runtime_scoring.py,sha256=WkSq9vT9rLawNBCZivwAYFKvI3mhWYhbrrhnuu_kyks,570
|
|
19
|
+
pawly/shield.py,sha256=FdZ56JIStVIAgtUIdJP8rlBFNQB3dot1r-d2GDa9C7k,18343
|
|
20
|
+
pawly/skill_registry.py,sha256=XIlvl5i7qp2UFDav1r_EWTBDi21cqyBvsbuMtnmXYAM,999
|
|
21
|
+
pawly/task_request.py,sha256=RnjlD_SqSSG_EgGYss_TzYDt4AIuDvuEVfQBZaHOpkU,761
|
|
22
|
+
pawly/types.py,sha256=BQv20waOwSSWBki3Px6r2mADZGgcXS8-xZDHSRv8XSY,422
|
|
23
|
+
pawly/backends/__init__.py,sha256=NLtIek9LOBZbJFME4wBTd-KNZqc0ZvynyfawGF2VceQ,1101
|
|
24
|
+
pawly/backends/approval.py,sha256=dnE9m0QR8buA40A_gc7EKlEwnD3gjCiwSs7ry6VDABE,3056
|
|
25
|
+
pawly/backends/audit.py,sha256=jPhpo5fFqWbrh15VisqidGjopeFG7px8Rwq-C0SQgIw,6693
|
|
26
|
+
pawly/backends/reviewer.py,sha256=5wBSO8LcvLd1ZgbhJHGBCLNA5Dx96d8lYPdy-lnE5Vs,4000
|
|
27
|
+
pawly/backends/risk.py,sha256=4WyxRfovNfBl4nkYL5qLyZy9Gb4EuMT-UAIOfNtikTs,1808
|
|
28
|
+
pawly/backends/__pycache__/__init__.cpython-311.pyc,sha256=TYcYzIUAVXqcwRZr9BYyJ2OgFeOI0nZUnCy9gLBTQcM,1320
|
|
29
|
+
pawly/backends/__pycache__/__init__.cpython-313.pyc,sha256=BHk7bMXT9svIkkt7cB5w3JB9fJsjC75ctA5TRtC_Mo0,1071
|
|
30
|
+
pawly/backends/__pycache__/approval.cpython-311.pyc,sha256=LijCtMgsliZsVC57Z4ZCBu_gqbqMTq4_r2kJMX-tZeQ,5634
|
|
31
|
+
pawly/backends/__pycache__/approval.cpython-313.pyc,sha256=eP-2r7JcCxkhrXWFEgQ8bWp7AVkNRxWjailDt_faFiE,4935
|
|
32
|
+
pawly/backends/__pycache__/audit.cpython-311.pyc,sha256=tEvb4ghA6aJcoxD9wVRk8VrjK7NdIk2dhCcyZOFFRBQ,12295
|
|
33
|
+
pawly/backends/__pycache__/audit.cpython-313.pyc,sha256=FcxW9ov_cOpky45QulgU4pAKj7_oPbAMJc9EeYkzjhc,10746
|
|
34
|
+
pawly/backends/__pycache__/reviewer.cpython-311.pyc,sha256=6UC2711yZxyU_JG9Imuiuebjf9QoQxTAHnYMUm-0WZc,6553
|
|
35
|
+
pawly/backends/__pycache__/reviewer.cpython-313.pyc,sha256=KzOzKmeELNVg7d6jAI4ZrPPWrkP1ZMYJkJD32A4xlkU,5782
|
|
36
|
+
pawly/backends/__pycache__/risk.cpython-311.pyc,sha256=KnUN6mMP5EquR2NKYWMnaOa8Sui_4e0WJWZ0Ec9BSmA,4185
|
|
37
|
+
pawly/backends/__pycache__/risk.cpython-313.pyc,sha256=4OjQLdIzqgD0OIP7UjS-dSp30C4CSbjwfcfyZrGB0CI,3822
|
|
38
|
+
pawly/policy_engine/decision.py,sha256=01DmJUrwyPjs4bYhSRYfjngjP2-9LUJm8ZLYXNKFiEA,1386
|
|
39
|
+
pawly/policy_engine/engine.py,sha256=9HONu-EuIWQmzKAvMwVifL7n_oJlxoAeYzVq83oD20k,5694
|
|
40
|
+
pawly/policy_engine/models.py,sha256=Xjna5bNncVsotXh6PFEdl_Ig85mhD0lVyHd6v4u7ZH4,2548
|
|
41
|
+
pawly/policy_engine/risk.py,sha256=gpx77GdOe9sUuLrCg5pDcih4WuJHji3pgb6FvLuATgw,632
|
|
42
|
+
pawly/policy_engine/runtime_overlay.py,sha256=CHv_x369Ur9kLxGSsQmzQu5p3w7F6pr4NjMvDlpD6pM,1696
|
|
43
|
+
pawly/policy_engine/__pycache__/decision.cpython-311.pyc,sha256=jv6lcU5QlotgVv-uKqjgiYaesKRlgxxMMVVUaTpa-ek,2335
|
|
44
|
+
pawly/policy_engine/__pycache__/decision.cpython-313.pyc,sha256=nh4Lnv7CjkzNpXxN6tqYC-6hzTZuOEPN5LJJL48KJXs,2227
|
|
45
|
+
pawly/policy_engine/__pycache__/engine.cpython-311.pyc,sha256=AAfoRvVPAtcs-_5Y1toTtDZIU14RnJ-dFh1K6frOVVU,7338
|
|
46
|
+
pawly/policy_engine/__pycache__/engine.cpython-313.pyc,sha256=yue2e9qiL0KzBnW2HJTLOi1y4JM-TuzeF2w2uWQMimQ,6751
|
|
47
|
+
pawly/policy_engine/__pycache__/models.cpython-311.pyc,sha256=GMLWi-J10ud-r0cXBTyMgdjw6qNlLzoAMgllNKdMc1g,4589
|
|
48
|
+
pawly/policy_engine/__pycache__/models.cpython-313.pyc,sha256=YNZyAXDXNyUos1hoZAfZSaRx4sXD_X6xGpKCBk_kI_s,3988
|
|
49
|
+
pawly/policy_engine/__pycache__/runtime_overlay.cpython-311.pyc,sha256=BW5ON-jYFsIQuCx0gdZDDMA3kGxOC51poTUfUhTPYjc,2360
|
|
50
|
+
pawly/policy_engine/__pycache__/runtime_overlay.cpython-313.pyc,sha256=2E845W-YlgtBWb8O7H6TJl8riwIlfqKd30WZAtpbepo,2429
|
|
51
|
+
pawly/memory/store.py,sha256=8VKCiyxkx9s3ACfEzk07tlL6RmBjY5yXNRO27xNm_z0,686
|
|
52
|
+
pawly/memory/tiers.py,sha256=Mz2xCN3xjm5ODgZFwUGDgPiD1thzAih1-baYIG52XRY,187
|
|
53
|
+
pawly/memory/__pycache__/store.cpython-311.pyc,sha256=kgizQyw39BtcJ4S1H_YHCR17f92yE0MVtgbsvc89spM,2030
|
|
54
|
+
pawly/memory/__pycache__/store.cpython-313.pyc,sha256=1ZV7fIkBYvaBVd2RB7_Us0jCrYYCRJjgMS6WJV475rc,1842
|
|
55
|
+
pawly/memory/__pycache__/tiers.cpython-311.pyc,sha256=UKxy9shBCr7tHabqac3zNCJPKWOMkOsshiUmo9hyofQ,667
|
|
56
|
+
pawly/memory/__pycache__/tiers.cpython-313.pyc,sha256=p6O0HDMq_pUDzcFfqyyF8ShlRa08lcebLR5trOwhvUo,631
|
|
57
|
+
pawly/middleware/__init__.py,sha256=vyY-fjQ-lTckY1WrpFEPR4S4tIO91Z0e5vgxvwm-1Fk,70
|
|
58
|
+
pawly/middleware/hooks.py,sha256=DMVkLcI4Ji9XYfR8QZdsAdApqvIvO0h3JycjEGut0k4,475
|
|
59
|
+
pawly/middleware/__pycache__/__init__.cpython-311.pyc,sha256=aD8D7FXBl5iz-FEjBOY54IlMAZSSF6QPRVXhA3RJ0Zc,293
|
|
60
|
+
pawly/middleware/__pycache__/__init__.cpython-313.pyc,sha256=KXsRphub2QvQCmo6TnosrijZIVCktg6DJEObxK6kG7c,282
|
|
61
|
+
pawly/middleware/__pycache__/hooks.cpython-311.pyc,sha256=BYBu54VUgc3eV3ckIQGkvv4txa-ncTYFGIzaBVoraKs,1374
|
|
62
|
+
pawly/middleware/__pycache__/hooks.cpython-313.pyc,sha256=OyQHDv5AbxakswguKPOQp_py2MuAnMelFNjLcTtsX8s,1248
|
|
63
|
+
pawly/__pycache__/__init__.cpython-311.pyc,sha256=g2Y2F5nwGTLIwKvm4IKiazVVjktJc2V2wLJKOcOtoi0,4258
|
|
64
|
+
pawly/__pycache__/__init__.cpython-313.pyc,sha256=gA1e4ELcv0ZAR9gVOZ22VPkPWptYzZYVtR-opvcLtTQ,3462
|
|
65
|
+
pawly/__pycache__/action_selection.cpython-311.pyc,sha256=SmwbkOENkrFBa5LgdYkQLDglr_Pq8qbdBAem_dLR1C4,4194
|
|
66
|
+
pawly/__pycache__/action_selection.cpython-313.pyc,sha256=PZdCkKax6vLg7QARl2TDh-qOR8JrbtszX0dEo_CUeHs,3616
|
|
67
|
+
pawly/__pycache__/api.cpython-311.pyc,sha256=w879qfRpirr5Q6yalHOCZrd08XEbu9WIUv0JwsdutbA,2417
|
|
68
|
+
pawly/__pycache__/api.cpython-313.pyc,sha256=e5FQN24mOhGlmhhTysZveBK2iBQooD-bt0FQxc0LZX4,2280
|
|
69
|
+
pawly/__pycache__/contracts.cpython-311.pyc,sha256=akSMEJ17Ng-58LN2ITm1fnfC3cm7cSlHyUNHyCoe_Cs,9787
|
|
70
|
+
pawly/__pycache__/contracts.cpython-313.pyc,sha256=BYHy_1c_bQT-mIK5eARR7Hdn9JGjdDNwJbLmsDv5Vyg,8604
|
|
71
|
+
pawly/__pycache__/decision_engine.cpython-311.pyc,sha256=0nLlmEJ7zQMuOUNTHsydXtgraWmrKt9jLi8wn5_6-PM,526
|
|
72
|
+
pawly/__pycache__/decision_engine.cpython-313.pyc,sha256=S9MlvTo4uPlEppTnmpAVXVDaePJ22h5umsXkCzuAk7E,457
|
|
73
|
+
pawly/__pycache__/pawprint_loader.cpython-311.pyc,sha256=NSZepy16gFizV5iJF9DjU0ZKZRKeRDY7f9N9wyrWqPY,16469
|
|
74
|
+
pawly/__pycache__/pawprint_loader.cpython-313.pyc,sha256=Ghi3dm83FYZhf1IRNWFkBZeWv9aULUafdrwqhjDyWu0,14404
|
|
75
|
+
pawly/__pycache__/protected_oss.cpython-311.pyc,sha256=fvgJ_Xqs4HpKcmk-L9tTOXCnhR8jFKC9PlsPSWSOnrI,11695
|
|
76
|
+
pawly/__pycache__/protected_oss.cpython-313.pyc,sha256=lk6lUqJipnfXsg98nWCtWnxoJvEN2xPOU2bGGs5xims,10515
|
|
77
|
+
pawly/__pycache__/runtime.cpython-311.pyc,sha256=Ljh2bND6C421o8sE7yiR_zGaWiU4XG3b-awPFkAyEDc,43967
|
|
78
|
+
pawly/__pycache__/runtime.cpython-313.pyc,sha256=zNYPhMaAShHFu4QP5WWfUu-ZaJjg4u7njT1oOIO695Y,41884
|
|
79
|
+
pawly/__pycache__/runtime_bootstrap.cpython-311.pyc,sha256=5PmaLZt2CFReQVAWvXmCsH1rj59uRUKPAvaRm0hNk7Q,5293
|
|
80
|
+
pawly/__pycache__/runtime_bootstrap.cpython-313.pyc,sha256=_oNMx4j7Xb8V_W_xEHHByBcV1ZOYY_vGcS6zMs1WMTY,4560
|
|
81
|
+
pawly/__pycache__/runtime_decision.cpython-311.pyc,sha256=qf09UGQ3zkDlB2iDYye7E962lSTiEmK1Xi2LK7ZsZGI,2410
|
|
82
|
+
pawly/__pycache__/runtime_decision.cpython-313.pyc,sha256=h9db7egKMyMJLOshRrZ5_Ft-pkRd7zVXDP8cuAPK0GQ,2144
|
|
83
|
+
pawly/__pycache__/runtime_execute.cpython-311.pyc,sha256=KJun4vAQpgxmhIdlLd2_Sg1tbEuwAfJHPCfKFpk9Y9M,2805
|
|
84
|
+
pawly/__pycache__/runtime_execute.cpython-313.pyc,sha256=8ZLtMF4hmyMUyKzgJa-J1-OJxeDbd1IoN1WxshVFK2U,2726
|
|
85
|
+
pawly/__pycache__/runtime_flow.cpython-311.pyc,sha256=WORim4liVWxms1-aOjnn9-o1mWsYRX3foWTGhKuzWhs,3143
|
|
86
|
+
pawly/__pycache__/runtime_flow.cpython-313.pyc,sha256=Kzvjpd8MDbc0RvkZRPscj2M7ywDQCksbt12e-kARNSk,2882
|
|
87
|
+
pawly/__pycache__/runtime_ids.cpython-311.pyc,sha256=yBKNkqP_008t0VjeVotni1aDULp2LSzjajbLgeHI_Hg,1984
|
|
88
|
+
pawly/__pycache__/runtime_ids.cpython-313.pyc,sha256=EPqiIe3KRFZQ0WTbO2BjQSu0EWex_CGX_g3e0LDz07M,1747
|
|
89
|
+
pawly/__pycache__/runtime_report.cpython-311.pyc,sha256=BQLmIqBy5Zk9UcrtPnQbP_gBM1h6s91cj-U198wtqdE,1140
|
|
90
|
+
pawly/__pycache__/runtime_report.cpython-313.pyc,sha256=vbOgIhy1DZoy0zKZ1wPEiyHV-YIueJ6dq8sSDC4u7kM,1045
|
|
91
|
+
pawly/__pycache__/runtime_request.cpython-311.pyc,sha256=LV025l_bo8ipLI4Z2Cl1-lJI7dnFwhrYgri5aKK4wz0,1039
|
|
92
|
+
pawly/__pycache__/runtime_request.cpython-313.pyc,sha256=JlrWaCv8qSmni_3vkCbgoEE0Ks3BrqEtqGJapYQO_6w,949
|
|
93
|
+
pawly/__pycache__/runtime_result.cpython-311.pyc,sha256=UX5TET66f3paH5d0XNwRBXOYglTtmLW6Zai4pT1r9fE,5335
|
|
94
|
+
pawly/__pycache__/runtime_result.cpython-313.pyc,sha256=rDmwD-IxZ8lI19btbEfspViZgdRSHibyNgk7ep3dn2o,5253
|
|
95
|
+
pawly/__pycache__/runtime_scoring.cpython-311.pyc,sha256=7vCJOSLJbN5vIpcMdWhBy6NqIKDaiNLtz5rEuMF7k2s,1255
|
|
96
|
+
pawly/__pycache__/runtime_scoring.cpython-313.pyc,sha256=F4xM0PwpHoE0VRgTw80qmralgznMhe8gbmaUrSwealY,1103
|
|
97
|
+
pawly/__pycache__/shield.cpython-311.pyc,sha256=xZ-k-YowBNZCRo5aH8IZW0M9WUnOzwkh-7SJANPZfEg,27065
|
|
98
|
+
pawly/__pycache__/shield.cpython-313.pyc,sha256=3zukTqvJJ85-MzUFKJEl83lWJc59z9owbscr-OFpYLY,24092
|
|
99
|
+
pawly/__pycache__/skill_registry.cpython-311.pyc,sha256=MJKwMwZ8B2jsVLEVnj8022jBtQFU4U5DUz6I-R3J9jY,2443
|
|
100
|
+
pawly/__pycache__/skill_registry.cpython-313.pyc,sha256=AA3EkdJ9KH-7EkWI-xKOGSgzWtdRXYe9W9MfdI4N5JI,2192
|
|
101
|
+
pawly/__pycache__/task_request.cpython-311.pyc,sha256=B6hBGToH-MDIot27tcR4cJBpINlrB1D541O8LAH9vnA,1670
|
|
102
|
+
pawly/__pycache__/task_request.cpython-313.pyc,sha256=NiLmBWQsCFwbNPZm5pI39FmPwwIHjanLFc0bItlOTTI,1522
|
|
103
|
+
pawly/__pycache__/types.cpython-311.pyc,sha256=cMJ4LNfSM9awHn4uPkFbUtj1cQtOrsGECwpScFfzrGc,771
|
|
104
|
+
pawly/__pycache__/types.cpython-313.pyc,sha256=WzQv3pIrYXOFXaTE0Snyha2nRD9mDJkgq_jM_TuOdag,630
|
|
105
|
+
pawly/approval/__init__.py,sha256=wKFdMM5WT7sz1YePUPhoGGllELCpt7SlOyAsqgTRxm4,554
|
|
106
|
+
pawly/approval/callback.py,sha256=75VieqZZ-_tEHaPOrEpA-LQIfgQCgkGITu-6TOAqKuQ,372
|
|
107
|
+
pawly/approval/handler.py,sha256=tzSvTuGEuTGgG63Gjg7YS0dLOeM7XyCUgbSKFAbtpkg,1021
|
|
108
|
+
pawly/approval/models.py,sha256=Xrkjo5qci_9h4TJ9ujdXUWnQk3op41kc3-HeeyFm5ZE,3553
|
|
109
|
+
pawly/approval/queue.py,sha256=AFCMjlc3hVwffdpNlBKOJx2nSMhVv3R4UmwoFjT7edw,4028
|
|
110
|
+
pawly/approval/router.py,sha256=0v8vt0lCsUluWVZ8xzhLdqGkcD9vxvYEnYHGI1yzF-Q,2546
|
|
111
|
+
pawly/approval/timeout.py,sha256=96BPGRpA7rtxBkRF0kB1LVfWvECojWazVgXs1uujp4Q,584
|
|
112
|
+
pawly/approval/__pycache__/__init__.cpython-311.pyc,sha256=75JELszQi2ukzUjzHgNAsY0oGJ6jEKubrmgf1LoJ8dM,789
|
|
113
|
+
pawly/approval/__pycache__/__init__.cpython-313.pyc,sha256=0JhJgPnNpUeNdUllDShffMe787WJ-K1kJ6GMgbxrEDY,671
|
|
114
|
+
pawly/approval/__pycache__/callback.cpython-311.pyc,sha256=UBTYU4YOpLTiv18eSEaNVtnRv1Pcy4GaZPZyak5F4WM,1201
|
|
115
|
+
pawly/approval/__pycache__/callback.cpython-313.pyc,sha256=25kgWOkyptV0HGdaI1QLpIwpzqjzCSG5jERFzt7Z-AY,1052
|
|
116
|
+
pawly/approval/__pycache__/handler.cpython-311.pyc,sha256=hXhaZ74Z3XLfz_vgaki8NpjEdZhYP3FuXIc0sXeiqNc,2159
|
|
117
|
+
pawly/approval/__pycache__/handler.cpython-313.pyc,sha256=3pfB4Hv_wWw2ZaaFeh3isjhHeYYEByNU0LL_2CCQFVo,2039
|
|
118
|
+
pawly/approval/__pycache__/models.cpython-311.pyc,sha256=VquAAuHDptzEVM0oaD_nIvOW7kO_v0GLu24cy2WzoWo,6397
|
|
119
|
+
pawly/approval/__pycache__/models.cpython-313.pyc,sha256=hwzOW6nOrw2Hqu9-D031okllj3JgrI9ydHY6-lOjHbo,6183
|
|
120
|
+
pawly/approval/__pycache__/queue.cpython-311.pyc,sha256=FUJFjN4XPH6tngMSbH0Hi1mvxlgdvtUsR5i79VgumMI,9112
|
|
121
|
+
pawly/approval/__pycache__/queue.cpython-313.pyc,sha256=_nU2wrtjEtfnDjfDUV-rMtyOAzTPB8t8KCO-dgl0ftA,7781
|
|
122
|
+
pawly/approval/__pycache__/router.cpython-311.pyc,sha256=tqlVvvVJcN75-qC-moWD7csJ3CA9TkX7qFd3jASOdMY,4498
|
|
123
|
+
pawly/approval/__pycache__/router.cpython-313.pyc,sha256=EHa55a0tgmhHBuGP22TW6hdBVVmGKSoPFAs0MEoYWAE,4297
|
|
124
|
+
pawly/approval/__pycache__/timeout.cpython-311.pyc,sha256=w9jxAAg4Yxbk4Ev7xmNkmFBR56kwR17sHZ74Z0YCheA,1312
|
|
125
|
+
pawly/approval/__pycache__/timeout.cpython-313.pyc,sha256=SwHK8uYBbJY4cRnYzsFEmj_EguHg9VvFlCwotNlNmF0,1212
|
|
126
|
+
pawly/policy/__init__.py,sha256=pKHefvP1ZApvOPwQ4ocIRQqIZZhiiHJFj-9ogUtKakU,479
|
|
127
|
+
pawly/policy/base.py,sha256=AJAXZALwlZCL-56rD1wwLGHKJidS6ouQpdmI39Dfc7Y,2810
|
|
128
|
+
pawly/policy/cloud.py,sha256=2b_N3luMwZAQ7LiEFtXM-Vc280OcjGjj_ki3IFvsx8Q,596
|
|
129
|
+
pawly/policy/heuristic.py,sha256=BgY_UZYbJqagMP6Gmpt_Us1rsyF-sGXP7hXkTFmaYQs,4408
|
|
130
|
+
pawly/policy/resolve.py,sha256=r5jyzVM60UCVqxkcC0dDIzG5ZiNy8JmjX3MYDlMCZac,2132
|
|
131
|
+
pawly/policy/__pycache__/__init__.cpython-311.pyc,sha256=dtClcqEmTFee2nNL9h71AbfAg8wXl0ORqDNyz6lneyg,735
|
|
132
|
+
pawly/policy/__pycache__/__init__.cpython-313.pyc,sha256=qmRQ46YtpRiqbHX85uGc-GXf2Sb5v6BKGL4GTcSH8S0,620
|
|
133
|
+
pawly/policy/__pycache__/base.cpython-311.pyc,sha256=ja71KQSilDF2WoQ9rvkxPR33H1SbEq9LVOlr_teyJ-Y,5181
|
|
134
|
+
pawly/policy/__pycache__/base.cpython-313.pyc,sha256=NfwTcfxYtPSdAEdE3sBvzUGYECBjCl_wcGLUgbgE9ZA,4497
|
|
135
|
+
pawly/policy/__pycache__/heuristic.cpython-311.pyc,sha256=YgDplptM8Ec2214AcNkY9QM-9TOepkIdAVp5DPDwlWc,8216
|
|
136
|
+
pawly/policy/__pycache__/heuristic.cpython-313.pyc,sha256=E-UzM__D_NAjR4joVvf81N69fj97GVdADsM1qvuve0Q,6859
|
|
137
|
+
pawly/policy/__pycache__/resolve.cpython-311.pyc,sha256=yDCUSJuwPbHIQ82a8JaFNiHLFoUdBYyKU6MN5iDxL9s,3300
|
|
138
|
+
pawly/policy/__pycache__/resolve.cpython-313.pyc,sha256=k-naR2lPT8I-xaj7cWiWCkt9OLHBhegod4Ijm-8bKIs,3042
|
|
139
|
+
pawly/escalation/patterns.py,sha256=jiLa2rLlGvRaH5X6oYqmf3SnxurWAnIekkm5RtBApak,1084
|
|
140
|
+
pawly/escalation/__pycache__/patterns.cpython-311.pyc,sha256=Ef_9IXCMQn5BDLxR7_nTuXKbN7aQBP8vQELwqRQjdXs,2082
|
|
141
|
+
pawly/escalation/__pycache__/patterns.cpython-313.pyc,sha256=c7LkQTyHwTBD_gjQa9zc3kbeye0lToIlXP31AY4hSzY,1806
|
|
142
|
+
pawly/adapters/__init__.py,sha256=6lidC5n5pOMHD3R8G95MJDlMEsEbjCBjIdJsvw_-bZQ,588
|
|
143
|
+
pawly/adapters/claude_skills.py,sha256=KO_dFGeJaNcRj7wES00W-srDbfFsZ8CfljSEZqRCRxA,7123
|
|
144
|
+
pawly/adapters/openai_agents.py,sha256=Zo-xoqgLiSRsqkamkAKuCvlxravV522BKnzZKupIv9g,6892
|
|
145
|
+
pawly/adapters/__pycache__/__init__.cpython-311.pyc,sha256=O8xasWspKr440Z_0aPtbcQ3K3_PgkDjsxmuY9MuJak8,788
|
|
146
|
+
pawly/adapters/__pycache__/__init__.cpython-313.pyc,sha256=B-VDiowRAbGVF8uciOU2pD0mwG6wMi2zd6J04S3VIWU,669
|
|
147
|
+
pawly/adapters/__pycache__/claude_skills.cpython-311.pyc,sha256=rxmx75tX0RULHE8bvNFhZXCP_z9mCyfjewF4lcqQydA,8505
|
|
148
|
+
pawly/adapters/__pycache__/claude_skills.cpython-313.pyc,sha256=ziDcEiUWQMrJNNBjJ2lY3nJePsFr8Kf7puDrzpRgpgE,7992
|
|
149
|
+
pawly/adapters/__pycache__/openai_agents.cpython-311.pyc,sha256=W9Ouk3JAC7OLA-CPucQYyDsFuu9NXUoAAr1oYzy_3Ew,8372
|
|
150
|
+
pawly/adapters/__pycache__/openai_agents.cpython-313.pyc,sha256=_3rNBhh9eB28HSRIo9MseYAI40iBnYtwwWkmE1S2pxA,7838
|
|
151
|
+
pawly/budget/checker.py,sha256=73CHRdllVXwfiM4011NjKGK5u4mhTtrmhnuccMdfVBc,1586
|
|
152
|
+
pawly/budget/state.py,sha256=T7GUzrhVZM5KeBYtIwAEJtpMomDbERJLqDlpqX_jeyM,372
|
|
153
|
+
pawly/budget/__pycache__/checker.cpython-311.pyc,sha256=qRNKT-qOKvRS5IjVbLPahGVGN2VF1jqQvnr_3L3uNwc,3141
|
|
154
|
+
pawly/budget/__pycache__/checker.cpython-313.pyc,sha256=AyONSlEgTu3XkGRq0oEoakQAfeWj2pfCwFer75dzwU0,2680
|
|
155
|
+
pawly/budget/__pycache__/state.cpython-311.pyc,sha256=nR7KuusfuV9MIVt4MVHUT3k60RwGa63wGzMZe534OBg,1362
|
|
156
|
+
pawly/budget/__pycache__/state.cpython-313.pyc,sha256=nM8Lzb94XBN4lJrgGccS-GLllPQCXrGfNf6nMtRMm4k,1230
|
|
157
|
+
pawly/performance/metrics.py,sha256=joiITeG21hojRsG6u-qoYP7-cgWGRRpFCF47AYb9_DI,1640
|
|
158
|
+
pawly/performance/report.py,sha256=u-lCSLqGAmThuxsG1a1ppL7tWNQWTGPMv1g8Dlac-3w,2002
|
|
159
|
+
pawly/performance/__pycache__/metrics.cpython-311.pyc,sha256=U_tnISOOFCtjYU4GbgKilEW0IzcTuMWR-G24bOihLGg,3141
|
|
160
|
+
pawly/performance/__pycache__/metrics.cpython-313.pyc,sha256=ReFxLHK8QFZBGfHiExdIOAqCDmU_ocLT9pOOBvOrRuk,2771
|
|
161
|
+
pawly/performance/__pycache__/report.cpython-311.pyc,sha256=ZgG14KpbOjbzONod3fr0uyVIclr8xl8llP5M8MGxbj8,2430
|
|
162
|
+
pawly/performance/__pycache__/report.cpython-313.pyc,sha256=bsFRhS-bz6DbFPwjFliojdFpUmhIJIkSaOizWZdt-P0,2168
|
|
163
|
+
pawly/schemas/decision.schema.json,sha256=sVSqKvuV9cHenawM7LCrdeXfZ4ibtgPAGI4R2VDMLCU,1044
|
|
164
|
+
pawly/schemas/intent.schema.json,sha256=J5WWA1wu7GTLrK_q3SbeAqIL484tfAXi446Yixgr4s4,985
|
|
165
|
+
pawly/schemas/report.schema.json,sha256=NMeQf5Nxlu9PYmcokyV6iRyS1g_Rg5qQ3v7bIPtH2wU,1112
|
|
166
|
+
pawly/loader/schema_loader.py,sha256=wXCDZBccdshVAo4ZzPpdoRxSJ26ZOe2luwUJjNk7p_Y,1519
|
|
167
|
+
pawly/loader/yaml_loader.py,sha256=njeIjGFnbAYNDKUrlA4t0ExP15sW5ErbJ5Bj__XXq3E,5187
|
|
168
|
+
pawly/loader/__pycache__/schema_loader.cpython-311.pyc,sha256=pmvznzy2kzVbDY9vYCCVxH92SuIXSXUwgJzjz9b1F6E,3265
|
|
169
|
+
pawly/loader/__pycache__/schema_loader.cpython-313.pyc,sha256=NpukJQjFbyiIC1FlrxD_eYa8WqJV2mJTGfjIAy1cL2g,2876
|
|
170
|
+
pawly/loader/__pycache__/yaml_loader.cpython-311.pyc,sha256=ePbhdo93d526nClMxQ0pI7nPqu9pY_jyIECR3anFa_M,9087
|
|
171
|
+
pawly/loader/__pycache__/yaml_loader.cpython-313.pyc,sha256=86cq4S4uM0TiTMa8pKQ1LrJ4yDSAki7__dPopirrPdc,7707
|
|
172
|
+
pawly/audit/diff.py,sha256=Ru3vrn1u6l8MN5OiPJ6HhJSk7Bo_MJzx5Hf4n8x9loI,771
|
|
173
|
+
pawly/audit/events.py,sha256=8elaeXbLhIJ_wgKuX_nAjXxtGITWIqZccGeDv_Q_j7E,5517
|
|
174
|
+
pawly/audit/ledger.py,sha256=ti4xFrBZdpaqSO8FE5ngMOZS2SnyG8BcbnNZDZYN5bs,1490
|
|
175
|
+
pawly/audit/replay.py,sha256=yJk-O3a5U7TiiE5gW46jKWLFyIwFbgmn-PtbezUZMIY,1655
|
|
176
|
+
pawly/audit/__pycache__/diff.cpython-311.pyc,sha256=B9VayC7rvsyTsMKE1sUL6ZrfjiQ8yla4VLqpWoFPB_M,1240
|
|
177
|
+
pawly/audit/__pycache__/diff.cpython-313.pyc,sha256=iAqeE01eTpVqqdWeWHTbBjjUKaTCWyOAVaumLHwzpHQ,1077
|
|
178
|
+
pawly/audit/__pycache__/events.cpython-311.pyc,sha256=5hUxEIXgUTP_UYb-8zao04pruD1mutNHi_jtZNZ5-9o,5812
|
|
179
|
+
pawly/audit/__pycache__/events.cpython-313.pyc,sha256=Fy9-7aAVS2upmDxNU2OixXAbHwe8FIgZOGFIVu3kgEQ,5759
|
|
180
|
+
pawly/audit/__pycache__/ledger.cpython-311.pyc,sha256=jnaD2bCLHi1Ex2ldjh21-nGdLD4ANnmfKo3PO-EFvWA,3509
|
|
181
|
+
pawly/audit/__pycache__/ledger.cpython-313.pyc,sha256=ZKzSNyhy2WZEO8Ijm-LrGvVfPNMxkLoIygQmO29nDtQ,3068
|
|
182
|
+
pawly/audit/__pycache__/replay.cpython-311.pyc,sha256=F86WA7OlSCIK8l8NAdldQzU06dnp0c9lf_axRmCY2P4,2560
|
|
183
|
+
pawly/audit/__pycache__/replay.cpython-313.pyc,sha256=sLDJjF0WG3kukGngzz5EXMRjdlSflOlziYJjBOp0xVY,2266
|
|
184
|
+
pawly/validator/validator.py,sha256=gCM8BgaMhZw7Up3BGEgOHCPaq7BoT3wGoegLXEC4TaU,8430
|
|
185
|
+
pawly/validator/__pycache__/validator.cpython-311.pyc,sha256=676AmbyrlZtQl-EMed3eCcHKhyAjTREy7qnfdn1R9_w,12270
|
|
186
|
+
pawly/validator/__pycache__/validator.cpython-313.pyc,sha256=mSoEx_9TpOVmeGUhWVsUb4cTPmK8irMUOLzTSYfJJY0,10574
|
|
187
|
+
pawly/gateway/__init__.py,sha256=kYAlwzxrluCs3PI0HL3DVo9M2oMyb64oyfeeGVwmPlY,245
|
|
188
|
+
pawly/gateway/adapter_support.py,sha256=iFfWSiN89qp0-QhUEfUa00_CXDl2EsxywTugXwwdrF4,1527
|
|
189
|
+
pawly/gateway/protocol.py,sha256=Lcl2kl50o4VQH1OdzYdp5jSJBZdosk9rQ9w-VW574Q8,518
|
|
190
|
+
pawly/gateway/result.py,sha256=tKSXcoA0YFKTsOGVD3ezNaiCISoZiuGgocLj86wkVbY,2481
|
|
191
|
+
pawly/gateway/wrapper.py,sha256=rTzvRHRf_C9bAfNKYNkQpoZ0PyoUG7gMVFkliXM1jZc,9809
|
|
192
|
+
pawly/gateway/__pycache__/__init__.cpython-311.pyc,sha256=Si8XbFkKlFGTs8SA0Ut3uP4kSS7-WZ3WG7weyNoQX-s,493
|
|
193
|
+
pawly/gateway/__pycache__/__init__.cpython-313.pyc,sha256=l7RnvnNw49rFh_L-nFUbkSeyG4uGDNS55CfD-UiQ-ME,436
|
|
194
|
+
pawly/gateway/__pycache__/adapter_support.cpython-311.pyc,sha256=GAf12grs5716IUdtSMS2iuzt2cxjWxzAlFwXcKtqRf0,2735
|
|
195
|
+
pawly/gateway/__pycache__/adapter_support.cpython-313.pyc,sha256=cK0I2O_kLl7MF9hb6Ok2gvvAxZzFb1FMAwF084yPeJU,2535
|
|
196
|
+
pawly/gateway/__pycache__/protocol.cpython-311.pyc,sha256=iMCsaOwTFyjohcCg3oSF2oZy4Em0laeZvFdMX9B1IjQ,1328
|
|
197
|
+
pawly/gateway/__pycache__/protocol.cpython-313.pyc,sha256=XlIEOOzYhQL4pGv4rkPQeMcLwT-B9p3IGKnpyTvAFS4,1233
|
|
198
|
+
pawly/gateway/__pycache__/result.cpython-311.pyc,sha256=LLVluuSM8FTTPlWuxJTKkCNJnIsx15R314CBsJ25R-w,3882
|
|
199
|
+
pawly/gateway/__pycache__/result.cpython-313.pyc,sha256=ke1Ig3O4eWGttwBV6aiIjXqHB2szRYhC5JiyxE5V8PM,3780
|
|
200
|
+
pawly/gateway/__pycache__/wrapper.cpython-311.pyc,sha256=ND6aiLhb07PibMcZURelrqbXK8703Qbkxnb5v5_qmMY,10369
|
|
201
|
+
pawly/gateway/__pycache__/wrapper.cpython-313.pyc,sha256=0tJw9EclKuRp91bF7G6Aef18Hnf7h1lSngWX0JR8Jk4,9955
|
|
202
|
+
pawly-0.1.0.dist-info/METADATA,sha256=y-dn4o33LkSKerjQMgNi8rz3G50wHJK7VRw2AB-VKho,226
|
|
203
|
+
pawly-0.1.0.dist-info/WHEEL,sha256=CW4pY6VXU0LIwIb45v5y_RC0bXjtvRGCkCnDvQFx9Jk,90
|
|
204
|
+
pawly-0.1.0.dist-info/entry_points.txt,sha256=9LZdz78dO6a0051_q94AN_cpXqYHf3fHCKX5lV6TkBE,41
|
|
205
|
+
pawly-0.1.0.dist-info/top_level.txt,sha256=lO4fnq_n3GDztkVHQxsDlPJWyi4x6xpte244jrlyeso,6
|
|
206
|
+
pawly-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pawly
|