@xynehq/jaf 0.1.2

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 (279) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +596 -0
  3. package/dist/a2a/agent-card.d.ts +28 -0
  4. package/dist/a2a/agent-card.d.ts.map +1 -0
  5. package/dist/a2a/agent-card.js +250 -0
  6. package/dist/a2a/agent-card.js.map +1 -0
  7. package/dist/a2a/agent.d.ts +38 -0
  8. package/dist/a2a/agent.d.ts.map +1 -0
  9. package/dist/a2a/agent.js +223 -0
  10. package/dist/a2a/agent.js.map +1 -0
  11. package/dist/a2a/client.d.ts +35 -0
  12. package/dist/a2a/client.d.ts.map +1 -0
  13. package/dist/a2a/client.js +337 -0
  14. package/dist/a2a/client.js.map +1 -0
  15. package/dist/a2a/examples/client-example.d.ts +104 -0
  16. package/dist/a2a/examples/client-example.d.ts.map +1 -0
  17. package/dist/a2a/examples/client-example.js +232 -0
  18. package/dist/a2a/examples/client-example.js.map +1 -0
  19. package/dist/a2a/examples/server-example.d.ts +9 -0
  20. package/dist/a2a/examples/server-example.d.ts.map +1 -0
  21. package/dist/a2a/examples/server-example.js +209 -0
  22. package/dist/a2a/examples/server-example.js.map +1 -0
  23. package/dist/a2a/examples/weather-agent.d.ts +8 -0
  24. package/dist/a2a/examples/weather-agent.d.ts.map +1 -0
  25. package/dist/a2a/examples/weather-agent.js +232 -0
  26. package/dist/a2a/examples/weather-agent.js.map +1 -0
  27. package/dist/a2a/executor.d.ts +43 -0
  28. package/dist/a2a/executor.d.ts.map +1 -0
  29. package/dist/a2a/executor.js +507 -0
  30. package/dist/a2a/executor.js.map +1 -0
  31. package/dist/a2a/index.d.ts +378 -0
  32. package/dist/a2a/index.d.ts.map +1 -0
  33. package/dist/a2a/index.js +72 -0
  34. package/dist/a2a/index.js.map +1 -0
  35. package/dist/a2a/memory/cleanup.d.ts +58 -0
  36. package/dist/a2a/memory/cleanup.d.ts.map +1 -0
  37. package/dist/a2a/memory/cleanup.js +281 -0
  38. package/dist/a2a/memory/cleanup.js.map +1 -0
  39. package/dist/a2a/memory/factory.d.ts +38 -0
  40. package/dist/a2a/memory/factory.d.ts.map +1 -0
  41. package/dist/a2a/memory/factory.js +369 -0
  42. package/dist/a2a/memory/factory.js.map +1 -0
  43. package/dist/a2a/memory/index.d.ts +13 -0
  44. package/dist/a2a/memory/index.d.ts.map +1 -0
  45. package/dist/a2a/memory/index.js +16 -0
  46. package/dist/a2a/memory/index.js.map +1 -0
  47. package/dist/a2a/memory/providers/in-memory.d.ts +10 -0
  48. package/dist/a2a/memory/providers/in-memory.d.ts.map +1 -0
  49. package/dist/a2a/memory/providers/in-memory.js +539 -0
  50. package/dist/a2a/memory/providers/in-memory.js.map +1 -0
  51. package/dist/a2a/memory/providers/postgres.d.ts +10 -0
  52. package/dist/a2a/memory/providers/postgres.d.ts.map +1 -0
  53. package/dist/a2a/memory/providers/postgres.js +404 -0
  54. package/dist/a2a/memory/providers/postgres.js.map +1 -0
  55. package/dist/a2a/memory/providers/redis.d.ts +10 -0
  56. package/dist/a2a/memory/providers/redis.d.ts.map +1 -0
  57. package/dist/a2a/memory/providers/redis.js +435 -0
  58. package/dist/a2a/memory/providers/redis.js.map +1 -0
  59. package/dist/a2a/memory/serialization.d.ts +53 -0
  60. package/dist/a2a/memory/serialization.d.ts.map +1 -0
  61. package/dist/a2a/memory/serialization.js +233 -0
  62. package/dist/a2a/memory/serialization.js.map +1 -0
  63. package/dist/a2a/memory/types.d.ts +395 -0
  64. package/dist/a2a/memory/types.d.ts.map +1 -0
  65. package/dist/a2a/memory/types.js +85 -0
  66. package/dist/a2a/memory/types.js.map +1 -0
  67. package/dist/a2a/protocol.d.ts +38 -0
  68. package/dist/a2a/protocol.d.ts.map +1 -0
  69. package/dist/a2a/protocol.js +211 -0
  70. package/dist/a2a/protocol.js.map +1 -0
  71. package/dist/a2a/server.d.ts +343 -0
  72. package/dist/a2a/server.d.ts.map +1 -0
  73. package/dist/a2a/server.js +362 -0
  74. package/dist/a2a/server.js.map +1 -0
  75. package/dist/a2a/types.d.ts +730 -0
  76. package/dist/a2a/types.d.ts.map +1 -0
  77. package/dist/a2a/types.js +73 -0
  78. package/dist/a2a/types.js.map +1 -0
  79. package/dist/adk/agents/index.d.ts +48 -0
  80. package/dist/adk/agents/index.d.ts.map +1 -0
  81. package/dist/adk/agents/index.js +277 -0
  82. package/dist/adk/agents/index.js.map +1 -0
  83. package/dist/adk/artifacts/index.d.ts +62 -0
  84. package/dist/adk/artifacts/index.d.ts.map +1 -0
  85. package/dist/adk/artifacts/index.js +394 -0
  86. package/dist/adk/artifacts/index.js.map +1 -0
  87. package/dist/adk/config/llm-config.d.ts +75 -0
  88. package/dist/adk/config/llm-config.d.ts.map +1 -0
  89. package/dist/adk/config/llm-config.js +422 -0
  90. package/dist/adk/config/llm-config.js.map +1 -0
  91. package/dist/adk/content/index.d.ts +58 -0
  92. package/dist/adk/content/index.d.ts.map +1 -0
  93. package/dist/adk/content/index.js +220 -0
  94. package/dist/adk/content/index.js.map +1 -0
  95. package/dist/adk/examples/advanced-features.d.ts +22 -0
  96. package/dist/adk/examples/advanced-features.d.ts.map +1 -0
  97. package/dist/adk/examples/advanced-features.js +380 -0
  98. package/dist/adk/examples/advanced-features.js.map +1 -0
  99. package/dist/adk/examples/basic-agent.d.ts +28 -0
  100. package/dist/adk/examples/basic-agent.d.ts.map +1 -0
  101. package/dist/adk/examples/basic-agent.js +207 -0
  102. package/dist/adk/examples/basic-agent.js.map +1 -0
  103. package/dist/adk/examples/multi-agent.d.ts +24 -0
  104. package/dist/adk/examples/multi-agent.d.ts.map +1 -0
  105. package/dist/adk/examples/multi-agent.js +321 -0
  106. package/dist/adk/examples/multi-agent.js.map +1 -0
  107. package/dist/adk/examples/streaming-example.d.ts +9 -0
  108. package/dist/adk/examples/streaming-example.d.ts.map +1 -0
  109. package/dist/adk/examples/streaming-example.js +193 -0
  110. package/dist/adk/examples/streaming-example.js.map +1 -0
  111. package/dist/adk/index.d.ts +65 -0
  112. package/dist/adk/index.d.ts.map +1 -0
  113. package/dist/adk/index.js +251 -0
  114. package/dist/adk/index.js.map +1 -0
  115. package/dist/adk/models.d.ts +338 -0
  116. package/dist/adk/models.d.ts.map +1 -0
  117. package/dist/adk/models.js +466 -0
  118. package/dist/adk/models.js.map +1 -0
  119. package/dist/adk/providers/error-handler.d.ts +100 -0
  120. package/dist/adk/providers/error-handler.d.ts.map +1 -0
  121. package/dist/adk/providers/error-handler.js +289 -0
  122. package/dist/adk/providers/error-handler.js.map +1 -0
  123. package/dist/adk/providers/llm-service.d.ts +41 -0
  124. package/dist/adk/providers/llm-service.d.ts.map +1 -0
  125. package/dist/adk/providers/llm-service.js +520 -0
  126. package/dist/adk/providers/llm-service.js.map +1 -0
  127. package/dist/adk/providers/type-converters.d.ts +34 -0
  128. package/dist/adk/providers/type-converters.d.ts.map +1 -0
  129. package/dist/adk/providers/type-converters.js +436 -0
  130. package/dist/adk/providers/type-converters.js.map +1 -0
  131. package/dist/adk/runners/index.d.ts +33 -0
  132. package/dist/adk/runners/index.d.ts.map +1 -0
  133. package/dist/adk/runners/index.js +466 -0
  134. package/dist/adk/runners/index.js.map +1 -0
  135. package/dist/adk/schemas/index.d.ts +85 -0
  136. package/dist/adk/schemas/index.d.ts.map +1 -0
  137. package/dist/adk/schemas/index.js +363 -0
  138. package/dist/adk/schemas/index.js.map +1 -0
  139. package/dist/adk/sessions/examples/session-provider-usage.d.ts +10 -0
  140. package/dist/adk/sessions/examples/session-provider-usage.d.ts.map +1 -0
  141. package/dist/adk/sessions/examples/session-provider-usage.js +145 -0
  142. package/dist/adk/sessions/examples/session-provider-usage.js.map +1 -0
  143. package/dist/adk/sessions/index.d.ts +53 -0
  144. package/dist/adk/sessions/index.d.ts.map +1 -0
  145. package/dist/adk/sessions/index.js +451 -0
  146. package/dist/adk/sessions/index.js.map +1 -0
  147. package/dist/adk/sessions/postgres-provider.d.ts +22 -0
  148. package/dist/adk/sessions/postgres-provider.d.ts.map +1 -0
  149. package/dist/adk/sessions/postgres-provider.js +293 -0
  150. package/dist/adk/sessions/postgres-provider.js.map +1 -0
  151. package/dist/adk/sessions/redis-provider.d.ts +19 -0
  152. package/dist/adk/sessions/redis-provider.d.ts.map +1 -0
  153. package/dist/adk/sessions/redis-provider.js +237 -0
  154. package/dist/adk/sessions/redis-provider.js.map +1 -0
  155. package/dist/adk/streaming/index.d.ts +76 -0
  156. package/dist/adk/streaming/index.d.ts.map +1 -0
  157. package/dist/adk/streaming/index.js +419 -0
  158. package/dist/adk/streaming/index.js.map +1 -0
  159. package/dist/adk/tools/index.d.ts +27 -0
  160. package/dist/adk/tools/index.d.ts.map +1 -0
  161. package/dist/adk/tools/index.js +506 -0
  162. package/dist/adk/tools/index.js.map +1 -0
  163. package/dist/adk/types.d.ts +351 -0
  164. package/dist/adk/types.d.ts.map +1 -0
  165. package/dist/adk/types.js +107 -0
  166. package/dist/adk/types.js.map +1 -0
  167. package/dist/core/engine.d.ts +3 -0
  168. package/dist/core/engine.d.ts.map +1 -0
  169. package/dist/core/engine.js +438 -0
  170. package/dist/core/engine.js.map +1 -0
  171. package/dist/core/errors.d.ts +8 -0
  172. package/dist/core/errors.d.ts.map +1 -0
  173. package/dist/core/errors.js +84 -0
  174. package/dist/core/errors.js.map +1 -0
  175. package/dist/core/tool-results.d.ts +57 -0
  176. package/dist/core/tool-results.d.ts.map +1 -0
  177. package/dist/core/tool-results.js +133 -0
  178. package/dist/core/tool-results.js.map +1 -0
  179. package/dist/core/tracing.d.ts +32 -0
  180. package/dist/core/tracing.d.ts.map +1 -0
  181. package/dist/core/tracing.js +132 -0
  182. package/dist/core/tracing.js.map +1 -0
  183. package/dist/core/types.d.ts +165 -0
  184. package/dist/core/types.d.ts.map +1 -0
  185. package/dist/core/types.js +3 -0
  186. package/dist/core/types.js.map +1 -0
  187. package/dist/demo/agents.d.ts +23 -0
  188. package/dist/demo/agents.d.ts.map +1 -0
  189. package/dist/demo/agents.js +69 -0
  190. package/dist/demo/agents.js.map +1 -0
  191. package/dist/demo/index.d.ts +2 -0
  192. package/dist/demo/index.d.ts.map +1 -0
  193. package/dist/demo/index.js +250 -0
  194. package/dist/demo/index.js.map +1 -0
  195. package/dist/demo/mock-provider.d.ts +22 -0
  196. package/dist/demo/mock-provider.d.ts.map +1 -0
  197. package/dist/demo/mock-provider.js +138 -0
  198. package/dist/demo/mock-provider.js.map +1 -0
  199. package/dist/demo/tools.d.ts +14 -0
  200. package/dist/demo/tools.d.ts.map +1 -0
  201. package/dist/demo/tools.js +115 -0
  202. package/dist/demo/tools.js.map +1 -0
  203. package/dist/index.d.ts +20 -0
  204. package/dist/index.d.ts.map +1 -0
  205. package/dist/index.js +30 -0
  206. package/dist/index.js.map +1 -0
  207. package/dist/memory/factory.d.ts +22 -0
  208. package/dist/memory/factory.d.ts.map +1 -0
  209. package/dist/memory/factory.js +88 -0
  210. package/dist/memory/factory.js.map +1 -0
  211. package/dist/memory/providers/in-memory.d.ts +7 -0
  212. package/dist/memory/providers/in-memory.d.ts.map +1 -0
  213. package/dist/memory/providers/in-memory.js +287 -0
  214. package/dist/memory/providers/in-memory.js.map +1 -0
  215. package/dist/memory/providers/postgres.d.ts +15 -0
  216. package/dist/memory/providers/postgres.d.ts.map +1 -0
  217. package/dist/memory/providers/postgres.js +495 -0
  218. package/dist/memory/providers/postgres.js.map +1 -0
  219. package/dist/memory/providers/redis.d.ts +18 -0
  220. package/dist/memory/providers/redis.d.ts.map +1 -0
  221. package/dist/memory/providers/redis.js +354 -0
  222. package/dist/memory/providers/redis.js.map +1 -0
  223. package/dist/memory/types.d.ts +296 -0
  224. package/dist/memory/types.d.ts.map +1 -0
  225. package/dist/memory/types.js +93 -0
  226. package/dist/memory/types.js.map +1 -0
  227. package/dist/policies/handoff.d.ts +16 -0
  228. package/dist/policies/handoff.d.ts.map +1 -0
  229. package/dist/policies/handoff.js +20 -0
  230. package/dist/policies/handoff.js.map +1 -0
  231. package/dist/policies/validation.d.ts +14 -0
  232. package/dist/policies/validation.d.ts.map +1 -0
  233. package/dist/policies/validation.js +92 -0
  234. package/dist/policies/validation.js.map +1 -0
  235. package/dist/providers/mcp.d.ts +17 -0
  236. package/dist/providers/mcp.d.ts.map +1 -0
  237. package/dist/providers/mcp.js +111 -0
  238. package/dist/providers/mcp.js.map +1 -0
  239. package/dist/providers/model.d.ts +3 -0
  240. package/dist/providers/model.d.ts.map +1 -0
  241. package/dist/providers/model.js +113 -0
  242. package/dist/providers/model.js.map +1 -0
  243. package/dist/server/index.d.ts +35 -0
  244. package/dist/server/index.d.ts.map +1 -0
  245. package/dist/server/index.js +66 -0
  246. package/dist/server/index.js.map +1 -0
  247. package/dist/server/server.d.ts +12 -0
  248. package/dist/server/server.d.ts.map +1 -0
  249. package/dist/server/server.js +394 -0
  250. package/dist/server/server.js.map +1 -0
  251. package/dist/server/types.d.ts +456 -0
  252. package/dist/server/types.d.ts.map +1 -0
  253. package/dist/server/types.js +75 -0
  254. package/dist/server/types.js.map +1 -0
  255. package/dist/test-utils/db-setup.d.ts +34 -0
  256. package/dist/test-utils/db-setup.d.ts.map +1 -0
  257. package/dist/test-utils/db-setup.js +149 -0
  258. package/dist/test-utils/db-setup.js.map +1 -0
  259. package/dist/utils/logger.d.ts +63 -0
  260. package/dist/utils/logger.d.ts.map +1 -0
  261. package/dist/utils/logger.js +199 -0
  262. package/dist/utils/logger.js.map +1 -0
  263. package/dist/utils/safe-math.d.ts +31 -0
  264. package/dist/utils/safe-math.d.ts.map +1 -0
  265. package/dist/utils/safe-math.js +86 -0
  266. package/dist/utils/safe-math.js.map +1 -0
  267. package/dist/visualization/example.d.ts +9 -0
  268. package/dist/visualization/example.d.ts.map +1 -0
  269. package/dist/visualization/example.js +236 -0
  270. package/dist/visualization/example.js.map +1 -0
  271. package/dist/visualization/graphviz.d.ts +42 -0
  272. package/dist/visualization/graphviz.d.ts.map +1 -0
  273. package/dist/visualization/graphviz.js +403 -0
  274. package/dist/visualization/graphviz.js.map +1 -0
  275. package/dist/visualization/index.d.ts +10 -0
  276. package/dist/visualization/index.d.ts.map +1 -0
  277. package/dist/visualization/index.js +12 -0
  278. package/dist/visualization/index.js.map +1 -0
  279. package/package.json +99 -0
