@axtary/policy 0.0.1

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/README.md ADDED
@@ -0,0 +1,19 @@
1
+ # @axtary/policy
2
+
3
+ Deterministic policy evaluation and Cedar/OPA mappings for Axtary agent actions.
4
+
5
+ This package is private workspace code while the policy surface is still being shaped.
6
+
7
+ ## What It Does
8
+
9
+ - Evaluates normalized Axtary actions against a local policy config.
10
+ - Returns `allow`, `deny`, or `step_up` decisions.
11
+ - Ships first guardrails for GitHub PRs, GitHub content reads/writes, Slack posts, and Linear/Jira issue actions.
12
+ - Maps the same normalized action into Cedar-style principal/action/resource/context.
13
+ - Exposes OPA/Rego-compatible input JSON.
14
+
15
+ ## Design Notes
16
+
17
+ The normalized action schema from `@axtary/actionpass` remains the source of truth. Policy evaluation is deterministic and fail-closed for unknown protected tools.
18
+
19
+ This package stays format-agnostic. `@axtary/config` loads YAML and passes the parsed policy object into this evaluator so the same deterministic decision path can be used by tests, the local proxy, and future MCP wrappers.
@@ -0,0 +1,241 @@
1
+ import { type JsonValue, type NormalizedAction, type PolicyDecision } from "@axtary/actionpass";
2
+ import { z } from "zod";
3
+ export declare const POLICY_SCHEMA_VERSION = "axtary.policy.v0";
4
+ export declare const PolicyConfigSchema: z.ZodObject<{
5
+ version: z.ZodDefault<z.ZodString>;
6
+ github: z.ZodDefault<z.ZodObject<{
7
+ pullRequests: z.ZodDefault<z.ZodObject<{
8
+ enabled: z.ZodDefault<z.ZodBoolean>;
9
+ requiredBaseBranch: z.ZodDefault<z.ZodString>;
10
+ maxFilesChanged: z.ZodDefault<z.ZodNumber>;
11
+ denyPathPrefixes: z.ZodDefault<z.ZodArray<z.ZodString>>;
12
+ stepUpPathPrefixes: z.ZodDefault<z.ZodArray<z.ZodString>>;
13
+ requiresTests: z.ZodDefault<z.ZodBoolean>;
14
+ }, z.core.$strip>>;
15
+ contents: z.ZodDefault<z.ZodObject<{
16
+ enabled: z.ZodDefault<z.ZodBoolean>;
17
+ denyReadPathPrefixes: z.ZodDefault<z.ZodArray<z.ZodString>>;
18
+ }, z.core.$strip>>;
19
+ }, z.core.$strip>>;
20
+ slack: z.ZodDefault<z.ZodObject<{
21
+ messages: z.ZodDefault<z.ZodObject<{
22
+ enabled: z.ZodDefault<z.ZodBoolean>;
23
+ allowedChannels: z.ZodDefault<z.ZodArray<z.ZodString>>;
24
+ stepUpExternalRecipients: z.ZodDefault<z.ZodBoolean>;
25
+ }, z.core.$strip>>;
26
+ }, z.core.$strip>>;
27
+ issueTrackers: z.ZodDefault<z.ZodObject<{
28
+ linear: z.ZodDefault<z.ZodObject<{
29
+ enabled: z.ZodDefault<z.ZodBoolean>;
30
+ allowedProjectKeys: z.ZodDefault<z.ZodArray<z.ZodString>>;
31
+ stepUpStatuses: z.ZodDefault<z.ZodArray<z.ZodString>>;
32
+ }, z.core.$strip>>;
33
+ jira: z.ZodDefault<z.ZodObject<{
34
+ enabled: z.ZodDefault<z.ZodBoolean>;
35
+ allowedProjectKeys: z.ZodDefault<z.ZodArray<z.ZodString>>;
36
+ stepUpStatuses: z.ZodDefault<z.ZodArray<z.ZodString>>;
37
+ }, z.core.$strip>>;
38
+ }, z.core.$strip>>;
39
+ cloud: z.ZodDefault<z.ZodObject<{
40
+ aws: z.ZodDefault<z.ZodObject<{
41
+ enabled: z.ZodDefault<z.ZodBoolean>;
42
+ allowedAccountIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
43
+ allowedRegions: z.ZodDefault<z.ZodArray<z.ZodString>>;
44
+ allowedS3Buckets: z.ZodDefault<z.ZodArray<z.ZodString>>;
45
+ denyObjectKeyPrefixes: z.ZodDefault<z.ZodArray<z.ZodString>>;
46
+ }, z.core.$strip>>;
47
+ gcp: z.ZodDefault<z.ZodObject<{
48
+ enabled: z.ZodDefault<z.ZodBoolean>;
49
+ allowedProjectIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
50
+ allowedStorageBuckets: z.ZodDefault<z.ZodArray<z.ZodString>>;
51
+ denyObjectNamePrefixes: z.ZodDefault<z.ZodArray<z.ZodString>>;
52
+ }, z.core.$strip>>;
53
+ }, z.core.$strip>>;
54
+ mcp: z.ZodDefault<z.ZodObject<{
55
+ enabled: z.ZodDefault<z.ZodBoolean>;
56
+ allowedTools: z.ZodDefault<z.ZodArray<z.ZodObject<{
57
+ serverIdentity: z.ZodString;
58
+ toolName: z.ZodString;
59
+ definitionHash: z.ZodString;
60
+ }, z.core.$strip>>>;
61
+ }, z.core.$strip>>;
62
+ docs: z.ZodDefault<z.ZodObject<{
63
+ documents: z.ZodDefault<z.ZodObject<{
64
+ enabled: z.ZodDefault<z.ZodBoolean>;
65
+ allowedWorkspaces: z.ZodDefault<z.ZodArray<z.ZodString>>;
66
+ allowedPathPrefixes: z.ZodDefault<z.ZodArray<z.ZodString>>;
67
+ denyPathPrefixes: z.ZodDefault<z.ZodArray<z.ZodString>>;
68
+ maxSearchResults: z.ZodDefault<z.ZodNumber>;
69
+ maxReadBytes: z.ZodDefault<z.ZodNumber>;
70
+ }, z.core.$strip>>;
71
+ }, z.core.$strip>>;
72
+ }, z.core.$strip>;
73
+ export type PolicyConfig = z.infer<typeof PolicyConfigSchema>;
74
+ export type CedarEntityRef = {
75
+ type: string;
76
+ id: string;
77
+ };
78
+ export type CedarAuthorizationRequest = {
79
+ principal: CedarEntityRef;
80
+ action: CedarEntityRef;
81
+ resource: CedarEntityRef;
82
+ context: Record<string, JsonValue>;
83
+ };
84
+ export type OpaInput = {
85
+ input: {
86
+ schemaVersion: typeof POLICY_SCHEMA_VERSION;
87
+ action: NormalizedAction;
88
+ };
89
+ };
90
+ type DeepPartial<T> = {
91
+ [K in keyof T]?: T[K] extends Array<infer U> ? Array<U> : T[K] extends object ? DeepPartial<T[K]> : T[K];
92
+ };
93
+ export type PolicyConfigPatch = DeepPartial<PolicyConfig>;
94
+ export type PolicyTemplateCategory = "coding_agent" | "cloud_read" | "production_change" | "identity_mutation" | "external_communication" | "docs_read";
95
+ export type PolicyTemplate = {
96
+ id: string;
97
+ name: string;
98
+ category: PolicyTemplateCategory;
99
+ summary: string;
100
+ tools: string[];
101
+ decisionModel: "allow" | "deny" | "step_up" | "deny_until_scoped";
102
+ config: PolicyConfigPatch;
103
+ evidence: string[];
104
+ notes: string[];
105
+ };
106
+ export declare const PolicyFixtureInputSchema: z.ZodObject<{
107
+ id: z.ZodOptional<z.ZodString>;
108
+ name: z.ZodOptional<z.ZodString>;
109
+ expectedDecision: z.ZodEnum<{
110
+ allow: "allow";
111
+ deny: "deny";
112
+ step_up: "step_up";
113
+ }>;
114
+ expectedReasons: z.ZodOptional<z.ZodArray<z.ZodString>>;
115
+ action: z.ZodObject<{
116
+ schemaVersion: z.ZodDefault<z.ZodLiteral<"axtary.action.v0">>;
117
+ actor: z.ZodObject<{
118
+ agentId: z.ZodString;
119
+ humanOwner: z.ZodString;
120
+ runtime: z.ZodString;
121
+ tenant: z.ZodOptional<z.ZodString>;
122
+ }, z.core.$strip>;
123
+ intent: z.ZodObject<{
124
+ taskId: z.ZodString;
125
+ declaredGoal: z.ZodString;
126
+ maxDelegationDepth: z.ZodOptional<z.ZodNumber>;
127
+ }, z.core.$strip>;
128
+ capability: z.ZodObject<{
129
+ tool: z.ZodString;
130
+ resource: z.ZodString;
131
+ payload: z.ZodRecord<z.ZodString, z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
132
+ constraints: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
133
+ }, z.core.$strip>;
134
+ toolDefinition: z.ZodOptional<z.ZodObject<{
135
+ serverIdentity: z.ZodString;
136
+ schemaVersion: z.ZodString;
137
+ definitionHash: z.ZodString;
138
+ }, z.core.$strip>>;
139
+ budget: z.ZodOptional<z.ZodObject<{
140
+ reservationId: z.ZodOptional<z.ZodString>;
141
+ limit: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
142
+ commitStatus: z.ZodOptional<z.ZodEnum<{
143
+ pending: "pending";
144
+ committed: "committed";
145
+ rolled_back: "rolled_back";
146
+ }>>;
147
+ }, z.core.$strip>>;
148
+ }, z.core.$strip>;
149
+ sourcePath: z.ZodOptional<z.ZodString>;
150
+ }, z.core.$strip>;
151
+ export type PolicyFixtureInput = z.infer<typeof PolicyFixtureInputSchema>;
152
+ export type PolicyFixtureSourceKind = "package_defaults" | "repo_files" | "tenant_registry" | "request_body";
153
+ export type PolicyFixtureSource = {
154
+ kind: PolicyFixtureSourceKind;
155
+ label: string;
156
+ path: string | null;
157
+ };
158
+ export type PolicyDecisionExplanation = {
159
+ label: string;
160
+ summary: string;
161
+ reviewerAction: "none" | "block" | "approval_required";
162
+ reasonDetails: Array<{
163
+ reason: string;
164
+ detail: string;
165
+ }>;
166
+ };
167
+ export type PolicyFixtureResult = {
168
+ id: string;
169
+ name: string;
170
+ tool: string;
171
+ resource: string;
172
+ expectedDecision: PolicyDecision["decision"];
173
+ actualDecision: PolicyDecision["decision"];
174
+ expectedReasons: string[] | null;
175
+ actualReasons: string[];
176
+ sourcePath: string | null;
177
+ passed: boolean;
178
+ decision: PolicyDecision;
179
+ explanation: PolicyDecisionExplanation;
180
+ cedar: CedarAuthorizationRequest;
181
+ opa: OpaInput;
182
+ };
183
+ export type PolicyReview = {
184
+ schemaVersion: typeof POLICY_SCHEMA_VERSION;
185
+ policyVersion: string;
186
+ nativeRule: string;
187
+ source: PolicyFixtureSource;
188
+ summary: {
189
+ totalFixtures: number;
190
+ passedFixtures: number;
191
+ failedFixtures: number;
192
+ allow: number;
193
+ deny: number;
194
+ stepUp: number;
195
+ };
196
+ fixtures: PolicyFixtureResult[];
197
+ };
198
+ export type PolicyTemplateFixtureOutcomeChange = {
199
+ fixtureId: string;
200
+ name: string;
201
+ tool: string;
202
+ beforeDecision: PolicyDecision["decision"];
203
+ afterDecision: PolicyDecision["decision"];
204
+ beforePassed: boolean;
205
+ afterPassed: boolean;
206
+ beforeReasons: string[];
207
+ afterReasons: string[];
208
+ };
209
+ export type PolicyTemplatePreview = {
210
+ templateId: string;
211
+ name: string;
212
+ category: PolicyTemplateCategory;
213
+ decisionModel: PolicyTemplate["decisionModel"];
214
+ changedSections: string[];
215
+ evidence: string[];
216
+ fixtureOutcomeSummary: {
217
+ totalFixtures: number;
218
+ changedFixtures: number;
219
+ newlyFailingFixtures: number;
220
+ newlyPassingFixtures: number;
221
+ };
222
+ fixtureOutcomeChanges: PolicyTemplateFixtureOutcomeChange[];
223
+ resultingConfig: PolicyConfig;
224
+ };
225
+ export declare const DEFAULT_POLICY_CONFIG: PolicyConfig;
226
+ export declare const DEFAULT_POLICY_FIXTURE_SOURCE: PolicyFixtureSource;
227
+ export declare const POLICY_TEMPLATES: PolicyTemplate[];
228
+ export declare const DEFAULT_POLICY_REVIEW_FIXTURES: PolicyFixtureInput[];
229
+ export declare function getPolicyTemplates(): PolicyTemplate[];
230
+ export declare function getPolicyTemplate(id: string): PolicyTemplate | null;
231
+ export declare function mergePolicyConfig(baseInput?: PolicyConfigPatch, patchInput?: PolicyConfigPatch): PolicyConfig;
232
+ export declare function applyPolicyTemplate(baseInput: PolicyConfigPatch, templateId: string): PolicyConfig;
233
+ export declare function explainPolicyDecision(decisionInput: PolicyDecision): PolicyDecisionExplanation;
234
+ export declare function runPolicyFixtures(configInput?: PolicyConfigPatch, fixtureInputs?: PolicyFixtureInput[]): PolicyFixtureResult[];
235
+ export declare function buildPolicyReview(configInput?: PolicyConfigPatch, fixtureInputs?: PolicyFixtureInput[], source?: PolicyFixtureSource): PolicyReview;
236
+ export declare function previewPolicyTemplates(configInput?: PolicyConfigPatch, templates?: PolicyTemplate[], fixtureInputs?: PolicyFixtureInput[]): PolicyTemplatePreview[];
237
+ export declare function evaluatePolicy(actionInput: unknown, configInput?: PolicyConfigPatch): PolicyDecision;
238
+ export declare function toCedarRequest(actionInput: unknown): CedarAuthorizationRequest;
239
+ export declare function toOpaInput(actionInput: unknown): OpaInput;
240
+ export {};
241
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}