@ailu-ai/contracts 2.0.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 (142) hide show
  1. package/LICENSE +201 -0
  2. package/dist/admin.d.ts +99 -0
  3. package/dist/admin.d.ts.map +1 -0
  4. package/dist/admin.js +59 -0
  5. package/dist/admin.js.map +1 -0
  6. package/dist/admin.test.d.ts +2 -0
  7. package/dist/admin.test.d.ts.map +1 -0
  8. package/dist/admin.test.js +42 -0
  9. package/dist/admin.test.js.map +1 -0
  10. package/dist/approvals.d.ts +58 -0
  11. package/dist/approvals.d.ts.map +1 -0
  12. package/dist/approvals.js +28 -0
  13. package/dist/approvals.js.map +1 -0
  14. package/dist/artifacts.d.ts +22 -0
  15. package/dist/artifacts.d.ts.map +1 -0
  16. package/dist/artifacts.js +9 -0
  17. package/dist/artifacts.js.map +1 -0
  18. package/dist/catalog.d.ts +626 -0
  19. package/dist/catalog.d.ts.map +1 -0
  20. package/dist/catalog.js +69 -0
  21. package/dist/catalog.js.map +1 -0
  22. package/dist/catalog.test.d.ts +2 -0
  23. package/dist/catalog.test.d.ts.map +1 -0
  24. package/dist/catalog.test.js +98 -0
  25. package/dist/catalog.test.js.map +1 -0
  26. package/dist/compliance.d.ts +428 -0
  27. package/dist/compliance.d.ts.map +1 -0
  28. package/dist/compliance.js +80 -0
  29. package/dist/compliance.js.map +1 -0
  30. package/dist/connectors.d.ts +161 -0
  31. package/dist/connectors.d.ts.map +1 -0
  32. package/dist/connectors.js +49 -0
  33. package/dist/connectors.js.map +1 -0
  34. package/dist/error-envelope.d.ts +16 -0
  35. package/dist/error-envelope.d.ts.map +1 -0
  36. package/dist/error-envelope.js +7 -0
  37. package/dist/error-envelope.js.map +1 -0
  38. package/dist/eval.d.ts +144 -0
  39. package/dist/eval.d.ts.map +1 -0
  40. package/dist/eval.js +36 -0
  41. package/dist/eval.js.map +1 -0
  42. package/dist/events.d.ts +359 -0
  43. package/dist/events.d.ts.map +1 -0
  44. package/dist/events.js +134 -0
  45. package/dist/events.js.map +1 -0
  46. package/dist/fleet.d.ts +147 -0
  47. package/dist/fleet.d.ts.map +1 -0
  48. package/dist/fleet.js +34 -0
  49. package/dist/fleet.js.map +1 -0
  50. package/dist/fs-policy.d.ts +101 -0
  51. package/dist/fs-policy.d.ts.map +1 -0
  52. package/dist/fs-policy.js +36 -0
  53. package/dist/fs-policy.js.map +1 -0
  54. package/dist/fs-policy.test.d.ts +2 -0
  55. package/dist/fs-policy.test.d.ts.map +1 -0
  56. package/dist/fs-policy.test.js +35 -0
  57. package/dist/fs-policy.test.js.map +1 -0
  58. package/dist/fs.d.ts +182 -0
  59. package/dist/fs.d.ts.map +1 -0
  60. package/dist/fs.js +59 -0
  61. package/dist/fs.js.map +1 -0
  62. package/dist/fs.test.d.ts +2 -0
  63. package/dist/fs.test.d.ts.map +1 -0
  64. package/dist/fs.test.js +35 -0
  65. package/dist/fs.test.js.map +1 -0
  66. package/dist/graphs.d.ts +951 -0
  67. package/dist/graphs.d.ts.map +1 -0
  68. package/dist/graphs.js +94 -0
  69. package/dist/graphs.js.map +1 -0
  70. package/dist/graphs.test.d.ts +2 -0
  71. package/dist/graphs.test.d.ts.map +1 -0
  72. package/dist/graphs.test.js +65 -0
  73. package/dist/graphs.test.js.map +1 -0
  74. package/dist/index.d.ts +25 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +25 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/index.test.d.ts +2 -0
  79. package/dist/index.test.d.ts.map +1 -0
  80. package/dist/index.test.js +9 -0
  81. package/dist/index.test.js.map +1 -0
  82. package/dist/knowledge.d.ts +315 -0
  83. package/dist/knowledge.d.ts.map +1 -0
  84. package/dist/knowledge.js +111 -0
  85. package/dist/knowledge.js.map +1 -0
  86. package/dist/knowledge.test.d.ts +2 -0
  87. package/dist/knowledge.test.d.ts.map +1 -0
  88. package/dist/knowledge.test.js +22 -0
  89. package/dist/knowledge.test.js.map +1 -0
  90. package/dist/node-metadata.d.ts +3096 -0
  91. package/dist/node-metadata.d.ts.map +1 -0
  92. package/dist/node-metadata.js +184 -0
  93. package/dist/node-metadata.js.map +1 -0
  94. package/dist/node-metadata.test.d.ts +2 -0
  95. package/dist/node-metadata.test.d.ts.map +1 -0
  96. package/dist/node-metadata.test.js +126 -0
  97. package/dist/node-metadata.test.js.map +1 -0
  98. package/dist/observability.d.ts +154 -0
  99. package/dist/observability.d.ts.map +1 -0
  100. package/dist/observability.js +34 -0
  101. package/dist/observability.js.map +1 -0
  102. package/dist/pii.d.ts +88 -0
  103. package/dist/pii.d.ts.map +1 -0
  104. package/dist/pii.js +42 -0
  105. package/dist/pii.js.map +1 -0
  106. package/dist/principal.d.ts +81 -0
  107. package/dist/principal.d.ts.map +1 -0
  108. package/dist/principal.js +48 -0
  109. package/dist/principal.js.map +1 -0
  110. package/dist/principal.test.d.ts +2 -0
  111. package/dist/principal.test.d.ts.map +1 -0
  112. package/dist/principal.test.js +44 -0
  113. package/dist/principal.test.js.map +1 -0
  114. package/dist/registries.d.ts +26 -0
  115. package/dist/registries.d.ts.map +1 -0
  116. package/dist/registries.js +11 -0
  117. package/dist/registries.js.map +1 -0
  118. package/dist/router.d.ts +48 -0
  119. package/dist/router.d.ts.map +1 -0
  120. package/dist/router.js +22 -0
  121. package/dist/router.js.map +1 -0
  122. package/dist/runs.d.ts +270 -0
  123. package/dist/runs.d.ts.map +1 -0
  124. package/dist/runs.js +108 -0
  125. package/dist/runs.js.map +1 -0
  126. package/dist/runs.test.d.ts +2 -0
  127. package/dist/runs.test.d.ts.map +1 -0
  128. package/dist/runs.test.js +79 -0
  129. package/dist/runs.test.js.map +1 -0
  130. package/dist/search.d.ts +88 -0
  131. package/dist/search.d.ts.map +1 -0
  132. package/dist/search.js +23 -0
  133. package/dist/search.js.map +1 -0
  134. package/dist/skills.d.ts +208 -0
  135. package/dist/skills.d.ts.map +1 -0
  136. package/dist/skills.js +63 -0
  137. package/dist/skills.js.map +1 -0
  138. package/dist/tenant.d.ts +204 -0
  139. package/dist/tenant.d.ts.map +1 -0
  140. package/dist/tenant.js +46 -0
  141. package/dist/tenant.js.map +1 -0
  142. package/package.json +33 -0