@@ -0,0 +1,363 @@
1
+ /**
2
+ * JAF ADK Layer - Schema Validation
3
+ *
4
+ * Functional schema validation system
5
+ */
6
+ import { throwValidationError } from '../types';
7
+ // Re-export createValidationError for external use
8
+ export { createValidationError } from '../types';
9
+ // ========== Schema Validator Creation ==========
10
+ export const createSchemaValidator = (schema, validator) => ({
11
+ schema,
12
+ validate: (data) => {
13
+ try {
14
+ // First run the type guard
15
+ if (!validator(data)) {
16
+ return {
17
+ success: false,
18
+ errors: ['Data does not match expected type']
19
+ };
20
+ }
21
+ // Then run JSON schema validation
22
+ const schemaValidation = validateAgainstJsonSchema(data, schema);
23
+ if (!schemaValidation.success) {
24
+ return { success: false, errors: schemaValidation.errors };
25
+ }
26
+ return {
27
+ success: true,
28
+ data: data
29
+ };
30
+ }
31
+ catch (error) {
32
+ return {
33
+ success: false,
34
+ errors: [`Validation error: ${error instanceof Error ? error.message : String(error)}`]
35
+ };
36
+ }
37
+ }
38
+ });
39
+ // ========== JSON Schema Validation ==========
40
+ export const validateAgainstJsonSchema = (data, schema) => {
41
+ const errors = [];
42
+ // Type validation
43
+ if (!validateType(data, schema.type)) {
44
+ errors.push(`Expected type ${schema.type}, got ${typeof data}`);
45
+ return { success: false, errors };
46
+ }
47
+ // Specific validations based on type
48
+ switch (schema.type) {
49
+ case 'object': {
50
+ const objectValidation = validateObject(data, schema);
51
+ if (!objectValidation.success) {
52
+ errors.push(...(objectValidation.errors || []));
53
+ }
54
+ break;
55
+ }
56
+ case 'array': {
57
+ const arrayValidation = validateArray(data, schema);
58
+ if (!arrayValidation.success) {
59
+ errors.push(...(arrayValidation.errors || []));
60
+ }
61
+ break;
62
+ }
63
+ case 'string': {
64
+ const stringValidation = validateString(data, schema);
65
+ if (!stringValidation.success) {
66
+ errors.push(...(stringValidation.errors || []));
67
+ }
68
+ break;
69
+ }
70
+ case 'number': {
71
+ const numberValidation = validateNumber(data, schema);
72
+ if (!numberValidation.success) {
73
+ errors.push(...(numberValidation.errors || []));
74
+ }
75
+ break;
76
+ }
77
+ }
78
+ // Enum validation
79
+ if (schema.enum && !schema.enum.includes(data)) {
80
+ errors.push(`Value must be one of: ${schema.enum.join(', ')}`);
81
+ }
82
+ if (errors.length > 0) {
83
+ return { success: false, errors };
84
+ }
85
+ return { success: true, data };
86
+ };
87
+ const validateType = (data, type) => {
88
+ switch (type) {
89
+ case 'string':
90
+ return typeof data === 'string';
91
+ case 'number':
92
+ return typeof data === 'number';
93
+ case 'boolean':
94
+ return typeof data === 'boolean';
95
+ case 'object':
96
+ return typeof data === 'object' && data !== null && !Array.isArray(data);
97
+ case 'array':
98
+ return Array.isArray(data);
99
+ case 'null':
100
+ return data === null;
101
+ default:
102
+ return true; // Unknown types pass
103
+ }
104
+ };
105
+ const validateObject = (data, schema) => {
106
+ const errors = [];
107
+ // Check required properties
108
+ if (schema.required) {
109
+ for (const requiredProp of schema.required) {
110
+ if (!(requiredProp in data)) {
111
+ errors.push(`Missing required property: ${requiredProp}`);
112
+ }
113
+ }
114
+ }
115
+ // Validate properties
116
+ if (schema.properties) {
117
+ for (const [propName, propSchema] of Object.entries(schema.properties)) {
118
+ if (propName in data) {
119
+ const propValidation = validateAgainstJsonSchema(data[propName], propSchema);
120
+ if (!propValidation.success) {
121
+ errors.push(`Property '${propName}': ${propValidation.errors?.join(', ')}`);
122
+ }
123
+ }
124
+ }
125
+ }
126
+ if (errors.length > 0) {
127
+ return { success: false, errors };
128
+ }
129
+ return { success: true, data };
130
+ };
131
+ const validateArray = (data, schema) => {
132
+ const errors = [];
133
+ // Validate items
134
+ if (schema.items) {
135
+ for (let i = 0; i < data.length; i++) {
136
+ const itemValidation = validateAgainstJsonSchema(data[i], schema.items);
137
+ if (!itemValidation.success) {
138
+ errors.push(`Item ${i}: ${itemValidation.errors?.join(', ')}`);
139
+ }
140
+ }
141
+ }
142
+ if (errors.length > 0) {
143
+ return { success: false, errors };
144
+ }
145
+ return { success: true, data };
146
+ };
147
+ const validateString = (data, schema) => {
148
+ const errors = [];
149
+ // Add string-specific validations here (length, pattern, etc.)
150
+ // For now, just basic validation
151
+ if (errors.length > 0) {
152
+ return { success: false, errors };
153
+ }
154
+ return { success: true, data };
155
+ };
156
+ const validateNumber = (data, schema) => {
157
+ const errors = [];
158
+ // Add number-specific validations here (min, max, etc.)
159
+ // For now, just basic validation
160
+ if (errors.length > 0) {
161
+ return { success: false, errors };
162
+ }
163
+ return { success: true, data };
164
+ };
165
+ // ========== Common Type Guards ==========
166
+ export const isString = (value) => {
167
+ return typeof value === 'string';
168
+ };
169
+ export const isNumber = (value) => {
170
+ return typeof value === 'number';
171
+ };
172
+ export const isBoolean = (value) => {
173
+ return typeof value === 'boolean';
174
+ };
175
+ export const isObject = (value) => {
176
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
177
+ };
178
+ export const isArray = (value) => {
179
+ return Array.isArray(value);
180
+ };
181
+ export const isNull = (value) => {
182
+ return value === null;
183
+ };
184
+ export const isUndefined = (value) => {
185
+ return value === undefined;
186
+ };
187
+ // ========== Schema Builders ==========
188
+ export const stringSchema = (options) => ({
189
+ type: 'string',
190
+ description: options?.description,
191
+ enum: options?.enum,
192
+ default: options?.default
193
+ });
194
+ export const numberSchema = (options) => ({
195
+ type: 'number',
196
+ description: options?.description,
197
+ enum: options?.enum,
198
+ default: options?.default
199
+ });
200
+ export const booleanSchema = (options) => ({
201
+ type: 'boolean',
202
+ description: options?.description,
203
+ default: options?.default
204
+ });
205
+ export const objectSchema = (properties, required, options) => ({
206
+ type: 'object',
207
+ properties,
208
+ required,
209
+ description: options?.description
210
+ });
211
+ export const arraySchema = (items, options) => ({
212
+ type: 'array',
213
+ items,
214
+ description: options?.description
215
+ });
216
+ // ========== Common Validators ==========
217
+ export const createStringValidator = (options) => {
218
+ return createSchemaValidator(stringSchema(options), isString);
219
+ };
220
+ export const createNumberValidator = (options) => {
221
+ return createSchemaValidator(numberSchema(options), isNumber);
222
+ };
223
+ export const createBooleanValidator = (options) => {
224
+ return createSchemaValidator(booleanSchema(options), isBoolean);
225
+ };
226
+ export const createObjectValidator = (properties, required, typeGuard) => {
227
+ const schema = objectSchema(properties, required);
228
+ const guard = typeGuard || isObject;
229
+ return createSchemaValidator(schema, guard);
230
+ };
231
+ export const createArrayValidator = (items, typeGuard) => {
232
+ const schema = arraySchema(items);
233
+ const guard = typeGuard || isArray;
234
+ return createSchemaValidator(schema, guard);
235
+ };
236
+ // ========== Composite Type Guards ==========
237
+ export const isOptional = (guard) => {
238
+ return (value) => {
239
+ return value === undefined || guard(value);
240
+ };
241
+ };
242
+ export const isNullable = (guard) => {
243
+ return (value) => {
244
+ return value === null || guard(value);
245
+ };
246
+ };
247
+ export const isUnion = (...guards) => {
248
+ return (value) => {
249
+ return guards.some(guard => guard(value));
250
+ };
251
+ };
252
+ export const hasProperty = (key) => {
253
+ return (value) => {
254
+ return isObject(value) && key in value;
255
+ };
256
+ };
257
+ export const hasProperties = (...keys) => {
258
+ return (value) => {
259
+ if (!isObject(value))
260
+ return false;
261
+ return keys.every(key => key in value);
262
+ };
263
+ };
264
+ // ========== Validation Utilities ==========
265
+ export const validateInput = (validator, data) => {
266
+ return validator.validate(data);
267
+ };
268
+ export const validateOutput = (validator, data) => {
269
+ return validator.validate(data);
270
+ };
271
+ export const assertValid = (validator, data) => {
272
+ const result = validator.validate(data);
273
+ if (!result.success) {
274
+ throwValidationError(`Validation failed: ${result.errors?.join(', ')}`, result.errors || [], { data });
275
+ }
276
+ return result.data;
277
+ };
278
+ export const isValid = (validator, data) => {
279
+ const result = validator.validate(data);
280
+ return result.success;
281
+ };
282
+ // ========== Schema Transformation ==========
283
+ export const transformAndValidate = (validator, transformer, data) => {
284
+ try {
285
+ const transformed = transformer(data);
286
+ return validator.validate(transformed);
287
+ }
288
+ catch (error) {
289
+ return {
290
+ success: false,
291
+ errors: [`Transformation failed: ${error instanceof Error ? error.message : String(error)}`]
292
+ };
293
+ }
294
+ };
295
+ export const validateAndTransform = (inputValidator, transformer, data) => {
296
+ const inputResult = inputValidator.validate(data);
297
+ if (!inputResult.success) {
298
+ return { success: false, errors: inputResult.errors };
299
+ }
300
+ try {
301
+ const transformed = transformer(inputResult.data);
302
+ return { success: true, data: transformed };
303
+ }
304
+ catch (error) {
305
+ return {
306
+ success: false,
307
+ errors: [`Transformation failed: ${error instanceof Error ? error.message : String(error)}`]
308
+ };
309
+ }
310
+ };
311
+ export const weatherQueryValidator = createObjectValidator({
312
+ location: stringSchema({ description: 'City or location name' }),
313
+ units: stringSchema({
314
+ description: 'Temperature units',
315
+ enum: ['celsius', 'fahrenheit'],
316
+ default: 'celsius'
317
+ }),
318
+ includeHourly: booleanSchema({
319
+ description: 'Include hourly forecast',
320
+ default: false
321
+ })
322
+ }, ['location'], (value) => {
323
+ return isObject(value) &&
324
+ hasProperty('location')(value) &&
325
+ isString(value.location);
326
+ });
327
+ export const weatherResponseValidator = createObjectValidator({
328
+ location: stringSchema({ description: 'Location name' }),
329
+ temperature: numberSchema({ description: 'Current temperature' }),
330
+ condition: stringSchema({ description: 'Weather condition' }),
331
+ humidity: numberSchema({ description: 'Humidity percentage' }),
332
+ forecast: arraySchema(objectSchema({
333
+ time: stringSchema({ description: 'Forecast time' }),
334
+ temperature: numberSchema({ description: 'Forecast temperature' }),
335
+ condition: stringSchema({ description: 'Forecast condition' })
336
+ }, ['time', 'temperature', 'condition']))
337
+ }, ['location', 'temperature', 'condition', 'humidity']);
338
+ // ========== Schema Error Handling ==========
339
+ // Note: createValidationError is now imported from types.ts as a factory function
340
+ export const withSchemaValidation = (fn, inputValidators, outputValidator) => {
341
+ return (...args) => {
342
+ // Validate inputs
343
+ if (inputValidators) {
344
+ for (let i = 0; i < inputValidators.length && i < args.length; i++) {
345
+ const validation = inputValidators[i].validate(args[i]);
346
+ if (!validation.success) {
347
+ throwValidationError(`Input validation failed for argument ${i}`, validation.errors || [], { argument: i, value: args[i] });
348
+ }
349
+ }
350
+ }
351
+ // Execute function
352
+ const result = fn(...args);
353
+ // Validate output
354
+ if (outputValidator) {
355
+ const validation = outputValidator.validate(result);
356
+ if (!validation.success) {
357
+ throwValidationError('Output validation failed', validation.errors || [], { result });
358
+ }
359
+ }
360
+ return result;
361
+ };
362
+ };
363
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adk/schemas/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Example usage of session providers
3
+ */
4
+ import { SessionProvider } from '../../types.js';
5
+ declare function inMemoryExample(): Promise<void>;
6
+ declare function redisExample(): Promise<void>;
7
+ declare function postgresExample(): Promise<void>;
8
+ declare function useAnyProvider(provider: SessionProvider): Promise<void>;
9
+ export { inMemoryExample, redisExample, postgresExample, useAnyProvider };
10
+ //# sourceMappingURL=session-provider-usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-provider-usage.d.ts","sourceRoot":"","sources":["../../../../src/adk/sessions/examples/session-provider-usage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,EAAE,eAAe,EAA+B,MAAM,gBAAgB,CAAC;AAG9E,iBAAe,eAAe,kBA0C7B;AAGD,iBAAe,YAAY,kBA2B1B;AAGD,iBAAe,eAAe,kBA0B7B;AAGD,iBAAe,cAAc,CAAC,QAAQ,EAAE,eAAe,iBA4CtD;AAuBD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Example usage of session providers
3
+ */
4
+ import { createInMemorySessionProvider, createRedisSessionProvider, createPostgresSessionProvider, addMessageToSession, addArtifactToSession, getSessionStats } from '../index.js';
5
+ import { ContentRole } from '../../types.js';
6
+ // Example 1: In-Memory Session Provider
7
+ async function inMemoryExample() {
8
+ console.log('=== In-Memory Session Provider Example ===');
9
+ const provider = createInMemorySessionProvider();
10
+ // Create a session
11
+ const context = {
12
+ appName: 'my-app',
13
+ userId: 'user-123',
14
+ sessionId: 'session-456'
15
+ };
16
+ let session = await provider.createSession(context);
17
+ console.log('Created session:', session.id);
18
+ // Add messages
19
+ session = addMessageToSession(session, {
20
+ role: ContentRole.USER,
21
+ parts: [{ type: 'text', text: 'Hello, AI!' }]
22
+ });
23
+ session = addMessageToSession(session, {
24
+ role: ContentRole.MODEL,
25
+ parts: [{ type: 'text', text: 'Hello! How can I help you?' }]
26
+ });
27
+ // Add artifacts
28
+ session = addArtifactToSession(session, 'userPreferences', {
29
+ theme: 'dark',
30
+ language: 'en'
31
+ });
32
+ // Update session
33
+ await provider.updateSession(session);
34
+ // Get session stats
35
+ const stats = getSessionStats(session);
36
+ console.log('Session stats:', stats);
37
+ // List user sessions
38
+ const sessions = await provider.listSessions('user-123');
39
+ console.log('User has', sessions.length, 'sessions');
40
+ }
41
+ // Example 2: Redis Session Provider
42
+ async function redisExample() {
43
+ console.log('\n=== Redis Session Provider Example ===');
44
+ try {
45
+ const provider = createRedisSessionProvider({
46
+ host: process.env.REDIS_HOST || 'localhost',
47
+ port: parseInt(process.env.REDIS_PORT || '6379'),
48
+ keyPrefix: 'myapp:sessions:',
49
+ ttl: 3600 // 1 hour TTL
50
+ });
51
+ // Create a session
52
+ const context = {
53
+ appName: 'redis-app',
54
+ userId: 'redis-user-123'
55
+ };
56
+ const session = await provider.createSession(context);
57
+ console.log('Created Redis session:', session.id);
58
+ // Session will be automatically persisted to Redis
59
+ // and will expire after 1 hour
60
+ }
61
+ catch (error) {
62
+ console.error('Redis provider error:', error.message);
63
+ console.log('Make sure Redis is installed and running');
64
+ }
65
+ }
66
+ // Example 3: PostgreSQL Session Provider
67
+ async function postgresExample() {
68
+ console.log('\n=== PostgreSQL Session Provider Example ===');
69
+ try {
70
+ const provider = createPostgresSessionProvider({
71
+ connectionString: process.env.DATABASE_URL || 'postgresql://localhost/myapp',
72
+ tableName: 'app_sessions',
73
+ poolSize: 10
74
+ });
75
+ // Create a session
76
+ const context = {
77
+ appName: 'postgres-app',
78
+ userId: 'pg-user-123'
79
+ };
80
+ const session = await provider.createSession(context);
81
+ console.log('Created PostgreSQL session:', session.id);
82
+ // Session will be automatically persisted to PostgreSQL
83
+ // Table will be created automatically if it doesn't exist
84
+ }
85
+ catch (error) {
86
+ console.error('PostgreSQL provider error:', error.message);
87
+ console.log('Make sure PostgreSQL is installed and database exists');
88
+ }
89
+ }
90
+ // Example 4: Provider-agnostic code
91
+ async function useAnyProvider(provider) {
92
+ console.log('\n=== Provider-Agnostic Example ===');
93
+ const context = {
94
+ appName: 'universal-app',
95
+ userId: 'user-789'
96
+ };
97
+ // Create session
98
+ let session = await provider.createSession(context);
99
+ // Add conversation
100
+ session = addMessageToSession(session, {
101
+ role: ContentRole.USER,
102
+ parts: [{ type: 'text', text: 'What is the weather today?' }]
103
+ });
104
+ session = addMessageToSession(session, {
105
+ role: ContentRole.MODEL,
106
+ parts: [{
107
+ type: 'function_call',
108
+ functionCall: {
109
+ id: 'call-123',
110
+ name: 'getWeather',
111
+ args: { location: 'current' }
112
+ }
113
+ }]
114
+ });
115
+ session = addMessageToSession(session, {
116
+ role: ContentRole.MODEL,
117
+ parts: [{ type: 'text', text: 'The weather today is sunny with a high of 75°F.' }]
118
+ });
119
+ // Save session
120
+ await provider.updateSession(session);
121
+ // Retrieve session
122
+ const retrieved = await provider.getSession(session.id);
123
+ console.log('Retrieved session with', retrieved?.messages.length, 'messages');
124
+ // Clean up
125
+ await provider.deleteSession(session.id);
126
+ console.log('Session deleted');
127
+ }
128
+ // Run examples
129
+ async function main() {
130
+ // Always works - no dependencies
131
+ await inMemoryExample();
132
+ // Requires Redis
133
+ await redisExample();
134
+ // Requires PostgreSQL
135
+ await postgresExample();
136
+ // Use any provider
137
+ const provider = createInMemorySessionProvider();
138
+ await useAnyProvider(provider);
139
+ }
140
+ // Run if called directly
141
+ if (import.meta.url === `file://${process.argv[1]}`) {
142
+ main().catch(console.error);
143
+ }
144
+ export { inMemoryExample, redisExample, postgresExample, useAnyProvider };
145
+ //# sourceMappingURL=session-provider-usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-provider-usage.js","sourceRoot":"","sources":["../../../../src/adk/sessions/examples/session-provider-usage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * JAF ADK Layer - Session Management
3
+ *
4
+ * Functional session management with pluggable providers
5
+ */
6
+ import { Session, SessionContext, SessionProvider, SessionMetadata, Content, ValidationResult, createSessionError } from '../types';
7
+ export declare const generateSessionId: () => string;
8
+ export declare const createSession: (appName: string, userId: string, sessionId?: string, metadata?: Partial<SessionMetadata>) => Session;
9
+ export declare const createInMemorySessionProvider: () => SessionProvider;
10
+ export { createRedisSessionProvider, type RedisConfig } from './redis-provider.js';
11
+ interface MockRedisConfig {
12
+ host: string;
13
+ port: number;
14
+ password?: string;
15
+ database?: number;
16
+ keyPrefix?: string;
17
+ }
18
+ export declare const createMockRedisSessionProvider: (config: MockRedisConfig) => SessionProvider;
19
+ export { createPostgresSessionProvider, type PostgresConfig } from './postgres-provider.js';
20
+ export declare const addMessageToSession: (session: Session, message: Content) => Session;
21
+ export declare const addArtifactToSession: (session: Session, key: string, value: unknown) => Session;
22
+ export declare const removeArtifactFromSession: (session: Session, key: string) => Session;
23
+ export declare const updateSessionMetadata: (session: Session, metadata: Partial<SessionMetadata>) => Session;
24
+ export declare const clearSessionMessages: (session: Session) => Session;
25
+ export declare const validateSession: (session: Session) => ValidationResult<Session>;
26
+ export declare const validateSessionContext: (context: SessionContext) => ValidationResult<SessionContext>;
27
+ export declare const getOrCreateSession: (provider: SessionProvider, context: SessionContext) => Promise<Session>;
28
+ export declare const getSessionStats: (session: Session) => {
29
+ id: string;
30
+ appName: string;
31
+ userId: string;
32
+ messageCount: number;
33
+ userMessages: number;
34
+ modelMessages: number;
35
+ systemMessages: number;
36
+ artifactCount: number;
37
+ totalTextLength: number;
38
+ created: Date;
39
+ lastAccessed: Date | undefined;
40
+ tags: string[] | undefined;
41
+ };
42
+ export declare const cloneSession: (session: Session, newId?: string) => Session;
43
+ export declare const mergeSessionArtifacts: (session: Session, artifacts: Record<string, unknown>) => Session;
44
+ export declare const getLastUserMessage: (session: Session) => Content | null;
45
+ export declare const getLastModelMessage: (session: Session) => Content | null;
46
+ export declare const getMessagesByRole: (session: Session, role: Content["role"]) => Content[];
47
+ export declare const hasArtifact: (session: Session, key: string) => boolean;
48
+ export declare const getArtifact: (session: Session, key: string) => unknown | null;
49
+ export declare const getArtifactKeys: (session: Session) => string[];
50
+ export { createSessionError };
51
+ export declare const withSessionErrorHandling: <T extends unknown[], R>(fn: (...args: T) => Promise<R>, sessionId?: string) => (...args: T) => Promise<R>;
52
+ export declare const createMemoryProviderBridge: (memoryProvider: any) => SessionProvider;
53
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adk/sessions/index.ts"],"names":[],"mappings":"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"}