Skip to content

Commit 794a553

Browse files
committed
Reject AX boundary vocabulary
1 parent 03d6ad4 commit 794a553

2 files changed

Lines changed: 81 additions & 1 deletion

File tree

lib/app_kit/boundary/no_bypass.ex

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,21 @@ defmodule AppKit.Boundary.NoBypass do
6868
"Oban",
6969
"Postgrex",
7070
"Repo",
71-
"Temporalex"
71+
"Temporalex",
72+
"AgentInterop",
73+
"AgentRuntimeReceipt",
74+
"AgentTurnLedger",
75+
"AxRuntime",
76+
"AxSidecar",
77+
"AxGrpc",
78+
"AXGrpc",
79+
"ControllerService.Exec",
80+
"System.cmd(\"ax\"",
81+
"ax serve",
82+
"A2ABridge",
83+
"A2A.",
84+
"generated A2A",
85+
"generated AX proto"
7286
]
7387

7488
@hazmat_forbidden [
@@ -318,6 +332,28 @@ defmodule AppKit.Boundary.NoBypass do
318332
defp forbidden_line?("Oban", line), do: String.contains?(line, "Oban.")
319333
defp forbidden_line?("Postgrex", line), do: String.contains?(line, "Postgrex")
320334
defp forbidden_line?("Temporalex", line), do: String.contains?(line, "Temporalex.")
335+
defp forbidden_line?("AgentInterop", line), do: String.contains?(line, "AgentInterop.")
336+
337+
defp forbidden_line?("AgentRuntimeReceipt", line),
338+
do: String.contains?(line, "AgentRuntimeReceipt")
339+
340+
defp forbidden_line?("AgentTurnLedger", line), do: String.contains?(line, "AgentTurnLedger")
341+
defp forbidden_line?("AxRuntime", line), do: String.contains?(line, "AxRuntime.")
342+
defp forbidden_line?("AxSidecar", line), do: String.contains?(line, "AxSidecar.")
343+
defp forbidden_line?("AxGrpc", line), do: String.contains?(line, "AxGrpc.")
344+
defp forbidden_line?("AXGrpc", line), do: String.contains?(line, "AXGrpc.")
345+
346+
defp forbidden_line?("ControllerService.Exec", line),
347+
do: String.contains?(line, "ControllerService.Exec")
348+
349+
defp forbidden_line?("System.cmd(\"ax\"", line), do: String.contains?(line, "System.cmd(\"ax\"")
350+
defp forbidden_line?("ax serve", line), do: String.contains?(line, "ax serve")
351+
defp forbidden_line?("A2ABridge", line), do: String.contains?(line, "A2ABridge.")
352+
defp forbidden_line?("A2A.", line), do: String.contains?(line, "A2A.")
353+
defp forbidden_line?("generated A2A", line), do: String.contains?(line, "generated A2A")
354+
355+
defp forbidden_line?("generated AX proto", line),
356+
do: String.contains?(line, "generated AX proto")
321357

322358
defp forbidden_line?(_name, _line), do: false
323359
end

test/app_kit/no_bypass_test.exs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,50 @@ defmodule AppKit.NoBypassTest do
161161
report.violations
162162
end
163163

164+
test "product profile rejects AX and A2A runtime vocabulary" do
165+
root =
166+
write_product_file!("""
167+
alias AxRuntime.Session
168+
alias AxSidecar.Supervisor
169+
alias AxGrpc.Controller
170+
alias AXGrpc.Generated.ControllerService
171+
alias A2ABridge.Server
172+
alias A2A.Protocol.Message
173+
ControllerService.Exec.call(%{})
174+
System.cmd("ax", ["serve"])
175+
"ax serve"
176+
"generated A2A"
177+
"generated AX proto"
178+
alias AgentInterop.Descriptor
179+
alias AgentRuntimeReceipt.Event
180+
alias AgentTurnLedger.Row
181+
""")
182+
183+
assert {:error, report} =
184+
NoBypass.scan(
185+
root: root,
186+
profiles: [:product],
187+
include: ["lib/**/*.ex"]
188+
)
189+
190+
forbidden = Enum.map(report.violations, & &1.forbidden)
191+
192+
assert "AxRuntime" in forbidden
193+
assert "AxSidecar" in forbidden
194+
assert "AxGrpc" in forbidden
195+
assert "AXGrpc" in forbidden
196+
assert "ControllerService.Exec" in forbidden
197+
assert "System.cmd(\"ax\"" in forbidden
198+
assert "ax serve" in forbidden
199+
assert "A2ABridge" in forbidden
200+
assert "A2A." in forbidden
201+
assert "generated A2A" in forbidden
202+
assert "generated AX proto" in forbidden
203+
assert "AgentInterop" in forbidden
204+
assert "AgentRuntimeReceipt" in forbidden
205+
assert "AgentTurnLedger" in forbidden
206+
end
207+
164208
test "defaults to the product profile" do
165209
root = write_product_file!("alias Jido.Integration.V2.BrainIngress\n")
166210

0 commit comments

Comments
 (0)