@cleocode/lafs 1.8.0 → 2026.4.0

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.
Files changed (144) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +0 -0
  3. package/dist/schemas/v1/agent-card.schema.json +230 -0
  4. package/dist/schemas/v1/conformance-profiles.json +0 -0
  5. package/dist/schemas/v1/context-ledger.schema.json +70 -0
  6. package/dist/schemas/v1/discovery.schema.json +132 -0
  7. package/dist/schemas/v1/envelope.schema.json +0 -0
  8. package/dist/schemas/v1/error-registry.json +0 -0
  9. package/dist/src/a2a/bindings/grpc.d.ts +1 -0
  10. package/dist/src/a2a/bindings/grpc.d.ts.map +1 -0
  11. package/dist/src/a2a/bindings/grpc.js +1 -0
  12. package/dist/src/a2a/bindings/grpc.js.map +1 -0
  13. package/dist/src/a2a/bindings/http.d.ts +2 -1
  14. package/dist/src/a2a/bindings/http.d.ts.map +1 -0
  15. package/dist/src/a2a/bindings/http.js +8 -2
  16. package/dist/src/a2a/bindings/http.js.map +1 -0
  17. package/dist/src/a2a/bindings/index.d.ts +3 -2
  18. package/dist/src/a2a/bindings/index.d.ts.map +1 -0
  19. package/dist/src/a2a/bindings/index.js +5 -4
  20. package/dist/src/a2a/bindings/index.js.map +1 -0
  21. package/dist/src/a2a/bindings/jsonrpc.d.ts +1 -0
  22. package/dist/src/a2a/bindings/jsonrpc.d.ts.map +1 -0
  23. package/dist/src/a2a/bindings/jsonrpc.js +3 -1
  24. package/dist/src/a2a/bindings/jsonrpc.js.map +1 -0
  25. package/dist/src/a2a/bridge.d.ts +5 -7
  26. package/dist/src/a2a/bridge.d.ts.map +1 -0
  27. package/dist/src/a2a/bridge.js +15 -24
  28. package/dist/src/a2a/bridge.js.map +1 -0
  29. package/dist/src/a2a/extensions.d.ts +1 -0
  30. package/dist/src/a2a/extensions.d.ts.map +1 -0
  31. package/dist/src/a2a/extensions.js +3 -2
  32. package/dist/src/a2a/extensions.js.map +1 -0
  33. package/dist/src/a2a/index.d.ts +8 -7
  34. package/dist/src/a2a/index.d.ts.map +1 -0
  35. package/dist/src/a2a/index.js +22 -27
  36. package/dist/src/a2a/index.js.map +1 -0
  37. package/dist/src/a2a/streaming.d.ts +2 -1
  38. package/dist/src/a2a/streaming.d.ts.map +1 -0
  39. package/dist/src/a2a/streaming.js +10 -9
  40. package/dist/src/a2a/streaming.js.map +1 -0
  41. package/dist/src/a2a/task-lifecycle.d.ts +2 -1
  42. package/dist/src/a2a/task-lifecycle.d.ts.map +1 -0
  43. package/dist/src/a2a/task-lifecycle.js +25 -7
  44. package/dist/src/a2a/task-lifecycle.js.map +1 -0
  45. package/dist/src/budgetEnforcement.d.ts +5 -6
  46. package/dist/src/budgetEnforcement.d.ts.map +1 -0
  47. package/dist/src/budgetEnforcement.js +14 -12
  48. package/dist/src/budgetEnforcement.js.map +1 -0
  49. package/dist/src/circuit-breaker/index.d.ts +6 -1
  50. package/dist/src/circuit-breaker/index.d.ts.map +1 -0
  51. package/dist/src/circuit-breaker/index.js +8 -5
  52. package/dist/src/circuit-breaker/index.js.map +1 -0
  53. package/dist/src/cli.d.ts +1 -0
  54. package/dist/src/cli.d.ts.map +1 -0
  55. package/dist/src/cli.js +12 -11
  56. package/dist/src/cli.js.map +1 -0
  57. package/dist/src/compliance.d.ts +4 -3
  58. package/dist/src/compliance.d.ts.map +1 -0
  59. package/dist/src/compliance.js +14 -13
  60. package/dist/src/compliance.js.map +1 -0
  61. package/dist/src/conformance.d.ts +3 -2
  62. package/dist/src/conformance.d.ts.map +1 -0
  63. package/dist/src/conformance.js +83 -76
  64. package/dist/src/conformance.js.map +1 -0
  65. package/dist/src/conformanceProfiles.d.ts +2 -1
  66. package/dist/src/conformanceProfiles.d.ts.map +1 -0
  67. package/dist/src/conformanceProfiles.js +2 -1
  68. package/dist/src/conformanceProfiles.js.map +1 -0
  69. package/dist/src/deprecationRegistry.d.ts +2 -1
  70. package/dist/src/deprecationRegistry.d.ts.map +1 -0
  71. package/dist/src/deprecationRegistry.js +8 -7
  72. package/dist/src/deprecationRegistry.js.map +1 -0
  73. package/dist/src/discovery.d.ts +3 -2
  74. package/dist/src/discovery.d.ts.map +1 -0
  75. package/dist/src/discovery.js +63 -59
  76. package/dist/src/discovery.js.map +1 -0
  77. package/dist/src/envelope.d.ts +10 -9
  78. package/dist/src/envelope.d.ts.map +1 -0
  79. package/dist/src/envelope.js +14 -15
  80. package/dist/src/envelope.js.map +1 -0
  81. package/dist/src/errorRegistry.d.ts +4 -3
  82. package/dist/src/errorRegistry.d.ts.map +1 -0
  83. package/dist/src/errorRegistry.js +4 -3
  84. package/dist/src/errorRegistry.js.map +1 -0
  85. package/dist/src/fieldExtraction.d.ts +3 -2
  86. package/dist/src/fieldExtraction.d.ts.map +1 -0
  87. package/dist/src/fieldExtraction.js +15 -11
  88. package/dist/src/fieldExtraction.js.map +1 -0
  89. package/dist/src/flagResolver.d.ts +2 -1
  90. package/dist/src/flagResolver.d.ts.map +1 -0
  91. package/dist/src/flagResolver.js +2 -1
  92. package/dist/src/flagResolver.js.map +1 -0
  93. package/dist/src/flagSemantics.d.ts +4 -3
  94. package/dist/src/flagSemantics.d.ts.map +1 -0
  95. package/dist/src/flagSemantics.js +12 -11
  96. package/dist/src/flagSemantics.js.map +1 -0
  97. package/dist/src/health/index.d.ts +16 -3
  98. package/dist/src/health/index.d.ts.map +1 -0
  99. package/dist/src/health/index.js +21 -20
  100. package/dist/src/health/index.js.map +1 -0
  101. package/dist/src/index.d.ts +23 -23
  102. package/dist/src/index.d.ts.map +1 -0
  103. package/dist/src/index.js +29 -28
  104. package/dist/src/index.js.map +1 -0
  105. package/dist/src/mcpAdapter.d.ts +4 -3
  106. package/dist/src/mcpAdapter.d.ts.map +1 -0
  107. package/dist/src/mcpAdapter.js +62 -57
  108. package/dist/src/mcpAdapter.js.map +1 -0
  109. package/dist/src/mviProjection.d.ts +1 -0
  110. package/dist/src/mviProjection.d.ts.map +1 -0
  111. package/dist/src/mviProjection.js +1 -0
  112. package/dist/src/mviProjection.js.map +1 -0
  113. package/dist/src/problemDetails.d.ts +1 -0
  114. package/dist/src/problemDetails.d.ts.map +1 -0
  115. package/dist/src/problemDetails.js +6 -0
  116. package/dist/src/problemDetails.js.map +1 -0
  117. package/dist/src/shutdown/index.d.ts +7 -2
  118. package/dist/src/shutdown/index.d.ts.map +1 -0
  119. package/dist/src/shutdown/index.js +6 -5
  120. package/dist/src/shutdown/index.js.map +1 -0
  121. package/dist/src/tokenEstimator.d.ts +1 -0
  122. package/dist/src/tokenEstimator.d.ts.map +1 -0
  123. package/dist/src/tokenEstimator.js +1 -2
  124. package/dist/src/tokenEstimator.js.map +1 -0
  125. package/dist/src/types.d.ts +10 -9
  126. package/dist/src/types.d.ts.map +1 -0
  127. package/dist/src/types.js +12 -2
  128. package/dist/src/types.js.map +1 -0
  129. package/dist/src/validateEnvelope.d.ts +2 -1
  130. package/dist/src/validateEnvelope.d.ts.map +1 -0
  131. package/dist/src/validateEnvelope.js +11 -10
  132. package/dist/src/validateEnvelope.js.map +1 -0
  133. package/dist/tsconfig.build.tsbuildinfo +1 -0
  134. package/lafs.md +0 -0
  135. package/package.json +10 -11
  136. package/schemas/v1/agent-card.schema.json +0 -0
  137. package/schemas/v1/conformance-profiles.d.ts +15 -0
  138. package/schemas/v1/conformance-profiles.json +0 -0
  139. package/schemas/v1/context-ledger.schema.json +0 -0
  140. package/schemas/v1/discovery.schema.json +0 -0
  141. package/schemas/v1/envelope.schema.d.ts +14 -0
  142. package/schemas/v1/envelope.schema.json +0 -0
  143. package/schemas/v1/error-registry.d.ts +24 -0
  144. package/schemas/v1/error-registry.json +0 -0
