@kernlang/python 4.1.1-canary.226.1.c0be05e9 → 4.1.1-canary.228.1.41c150f2
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.
- package/dist/codegen-body-python.js +26 -1
- package/dist/codegen-body-python.js.map +1 -1
- package/dist/fastapi-policy-runtime.d.ts +29 -0
- package/dist/fastapi-policy-runtime.js +170 -0
- package/dist/fastapi-policy-runtime.js.map +1 -0
- package/dist/fastapi-route.js +132 -2
- package/dist/fastapi-route.js.map +1 -1
- package/dist/generators/data.js.map +1 -1
- package/dist/ir-semantics/python-leg.js +6 -1
- package/dist/ir-semantics/python-leg.js.map +1 -1
- package/dist/transpiler-fastapi.js +22 -0
- package/dist/transpiler-fastapi.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default pre-slot policy executor for a freshly generated FastAPI app.
|
|
3
|
+
*
|
|
4
|
+
* A route emitted by fastapi-route.ts calls
|
|
5
|
+
* `request.app.state.execute_kern_policy_slot(entry, "pre", facts)` around
|
|
6
|
+
* its handler. Previously that hook was NEVER installed by the transpiler
|
|
7
|
+
* itself — only the app-behavior-conformance harness's Python leg patched it
|
|
8
|
+
* in, as a test convenience. A real generated app hit an AttributeError (or
|
|
9
|
+
* a 500) on every policy-guarded route. This module implements the
|
|
10
|
+
* KernAppPolicySlotPlan semantics natively in Python (mirroring
|
|
11
|
+
* executePolicySlotPlan in packages/core/src/app-descriptor.ts) so a fresh
|
|
12
|
+
* app is self-sufficient with NO external patching.
|
|
13
|
+
*
|
|
14
|
+
* Secrets stay opaque to guard/.kern code: the executor never exposes key
|
|
15
|
+
* material to the policy plan, only to host-supplied PROVIDER hooks on
|
|
16
|
+
* `app.state`, which the host app may override:
|
|
17
|
+
*
|
|
18
|
+
* app.state.kern_auth_verifier(verifier_ref, credential, entry) -> bool
|
|
19
|
+
* app.state.kern_hmac_key_provider(key_ref, entry) -> bytes | str | None
|
|
20
|
+
* app.state.kern_rag_grounding_adapter(policy, facts, entry) -> dict
|
|
21
|
+
*
|
|
22
|
+
* Every hook may be sync or async. A MISSING provider always DENIES (oracle
|
|
23
|
+
* A4/P6) — it never degrades to allow, and a provider exception denies
|
|
24
|
+
* instead of propagating a 500.
|
|
25
|
+
*/
|
|
26
|
+
import type { GeneratedArtifact } from '@kernlang/core';
|
|
27
|
+
export declare const FASTAPI_POLICY_RUNTIME_MODULE_BASENAME = "policy_runtime";
|
|
28
|
+
export declare const FASTAPI_POLICY_RUNTIME_SOURCE = "\"\"\"Generated by kern. Default pre-slot policy executor.\n\nImplements the executable guard kinds (auth, hmacSignature, rag-review,\npassthrough) natively so a freshly generated FastAPI app enforces policy\nwithout any external patching. Host-supplied PROVIDER hooks on `app.state`\nremain overridable; a missing provider always DENIES.\n\"\"\"\n\nimport base64\nimport hashlib\nimport hmac\nimport inspect\nimport re\nfrom typing import Any, Dict, List, Optional\n\n\nasync def _maybe_await(value: Any) -> Any:\n if inspect.isawaitable(value):\n return await value\n return value\n\n\ndef _header_value(headers: Optional[Dict[str, Any]], name: str) -> Optional[str]:\n if not headers:\n return None\n wanted = name.lower()\n for key, value in headers.items():\n if str(key).lower() == wanted:\n return value\n return None\n\n\ndef _failure_status(policy: Dict[str, Any]) -> int:\n props = (policy.get(\"node\") or {}).get(\"props\") or {}\n raw = props.get(\"failureStatus\")\n try:\n value = int(raw)\n except (TypeError, ValueError):\n return 401\n return value if 100 <= value <= 599 else 401\n\n\ndef _denied(policy: Dict[str, Any], diagnostics: Optional[List[str]] = None) -> Dict[str, Any]:\n return {\n \"name\": policy.get(\"name\"),\n \"slot\": policy.get(\"slot\", \"pre\"),\n \"kind\": policy.get(\"kind\"),\n \"action\": \"deny\",\n \"status\": _failure_status(policy),\n \"body\": {\"error\": \"policy_denied\", \"policy\": policy.get(\"name\"), \"kind\": policy.get(\"kind\")},\n \"diagnostics\": diagnostics or [],\n }\n\n\ndef _allowed(policy: Dict[str, Any]) -> Dict[str, Any]:\n return {\"name\": policy.get(\"name\"), \"slot\": policy.get(\"slot\", \"pre\"), \"kind\": policy.get(\"kind\"), \"action\": \"allow\"}\n\n\nasync def _execute_auth(policy: Dict[str, Any], facts: Dict[str, Any], entry: Dict[str, Any], app_state: Any) -> Dict[str, Any]:\n plan = policy[\"plan\"]\n credential = _header_value(facts.get(\"headers\"), plan[\"credentialHeader\"])\n verifier = getattr(app_state, \"kern_auth_verifier\", None)\n if not credential or verifier is None:\n return _denied(policy, [\"auth credential absent or verifier missing\"])\n try:\n ok = await _maybe_await(verifier(plan[\"verifierRef\"], credential, entry))\n except Exception as error: # guard exception -> deny, fail-closed\n return _denied(policy, [str(error)])\n return _allowed(policy) if ok else _denied(policy, [\"auth verifier denied\"])\n\n\nasync def _execute_hmac(policy: Dict[str, Any], facts: Dict[str, Any], entry: Dict[str, Any], app_state: Any) -> Dict[str, Any]:\n plan = policy[\"plan\"]\n signature = _header_value(facts.get(\"headers\"), plan[\"signatureHeader\"])\n raw_body = facts.get(\"rawBody\")\n key_provider = getattr(app_state, \"kern_hmac_key_provider\", None)\n if not signature or key_provider is None or raw_body is None:\n return _denied(policy, [\"hmac signature, key provider, or raw body missing\"])\n try:\n key = await _maybe_await(key_provider(plan[\"keyRef\"], entry))\n except Exception as error:\n return _denied(policy, [str(error)])\n if key is None:\n return _denied(policy, [\"hmac key not provided\"])\n key_bytes = key.encode(\"utf-8\") if isinstance(key, str) else bytes(key)\n body_bytes = raw_body.encode(\"utf-8\") if isinstance(raw_body, str) else bytes(raw_body)\n # Mirrors core's normalizeKernHmacAlgorithm (lockstep parity): lowercase,\n # underscore==hyphen, and dashed SHA-2 aliases collapse ('sha-256' ->\n # 'sha256'). Multi-part families keep their separator, mapped to hashlib's\n # underscore convention ('sha3-256' -> 'sha3_256'). The old blanket\n # replace(\"-\", \"_\") produced 'sha_256', which does not exist on hashlib,\n # so every valid 'sha-256' config denied every request.\n algorithm = str(plan.get(\"algorithm\", \"sha256\")).strip().lower().replace(\"_\", \"-\")\n sha_dashed = re.fullmatch(r\"sha-(\\d+)\", algorithm)\n if sha_dashed is not None:\n algorithm = \"sha\" + sha_dashed.group(1)\n digestmod = getattr(hashlib, algorithm.replace(\"-\", \"_\"), None)\n if digestmod is None:\n return _denied(policy, [f\"unsupported hmac algorithm '{plan.get('algorithm')}'\"])\n expected = hmac.new(key_bytes, body_bytes, digestmod).digest()\n received_str = signature\n prefix = plan.get(\"prefix\")\n if prefix and received_str.startswith(prefix):\n received_str = received_str[len(prefix):]\n try:\n received = bytes.fromhex(received_str) if plan.get(\"encoding\") == \"hex\" else base64.b64decode(received_str, validate=True)\n except Exception:\n # A malformed/wrong-length signature denies cleanly \u2014 never raises.\n return _denied(policy, [\"hmac signature mismatch\"])\n if len(expected) != len(received) or not hmac.compare_digest(expected, received):\n return _denied(policy, [\"hmac signature mismatch\"])\n return _allowed(policy)\n\n\nasync def _execute_rag_review(policy: Dict[str, Any], facts: Dict[str, Any], entry: Dict[str, Any], app_state: Any) -> Dict[str, Any]:\n adapter = getattr(app_state, \"kern_rag_grounding_adapter\", None)\n if adapter is None:\n return _denied(policy, [\"rag grounding adapter not provided\"])\n try:\n verdict = await _maybe_await(adapter(policy, facts, entry))\n except Exception as error:\n return _denied(policy, [str(error)])\n if not isinstance(verdict, dict) or verdict.get(\"allow\") is not True:\n diagnostics = verdict.get(\"diagnostics\") if isinstance(verdict, dict) else None\n return _denied(policy, diagnostics if isinstance(diagnostics, list) else [\"rag verdict denied or malformed\"])\n return _allowed(policy)\n\n\ndef create_execute_kern_policy_slot(app: Any):\n \"\"\"Bind the executor to `app` so it can reach `app.state` provider hooks\n without smuggling non-serializable state through the `facts` contract.\"\"\"\n\n async def execute_kern_policy_slot(entry: Dict[str, Any], slot: str, facts: Dict[str, Any]) -> List[Dict[str, Any]]:\n if slot not in (\"pre\", \"post\"):\n raise ValueError(f\"unknown policy slot '{slot}' (expected pre or post)\")\n policies = entry.get(\"prePolicies\" if slot == \"pre\" else \"postPolicies\") or []\n executions: List[Dict[str, Any]] = []\n for policy in policies:\n kind = policy.get(\"kind\")\n try:\n if kind == \"passthrough\":\n result = _allowed(policy)\n elif kind == \"auth\":\n result = await _execute_auth(policy, facts, entry, app.state)\n elif kind == \"hmacSignature\":\n result = await _execute_hmac(policy, facts, entry, app.state)\n elif kind == \"rag-review\":\n result = await _execute_rag_review(policy, facts, entry, app.state)\n else:\n # A kind this runtime cannot execute must fail closed \u2014\n # never fall through to an implicit allow.\n result = _denied(policy, [f\"unsupported policy kind '{kind}'\"])\n except Exception as error:\n result = _denied(policy, [str(error)])\n executions.append(result)\n if result[\"action\"] == \"deny\":\n break\n return executions\n\n return execute_kern_policy_slot\n";
|
|
29
|
+
export declare function buildFastApiPolicyRuntimeArtifact(): GeneratedArtifact;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
export const FASTAPI_POLICY_RUNTIME_MODULE_BASENAME = 'policy_runtime';
|
|
2
|
+
export const FASTAPI_POLICY_RUNTIME_SOURCE = `"""Generated by kern. Default pre-slot policy executor.
|
|
3
|
+
|
|
4
|
+
Implements the executable guard kinds (auth, hmacSignature, rag-review,
|
|
5
|
+
passthrough) natively so a freshly generated FastAPI app enforces policy
|
|
6
|
+
without any external patching. Host-supplied PROVIDER hooks on \`app.state\`
|
|
7
|
+
remain overridable; a missing provider always DENIES.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import base64
|
|
11
|
+
import hashlib
|
|
12
|
+
import hmac
|
|
13
|
+
import inspect
|
|
14
|
+
import re
|
|
15
|
+
from typing import Any, Dict, List, Optional
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
async def _maybe_await(value: Any) -> Any:
|
|
19
|
+
if inspect.isawaitable(value):
|
|
20
|
+
return await value
|
|
21
|
+
return value
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _header_value(headers: Optional[Dict[str, Any]], name: str) -> Optional[str]:
|
|
25
|
+
if not headers:
|
|
26
|
+
return None
|
|
27
|
+
wanted = name.lower()
|
|
28
|
+
for key, value in headers.items():
|
|
29
|
+
if str(key).lower() == wanted:
|
|
30
|
+
return value
|
|
31
|
+
return None
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _failure_status(policy: Dict[str, Any]) -> int:
|
|
35
|
+
props = (policy.get("node") or {}).get("props") or {}
|
|
36
|
+
raw = props.get("failureStatus")
|
|
37
|
+
try:
|
|
38
|
+
value = int(raw)
|
|
39
|
+
except (TypeError, ValueError):
|
|
40
|
+
return 401
|
|
41
|
+
return value if 100 <= value <= 599 else 401
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def _denied(policy: Dict[str, Any], diagnostics: Optional[List[str]] = None) -> Dict[str, Any]:
|
|
45
|
+
return {
|
|
46
|
+
"name": policy.get("name"),
|
|
47
|
+
"slot": policy.get("slot", "pre"),
|
|
48
|
+
"kind": policy.get("kind"),
|
|
49
|
+
"action": "deny",
|
|
50
|
+
"status": _failure_status(policy),
|
|
51
|
+
"body": {"error": "policy_denied", "policy": policy.get("name"), "kind": policy.get("kind")},
|
|
52
|
+
"diagnostics": diagnostics or [],
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _allowed(policy: Dict[str, Any]) -> Dict[str, Any]:
|
|
57
|
+
return {"name": policy.get("name"), "slot": policy.get("slot", "pre"), "kind": policy.get("kind"), "action": "allow"}
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
async def _execute_auth(policy: Dict[str, Any], facts: Dict[str, Any], entry: Dict[str, Any], app_state: Any) -> Dict[str, Any]:
|
|
61
|
+
plan = policy["plan"]
|
|
62
|
+
credential = _header_value(facts.get("headers"), plan["credentialHeader"])
|
|
63
|
+
verifier = getattr(app_state, "kern_auth_verifier", None)
|
|
64
|
+
if not credential or verifier is None:
|
|
65
|
+
return _denied(policy, ["auth credential absent or verifier missing"])
|
|
66
|
+
try:
|
|
67
|
+
ok = await _maybe_await(verifier(plan["verifierRef"], credential, entry))
|
|
68
|
+
except Exception as error: # guard exception -> deny, fail-closed
|
|
69
|
+
return _denied(policy, [str(error)])
|
|
70
|
+
return _allowed(policy) if ok else _denied(policy, ["auth verifier denied"])
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
async def _execute_hmac(policy: Dict[str, Any], facts: Dict[str, Any], entry: Dict[str, Any], app_state: Any) -> Dict[str, Any]:
|
|
74
|
+
plan = policy["plan"]
|
|
75
|
+
signature = _header_value(facts.get("headers"), plan["signatureHeader"])
|
|
76
|
+
raw_body = facts.get("rawBody")
|
|
77
|
+
key_provider = getattr(app_state, "kern_hmac_key_provider", None)
|
|
78
|
+
if not signature or key_provider is None or raw_body is None:
|
|
79
|
+
return _denied(policy, ["hmac signature, key provider, or raw body missing"])
|
|
80
|
+
try:
|
|
81
|
+
key = await _maybe_await(key_provider(plan["keyRef"], entry))
|
|
82
|
+
except Exception as error:
|
|
83
|
+
return _denied(policy, [str(error)])
|
|
84
|
+
if key is None:
|
|
85
|
+
return _denied(policy, ["hmac key not provided"])
|
|
86
|
+
key_bytes = key.encode("utf-8") if isinstance(key, str) else bytes(key)
|
|
87
|
+
body_bytes = raw_body.encode("utf-8") if isinstance(raw_body, str) else bytes(raw_body)
|
|
88
|
+
# Mirrors core's normalizeKernHmacAlgorithm (lockstep parity): lowercase,
|
|
89
|
+
# underscore==hyphen, and dashed SHA-2 aliases collapse ('sha-256' ->
|
|
90
|
+
# 'sha256'). Multi-part families keep their separator, mapped to hashlib's
|
|
91
|
+
# underscore convention ('sha3-256' -> 'sha3_256'). The old blanket
|
|
92
|
+
# replace("-", "_") produced 'sha_256', which does not exist on hashlib,
|
|
93
|
+
# so every valid 'sha-256' config denied every request.
|
|
94
|
+
algorithm = str(plan.get("algorithm", "sha256")).strip().lower().replace("_", "-")
|
|
95
|
+
sha_dashed = re.fullmatch(r"sha-(\\d+)", algorithm)
|
|
96
|
+
if sha_dashed is not None:
|
|
97
|
+
algorithm = "sha" + sha_dashed.group(1)
|
|
98
|
+
digestmod = getattr(hashlib, algorithm.replace("-", "_"), None)
|
|
99
|
+
if digestmod is None:
|
|
100
|
+
return _denied(policy, [f"unsupported hmac algorithm '{plan.get('algorithm')}'"])
|
|
101
|
+
expected = hmac.new(key_bytes, body_bytes, digestmod).digest()
|
|
102
|
+
received_str = signature
|
|
103
|
+
prefix = plan.get("prefix")
|
|
104
|
+
if prefix and received_str.startswith(prefix):
|
|
105
|
+
received_str = received_str[len(prefix):]
|
|
106
|
+
try:
|
|
107
|
+
received = bytes.fromhex(received_str) if plan.get("encoding") == "hex" else base64.b64decode(received_str, validate=True)
|
|
108
|
+
except Exception:
|
|
109
|
+
# A malformed/wrong-length signature denies cleanly — never raises.
|
|
110
|
+
return _denied(policy, ["hmac signature mismatch"])
|
|
111
|
+
if len(expected) != len(received) or not hmac.compare_digest(expected, received):
|
|
112
|
+
return _denied(policy, ["hmac signature mismatch"])
|
|
113
|
+
return _allowed(policy)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
async def _execute_rag_review(policy: Dict[str, Any], facts: Dict[str, Any], entry: Dict[str, Any], app_state: Any) -> Dict[str, Any]:
|
|
117
|
+
adapter = getattr(app_state, "kern_rag_grounding_adapter", None)
|
|
118
|
+
if adapter is None:
|
|
119
|
+
return _denied(policy, ["rag grounding adapter not provided"])
|
|
120
|
+
try:
|
|
121
|
+
verdict = await _maybe_await(adapter(policy, facts, entry))
|
|
122
|
+
except Exception as error:
|
|
123
|
+
return _denied(policy, [str(error)])
|
|
124
|
+
if not isinstance(verdict, dict) or verdict.get("allow") is not True:
|
|
125
|
+
diagnostics = verdict.get("diagnostics") if isinstance(verdict, dict) else None
|
|
126
|
+
return _denied(policy, diagnostics if isinstance(diagnostics, list) else ["rag verdict denied or malformed"])
|
|
127
|
+
return _allowed(policy)
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def create_execute_kern_policy_slot(app: Any):
|
|
131
|
+
"""Bind the executor to \`app\` so it can reach \`app.state\` provider hooks
|
|
132
|
+
without smuggling non-serializable state through the \`facts\` contract."""
|
|
133
|
+
|
|
134
|
+
async def execute_kern_policy_slot(entry: Dict[str, Any], slot: str, facts: Dict[str, Any]) -> List[Dict[str, Any]]:
|
|
135
|
+
if slot not in ("pre", "post"):
|
|
136
|
+
raise ValueError(f"unknown policy slot '{slot}' (expected pre or post)")
|
|
137
|
+
policies = entry.get("prePolicies" if slot == "pre" else "postPolicies") or []
|
|
138
|
+
executions: List[Dict[str, Any]] = []
|
|
139
|
+
for policy in policies:
|
|
140
|
+
kind = policy.get("kind")
|
|
141
|
+
try:
|
|
142
|
+
if kind == "passthrough":
|
|
143
|
+
result = _allowed(policy)
|
|
144
|
+
elif kind == "auth":
|
|
145
|
+
result = await _execute_auth(policy, facts, entry, app.state)
|
|
146
|
+
elif kind == "hmacSignature":
|
|
147
|
+
result = await _execute_hmac(policy, facts, entry, app.state)
|
|
148
|
+
elif kind == "rag-review":
|
|
149
|
+
result = await _execute_rag_review(policy, facts, entry, app.state)
|
|
150
|
+
else:
|
|
151
|
+
# A kind this runtime cannot execute must fail closed —
|
|
152
|
+
# never fall through to an implicit allow.
|
|
153
|
+
result = _denied(policy, [f"unsupported policy kind '{kind}'"])
|
|
154
|
+
except Exception as error:
|
|
155
|
+
result = _denied(policy, [str(error)])
|
|
156
|
+
executions.append(result)
|
|
157
|
+
if result["action"] == "deny":
|
|
158
|
+
break
|
|
159
|
+
return executions
|
|
160
|
+
|
|
161
|
+
return execute_kern_policy_slot
|
|
162
|
+
`;
|
|
163
|
+
export function buildFastApiPolicyRuntimeArtifact() {
|
|
164
|
+
return {
|
|
165
|
+
path: `${FASTAPI_POLICY_RUNTIME_MODULE_BASENAME}.py`,
|
|
166
|
+
content: FASTAPI_POLICY_RUNTIME_SOURCE,
|
|
167
|
+
type: 'lib',
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=fastapi-policy-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fastapi-policy-runtime.js","sourceRoot":"","sources":["../src/fastapi-policy-runtime.ts"],"names":[],"mappings":"AA2BA,MAAM,CAAC,MAAM,sCAAsC,GAAG,gBAAgB,CAAC;AAEvE,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgK5C,CAAC;AAEF,MAAM,UAAU,iCAAiC;IAC/C,OAAO;QACL,IAAI,EAAE,GAAG,sCAAsC,KAAK;QACpD,OAAO,EAAE,6BAA6B;QACtC,IAAI,EAAE,KAAK;KACZ,CAAC;AACJ,CAAC"}
|
package/dist/fastapi-route.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* buildRouteArtifact — main route artifact builder
|
|
7
7
|
*/
|
|
8
8
|
import { getChildren, getFirstChild, getProps } from '@kernlang/core';
|
|
9
|
+
import { normalizeKernHmacAlgorithm } from '@kernlang/core/runtime';
|
|
9
10
|
import { emitNativeKernBodyPythonWithImports } from './codegen-body-python.js';
|
|
10
11
|
import { generatePortableHandlerFastAPI, generatePortableStreamFastAPI, hasPortableStreamBodyFastAPI, } from './fastapi-portable.js';
|
|
11
12
|
import { hasObjectShorthandOutsideStrings, isUnsupportedJsHandlerBody, stripStringsForJsCheck, unsupportedRawHandlerBody, } from './fastapi-raw-handler.js';
|
|
@@ -255,6 +256,52 @@ function replaceJsLiteralsOutsideStrings(expr) {
|
|
|
255
256
|
}
|
|
256
257
|
return output;
|
|
257
258
|
}
|
|
259
|
+
function pyPolicyDescriptor(policyNodes, method, path) {
|
|
260
|
+
const policies = policyNodes.map((node, index) => {
|
|
261
|
+
const props = getProps(node);
|
|
262
|
+
const kind = String(props.kind || 'passthrough');
|
|
263
|
+
const name = String(props.name || `Policy${index + 1}`);
|
|
264
|
+
// Route-child policies bypass the core manifest loader, so this emitter
|
|
265
|
+
// must enforce the same fail-closed plan validation policySlotPlan does
|
|
266
|
+
// — otherwise a negative minGroundingCoverage silently disables the
|
|
267
|
+
// grounding threshold at runtime (coverage < negative is never true).
|
|
268
|
+
const minGroundingCoverage = Number(props.minGroundingCoverage ?? 1);
|
|
269
|
+
if (kind === 'rag-review' && !(minGroundingCoverage >= 0 && minGroundingCoverage <= 1)) {
|
|
270
|
+
throw new Error(`fastapi emitter: policy ${name} minGroundingCoverage must be between 0 and 1`);
|
|
271
|
+
}
|
|
272
|
+
// Same fail-closed rule as core's loader for the HMAC signature encoding:
|
|
273
|
+
// anything other than the two supported encodings must fail the BUILD.
|
|
274
|
+
// Emitted verbatim it reaches generated runtime code, where the Python
|
|
275
|
+
// runtime treats every non-hex value as base64 — silently drifted
|
|
276
|
+
// semantics instead of a build error.
|
|
277
|
+
const encoding = String(props.encoding || 'hex');
|
|
278
|
+
if (kind === 'hmacSignature' && encoding !== 'hex' && encoding !== 'base64') {
|
|
279
|
+
throw new Error(`fastapi emitter: policy ${name} hmacSignature encoding must be hex or base64`);
|
|
280
|
+
}
|
|
281
|
+
const plan = kind === 'auth'
|
|
282
|
+
? `{"kind": "auth", "verifierRef": "${escapePyStr(String(props.verifierRef || props.ref || 'default'))}", "credentialHeader": "${escapePyStr(String(props.credentialHeader || 'authorization').toLowerCase())}"}`
|
|
283
|
+
: kind === 'hmacSignature'
|
|
284
|
+
? `{"kind": "hmacSignature", "keyRef": "${escapePyStr(String(props.keyRef || 'default'))}", "algorithm": "${escapePyStr(normalizeKernHmacAlgorithm(String(props.algorithm || 'sha256')))}", "signatureHeader": "${escapePyStr(String(props.signatureHeader || 'x-signature').toLowerCase())}", "encoding": "${escapePyStr(encoding)}"${props.prefix ? `, "prefix": "${escapePyStr(String(props.prefix))}"` : ''}}`
|
|
285
|
+
: kind === 'rag-review'
|
|
286
|
+
? `{"kind": "rag-review", "queryField": "query", "answerField": "answer", "citedChunkIdsField": "citedChunkIds", "groundingSpansField": "groundingSpans", "minGroundingCoverage": ${minGroundingCoverage}}`
|
|
287
|
+
: kind === 'passthrough'
|
|
288
|
+
? `{"kind": "passthrough"}`
|
|
289
|
+
: (() => {
|
|
290
|
+
// A kind this leg cannot execute must fail the build — emitting
|
|
291
|
+
// a passthrough here would ship an unguarded route.
|
|
292
|
+
throw new Error(`fastapi emitter: unsupported pre-slot policy kind '${kind}' for policy ${name}`);
|
|
293
|
+
})();
|
|
294
|
+
// `props` is a raw IR node.props blob — JSON.stringify's output is a
|
|
295
|
+
// JS-object-literal-compatible subset of JSON that happens to double as
|
|
296
|
+
// Python syntax for strings/numbers/nested structures, but JSON's
|
|
297
|
+
// `true`/`false`/`null` are NameErrors in Python. Round-trip through
|
|
298
|
+
// json.loads(...) so ANY JSON-representable prop value (not just the
|
|
299
|
+
// string/number props this emitter currently reads) lowers correctly.
|
|
300
|
+
const propsJson = escapePyStr(JSON.stringify(props));
|
|
301
|
+
return `{"node": {"type": "policy", "props": json.loads("${propsJson}"), "children": []}, "name": "${escapePyStr(name)}", "slot": "pre", "kind": "${escapePyStr(kind)}", "handler": "main", "requires": [], "plan": ${plan}, "label": "policy ${escapePyStr(name)}"}`;
|
|
302
|
+
});
|
|
303
|
+
return `{"node": {"type": "route", "props": {}, "children": []}, "kind": "route", "name": "GeneratedRoute", "path": "${escapePyStr(path)}", "sourcePath": "./generated.kern", "handler": "main", "policies": [], "prePolicies": [${policies.join(', ')}], "postPolicies": [], "appCapabilities": [], "entryCapabilities": [], "policyCapabilities": [], "declaredCapabilities": [], "requiredCapabilities": [], "requiredSyncCapabilities": [], "requiredAsyncCapabilities": [], "label": "route GeneratedRoute", "method": "${escapePyStr(method)}", "key": "${escapePyStr(method.toUpperCase())} ${escapePyStr(path)}"}`;
|
|
304
|
+
}
|
|
258
305
|
function lowerJsValueExpressionForPython(expr) {
|
|
259
306
|
return quoteObjectKeysOutsideStrings(replaceJsLiteralsOutsideStrings(expr.trim().replace(/;$/, '')));
|
|
260
307
|
}
|
|
@@ -579,6 +626,15 @@ routeAuthModuleSpec = 'auth') {
|
|
|
579
626
|
imports.add('import asyncio');
|
|
580
627
|
}
|
|
581
628
|
// v3 route children: params, auth, validate, error, middleware
|
|
629
|
+
const policyNodes = getChildren(routeNode, 'policy');
|
|
630
|
+
const hasPolicyNodes = policyNodes.length > 0;
|
|
631
|
+
const hmacPolicyNodes = policyNodes.filter((node) => String(getProps(node).kind || '') === 'hmacSignature');
|
|
632
|
+
if (hasPolicyNodes) {
|
|
633
|
+
imports.add('from fastapi import Request, HTTPException');
|
|
634
|
+
}
|
|
635
|
+
if (hmacPolicyNodes.length > 0) {
|
|
636
|
+
imports.add('import hmac');
|
|
637
|
+
}
|
|
582
638
|
const paramsNodes = getChildren(routeNode, 'params');
|
|
583
639
|
const queryParams = [];
|
|
584
640
|
for (const paramNode of paramsNodes) {
|
|
@@ -656,6 +712,39 @@ routeAuthModuleSpec = 'auth') {
|
|
|
656
712
|
}
|
|
657
713
|
// Generate handler body lines first (may add to imports)
|
|
658
714
|
const bodyLines = [];
|
|
715
|
+
if (hasPolicyNodes) {
|
|
716
|
+
imports.add('import json');
|
|
717
|
+
bodyLines.push(`__kern_route_policy_entry = ${pyPolicyDescriptor(policyNodes, normalizedMethod, fastapiPath)}`);
|
|
718
|
+
if (hmacPolicyNodes.length > 0) {
|
|
719
|
+
bodyLines.push(`# HMAC compare must use hmac.compare_digest; core policy runtime owns guard meaning.`);
|
|
720
|
+
bodyLines.push(`__kern_hmac_compare = hmac.compare_digest`);
|
|
721
|
+
}
|
|
722
|
+
// Fail-closed fallback for `request.app.state.execute_kern_policy_slot`.
|
|
723
|
+
// transpileFastAPI installs the real executor on `app.state` whenever any
|
|
724
|
+
// route declares a policy (see fastapi-policy-runtime.ts); this fallback
|
|
725
|
+
// only fires if a route module is imported/mounted outside that app
|
|
726
|
+
// construction path — it denies instead of raising AttributeError.
|
|
727
|
+
bodyLines.push('async def __kern_policy_runtime_missing(entry, slot, facts):');
|
|
728
|
+
bodyLines.push(' return [{"action": "deny", "status": 401, "body": {"error": "policy_denied", "reason": "policy runtime not installed"}}]');
|
|
729
|
+
bodyLines.push('');
|
|
730
|
+
// The pre-policy slot runs as a FastAPI DEPENDENCY placed first in the
|
|
731
|
+
// endpoint signature, so it executes before every user-level dependency
|
|
732
|
+
// (auth Depends, validate Depends, route middleware Depends) — FastAPI
|
|
733
|
+
// solves sub-dependencies sequentially in signature order. Running the
|
|
734
|
+
// guard inside the endpoint body — the previous shape — let user
|
|
735
|
+
// dependencies observe or reject the request ahead of a policy denial.
|
|
736
|
+
// Reading the raw bytes here is safe and cache-friendly: Starlette memoizes
|
|
737
|
+
// request.body(), so the post-allow model construction in the endpoint
|
|
738
|
+
// reuses the SAME bytes the guard verified.
|
|
739
|
+
bodyLines.push('async def __kern_pre_policy_gate(request: Request):');
|
|
740
|
+
bodyLines.push(' __kern_raw_body = await request.body()');
|
|
741
|
+
bodyLines.push(' __kern_policy_facts = getattr(request.app.state, "kern_policy_facts", lambda request, raw_body: {"headers": dict(request.headers), "rawBody": raw_body})(request, __kern_raw_body)');
|
|
742
|
+
bodyLines.push(' __kern_decision = await getattr(request.app.state, "execute_kern_policy_slot", __kern_policy_runtime_missing)(__kern_route_policy_entry, "pre", __kern_policy_facts)');
|
|
743
|
+
bodyLines.push(' __kern_denied = next((p for p in __kern_decision if p.get("action") == "deny"), None)');
|
|
744
|
+
bodyLines.push(' if __kern_denied is not None:');
|
|
745
|
+
bodyLines.push(' raise HTTPException(status_code=__kern_denied.get("status", 401), detail=__kern_denied.get("body", {"error": "policy_denied"}))');
|
|
746
|
+
bodyLines.push('');
|
|
747
|
+
}
|
|
659
748
|
// Route handler
|
|
660
749
|
if (caps.hasStream) {
|
|
661
750
|
// Portable stream bodies remap `body.<camelField>` to the snake_case
|
|
@@ -681,6 +770,10 @@ routeAuthModuleSpec = 'auth') {
|
|
|
681
770
|
// the block-scope rename (post-agon-review #f1afb9b3; production-caller
|
|
682
771
|
// fix for nero Challenge 2). Order matches paramParts pushes 1:1.
|
|
683
772
|
const paramNames = [];
|
|
773
|
+
if (hasPolicyNodes) {
|
|
774
|
+
paramParts.push('request: Request');
|
|
775
|
+
paramNames.push('request');
|
|
776
|
+
}
|
|
684
777
|
for (const param of pathParams) {
|
|
685
778
|
paramParts.push(`${param}: str`);
|
|
686
779
|
paramNames.push(param);
|
|
@@ -697,8 +790,22 @@ routeAuthModuleSpec = 'auth') {
|
|
|
697
790
|
}
|
|
698
791
|
paramNames.push(snake);
|
|
699
792
|
}
|
|
793
|
+
// A policy-guarded route with a declared body schema must NOT bind a
|
|
794
|
+
// Pydantic body model directly in the def signature — the presence of ANY
|
|
795
|
+
// body field makes FastAPI read and parse the request body BEFORE
|
|
796
|
+
// dependencies run, which would let Pydantic reject (422) or consume the
|
|
797
|
+
// raw body ahead of the pre-slot guard. The model is instead constructed
|
|
798
|
+
// from the raw bytes AFTER an allow decision, further down. This applies
|
|
799
|
+
// identically to the inline `schema.body` model (RequestBody) and a
|
|
800
|
+
// `validate` schema bound as a body param. The name still claims `body`
|
|
801
|
+
// in paramNames so a native KERN `let body` inside the handler still
|
|
802
|
+
// triggers the shadow-rename protection.
|
|
803
|
+
let deferredBodyModel;
|
|
700
804
|
if (schema.body) {
|
|
701
|
-
|
|
805
|
+
if (hasPolicyNodes)
|
|
806
|
+
deferredBodyModel = 'RequestBody';
|
|
807
|
+
else
|
|
808
|
+
paramParts.push('body: RequestBody');
|
|
702
809
|
paramNames.push('body');
|
|
703
810
|
}
|
|
704
811
|
// v3 validate — method-aware: body param for POST/PUT/PATCH, Depends for GET/DELETE
|
|
@@ -707,7 +814,10 @@ routeAuthModuleSpec = 'auth') {
|
|
|
707
814
|
if (validateSchema) {
|
|
708
815
|
const bodyMethods = new Set(['post', 'put', 'patch']);
|
|
709
816
|
if (bodyMethods.has(normalizedMethod)) {
|
|
710
|
-
|
|
817
|
+
if (hasPolicyNodes)
|
|
818
|
+
deferredBodyModel = validateSchema;
|
|
819
|
+
else
|
|
820
|
+
paramParts.push(`body: ${validateSchema}`);
|
|
711
821
|
paramNames.push('body');
|
|
712
822
|
}
|
|
713
823
|
else {
|
|
@@ -717,6 +827,14 @@ routeAuthModuleSpec = 'auth') {
|
|
|
717
827
|
}
|
|
718
828
|
}
|
|
719
829
|
}
|
|
830
|
+
// Pre-policy gate dependency — FIRST dependency in the signature, so it
|
|
831
|
+
// runs before validate/middleware/auth Depends (see the gate emission
|
|
832
|
+
// above for the ordering rationale).
|
|
833
|
+
if (hasPolicyNodes) {
|
|
834
|
+
imports.add('from fastapi import Depends');
|
|
835
|
+
paramParts.push('__kern_policy_gate = Depends(__kern_pre_policy_gate)');
|
|
836
|
+
paramNames.push('__kern_policy_gate');
|
|
837
|
+
}
|
|
720
838
|
// v3 route-level middleware → Depends()
|
|
721
839
|
for (const dep of middlewareDeps) {
|
|
722
840
|
paramParts.push(`_${dep} = Depends(${dep})`);
|
|
@@ -738,6 +856,18 @@ routeAuthModuleSpec = 'auth') {
|
|
|
738
856
|
const paramStr = paramParts.join(', ');
|
|
739
857
|
bodyLines.push(`@router.${normalizedMethod}("${fastapiPath}")`);
|
|
740
858
|
bodyLines.push(`async def ${toSnakeCase(normalizedMethod)}_${slugify(fastapiPath)}(${paramStr}):`);
|
|
859
|
+
if (hasPolicyNodes && deferredBodyModel) {
|
|
860
|
+
// Only reachable past the gate dependency's allow decision — the
|
|
861
|
+
// Pydantic model is constructed from the SAME raw bytes the guard
|
|
862
|
+
// verified (request.body() is memoized by Starlette), so the handler
|
|
863
|
+
// still receives the parsed model (H7) without giving Pydantic a
|
|
864
|
+
// chance to run ahead of the guard.
|
|
865
|
+
bodyLines.push(` __kern_raw_body = await request.body()`);
|
|
866
|
+
bodyLines.push(' try:');
|
|
867
|
+
bodyLines.push(` body = ${deferredBodyModel}.model_validate_json(__kern_raw_body)`);
|
|
868
|
+
bodyLines.push(' except Exception as __kern_body_error:');
|
|
869
|
+
bodyLines.push(' raise HTTPException(status_code=422, detail=str(__kern_body_error))');
|
|
870
|
+
}
|
|
741
871
|
// v3 error contract as docstring
|
|
742
872
|
if (errorNodes.length > 0) {
|
|
743
873
|
bodyLines.push(` """Errors: ${errorNodes.map((n) => `${getProps(n).status} ${getProps(n).message || ''}`).join(', ')}"""`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastapi-route.js","sourceRoot":"","sources":["../src/fastapi-route.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fastapi-route.js","sourceRoot":"","sources":["../src/fastapi-route.ts"],"names":[],"mappings":"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"}
|