@@ -0,0 +1,80 @@
1
+ import { z } from "zod";
2
+ /** EU AI Act risk tiers (simplified): minimal | limited | high. */
3
+ export const ComplianceRiskSchema = z.enum(["minimal", "limited", "high"]);
4
+ /** One graph in the tenant cartography, with its AI-system inventory + risk classification. */
5
+ export const ComplianceGraphEntrySchema = z.object({
6
+ id: z.string().min(1),
7
+ name: z.string(),
8
+ nodeCount: z.number().int().min(0),
9
+ agentNodes: z.array(z.object({
10
+ nodeId: z.string(),
11
+ provider: z.string().optional(),
12
+ model: z.string().optional()
13
+ })),
14
+ hasHumanGate: z.boolean(),
15
+ risk: ComplianceRiskSchema
16
+ });
17
+ /** A knowledge base's data-quality summary: volume + freshness window. */
18
+ export const ComplianceKbEntrySchema = z.object({
19
+ namespace: z.string(),
20
+ documents: z.number().int().min(0),
21
+ oldest: z.string().optional(),
22
+ newest: z.string().optional()
23
+ });
24
+ /** Tenant-level AI Act cartography + aggregate human-oversight stats. */
25
+ export const ComplianceTenantReportDtoSchema = z.object({
26
+ tenantId: z.string(),
27
+ graphs: z.array(ComplianceGraphEntrySchema),
28
+ providers: z.array(z.string()),
29
+ knowledgeBases: z.array(ComplianceKbEntrySchema),
30
+ supervision: z.object({
31
+ totalApprovals: z.number().int().min(0),
32
+ resolved: z.number().int().min(0),
33
+ selfApprovalViolations: z.number().int().min(0)
34
+ }),
35
+ generatedAt: z.string().datetime()
36
+ });
37
+ /** One lifecycle event in a run's decision trail. */
38
+ export const ComplianceEventSchema = z.object({
39
+ seq: z.number().int(),
40
+ type: z.string(),
41
+ nodeId: z.string().nullable(),
42
+ at: z.string()
43
+ });
44
+ /** One human-approval record proving oversight (distinctResolver = no self-approval). */
45
+ export const ComplianceApprovalSchema = z.object({
46
+ id: z.string(),
47
+ nodeId: z.string(),
48
+ subject: z.string(),
49
+ requestedBy: z.string(),
50
+ resolvedBy: z.string().nullable(),
51
+ distinctResolver: z.boolean(),
52
+ status: z.string(),
53
+ resolvedAt: z.string().nullable()
54
+ });
55
+ /** A data source the run relied on, with provenance (the KB doc + its origin/freshness). */
56
+ export const ComplianceSourceSchema = z.object({
57
+ id: z.string(),
58
+ namespace: z.string().optional(),
59
+ resource: z.string().optional(),
60
+ timestamp: z.string().optional()
61
+ });
62
+ /** Per-run AI Act report: decision traceability + human supervision + data provenance. */
63
+ /** PII-handling evidence for the run (ADR 0008): detections, redactions, blocks. */
64
+ export const CompliancePiiEventSchema = z.object({
65
+ type: z.string(),
66
+ count: z.number().int().optional(),
67
+ timestamp: z.string()
68
+ });
69
+ export const ComplianceRunReportDtoSchema = z.object({
70
+ runId: z.string(),
71
+ graphId: z.string(),
72
+ status: z.string(),
73
+ risk: ComplianceRiskSchema,
74
+ traceability: z.array(ComplianceEventSchema),
75
+ humanSupervision: z.array(ComplianceApprovalSchema),
76
+ dataSources: z.array(ComplianceSourceSchema),
77
+ piiEvents: z.array(CompliancePiiEventSchema),
78
+ generatedAt: z.string().datetime()
79
+ });
80
+ //# sourceMappingURL=compliance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compliance.js","sourceRoot":"","sources":["../src/compliance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,mEAAmE;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAE3E,+FAA+F;AAC/F,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,UAAU,EAAE,CAAC,CAAC,KAAK,CACjB,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC7B,CAAC,CACH;IACD,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE;IACzB,IAAI,EAAE,oBAAoB;CAC3B,CAAC,CAAC;AAEH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,yEAAyE;AACzE,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IACtD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC;IAC3C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC;IAChD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACjC,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAChD,CAAC;IACF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAEH,qDAAqD;AACrD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;CACf,CAAC,CAAC;AAEH,yFAAyF;AACzF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE;IAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,4FAA4F;AAC5F,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,0FAA0F;AAC1F,oFAAoF;AACpF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,IAAI,EAAE,oBAAoB;IAC1B,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC;IAC5C,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;IACnD,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC;IAC5C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;IAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC"}
@@ -0,0 +1,161 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Tool-connector DTOs (ADR 0007). A connector links a knowledge namespace to an external
4
+ * tool: OAuth providers (Notion, Slack, Google Drive, GitHub) or any MCP server. Tokens
5
+ * live encrypted in the control plane and never cross this boundary.
6
+ */
7
+ export declare const ConnectorAuthKindSchema: z.ZodEnum<["mcp", "oauth2"]>;
8
+ export type ConnectorAuthKind = z.infer<typeof ConnectorAuthKindSchema>;
9
+ /** A connectable provider in the catalogue. `available` is false when its OAuth client
10
+ * credentials are not configured in the environment (so the UI can disable it). */
11
+ export declare const ConnectorProviderDtoSchema: z.ZodObject<{
12
+ id: z.ZodString;
13
+ label: z.ZodString;
14
+ authKind: z.ZodEnum<["mcp", "oauth2"]>;
15
+ available: z.ZodBoolean;
16
+ scopes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
17
+ /** Extra fields the UI must collect at connect time (e.g. ["subdomain"] for Zendesk). */
18
+ configFields: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
19
+ }, "strip", z.ZodTypeAny, {
20
+ id: string;
21
+ label: string;
22
+ authKind: "mcp" | "oauth2";
23
+ available: boolean;
24
+ scopes: string[];
25
+ configFields: string[];
26
+ }, {
27
+ id: string;
28
+ label: string;
29
+ authKind: "mcp" | "oauth2";
30
+ available: boolean;
31
+ scopes?: string[] | undefined;
32
+ configFields?: string[] | undefined;
33
+ }>;
34
+ export type ConnectorProviderDto = z.infer<typeof ConnectorProviderDtoSchema>;
35
+ /** An established connection (no secrets — credentials stay server-side, encrypted). */
36
+ export declare const ConnectionDtoSchema: z.ZodObject<{
37
+ id: z.ZodString;
38
+ namespace: z.ZodString;
39
+ provider: z.ZodString;
40
+ authKind: z.ZodEnum<["mcp", "oauth2"]>;
41
+ status: z.ZodString;
42
+ scopes: z.ZodArray<z.ZodString, "many">;
43
+ createdBy: z.ZodString;
44
+ lastSyncAt: z.ZodNullable<z.ZodString>;
45
+ createdAt: z.ZodString;
46
+ }, "strip", z.ZodTypeAny, {
47
+ status: string;
48
+ provider: string;
49
+ id: string;
50
+ createdAt: string;
51
+ createdBy: string;
52
+ namespace: string;
53
+ authKind: "mcp" | "oauth2";
54
+ scopes: string[];
55
+ lastSyncAt: string | null;
56
+ }, {
57
+ status: string;
58
+ provider: string;
59
+ id: string;
60
+ createdAt: string;
61
+ createdBy: string;
62
+ namespace: string;
63
+ authKind: "mcp" | "oauth2";
64
+ scopes: string[];
65
+ lastSyncAt: string | null;
66
+ }>;
67
+ export type ConnectionDto = z.infer<typeof ConnectionDtoSchema>;
68
+ /** Body for POST /connectors/:provider/connect. `mcpUrl` is required when provider="mcp". */
69
+ export declare const ConnectConnectorDtoSchema: z.ZodObject<{
70
+ namespace: z.ZodString;
71
+ mcpUrl: z.ZodOptional<z.ZodString>;
72
+ /** Provider-specific connect-time config (e.g. { subdomain } for Zendesk). */
73
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
74
+ }, "strip", z.ZodTypeAny, {
75
+ namespace: string;
76
+ mcpUrl?: string | undefined;
77
+ config?: Record<string, string> | undefined;
78
+ }, {
79
+ namespace: string;
80
+ mcpUrl?: string | undefined;
81
+ config?: Record<string, string> | undefined;
82
+ }>;
83
+ export type ConnectConnectorDto = z.infer<typeof ConnectConnectorDtoSchema>;
84
+ /** Result of connect: an MCP connection is created inline; an OAuth one returns a URL to
85
+ * redirect the browser to. Exactly one field is set. */
86
+ export declare const ConnectResultDtoSchema: z.ZodObject<{
87
+ connection: z.ZodOptional<z.ZodObject<{
88
+ id: z.ZodString;
89
+ namespace: z.ZodString;
90
+ provider: z.ZodString;
91
+ authKind: z.ZodEnum<["mcp", "oauth2"]>;
92
+ status: z.ZodString;
93
+ scopes: z.ZodArray<z.ZodString, "many">;
94
+ createdBy: z.ZodString;
95
+ lastSyncAt: z.ZodNullable<z.ZodString>;
96
+ createdAt: z.ZodString;
97
+ }, "strip", z.ZodTypeAny, {
98
+ status: string;
99
+ provider: string;
100
+ id: string;
101
+ createdAt: string;
102
+ createdBy: string;
103
+ namespace: string;
104
+ authKind: "mcp" | "oauth2";
105
+ scopes: string[];
106
+ lastSyncAt: string | null;
107
+ }, {
108
+ status: string;
109
+ provider: string;
110
+ id: string;
111
+ createdAt: string;
112
+ createdBy: string;
113
+ namespace: string;
114
+ authKind: "mcp" | "oauth2";
115
+ scopes: string[];
116
+ lastSyncAt: string | null;
117
+ }>>;
118
+ authorizeUrl: z.ZodOptional<z.ZodString>;
119
+ }, "strip", z.ZodTypeAny, {
120
+ connection?: {
121
+ status: string;
122
+ provider: string;
123
+ id: string;
124
+ createdAt: string;
125
+ createdBy: string;
126
+ namespace: string;
127
+ authKind: "mcp" | "oauth2";
128
+ scopes: string[];
129
+ lastSyncAt: string | null;
130
+ } | undefined;
131
+ authorizeUrl?: string | undefined;
132
+ }, {
133
+ connection?: {
134
+ status: string;
135
+ provider: string;
136
+ id: string;
137
+ createdAt: string;
138
+ createdBy: string;
139
+ namespace: string;
140
+ authKind: "mcp" | "oauth2";
141
+ scopes: string[];
142
+ lastSyncAt: string | null;
143
+ } | undefined;
144
+ authorizeUrl?: string | undefined;
145
+ }>;
146
+ export type ConnectResultDto = z.infer<typeof ConnectResultDtoSchema>;
147
+ export declare const SyncResultDtoSchema: z.ZodObject<{
148
+ connectionId: z.ZodString;
149
+ ingested: z.ZodNumber;
150
+ lastSyncAt: z.ZodString;
151
+ }, "strip", z.ZodTypeAny, {
152
+ lastSyncAt: string;
153
+ connectionId: string;
154
+ ingested: number;
155
+ }, {
156
+ lastSyncAt: string;
157
+ connectionId: string;
158
+ ingested: number;
159
+ }>;
160
+ export type SyncResultDto = z.infer<typeof SyncResultDtoSchema>;
161
+ //# sourceMappingURL=connectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectors.d.ts","sourceRoot":"","sources":["../src/connectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,8BAA4B,CAAC;AACjE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;mFACmF;AACnF,eAAO,MAAM,0BAA0B;;;;;;IAMrC,yFAAyF;;;;;;;;;;;;;;;;EAEzF,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,wFAAwF;AACxF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,6FAA6F;AAC7F,eAAO,MAAM,yBAAyB;;;IAGpC,8EAA8E;;;;;;;;;;EAE9E,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E;wDACwD;AACxD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAI9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Tool-connector DTOs (ADR 0007). A connector links a knowledge namespace to an external
4
+ * tool: OAuth providers (Notion, Slack, Google Drive, GitHub) or any MCP server. Tokens
5
+ * live encrypted in the control plane and never cross this boundary.
6
+ */
7
+ export const ConnectorAuthKindSchema = z.enum(["mcp", "oauth2"]);
8
+ /** A connectable provider in the catalogue. `available` is false when its OAuth client
9
+ * credentials are not configured in the environment (so the UI can disable it). */
10
+ export const ConnectorProviderDtoSchema = z.object({
11
+ id: z.string(),
12
+ label: z.string(),
13
+ authKind: ConnectorAuthKindSchema,
14
+ available: z.boolean(),
15
+ scopes: z.array(z.string()).default([]),
16
+ /** Extra fields the UI must collect at connect time (e.g. ["subdomain"] for Zendesk). */
17
+ configFields: z.array(z.string()).default([])
18
+ });
19
+ /** An established connection (no secrets — credentials stay server-side, encrypted). */
20
+ export const ConnectionDtoSchema = z.object({
21
+ id: z.string(),
22
+ namespace: z.string(),
23
+ provider: z.string(),
24
+ authKind: ConnectorAuthKindSchema,
25
+ status: z.string(),
26
+ scopes: z.array(z.string()),
27
+ createdBy: z.string(),
28
+ lastSyncAt: z.string().nullable(),
29
+ createdAt: z.string()
30
+ });
31
+ /** Body for POST /connectors/:provider/connect. `mcpUrl` is required when provider="mcp". */
32
+ export const ConnectConnectorDtoSchema = z.object({
33
+ namespace: z.string().min(1),
34
+ mcpUrl: z.string().url().optional(),
35
+ /** Provider-specific connect-time config (e.g. { subdomain } for Zendesk). */
36
+ config: z.record(z.string(), z.string()).optional()
37
+ });
38
+ /** Result of connect: an MCP connection is created inline; an OAuth one returns a URL to
39
+ * redirect the browser to. Exactly one field is set. */
40
+ export const ConnectResultDtoSchema = z.object({
41
+ connection: ConnectionDtoSchema.optional(),
42
+ authorizeUrl: z.string().optional()
43
+ });
44
+ export const SyncResultDtoSchema = z.object({
45
+ connectionId: z.string(),
46
+ ingested: z.number().int(),
47
+ lastSyncAt: z.string()
48
+ });
49
+ //# sourceMappingURL=connectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectors.js","sourceRoot":"","sources":["../src/connectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGjE;mFACmF;AACnF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,uBAAuB;IACjC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACvC,yFAAyF;IACzF,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC9C,CAAC,CAAC;AAGH,wFAAwF;AACxF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,uBAAuB;IACjC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAGH,6FAA6F;AAC7F,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACnC,8EAA8E;IAC9E,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAC;AAGH;wDACwD;AACxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,UAAU,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IAC1C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC1B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { z } from "zod";
2
+ export declare const ErrorEnvelopeSchema: z.ZodObject<{
3
+ code: z.ZodString;
4
+ message: z.ZodString;
5
+ path: z.ZodOptional<z.ZodString>;
6
+ }, "strip", z.ZodTypeAny, {
7
+ code: string;
8
+ message: string;
9
+ path?: string | undefined;
10
+ }, {
11
+ code: string;
12
+ message: string;
13
+ path?: string | undefined;
14
+ }>;
15
+ export type ErrorEnvelope = z.infer<typeof ErrorEnvelopeSchema>;
16
+ //# sourceMappingURL=error-envelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-envelope.d.ts","sourceRoot":"","sources":["../src/error-envelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAI9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { z } from "zod";
2
+ export const ErrorEnvelopeSchema = z.object({
3
+ code: z.string().min(1),
4
+ message: z.string().min(1),
5
+ path: z.string().min(1).optional()
6
+ });
7
+ //# sourceMappingURL=error-envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-envelope.js","sourceRoot":"","sources":["../src/error-envelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC"}
package/dist/eval.d.ts ADDED
@@ -0,0 +1,144 @@
1
+ import { z } from "zod";
2
+ export declare const EvalExampleDtoSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ input: z.ZodUnknown;
5
+ expectedOutput: z.ZodOptional<z.ZodUnknown>;
6
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ id: string;
9
+ metadata?: Record<string, unknown> | undefined;
10
+ input?: unknown;
11
+ expectedOutput?: unknown;
12
+ }, {
13
+ id: string;
14
+ metadata?: Record<string, unknown> | undefined;
15
+ input?: unknown;
16
+ expectedOutput?: unknown;
17
+ }>;
18
+ export declare const EvalDatasetDtoSchema: z.ZodObject<{
19
+ id: z.ZodString;
20
+ name: z.ZodString;
21
+ description: z.ZodOptional<z.ZodString>;
22
+ examples: z.ZodArray<z.ZodObject<{
23
+ id: z.ZodString;
24
+ input: z.ZodUnknown;
25
+ expectedOutput: z.ZodOptional<z.ZodUnknown>;
26
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
27
+ }, "strip", z.ZodTypeAny, {
28
+ id: string;
29
+ metadata?: Record<string, unknown> | undefined;
30
+ input?: unknown;
31
+ expectedOutput?: unknown;
32
+ }, {
33
+ id: string;
34
+ metadata?: Record<string, unknown> | undefined;
35
+ input?: unknown;
36
+ expectedOutput?: unknown;
37
+ }>, "many">;
38
+ createdAt: z.ZodString;
39
+ }, "strip", z.ZodTypeAny, {
40
+ id: string;
41
+ name: string;
42
+ createdAt: string;
43
+ examples: {
44
+ id: string;
45
+ metadata?: Record<string, unknown> | undefined;
46
+ input?: unknown;
47
+ expectedOutput?: unknown;
48
+ }[];
49
+ description?: string | undefined;
50
+ }, {
51
+ id: string;
52
+ name: string;
53
+ createdAt: string;
54
+ examples: {
55
+ id: string;
56
+ metadata?: Record<string, unknown> | undefined;
57
+ input?: unknown;
58
+ expectedOutput?: unknown;
59
+ }[];
60
+ description?: string | undefined;
61
+ }>;
62
+ export declare const EvalScoreDtoSchema: z.ZodObject<{
63
+ metric: z.ZodString;
64
+ value: z.ZodNumber;
65
+ weight: z.ZodOptional<z.ZodNumber>;
66
+ }, "strip", z.ZodTypeAny, {
67
+ value: number;
68
+ metric: string;
69
+ weight?: number | undefined;
70
+ }, {
71
+ value: number;
72
+ metric: string;
73
+ weight?: number | undefined;
74
+ }>;
75
+ export declare const ExperimentDtoSchema: z.ZodObject<{
76
+ id: z.ZodString;
77
+ name: z.ZodString;
78
+ datasetId: z.ZodString;
79
+ model: z.ZodString;
80
+ status: z.ZodEnum<["queued", "running", "completed", "failed"]>;
81
+ createdAt: z.ZodString;
82
+ completedAt: z.ZodOptional<z.ZodString>;
83
+ }, "strip", z.ZodTypeAny, {
84
+ status: "queued" | "running" | "completed" | "failed";
85
+ id: string;
86
+ name: string;
87
+ createdAt: string;
88
+ model: string;
89
+ datasetId: string;
90
+ completedAt?: string | undefined;
91
+ }, {
92
+ status: "queued" | "running" | "completed" | "failed";
93
+ id: string;
94
+ name: string;
95
+ createdAt: string;
96
+ model: string;
97
+ datasetId: string;
98
+ completedAt?: string | undefined;
99
+ }>;
100
+ export declare const EvalReportDtoSchema: z.ZodObject<{
101
+ experimentId: z.ZodString;
102
+ aggregateScore: z.ZodNumber;
103
+ scores: z.ZodArray<z.ZodObject<{
104
+ metric: z.ZodString;
105
+ value: z.ZodNumber;
106
+ weight: z.ZodOptional<z.ZodNumber>;
107
+ }, "strip", z.ZodTypeAny, {
108
+ value: number;
109
+ metric: string;
110
+ weight?: number | undefined;
111
+ }, {
112
+ value: number;
113
+ metric: string;
114
+ weight?: number | undefined;
115
+ }>, "many">;
116
+ summary: z.ZodOptional<z.ZodString>;
117
+ createdAt: z.ZodString;
118
+ }, "strip", z.ZodTypeAny, {
119
+ createdAt: string;
120
+ experimentId: string;
121
+ aggregateScore: number;
122
+ scores: {
123
+ value: number;
124
+ metric: string;
125
+ weight?: number | undefined;
126
+ }[];
127
+ summary?: string | undefined;
128
+ }, {
129
+ createdAt: string;
130
+ experimentId: string;
131
+ aggregateScore: number;
132
+ scores: {
133
+ value: number;
134
+ metric: string;
135
+ weight?: number | undefined;
136
+ }[];
137
+ summary?: string | undefined;
138
+ }>;
139
+ export type EvalExampleDto = z.infer<typeof EvalExampleDtoSchema>;
140
+ export type EvalDatasetDto = z.infer<typeof EvalDatasetDtoSchema>;
141
+ export type ExperimentDto = z.infer<typeof ExperimentDtoSchema>;
142
+ export type EvalScoreDto = z.infer<typeof EvalScoreDtoSchema>;
143
+ export type EvalReportDto = z.infer<typeof EvalReportDtoSchema>;
144
+ //# sourceMappingURL=eval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../src/eval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;EAK/B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM/B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI7B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;EAQ9B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM9B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
package/dist/eval.js ADDED
@@ -0,0 +1,36 @@
1
+ import { z } from "zod";
2
+ export const EvalExampleDtoSchema = z.object({
3
+ id: z.string().min(1),
4
+ input: z.unknown(),
5
+ expectedOutput: z.unknown().optional(),
6
+ metadata: z.record(z.string(), z.unknown()).optional()
7
+ });
8
+ export const EvalDatasetDtoSchema = z.object({
9
+ id: z.string().min(1),
10
+ name: z.string().min(1),
11
+ description: z.string().optional(),
12
+ examples: z.array(EvalExampleDtoSchema),
13
+ createdAt: z.string().datetime()
14
+ });
15
+ export const EvalScoreDtoSchema = z.object({
16
+ metric: z.string().min(1),
17
+ value: z.number(),
18
+ weight: z.number().min(0).max(1).optional()
19
+ });
20
+ export const ExperimentDtoSchema = z.object({
21
+ id: z.string().min(1),
22
+ name: z.string().min(1),
23
+ datasetId: z.string().min(1),
24
+ model: z.string().min(1),
25
+ status: z.enum(["queued", "running", "completed", "failed"]),
26
+ createdAt: z.string().datetime(),
27
+ completedAt: z.string().datetime().optional()
28
+ });
29
+ export const EvalReportDtoSchema = z.object({
30
+ experimentId: z.string().min(1),
31
+ aggregateScore: z.number(),
32
+ scores: z.array(EvalScoreDtoSchema),
33
+ summary: z.string().optional(),
34
+ createdAt: z.string().datetime()
35
+ });
36
+ //# sourceMappingURL=eval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval.js","sourceRoot":"","sources":["../src/eval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;IAClB,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACtC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACvD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;IACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC5D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC"}