@@ -6,8 +6,8 @@
6
6
  * A2A v1.0+ Compliant Implementation
7
7
  * Reference: specs/external/agent-discovery.md
8
8
  */
9
- import { createRequire } from "node:module";
10
- import { createHash } from "crypto";
9
+ import { createRequire } from 'node:module';
10
+ import { createHash } from 'crypto';
11
11
  import { buildLafsExtension } from './a2a/extensions.js';
12
12
  const require = createRequire(import.meta.url);
13
13
  // Resolve package.json from project root (works from both src/ and dist/src/)
@@ -25,58 +25,58 @@ catch {
25
25
  * Build absolute URL from base and path
26
26
  */
27
27
  function buildUrl(base, path, req) {
28
- if (path.startsWith("http://") || path.startsWith("https://")) {
28
+ if (path.startsWith('http://') || path.startsWith('https://')) {
29
29
  return path;
30
30
  }
31
31
  if (base) {
32
- const separator = base.endsWith("/") || path.startsWith("/") ? "" : "/";
32
+ const separator = base.endsWith('/') || path.startsWith('/') ? '' : '/';
33
33
  return `${base}${separator}${path}`;
34
34
  }
35
35
  if (req) {
36
- const protocol = req.headers["x-forwarded-proto"] || req.protocol || "http";
37
- const host = req.headers.host || "localhost";
38
- const separator = path.startsWith("/") ? "" : "/";
36
+ const protocol = req.headers['x-forwarded-proto'] || req.protocol || 'http';
37
+ const host = req.headers.host || 'localhost';
38
+ const separator = path.startsWith('/') ? '' : '/';
39
39
  return `${protocol}://${host}${separator}${path}`;
40
40
  }
41
- return path.startsWith("/") ? path : `/${path}`;
41
+ return path.startsWith('/') ? path : `/${path}`;
42
42
  }
43
43
  /**
44
44
  * Generate ETag from content
45
45
  */
46
46
  function generateETag(content) {
47
- return `"${createHash("sha256").update(content).digest("hex").slice(0, 32)}"`;
47
+ return `"${createHash('sha256').update(content).digest('hex').slice(0, 32)}"`;
48
48
  }
49
49
  /**
50
50
  * Build A2A Agent Card from configuration
51
51
  */
52
52
  function buildAgentCard(config, req) {
53
- const schemaUrl = config.schemaUrl || "https://lafs.dev/schemas/v1/agent-card.schema.json";
53
+ const schemaUrl = config.schemaUrl || 'https://lafs.dev/schemas/v1/agent-card.schema.json';
54
54
  // Handle legacy config migration
55
55
  if (config.service && !config.agent) {
56
56
  console.warn("[DEPRECATION] Using legacy 'service' config. Migrate to 'agent' format for A2A v1.0+ compliance.");
57
57
  return {
58
58
  $schema: schemaUrl,
59
59
  name: config.service.name,
60
- description: config.service.description || "LAFS-compliant agent",
61
- version: config.lafsVersion || config.service.version || "1.0.0",
60
+ description: config.service.description || 'LAFS-compliant agent',
61
+ version: config.lafsVersion || config.service.version || '1.0.0',
62
62
  url: config.endpoints?.envelope
63
63
  ? buildUrl(config.baseUrl, config.endpoints.envelope, req)
64
- : buildUrl(config.baseUrl, "/", req),
64
+ : buildUrl(config.baseUrl, '/', req),
65
65
  capabilities: {
66
66
  streaming: false,
67
67
  pushNotifications: false,
68
68
  extendedAgentCard: false,
69
- extensions: []
69
+ extensions: [],
70
70
  },
71
- defaultInputModes: ["application/json"],
72
- defaultOutputModes: ["application/json"],
73
- skills: (config.capabilities || []).map(cap => ({
74
- id: cap.name.toLowerCase().replace(/\s+/g, "-"),
71
+ defaultInputModes: ['application/json'],
72
+ defaultOutputModes: ['application/json'],
73
+ skills: (config.capabilities || []).map((cap) => ({
74
+ id: cap.name.toLowerCase().replace(/\s+/g, '-'),
75
75
  name: cap.name,
76
76
  description: cap.description || `${cap.name} capability`,
77
77
  tags: cap.operations || [],
78
- examples: []
79
- }))
78
+ examples: [],
79
+ })),
80
80
  };
81
81
  }
82
82
  // Standard A2A v1.0 Agent Card (agent is guaranteed present; legacy path returned above)
@@ -84,7 +84,7 @@ function buildAgentCard(config, req) {
84
84
  const card = {
85
85
  $schema: schemaUrl,
86
86
  ...agent,
87
- url: agent.url || buildUrl(config.baseUrl, "/", req)
87
+ url: agent.url || buildUrl(config.baseUrl, '/', req),
88
88
  };
89
89
  // Auto-include LAFS extension if configured
90
90
  if (config.autoIncludeLafsExtension) {
@@ -109,7 +109,7 @@ function buildAgentCard(config, req) {
109
109
  * @deprecated Will be removed in v2.0.0
110
110
  */
111
111
  function buildLegacyDiscoveryDocument(config, req) {
112
- const schemaUrl = config.schemaUrl || "https://lafs.dev/schemas/v1/discovery.schema.json";
112
+ const schemaUrl = config.schemaUrl || 'https://lafs.dev/schemas/v1/discovery.schema.json';
113
113
  const lafsVersion = config.lafsVersion || pkg.version;
114
114
  return {
115
115
  $schema: schemaUrl,
@@ -117,20 +117,23 @@ function buildLegacyDiscoveryDocument(config, req) {
117
117
  service: config.service || {
118
118
  name: config.agent.name,
119
119
  version: config.agent.version,
120
- description: config.agent.description
120
+ description: config.agent.description,
121
121
  },
122
- capabilities: config.capabilities || config.agent.skills.map(skill => ({
123
- name: skill.name,
124
- version: config.agent.version,
125
- description: skill.description,
126
- operations: skill.tags,
127
- optional: false
128
- })),
122
+ capabilities: config.capabilities ||
123
+ config.agent.skills.map((skill) => ({
124
+ name: skill.name,
125
+ version: config.agent.version,
126
+ description: skill.description,
127
+ operations: skill.tags,
128
+ optional: false,
129
+ })),
129
130
  endpoints: {
130
131
  envelope: buildUrl(config.baseUrl, config.endpoints?.envelope || config.agent.url, req),
131
- context: config.endpoints?.context ? buildUrl(config.baseUrl, config.endpoints.context, req) : undefined,
132
- discovery: config.endpoints?.discovery || buildUrl(config.baseUrl, "/.well-known/lafs.json", req)
133
- }
132
+ context: config.endpoints?.context
133
+ ? buildUrl(config.baseUrl, config.endpoints.context, req)
134
+ : undefined,
135
+ discovery: config.endpoints?.discovery || buildUrl(config.baseUrl, '/.well-known/lafs.json', req),
136
+ },
134
137
  };
135
138
  }
136
139
  // ============================================================================
@@ -180,8 +183,8 @@ function buildLegacyDiscoveryDocument(config, req) {
180
183
  * ```
181
184
  */
182
185
  export function discoveryMiddleware(config, options = {}) {
183
- const path = options.path || "/.well-known/agent-card.json";
184
- const legacyPath = options.legacyPath || "/.well-known/lafs.json";
186
+ const path = options.path || '/.well-known/agent-card.json';
187
+ const legacyPath = options.legacyPath || '/.well-known/lafs.json';
185
188
  // Disable legacy path by default when a custom path is set, unless explicitly enabled
186
189
  const enableLegacyPath = options.enableLegacyPath ?? !options.path;
187
190
  const enableHead = options.enableHead !== false;
@@ -238,31 +241,31 @@ export function discoveryMiddleware(config, options = {}) {
238
241
  `Migrate to ${path} for A2A v1.0+ compliance. Legacy support will be removed in v2.0.0.`);
239
242
  }
240
243
  // Handle HEAD requests
241
- if (req.method === "HEAD") {
244
+ if (req.method === 'HEAD') {
242
245
  if (!enableHead) {
243
246
  res.status(405).json({
244
- error: "Method Not Allowed",
245
- message: "HEAD requests are disabled for this endpoint"
247
+ error: 'Method Not Allowed',
248
+ message: 'HEAD requests are disabled for this endpoint',
246
249
  });
247
250
  return;
248
251
  }
249
252
  const json = getSerializedDoc(isLegacyPath, req);
250
253
  const etag = enableEtag ? generateETag(json) : undefined;
251
254
  res.set({
252
- "Content-Type": "application/json",
253
- "Cache-Control": `public, max-age=${cacheMaxAge}`,
254
- ...(etag && { "ETag": etag }),
255
- ...(isLegacyPath && { "Deprecation": "true", "Sunset": "Sat, 31 Dec 2025 23:59:59 GMT" }),
256
- "Content-Length": Buffer.byteLength(json)
255
+ 'Content-Type': 'application/json',
256
+ 'Cache-Control': `public, max-age=${cacheMaxAge}`,
257
+ ...(etag && { ETag: etag }),
258
+ ...(isLegacyPath && { Deprecation: 'true', Sunset: 'Sat, 31 Dec 2025 23:59:59 GMT' }),
259
+ 'Content-Length': Buffer.byteLength(json),
257
260
  });
258
261
  res.status(200).end();
259
262
  return;
260
263
  }
261
264
  // Only handle GET requests
262
- if (req.method !== "GET") {
265
+ if (req.method !== 'GET') {
263
266
  res.status(405).json({
264
- error: "Method Not Allowed",
265
- message: `Method ${req.method} not allowed. Use GET or HEAD.`
267
+ error: 'Method Not Allowed',
268
+ message: `Method ${req.method} not allowed. Use GET or HEAD.`,
266
269
  });
267
270
  return;
268
271
  }
@@ -270,24 +273,24 @@ export function discoveryMiddleware(config, options = {}) {
270
273
  const json = getSerializedDoc(isLegacyPath, req);
271
274
  const etag = enableEtag ? generateETag(json) : undefined;
272
275
  // Check If-None-Match for conditional request
273
- if (enableEtag && req.headers["if-none-match"] === etag) {
276
+ if (enableEtag && req.headers['if-none-match'] === etag) {
274
277
  res.status(304).end();
275
278
  return;
276
279
  }
277
280
  // Set response headers
278
281
  const headers = {
279
- "Content-Type": "application/json",
280
- "Cache-Control": `public, max-age=${cacheMaxAge}`,
281
- ...config.headers
282
+ 'Content-Type': 'application/json',
283
+ 'Cache-Control': `public, max-age=${cacheMaxAge}`,
284
+ ...config.headers,
282
285
  };
283
286
  if (etag) {
284
- headers["ETag"] = etag;
287
+ headers['ETag'] = etag;
285
288
  }
286
289
  // Add deprecation headers for legacy path
287
290
  if (isLegacyPath) {
288
- headers["Deprecation"] = "true";
289
- headers["Sunset"] = "Sat, 31 Dec 2025 23:59:59 GMT";
290
- headers["Link"] = `<${buildUrl(config.baseUrl, path, req)}>; rel="successor-version"`;
291
+ headers['Deprecation'] = 'true';
292
+ headers['Sunset'] = 'Sat, 31 Dec 2025 23:59:59 GMT';
293
+ headers['Link'] = `<${buildUrl(config.baseUrl, path, req)}>; rel="successor-version"`;
291
294
  }
292
295
  res.set(headers);
293
296
  res.status(200).send(json);
@@ -304,16 +307,16 @@ export function discoveryMiddleware(config, options = {}) {
304
307
  * @param options - Plugin options
305
308
  */
306
309
  export async function discoveryFastifyPlugin(fastify, options) {
307
- const path = options.path || "/.well-known/agent-card.json";
310
+ const _path = options.path || '/.well-known/agent-card.json';
308
311
  const config = options.config;
309
312
  const cacheMaxAge = config.cacheMaxAge || 3600;
310
- const handler = async (request, reply) => {
313
+ const _handler = async (request, reply) => {
311
314
  const doc = buildAgentCard(config, request.raw);
312
315
  const json = JSON.stringify(doc);
313
316
  const etag = generateETag(json);
314
- reply.header("Content-Type", "application/json");
315
- reply.header("Cache-Control", `public, max-age=${cacheMaxAge}`);
316
- reply.header("ETag", etag);
317
+ reply.header('Content-Type', 'application/json');
318
+ reply.header('Cache-Control', `public, max-age=${cacheMaxAge}`);
319
+ reply.header('ETag', etag);
317
320
  return doc;
318
321
  };
319
322
  // Note: Actual route registration depends on Fastify's API
@@ -348,3 +351,4 @@ export async function discoveryFastifyPlugin(fastify, options) {
348
351
  * - Automatic config migration will be removed
349
352
  */
350
353
  export default discoveryMiddleware;
354
+ //# sourceMappingURL=discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/discovery.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { LAFSEnvelope, LAFSError, LAFSErrorCategory, LAFSAgentAction, LAFSMeta, LAFSTransport, MVILevel } from "./types.js";
1
+ import type { LAFSAgentAction, LAFSEnvelope, LAFSError, LAFSErrorCategory, LAFSMeta, LAFSTransport, MVILevel } from './types.js';
2
2
  export declare const LAFS_SCHEMA_URL: "https://lafs.dev/schemas/v1/envelope.schema.json";
3
3
  export interface CreateEnvelopeMetaInput {
4
4
  operation: string;
@@ -11,19 +11,19 @@ export interface CreateEnvelopeMetaInput {
11
11
  mvi?: MVILevel | boolean;
12
12
  contextVersion?: number;
13
13
  sessionId?: string;
14
- warnings?: LAFSMeta["warnings"];
14
+ warnings?: LAFSMeta['warnings'];
15
15
  }
16
16
  export interface CreateEnvelopeSuccessInput {
17
17
  success: true;
18
- result: LAFSEnvelope["result"];
19
- page?: LAFSEnvelope["page"];
18
+ result: LAFSEnvelope['result'];
19
+ page?: LAFSEnvelope['page'];
20
20
  error?: null;
21
- _extensions?: LAFSEnvelope["_extensions"];
21
+ _extensions?: LAFSEnvelope['_extensions'];
22
22
  meta: CreateEnvelopeMetaInput;
23
23
  }
24
24
  export interface CreateEnvelopeErrorInput {
25
25
  success: false;
26
- error: Partial<LAFSError> & Pick<LAFSError, "code" | "message">;
26
+ error: Partial<LAFSError> & Pick<LAFSError, 'code' | 'message'>;
27
27
  /**
28
28
  * Optional result payload to include alongside the error.
29
29
  * For validation tools (linters, type checkers), the actionable data
@@ -33,9 +33,9 @@ export interface CreateEnvelopeErrorInput {
33
33
  *
34
34
  * When omitted or null, the envelope emits `result: null` (default behavior).
35
35
  */
36
- result?: LAFSEnvelope["result"] | null;
37
- page?: LAFSEnvelope["page"];
38
- _extensions?: LAFSEnvelope["_extensions"];
36
+ result?: LAFSEnvelope['result'] | null;
37
+ page?: LAFSEnvelope['page'];
38
+ _extensions?: LAFSEnvelope['_extensions'];
39
39
  meta: CreateEnvelopeMetaInput;
40
40
  }
41
41
  export type CreateEnvelopeInput = CreateEnvelopeSuccessInput | CreateEnvelopeErrorInput;
@@ -58,3 +58,4 @@ export interface ParseLafsResponseOptions {
58
58
  requireRegisteredErrorCode?: boolean;
59
59
  }
60
60
  export declare function parseLafsResponse<T = unknown>(input: unknown, options?: ParseLafsResponseOptions): T;
61
+ //# sourceMappingURL=envelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/envelope.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,QAAQ,EACT,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,eAAe,EAAG,kDAA2D,CAAC;AAE3F,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,WAAW,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC;IAC1C,IAAI,EAAE,uBAAuB,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAChE;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IACvC,IAAI,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5B,WAAW,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC;IAC1C,IAAI,EAAE,uBAAuB,CAAC;CAC/B;AAED,MAAM,MAAM,mBAAmB,GAAG,0BAA0B,GAAG,wBAAwB,CAAC;AAyBxF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAW1E,CAAC;AAuCF,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,YAAY,CA0BvE;AAED,qBAAa,SAAU,SAAQ,KAAM,YAAW,SAAS;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEJ,KAAK,EAAE,SAAS;CAc7B;AAED,MAAM,WAAW,wBAAwB;IACvC,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,wBAAgB,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAC3C,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,wBAA6B,GACrC,CAAC,CAgBH"}
@@ -1,20 +1,20 @@
1
- import { isRegisteredErrorCode, getRegistryCode, getAgentAction, getDocUrl } from "./errorRegistry.js";
2
- import { assertEnvelope } from "./validateEnvelope.js";
3
- export const LAFS_SCHEMA_URL = "https://lafs.dev/schemas/v1/envelope.schema.json";
1
+ import { getAgentAction, getDocUrl, getRegistryCode, isRegisteredErrorCode, } from './errorRegistry.js';
2
+ import { assertEnvelope } from './validateEnvelope.js';
3
+ export const LAFS_SCHEMA_URL = 'https://lafs.dev/schemas/v1/envelope.schema.json';
4
4
  function resolveMviLevel(input) {
5
- if (typeof input === "boolean") {
6
- return input ? "minimal" : "standard";
5
+ if (typeof input === 'boolean') {
6
+ return input ? 'minimal' : 'standard';
7
7
  }
8
- return input ?? "standard";
8
+ return input ?? 'standard';
9
9
  }
10
10
  function createMeta(input) {
11
11
  return {
12
- specVersion: input.specVersion ?? "1.0.0",
13
- schemaVersion: input.schemaVersion ?? "1.0.0",
12
+ specVersion: input.specVersion ?? '1.0.0',
13
+ schemaVersion: input.schemaVersion ?? '1.0.0',
14
14
  timestamp: input.timestamp ?? new Date().toISOString(),
15
15
  operation: input.operation,
16
16
  requestId: input.requestId,
17
- transport: input.transport ?? "sdk",
17
+ transport: input.transport ?? 'sdk',
18
18
  strict: input.strict ?? true,
19
19
  mvi: resolveMviLevel(input.mvi),
20
20
  contextVersion: input.contextVersion ?? 0,
@@ -36,12 +36,10 @@ export const CATEGORY_ACTION_MAP = {
36
36
  };
37
37
  function normalizeError(error) {
38
38
  const registryEntry = getRegistryCode(error.code);
39
- const category = (error.category ?? registryEntry?.category ?? "INTERNAL");
39
+ const category = (error.category ?? registryEntry?.category ?? 'INTERNAL');
40
40
  const retryable = error.retryable ?? registryEntry?.retryable ?? false;
41
41
  // Derive agentAction: explicit > registry > category fallback
42
- const agentAction = error.agentAction ??
43
- getAgentAction(error.code) ??
44
- CATEGORY_ACTION_MAP[category];
42
+ const agentAction = error.agentAction ?? getAgentAction(error.code) ?? CATEGORY_ACTION_MAP[category];
45
43
  const docUrl = error.docUrl ?? getDocUrl(error.code);
46
44
  const result = {
47
45
  code: error.code,
@@ -103,7 +101,7 @@ export class LafsError extends Error {
103
101
  docUrl;
104
102
  constructor(error) {
105
103
  super(error.message);
106
- this.name = "LafsError";
104
+ this.name = 'LafsError';
107
105
  this.code = error.code;
108
106
  this.category = error.category;
109
107
  this.retryable = error.retryable;
@@ -127,10 +125,11 @@ export function parseLafsResponse(input, options = {}) {
127
125
  }
128
126
  const error = envelope.error;
129
127
  if (!error) {
130
- throw new Error("Invalid LAFS envelope: success=false requires error object");
128
+ throw new Error('Invalid LAFS envelope: success=false requires error object');
131
129
  }
132
130
  if (options.requireRegisteredErrorCode && !isRegisteredErrorCode(error.code)) {
133
131
  throw new Error(`Unregistered LAFS error code: ${error.code}`);
134
132
  }
135
133
  throw new LafsError(error);
136
134
  }
135
+ //# sourceMappingURL=envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/envelope.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { LAFSAgentAction } from "./types.js";
1
+ import type { LAFSAgentAction } from './types.js';
2
2
  export interface RegistryCode {
3
3
  code: string;
4
4
  category: string;
@@ -16,7 +16,7 @@ export interface ErrorRegistry {
16
16
  codes: RegistryCode[];
17
17
  }
18
18
  export type TransportMapping = {
19
- transport: "http" | "grpc" | "cli";
19
+ transport: 'http' | 'grpc' | 'cli';
20
20
  value: number | string;
21
21
  };
22
22
  export declare function getErrorRegistry(): ErrorRegistry;
@@ -25,4 +25,5 @@ export declare function getRegistryCode(code: string): RegistryCode | undefined;
25
25
  export declare function getAgentAction(code: string): LAFSAgentAction | undefined;
26
26
  export declare function getTypeUri(code: string): string | undefined;
27
27
  export declare function getDocUrl(code: string): string | undefined;
28
- export declare function getTransportMapping(code: string, transport: "http" | "grpc" | "cli"): TransportMapping | null;
28
+ export declare function getTransportMapping(code: string, transport: 'http' | 'grpc' | 'cli'): TransportMapping | null;
29
+ //# sourceMappingURL=errorRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorRegistry.d.ts","sourceRoot":"","sources":["../../src/errorRegistry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IACnC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB,CAAC;AAEF,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG3D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEtE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAGxE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG3D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG1D;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GACjC,gBAAgB,GAAG,IAAI,CAazB"}
@@ -1,4 +1,4 @@
1
- import errorRegistry from "../schemas/v1/error-registry.json" with { type: "json" };
1
+ import errorRegistry from '../schemas/v1/error-registry.json' with { type: 'json' };
2
2
  export function getErrorRegistry() {
3
3
  return errorRegistry;
4
4
  }
@@ -26,11 +26,12 @@ export function getTransportMapping(code, transport) {
26
26
  if (!registryCode) {
27
27
  return null;
28
28
  }
29
- if (transport === "http") {
29
+ if (transport === 'http') {
30
30
  return { transport, value: registryCode.httpStatus };
31
31
  }
32
- if (transport === "grpc") {
32
+ if (transport === 'grpc') {
33
33
  return { transport, value: registryCode.grpcStatus };
34
34
  }
35
35
  return { transport, value: registryCode.cliExit };
36
36
  }
37
+ //# sourceMappingURL=errorRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorRegistry.js","sourceRoot":"","sources":["../../src/errorRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,mCAAmC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AA0BpF,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAA8B,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;IACpC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,gBAAgB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,KAAK,EAAE,WAA0C,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,KAAK,EAAE,OAAO,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,KAAK,EAAE,MAAM,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,SAAkC;IAElC,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC;IACvD,CAAC;IACD,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC;IACvD,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC;AACpD,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { LAFSEnvelope, MVILevel } from "./types.js";
1
+ import type { LAFSEnvelope, MVILevel } from './types.js';
2
2
  export interface FieldExtractionInput {
3
3
  /** --field <name>: extract single field as plain text, no envelope */
4
4
  fieldFlag?: string;
@@ -15,7 +15,7 @@ export interface FieldExtractionResolution {
15
15
  /** Resolved MVI level. Defaults to 'standard'. */
16
16
  mvi: MVILevel;
17
17
  /** Which input determined the mvi value: 'flag' when mviFlag was valid, 'default' otherwise. */
18
- mviSource: "flag" | "default";
18
+ mviSource: 'flag' | 'default';
19
19
  /**
20
20
  * True when _fields are requested, indicating the server SHOULD set
21
21
  * _meta.mvi = 'custom' in the response per §9.1.
@@ -65,3 +65,4 @@ export declare function extractFieldFromEnvelope(envelope: LAFSEnvelope, field:
65
65
  * entity or array keys only, not to the wrapper's own primitive keys.
66
66
  */
67
67
  export declare function applyFieldFilter(envelope: LAFSEnvelope, fields: string[]): LAFSEnvelope;
68
+ //# sourceMappingURL=fieldExtraction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fieldExtraction.d.ts","sourceRoot":"","sources":["../../src/fieldExtraction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGzD,MAAM,WAAW,oBAAoB;IACnC,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC/B,yEAAyE;IACzE,OAAO,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,kDAAkD;IAClD,GAAG,EAAE,QAAQ,CAAC;IACd,gGAAgG;IAChG,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;;;OAIG;IACH,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,oBAAoB,GAAG,yBAAyB,CAmC7F;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CA4B7F;AAED,wEAAwE;AACxE,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAEvF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAuCvF"}
@@ -1,19 +1,22 @@
1
- import { LAFSFlagError } from "./flagSemantics.js";
2
- import { isMVILevel } from "./types.js";
1
+ import { LAFSFlagError } from './flagSemantics.js';
2
+ import { isMVILevel } from './types.js';
3
3
  export function resolveFieldExtraction(input) {
4
4
  if (input.fieldFlag && input.fieldsFlag) {
5
- throw new LAFSFlagError('E_FIELD_CONFLICT', 'Cannot combine --field and --fields: --field extracts a single value '
6
- + 'as plain text (no envelope); --fields filters the JSON envelope. '
7
- + 'Use one or the other.', { conflictingModes: ['single-field-extraction', 'multi-field-filter'] });
5
+ throw new LAFSFlagError('E_FIELD_CONFLICT', 'Cannot combine --field and --fields: --field extracts a single value ' +
6
+ 'as plain text (no envelope); --fields filters the JSON envelope. ' +
7
+ 'Use one or the other.', { conflictingModes: ['single-field-extraction', 'multi-field-filter'] });
8
8
  }
9
9
  const fields = typeof input.fieldsFlag === 'string'
10
- ? input.fieldsFlag.split(',').map(f => f.trim()).filter(Boolean)
10
+ ? input.fieldsFlag
11
+ .split(',')
12
+ .map((f) => f.trim())
13
+ .filter(Boolean)
11
14
  : Array.isArray(input.fieldsFlag)
12
- ? input.fieldsFlag.map(f => f.trim()).filter(Boolean)
15
+ ? input.fieldsFlag.map((f) => f.trim()).filter(Boolean)
13
16
  : undefined;
14
17
  // 'custom' is server-set (§9.1) — not a client-requestable level
15
18
  const validMvi = isMVILevel(input.mviFlag) && input.mviFlag !== 'custom';
16
- const mvi = validMvi ? input.mviFlag : 'standard';
19
+ const mvi = validMvi ? input.mviFlag : 'minimal';
17
20
  const mviSource = validMvi ? 'flag' : 'default';
18
21
  const hasFields = (fields?.length ?? 0) > 0;
19
22
  return {
@@ -99,7 +102,7 @@ export function extractFieldFromEnvelope(envelope, field) {
99
102
  export function applyFieldFilter(envelope, fields) {
100
103
  if (fields.length === 0 || envelope.result === null)
101
104
  return envelope;
102
- const pick = (obj) => Object.fromEntries(fields.filter(f => f in obj).map(f => [f, obj[f]]));
105
+ const pick = (obj) => Object.fromEntries(fields.filter((f) => f in obj).map((f) => [f, obj[f]]));
103
106
  let filtered;
104
107
  if (Array.isArray(envelope.result)) {
105
108
  // Shape 1: direct array
@@ -107,7 +110,7 @@ export function applyFieldFilter(envelope, fields) {
107
110
  }
108
111
  else {
109
112
  const record = envelope.result;
110
- const topLevelMatch = fields.some(f => f in record);
113
+ const topLevelMatch = fields.some((f) => f in record);
111
114
  if (topLevelMatch) {
112
115
  // Shape 2: flat result
113
116
  filtered = pick(record);
@@ -116,7 +119,7 @@ export function applyFieldFilter(envelope, fields) {
116
119
  // Shapes 3 & 4: wrapper — apply pick one level down, preserve wrapper keys
117
120
  filtered = Object.fromEntries(Object.entries(record).map(([k, v]) => {
118
121
  if (Array.isArray(v)) {
119
- return [k, v.map(item => pick(item))];
122
+ return [k, v.map((item) => pick(item))];
120
123
  }
121
124
  if (v && typeof v === 'object') {
122
125
  return [k, pick(v)];
@@ -131,3 +134,4 @@ export function applyFieldFilter(envelope, fields) {
131
134
  result: filtered,
132
135
  };
133
136
  }
137
+ //# sourceMappingURL=fieldExtraction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fieldExtraction.js","sourceRoot":"","sources":["../../src/fieldExtraction.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,8 @@
6
6
  *
7
7
  * @since 1.6.0
8
8
  */
9
- import { type FlagResolution } from './flagSemantics.js';
10
9
  import { type FieldExtractionResolution } from './fieldExtraction.js';
10
+ import { type FlagResolution } from './flagSemantics.js';
11
11
  /** Combined input for both format and field extraction layers. */
12
12
  export interface UnifiedFlagInput {
13
13
  human?: boolean;
@@ -44,3 +44,4 @@ export interface UnifiedFlagResolution {
44
44
  * existing single-layer resolvers.
45
45
  */
46
46
  export declare function resolveFlags(input: UnifiedFlagInput): UnifiedFlagResolution;
47
+ //# sourceMappingURL=flagResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flagResolver.d.ts","sourceRoot":"","sources":["../../src/flagResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,KAAK,yBAAyB,EAA0B,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,KAAK,cAAc,EAAuB,MAAM,oBAAoB,CAAC;AAG9E,kEAAkE;AAClE,MAAM,WAAW,gBAAgB;IAE/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IAEd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,4DAA4D;AAC5D,MAAM,WAAW,qBAAqB;IACpC,6BAA6B;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,uCAAuC;IACvC,MAAM,EAAE,yBAAyB,CAAC;IAClC,yDAAyD;IACzD,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,qBAAqB,CAqC3E"}
@@ -6,8 +6,8 @@
6
6
  *
7
7
  * @since 1.6.0
8
8
  */
9
- import { resolveOutputFormat } from './flagSemantics.js';
10
9
  import { resolveFieldExtraction } from './fieldExtraction.js';
10
+ import { resolveOutputFormat } from './flagSemantics.js';
11
11
  /**
12
12
  * Resolve all flags across both layers and validate cross-layer semantics.
13
13
  *
@@ -45,3 +45,4 @@ export function resolveFlags(input) {
45
45
  }
46
46
  return { format, fields, warnings };
47
47
  }
48
+ //# sourceMappingURL=flagResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flagResolver.js","sourceRoot":"","sources":["../../src/flagResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAkC,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAuB,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAkC9E;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,KAAuB;IAClD,MAAM,WAAW,GAAc;QAC7B,SAAS,EAAE,KAAK,CAAC,KAAK;QACtB,QAAQ,EAAE,KAAK,CAAC,IAAI;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,GAAG,EAAE,KAAK,CAAC,GAAG;KACf,CAAC;IACF,MAAM,MAAM,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEhD,MAAM,UAAU,GAAyB;QACvC,SAAS,EAAE,KAAK,CAAC,KAAK;QACtB,UAAU,EAAE,KAAK,CAAC,MAAM;QACxB,OAAO,EAAE,KAAK,CAAC,GAAG;KACnB,CAAC;IACF,MAAM,MAAM,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAElD,gCAAgC;IAChC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAC9C,QAAQ,CAAC,IAAI,CACX,mCAAmC,MAAM,CAAC,KAAK,KAAK;YAClD,gEAAgE,CACnE,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3E,QAAQ,CAAC,IAAI,CACX,oCAAoC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAC/D,+DAA+D,CAClE,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACtC,CAAC"}
@@ -1,7 +1,7 @@
1
- import type { FlagInput, LAFSError, LAFSErrorCategory } from "./types.js";
1
+ import type { FlagInput, LAFSError, LAFSErrorCategory } from './types.js';
2
2
  export interface FlagResolution {
3
- format: "json" | "human";
4
- source: "flag" | "project" | "user" | "default";
3
+ format: 'json' | 'human';
4
+ source: 'flag' | 'project' | 'user' | 'default';
5
5
  /** When true, suppress non-essential output for scripting */
6
6
  quiet: boolean;
7
7
  }
@@ -14,3 +14,4 @@ export declare class LAFSFlagError extends Error implements LAFSError {
14
14
  constructor(code: string, message: string, details?: Record<string, unknown>);
15
15
  }
16
16
  export declare function resolveOutputFormat(input: FlagInput): FlagResolution;
17
+ //# sourceMappingURL=flagSemantics.d.ts.map