@axtary/config 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,86 @@
1
+ # @axtary/config
2
+
3
+ YAML configuration loading for local Axtary runtime packages.
4
+
5
+ This package is private workspace code while `axtary proxy --config axtary.yml` is being shaped.
6
+
7
+ ## What It Does
8
+
9
+ - Parses `axtary.yml` text into a typed runtime config.
10
+ - Applies defaults for issuer, tenant, ledger path, runtime mode, adapters, and policy.
11
+ - Normalizes policy through `@axtary/policy`.
12
+ - Resolves ledger paths relative to the config file or current working directory.
13
+ - Emits a default config template for demos.
14
+ - Provides `CachedConfigLoader` for long-running local proxy sessions.
15
+
16
+ ## Adapter Config
17
+
18
+ GitHub defaults to fake mode:
19
+
20
+ ```yaml
21
+ adapters:
22
+ github:
23
+ mode: fake
24
+ ```
25
+
26
+ To route allowed GitHub actions to the real REST API, set:
27
+
28
+ ```yaml
29
+ adapters:
30
+ github:
31
+ mode: rest
32
+ tokenEnv: GITHUB_TOKEN
33
+ apiBaseUrl: https://api.github.com
34
+ userAgent: axtary-local-proxy
35
+ ```
36
+
37
+ Slack and Linear follow the same fake-first pattern:
38
+
39
+ ```yaml
40
+ adapters:
41
+ slack:
42
+ mode: web
43
+ tokenEnv: SLACK_BOT_TOKEN
44
+ apiBaseUrl: https://slack.com/api
45
+ linear:
46
+ mode: graphql
47
+ tokenEnv: LINEAR_API_KEY
48
+ apiUrl: https://api.linear.app/graphql
49
+ ```
50
+
51
+ The CLI reads tokens from the named environment variables. Keep fake mode for demos and tests.
52
+
53
+ Local docs are enabled by default and resolve roots relative to the config file:
54
+
55
+ ```yaml
56
+ adapters:
57
+ docs:
58
+ mode: local
59
+ workspace: local
60
+ roots:
61
+ - docs
62
+ - product
63
+ maxSearchResults: 10
64
+ maxReadBytes: 20000
65
+ ```
66
+
67
+ Pair this with `policy.docs.documents` to scope allowed workspaces, readable path prefixes, denied prefixes, and per-action limits.
68
+
69
+ ## Runtime Latency Guard
70
+
71
+ ```yaml
72
+ runtime:
73
+ handlerTimeoutMs: 10000
74
+ ```
75
+
76
+ Handlers that exceed the timeout fail closed with `proxy_handler_timeout:<ms>ms`. Proxy responses include per-stage timings so local runs can track policy, signing, ledger, and adapter latency.
77
+
78
+ ## Cached Loading And Hot Reload
79
+
80
+ `CachedConfigLoader` caches parsed configs and checks the config file mtime on `getConfig()`. File-backed configs reload automatically when `axtary.yml` changes, which lets the local proxy pick up policy edits without a restart.
81
+
82
+ If a file-backed config disappears or becomes unreadable, the loader throws instead of silently serving stale policy. The proxy records that as a fail-closed policy-resolution denial.
83
+
84
+ ## Design Notes
85
+
86
+ Config parsing is intentionally separate from the CLI so adapters, tests, and future MCP wrappers can all share the same file format.
@@ -0,0 +1,110 @@
1
+ import { z } from "zod";
2
+ import { type PolicyConfig } from "@axtary/policy";
3
+ export declare const AXTARY_CONFIG_SCHEMA_VERSION = "axtary.config.v0";
4
+ export declare const DEFAULT_CONFIG_FILE = "axtary.yml";
5
+ export declare const DEFAULT_LEDGER_PATH = ".axtary/actions.jsonl";
6
+ export declare const RawAxtaryConfigSchema: z.ZodObject<{
7
+ schemaVersion: z.ZodDefault<z.ZodLiteral<"axtary.config.v0">>;
8
+ issuer: z.ZodDefault<z.ZodString>;
9
+ tenant: z.ZodDefault<z.ZodString>;
10
+ ledger: z.ZodDefault<z.ZodObject<{
11
+ path: z.ZodDefault<z.ZodString>;
12
+ }, z.core.$strip>>;
13
+ runtime: z.ZodDefault<z.ZodObject<{
14
+ allowUnsignedExecution: z.ZodDefault<z.ZodBoolean>;
15
+ handlerTimeoutMs: z.ZodDefault<z.ZodNumber>;
16
+ }, z.core.$strip>>;
17
+ adapters: z.ZodDefault<z.ZodObject<{
18
+ github: z.ZodDefault<z.ZodObject<{
19
+ mode: z.ZodDefault<z.ZodEnum<{
20
+ fake: "fake";
21
+ rest: "rest";
22
+ }>>;
23
+ tokenEnv: z.ZodDefault<z.ZodString>;
24
+ apiBaseUrl: z.ZodDefault<z.ZodString>;
25
+ userAgent: z.ZodDefault<z.ZodString>;
26
+ }, z.core.$strip>>;
27
+ slack: z.ZodDefault<z.ZodObject<{
28
+ mode: z.ZodDefault<z.ZodEnum<{
29
+ fake: "fake";
30
+ web: "web";
31
+ }>>;
32
+ tokenEnv: z.ZodDefault<z.ZodString>;
33
+ apiBaseUrl: z.ZodDefault<z.ZodString>;
34
+ }, z.core.$strip>>;
35
+ linear: z.ZodDefault<z.ZodObject<{
36
+ mode: z.ZodDefault<z.ZodEnum<{
37
+ fake: "fake";
38
+ graphql: "graphql";
39
+ }>>;
40
+ tokenEnv: z.ZodDefault<z.ZodString>;
41
+ apiUrl: z.ZodDefault<z.ZodString>;
42
+ }, z.core.$strip>>;
43
+ aws: z.ZodDefault<z.ZodObject<{
44
+ mode: z.ZodDefault<z.ZodEnum<{
45
+ rest: "rest";
46
+ off: "off";
47
+ }>>;
48
+ accessKeyIdEnv: z.ZodDefault<z.ZodString>;
49
+ secretAccessKeyEnv: z.ZodDefault<z.ZodString>;
50
+ sessionTokenEnv: z.ZodDefault<z.ZodString>;
51
+ region: z.ZodDefault<z.ZodString>;
52
+ stsUrl: z.ZodDefault<z.ZodString>;
53
+ }, z.core.$strip>>;
54
+ gcp: z.ZodDefault<z.ZodObject<{
55
+ mode: z.ZodDefault<z.ZodEnum<{
56
+ rest: "rest";
57
+ off: "off";
58
+ }>>;
59
+ accessTokenEnv: z.ZodDefault<z.ZodString>;
60
+ projectId: z.ZodOptional<z.ZodString>;
61
+ cloudResourceManagerApiBaseUrl: z.ZodDefault<z.ZodString>;
62
+ storageApiBaseUrl: z.ZodDefault<z.ZodString>;
63
+ }, z.core.$strip>>;
64
+ docs: z.ZodDefault<z.ZodObject<{
65
+ mode: z.ZodDefault<z.ZodEnum<{
66
+ off: "off";
67
+ local: "local";
68
+ }>>;
69
+ workspace: z.ZodDefault<z.ZodString>;
70
+ roots: z.ZodDefault<z.ZodArray<z.ZodString>>;
71
+ maxSearchResults: z.ZodDefault<z.ZodNumber>;
72
+ maxReadBytes: z.ZodDefault<z.ZodNumber>;
73
+ allowedExtensions: z.ZodDefault<z.ZodArray<z.ZodString>>;
74
+ }, z.core.$strip>>;
75
+ }, z.core.$strip>>;
76
+ policy: z.ZodOptional<z.ZodUnknown>;
77
+ demo: z.ZodDefault<z.ZodObject<{
78
+ scenario: z.ZodDefault<z.ZodEnum<{
79
+ "coding-agent": "coding-agent";
80
+ }>>;
81
+ }, z.core.$strip>>;
82
+ }, z.core.$strict>;
83
+ export type RawAxtaryConfig = z.infer<typeof RawAxtaryConfigSchema>;
84
+ export type AxtaryConfig = Omit<RawAxtaryConfig, "policy"> & {
85
+ policy: PolicyConfig;
86
+ };
87
+ export type LoadedAxtaryConfig = {
88
+ config: AxtaryConfig;
89
+ filePath: string | null;
90
+ baseDir: string;
91
+ ledgerPath: string;
92
+ };
93
+ export type LoadAxtaryConfigInput = {
94
+ filePath?: string;
95
+ cwd?: string;
96
+ };
97
+ export declare const DEFAULT_AXTARY_CONFIG_YAML: string;
98
+ export declare function parseAxtaryConfig(input: unknown): AxtaryConfig;
99
+ export declare function parseAxtaryConfigYaml(yamlText: string): AxtaryConfig;
100
+ export declare function readAxtaryConfigFile(filePath: string): Promise<AxtaryConfig>;
101
+ export declare function loadAxtaryConfig(input?: LoadAxtaryConfigInput): Promise<LoadedAxtaryConfig>;
102
+ export declare function resolveLedgerPath(config: AxtaryConfig, baseDir?: string): string;
103
+ export declare class CachedConfigLoader {
104
+ private input;
105
+ private cachedConfig;
106
+ private lastMtimeMs;
107
+ constructor(input?: LoadAxtaryConfigInput);
108
+ getConfig(): Promise<LoadedAxtaryConfig>;
109
+ }
110
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEvE,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAC/D,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAChD,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAE3D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA+JvB,CAAC;AACZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG;IAC3D,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,0BAA0B,QA8GrC,CAAC;AAEH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAO9D;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAUpE;AAED,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAIlF;AAED,wBAAsB,gBAAgB,CACpC,KAAK,GAAE,qBAA0B,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAgB7B;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,SAAgB,GAAG,MAAM,CAIvF;AAED,qBAAa,kBAAkB;IAIjB,OAAO,CAAC,KAAK;IAHzB,OAAO,CAAC,YAAY,CAAmC;IACvD,OAAO,CAAC,WAAW,CAAuB;gBAEtB,KAAK,GAAE,qBAA0B;IAE/C,SAAS,IAAI,OAAO,CAAC,kBAAkB,CAAC;CAuB/C"}
package/dist/index.js ADDED
@@ -0,0 +1,344 @@
1
+ import { readFile, stat } from "node:fs/promises";
2
+ import { dirname, isAbsolute, resolve } from "node:path";
3
+ import { parseDocument, stringify } from "yaml";
4
+ import { z } from "zod";
5
+ import { PolicyConfigSchema } from "@axtary/policy";
6
+ export const AXTARY_CONFIG_SCHEMA_VERSION = "axtary.config.v0";
7
+ export const DEFAULT_CONFIG_FILE = "axtary.yml";
8
+ export const DEFAULT_LEDGER_PATH = ".axtary/actions.jsonl";
9
+ export const RawAxtaryConfigSchema = z
10
+ .object({
11
+ schemaVersion: z
12
+ .literal(AXTARY_CONFIG_SCHEMA_VERSION)
13
+ .default(AXTARY_CONFIG_SCHEMA_VERSION),
14
+ issuer: z.string().min(1).default("https://local.axtary.dev"),
15
+ tenant: z.string().min(1).default("org:local"),
16
+ ledger: z
17
+ .object({
18
+ path: z.string().min(1).default(DEFAULT_LEDGER_PATH),
19
+ })
20
+ .default({ path: DEFAULT_LEDGER_PATH }),
21
+ runtime: z
22
+ .object({
23
+ allowUnsignedExecution: z.boolean().default(false),
24
+ handlerTimeoutMs: z.number().int().nonnegative().default(10_000),
25
+ })
26
+ .default({ allowUnsignedExecution: false, handlerTimeoutMs: 10_000 }),
27
+ adapters: z
28
+ .object({
29
+ github: z
30
+ .object({
31
+ mode: z.enum(["fake", "rest"]).default("fake"),
32
+ tokenEnv: z.string().min(1).default("GITHUB_TOKEN"),
33
+ apiBaseUrl: z.string().url().default("https://api.github.com"),
34
+ userAgent: z.string().min(1).default("axtary-local-proxy"),
35
+ })
36
+ .default({
37
+ mode: "fake",
38
+ tokenEnv: "GITHUB_TOKEN",
39
+ apiBaseUrl: "https://api.github.com",
40
+ userAgent: "axtary-local-proxy",
41
+ }),
42
+ slack: z
43
+ .object({
44
+ mode: z.enum(["fake", "web"]).default("fake"),
45
+ tokenEnv: z.string().min(1).default("SLACK_BOT_TOKEN"),
46
+ apiBaseUrl: z.string().url().default("https://slack.com/api"),
47
+ })
48
+ .default({
49
+ mode: "fake",
50
+ tokenEnv: "SLACK_BOT_TOKEN",
51
+ apiBaseUrl: "https://slack.com/api",
52
+ }),
53
+ linear: z
54
+ .object({
55
+ mode: z.enum(["fake", "graphql"]).default("fake"),
56
+ tokenEnv: z.string().min(1).default("LINEAR_API_KEY"),
57
+ apiUrl: z.string().url().default("https://api.linear.app/graphql"),
58
+ })
59
+ .default({
60
+ mode: "fake",
61
+ tokenEnv: "LINEAR_API_KEY",
62
+ apiUrl: "https://api.linear.app/graphql",
63
+ }),
64
+ aws: z
65
+ .object({
66
+ mode: z.enum(["off", "rest"]).default("off"),
67
+ accessKeyIdEnv: z.string().min(1).default("AWS_ACCESS_KEY_ID"),
68
+ secretAccessKeyEnv: z.string().min(1).default("AWS_SECRET_ACCESS_KEY"),
69
+ sessionTokenEnv: z.string().min(1).default("AWS_SESSION_TOKEN"),
70
+ region: z.string().min(1).default("us-east-1"),
71
+ stsUrl: z.string().url().default("https://sts.amazonaws.com/"),
72
+ })
73
+ .default({
74
+ mode: "off",
75
+ accessKeyIdEnv: "AWS_ACCESS_KEY_ID",
76
+ secretAccessKeyEnv: "AWS_SECRET_ACCESS_KEY",
77
+ sessionTokenEnv: "AWS_SESSION_TOKEN",
78
+ region: "us-east-1",
79
+ stsUrl: "https://sts.amazonaws.com/",
80
+ }),
81
+ gcp: z
82
+ .object({
83
+ mode: z.enum(["off", "rest"]).default("off"),
84
+ accessTokenEnv: z.string().min(1).default("GCP_ACCESS_TOKEN"),
85
+ projectId: z.string().min(1).optional(),
86
+ cloudResourceManagerApiBaseUrl: z
87
+ .string()
88
+ .url()
89
+ .default("https://cloudresourcemanager.googleapis.com"),
90
+ storageApiBaseUrl: z
91
+ .string()
92
+ .url()
93
+ .default("https://storage.googleapis.com/storage/v1"),
94
+ })
95
+ .default({
96
+ mode: "off",
97
+ accessTokenEnv: "GCP_ACCESS_TOKEN",
98
+ cloudResourceManagerApiBaseUrl: "https://cloudresourcemanager.googleapis.com",
99
+ storageApiBaseUrl: "https://storage.googleapis.com/storage/v1",
100
+ }),
101
+ docs: z
102
+ .object({
103
+ mode: z.enum(["off", "local"]).default("local"),
104
+ workspace: z.string().min(1).default("local"),
105
+ roots: z.array(z.string().min(1)).default(["docs", "product"]),
106
+ maxSearchResults: z.number().int().positive().default(10),
107
+ maxReadBytes: z.number().int().positive().default(20_000),
108
+ allowedExtensions: z
109
+ .array(z.string().min(1))
110
+ .default([".md", ".mdx", ".txt"]),
111
+ })
112
+ .default({
113
+ mode: "local",
114
+ workspace: "local",
115
+ roots: ["docs", "product"],
116
+ maxSearchResults: 10,
117
+ maxReadBytes: 20_000,
118
+ allowedExtensions: [".md", ".mdx", ".txt"],
119
+ }),
120
+ })
121
+ .default({
122
+ github: {
123
+ mode: "fake",
124
+ tokenEnv: "GITHUB_TOKEN",
125
+ apiBaseUrl: "https://api.github.com",
126
+ userAgent: "axtary-local-proxy",
127
+ },
128
+ slack: {
129
+ mode: "fake",
130
+ tokenEnv: "SLACK_BOT_TOKEN",
131
+ apiBaseUrl: "https://slack.com/api",
132
+ },
133
+ linear: {
134
+ mode: "fake",
135
+ tokenEnv: "LINEAR_API_KEY",
136
+ apiUrl: "https://api.linear.app/graphql",
137
+ },
138
+ aws: {
139
+ mode: "off",
140
+ accessKeyIdEnv: "AWS_ACCESS_KEY_ID",
141
+ secretAccessKeyEnv: "AWS_SECRET_ACCESS_KEY",
142
+ sessionTokenEnv: "AWS_SESSION_TOKEN",
143
+ region: "us-east-1",
144
+ stsUrl: "https://sts.amazonaws.com/",
145
+ },
146
+ gcp: {
147
+ mode: "off",
148
+ accessTokenEnv: "GCP_ACCESS_TOKEN",
149
+ cloudResourceManagerApiBaseUrl: "https://cloudresourcemanager.googleapis.com",
150
+ storageApiBaseUrl: "https://storage.googleapis.com/storage/v1",
151
+ },
152
+ docs: {
153
+ mode: "local",
154
+ workspace: "local",
155
+ roots: ["docs", "product"],
156
+ maxSearchResults: 10,
157
+ maxReadBytes: 20_000,
158
+ allowedExtensions: [".md", ".mdx", ".txt"],
159
+ },
160
+ }),
161
+ policy: z.unknown().optional(),
162
+ demo: z
163
+ .object({
164
+ scenario: z.enum(["coding-agent"]).default("coding-agent"),
165
+ })
166
+ .default({ scenario: "coding-agent" }),
167
+ })
168
+ .strict();
169
+ export const DEFAULT_AXTARY_CONFIG_YAML = stringify({
170
+ schemaVersion: AXTARY_CONFIG_SCHEMA_VERSION,
171
+ issuer: "https://local.axtary.dev",
172
+ tenant: "org:local",
173
+ ledger: {
174
+ path: DEFAULT_LEDGER_PATH,
175
+ },
176
+ runtime: {
177
+ allowUnsignedExecution: false,
178
+ handlerTimeoutMs: 10_000,
179
+ },
180
+ adapters: {
181
+ github: {
182
+ mode: "fake",
183
+ tokenEnv: "GITHUB_TOKEN",
184
+ apiBaseUrl: "https://api.github.com",
185
+ userAgent: "axtary-local-proxy",
186
+ },
187
+ slack: {
188
+ mode: "fake",
189
+ tokenEnv: "SLACK_BOT_TOKEN",
190
+ apiBaseUrl: "https://slack.com/api",
191
+ },
192
+ linear: {
193
+ mode: "fake",
194
+ tokenEnv: "LINEAR_API_KEY",
195
+ apiUrl: "https://api.linear.app/graphql",
196
+ },
197
+ aws: {
198
+ mode: "off",
199
+ accessKeyIdEnv: "AWS_ACCESS_KEY_ID",
200
+ secretAccessKeyEnv: "AWS_SECRET_ACCESS_KEY",
201
+ sessionTokenEnv: "AWS_SESSION_TOKEN",
202
+ region: "us-east-1",
203
+ stsUrl: "https://sts.amazonaws.com/",
204
+ },
205
+ gcp: {
206
+ mode: "off",
207
+ accessTokenEnv: "GCP_ACCESS_TOKEN",
208
+ cloudResourceManagerApiBaseUrl: "https://cloudresourcemanager.googleapis.com",
209
+ storageApiBaseUrl: "https://storage.googleapis.com/storage/v1",
210
+ },
211
+ docs: {
212
+ mode: "local",
213
+ workspace: "local",
214
+ roots: ["docs", "product"],
215
+ maxSearchResults: 10,
216
+ maxReadBytes: 20_000,
217
+ allowedExtensions: [".md", ".mdx", ".txt"],
218
+ },
219
+ },
220
+ policy: {
221
+ version: "2026-05-30",
222
+ github: {
223
+ pullRequests: {
224
+ requiredBaseBranch: "main",
225
+ maxFilesChanged: 12,
226
+ denyPathPrefixes: [".env", "secrets/"],
227
+ stepUpPathPrefixes: ["infra/prod/", "billing/", "auth/"],
228
+ requiresTests: true,
229
+ },
230
+ contents: {
231
+ denyReadPathPrefixes: [".env", "secrets/", "infra/prod/"],
232
+ },
233
+ },
234
+ slack: {
235
+ messages: {
236
+ allowedChannels: ["#axtary-dev"],
237
+ stepUpExternalRecipients: true,
238
+ },
239
+ },
240
+ issueTrackers: {
241
+ linear: {
242
+ allowedProjectKeys: ["AXT"],
243
+ stepUpStatuses: ["Done", "Closed"],
244
+ },
245
+ jira: {
246
+ allowedProjectKeys: ["AXT"],
247
+ stepUpStatuses: ["Done", "Closed"],
248
+ },
249
+ },
250
+ cloud: {
251
+ aws: {
252
+ allowedAccountIds: [],
253
+ allowedRegions: ["us-east-1"],
254
+ allowedS3Buckets: [],
255
+ denyObjectKeyPrefixes: ["secrets/", ".env"],
256
+ },
257
+ gcp: {
258
+ allowedProjectIds: [],
259
+ allowedStorageBuckets: [],
260
+ denyObjectNamePrefixes: ["secrets/", ".env"],
261
+ },
262
+ },
263
+ mcp: {
264
+ allowedTools: [],
265
+ },
266
+ docs: {
267
+ documents: {
268
+ allowedWorkspaces: ["local"],
269
+ allowedPathPrefixes: ["README.md", "docs/", "product/"],
270
+ denyPathPrefixes: [".env", "secrets/", "private/"],
271
+ maxSearchResults: 10,
272
+ maxReadBytes: 20_000,
273
+ },
274
+ },
275
+ },
276
+ demo: {
277
+ scenario: "coding-agent",
278
+ },
279
+ });
280
+ export function parseAxtaryConfig(input) {
281
+ const raw = RawAxtaryConfigSchema.parse(input);
282
+ return {
283
+ ...raw,
284
+ policy: PolicyConfigSchema.parse(raw.policy ?? {}),
285
+ };
286
+ }
287
+ export function parseAxtaryConfigYaml(yamlText) {
288
+ const document = parseDocument(yamlText);
289
+ if (document.errors.length > 0) {
290
+ throw new Error(`invalid_axtary_yaml:${document.errors.map((error) => error.message).join(";")}`);
291
+ }
292
+ return parseAxtaryConfig(document.toJSON());
293
+ }
294
+ export async function readAxtaryConfigFile(filePath) {
295
+ const text = await readFile(filePath, "utf8");
296
+ return parseAxtaryConfigYaml(text);
297
+ }
298
+ export async function loadAxtaryConfig(input = {}) {
299
+ const cwd = resolve(input.cwd ?? process.cwd());
300
+ const filePath = input.filePath
301
+ ? resolve(cwd, input.filePath)
302
+ : null;
303
+ const config = filePath
304
+ ? await readAxtaryConfigFile(filePath)
305
+ : parseAxtaryConfigYaml(DEFAULT_AXTARY_CONFIG_YAML);
306
+ const baseDir = filePath ? dirname(filePath) : cwd;
307
+ return {
308
+ config,
309
+ filePath,
310
+ baseDir,
311
+ ledgerPath: resolveLedgerPath(config, baseDir),
312
+ };
313
+ }
314
+ export function resolveLedgerPath(config, baseDir = process.cwd()) {
315
+ const configuredPath = config.ledger.path;
316
+ return isAbsolute(configuredPath) ? configuredPath : resolve(baseDir, configuredPath);
317
+ }
318
+ export class CachedConfigLoader {
319
+ input;
320
+ cachedConfig = null;
321
+ lastMtimeMs = null;
322
+ constructor(input = {}) {
323
+ this.input = input;
324
+ }
325
+ async getConfig() {
326
+ if (!this.cachedConfig || !this.cachedConfig.filePath) {
327
+ const config = await loadAxtaryConfig(this.input);
328
+ this.cachedConfig = config;
329
+ if (config.filePath) {
330
+ const stats = await stat(config.filePath);
331
+ this.lastMtimeMs = stats.mtimeMs;
332
+ }
333
+ return config;
334
+ }
335
+ const stats = await stat(this.cachedConfig.filePath);
336
+ if (stats.mtimeMs !== this.lastMtimeMs) {
337
+ const config = await loadAxtaryConfig(this.input);
338
+ this.cachedConfig = config;
339
+ this.lastMtimeMs = stats.mtimeMs;
340
+ }
341
+ return this.cachedConfig;
342
+ }
343
+ }
344
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@axtary/config",
3
+ "version": "0.0.1",
4
+ "private": false,
5
+ "description": "YAML configuration loading for local Axtary runtime packages.",
6
+ "type": "module",
7
+ "license": "UNLICENSED",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/axtary/axtary.git",
11
+ "directory": "packages/config"
12
+ },
13
+ "keywords": [
14
+ "ai-agents",
15
+ "authorization",
16
+ "yaml",
17
+ "policy",
18
+ "proxy"
19
+ ],
20
+ "engines": {
21
+ "node": "^20.19.0 || ^22.13.0 || >=24"
22
+ },
23
+ "scripts": {
24
+ "prebuild": "npm run build -w @axtary/policy",
25
+ "build": "npm run clean && tsc -p tsconfig.json",
26
+ "clean": "rm -rf dist",
27
+ "prepack": "npm run build"
28
+ },
29
+ "files": [
30
+ "README.md",
31
+ "dist"
32
+ ],
33
+ "publishConfig": {
34
+ "access": "public"
35
+ },
36
+ "main": "./dist/index.js",
37
+ "exports": {
38
+ ".": {
39
+ "types": "./dist/index.d.ts",
40
+ "import": "./dist/index.js"
41
+ }
42
+ },
43
+ "types": "./dist/index.d.ts",
44
+ "dependencies": {
45
+ "@axtary/policy": "0.0.1",
46
+ "yaml": "^2.8.2",
47
+ "zod": "^4.4.3"
48
+ }
49
+ }