@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.
- package/LICENSE +21 -0
- package/README.md +596 -0
- package/dist/a2a/agent-card.d.ts +28 -0
- package/dist/a2a/agent-card.d.ts.map +1 -0
- package/dist/a2a/agent-card.js +250 -0
- package/dist/a2a/agent-card.js.map +1 -0
- package/dist/a2a/agent.d.ts +38 -0
- package/dist/a2a/agent.d.ts.map +1 -0
- package/dist/a2a/agent.js +223 -0
- package/dist/a2a/agent.js.map +1 -0
- package/dist/a2a/client.d.ts +35 -0
- package/dist/a2a/client.d.ts.map +1 -0
- package/dist/a2a/client.js +337 -0
- package/dist/a2a/client.js.map +1 -0
- package/dist/a2a/examples/client-example.d.ts +104 -0
- package/dist/a2a/examples/client-example.d.ts.map +1 -0
- package/dist/a2a/examples/client-example.js +232 -0
- package/dist/a2a/examples/client-example.js.map +1 -0
- package/dist/a2a/examples/server-example.d.ts +9 -0
- package/dist/a2a/examples/server-example.d.ts.map +1 -0
- package/dist/a2a/examples/server-example.js +209 -0
- package/dist/a2a/examples/server-example.js.map +1 -0
- package/dist/a2a/examples/weather-agent.d.ts +8 -0
- package/dist/a2a/examples/weather-agent.d.ts.map +1 -0
- package/dist/a2a/examples/weather-agent.js +232 -0
- package/dist/a2a/examples/weather-agent.js.map +1 -0
- package/dist/a2a/executor.d.ts +43 -0
- package/dist/a2a/executor.d.ts.map +1 -0
- package/dist/a2a/executor.js +507 -0
- package/dist/a2a/executor.js.map +1 -0
- package/dist/a2a/index.d.ts +378 -0
- package/dist/a2a/index.d.ts.map +1 -0
- package/dist/a2a/index.js +72 -0
- package/dist/a2a/index.js.map +1 -0
- package/dist/a2a/memory/cleanup.d.ts +58 -0
- package/dist/a2a/memory/cleanup.d.ts.map +1 -0
- package/dist/a2a/memory/cleanup.js +281 -0
- package/dist/a2a/memory/cleanup.js.map +1 -0
- package/dist/a2a/memory/factory.d.ts +38 -0
- package/dist/a2a/memory/factory.d.ts.map +1 -0
- package/dist/a2a/memory/factory.js +369 -0
- package/dist/a2a/memory/factory.js.map +1 -0
- package/dist/a2a/memory/index.d.ts +13 -0
- package/dist/a2a/memory/index.d.ts.map +1 -0
- package/dist/a2a/memory/index.js +16 -0
- package/dist/a2a/memory/index.js.map +1 -0
- package/dist/a2a/memory/providers/in-memory.d.ts +10 -0
- package/dist/a2a/memory/providers/in-memory.d.ts.map +1 -0
- package/dist/a2a/memory/providers/in-memory.js +539 -0
- package/dist/a2a/memory/providers/in-memory.js.map +1 -0
- package/dist/a2a/memory/providers/postgres.d.ts +10 -0
- package/dist/a2a/memory/providers/postgres.d.ts.map +1 -0
- package/dist/a2a/memory/providers/postgres.js +404 -0
- package/dist/a2a/memory/providers/postgres.js.map +1 -0
- package/dist/a2a/memory/providers/redis.d.ts +10 -0
- package/dist/a2a/memory/providers/redis.d.ts.map +1 -0
- package/dist/a2a/memory/providers/redis.js +435 -0
- package/dist/a2a/memory/providers/redis.js.map +1 -0
- package/dist/a2a/memory/serialization.d.ts +53 -0
- package/dist/a2a/memory/serialization.d.ts.map +1 -0
- package/dist/a2a/memory/serialization.js +233 -0
- package/dist/a2a/memory/serialization.js.map +1 -0
- package/dist/a2a/memory/types.d.ts +395 -0
- package/dist/a2a/memory/types.d.ts.map +1 -0
- package/dist/a2a/memory/types.js +85 -0
- package/dist/a2a/memory/types.js.map +1 -0
- package/dist/a2a/protocol.d.ts +38 -0
- package/dist/a2a/protocol.d.ts.map +1 -0
- package/dist/a2a/protocol.js +211 -0
- package/dist/a2a/protocol.js.map +1 -0
- package/dist/a2a/server.d.ts +343 -0
- package/dist/a2a/server.d.ts.map +1 -0
- package/dist/a2a/server.js +362 -0
- package/dist/a2a/server.js.map +1 -0
- package/dist/a2a/types.d.ts +730 -0
- package/dist/a2a/types.d.ts.map +1 -0
- package/dist/a2a/types.js +73 -0
- package/dist/a2a/types.js.map +1 -0
- package/dist/adk/agents/index.d.ts +48 -0
- package/dist/adk/agents/index.d.ts.map +1 -0
- package/dist/adk/agents/index.js +277 -0
- package/dist/adk/agents/index.js.map +1 -0
- package/dist/adk/artifacts/index.d.ts +62 -0
- package/dist/adk/artifacts/index.d.ts.map +1 -0
- package/dist/adk/artifacts/index.js +394 -0
- package/dist/adk/artifacts/index.js.map +1 -0
- package/dist/adk/config/llm-config.d.ts +75 -0
- package/dist/adk/config/llm-config.d.ts.map +1 -0
- package/dist/adk/config/llm-config.js +422 -0
- package/dist/adk/config/llm-config.js.map +1 -0
- package/dist/adk/content/index.d.ts +58 -0
- package/dist/adk/content/index.d.ts.map +1 -0
- package/dist/adk/content/index.js +220 -0
- package/dist/adk/content/index.js.map +1 -0
- package/dist/adk/examples/advanced-features.d.ts +22 -0
- package/dist/adk/examples/advanced-features.d.ts.map +1 -0
- package/dist/adk/examples/advanced-features.js +380 -0
- package/dist/adk/examples/advanced-features.js.map +1 -0
- package/dist/adk/examples/basic-agent.d.ts +28 -0
- package/dist/adk/examples/basic-agent.d.ts.map +1 -0
- package/dist/adk/examples/basic-agent.js +207 -0
- package/dist/adk/examples/basic-agent.js.map +1 -0
- package/dist/adk/examples/multi-agent.d.ts +24 -0
- package/dist/adk/examples/multi-agent.d.ts.map +1 -0
- package/dist/adk/examples/multi-agent.js +321 -0
- package/dist/adk/examples/multi-agent.js.map +1 -0
- package/dist/adk/examples/streaming-example.d.ts +9 -0
- package/dist/adk/examples/streaming-example.d.ts.map +1 -0
- package/dist/adk/examples/streaming-example.js +193 -0
- package/dist/adk/examples/streaming-example.js.map +1 -0
- package/dist/adk/index.d.ts +65 -0
- package/dist/adk/index.d.ts.map +1 -0
- package/dist/adk/index.js +251 -0
- package/dist/adk/index.js.map +1 -0
- package/dist/adk/models.d.ts +338 -0
- package/dist/adk/models.d.ts.map +1 -0
- package/dist/adk/models.js +466 -0
- package/dist/adk/models.js.map +1 -0
- package/dist/adk/providers/error-handler.d.ts +100 -0
- package/dist/adk/providers/error-handler.d.ts.map +1 -0
- package/dist/adk/providers/error-handler.js +289 -0
- package/dist/adk/providers/error-handler.js.map +1 -0
- package/dist/adk/providers/llm-service.d.ts +41 -0
- package/dist/adk/providers/llm-service.d.ts.map +1 -0
- package/dist/adk/providers/llm-service.js +520 -0
- package/dist/adk/providers/llm-service.js.map +1 -0
- package/dist/adk/providers/type-converters.d.ts +34 -0
- package/dist/adk/providers/type-converters.d.ts.map +1 -0
- package/dist/adk/providers/type-converters.js +436 -0
- package/dist/adk/providers/type-converters.js.map +1 -0
- package/dist/adk/runners/index.d.ts +33 -0
- package/dist/adk/runners/index.d.ts.map +1 -0
- package/dist/adk/runners/index.js +466 -0
- package/dist/adk/runners/index.js.map +1 -0
- package/dist/adk/schemas/index.d.ts +85 -0
- package/dist/adk/schemas/index.d.ts.map +1 -0
- package/dist/adk/schemas/index.js +363 -0
- package/dist/adk/schemas/index.js.map +1 -0
- package/dist/adk/sessions/examples/session-provider-usage.d.ts +10 -0
- package/dist/adk/sessions/examples/session-provider-usage.d.ts.map +1 -0
- package/dist/adk/sessions/examples/session-provider-usage.js +145 -0
- package/dist/adk/sessions/examples/session-provider-usage.js.map +1 -0
- package/dist/adk/sessions/index.d.ts +53 -0
- package/dist/adk/sessions/index.d.ts.map +1 -0
- package/dist/adk/sessions/index.js +451 -0
- package/dist/adk/sessions/index.js.map +1 -0
- package/dist/adk/sessions/postgres-provider.d.ts +22 -0
- package/dist/adk/sessions/postgres-provider.d.ts.map +1 -0
- package/dist/adk/sessions/postgres-provider.js +293 -0
- package/dist/adk/sessions/postgres-provider.js.map +1 -0
- package/dist/adk/sessions/redis-provider.d.ts +19 -0
- package/dist/adk/sessions/redis-provider.d.ts.map +1 -0
- package/dist/adk/sessions/redis-provider.js +237 -0
- package/dist/adk/sessions/redis-provider.js.map +1 -0
- package/dist/adk/streaming/index.d.ts +76 -0
- package/dist/adk/streaming/index.d.ts.map +1 -0
- package/dist/adk/streaming/index.js +419 -0
- package/dist/adk/streaming/index.js.map +1 -0
- package/dist/adk/tools/index.d.ts +27 -0
- package/dist/adk/tools/index.d.ts.map +1 -0
- package/dist/adk/tools/index.js +506 -0
- package/dist/adk/tools/index.js.map +1 -0
- package/dist/adk/types.d.ts +351 -0
- package/dist/adk/types.d.ts.map +1 -0
- package/dist/adk/types.js +107 -0
- package/dist/adk/types.js.map +1 -0
- package/dist/core/engine.d.ts +3 -0
- package/dist/core/engine.d.ts.map +1 -0
- package/dist/core/engine.js +438 -0
- package/dist/core/engine.js.map +1 -0
- package/dist/core/errors.d.ts +8 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +84 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/tool-results.d.ts +57 -0
- package/dist/core/tool-results.d.ts.map +1 -0
- package/dist/core/tool-results.js +133 -0
- package/dist/core/tool-results.js.map +1 -0
- package/dist/core/tracing.d.ts +32 -0
- package/dist/core/tracing.d.ts.map +1 -0
- package/dist/core/tracing.js +132 -0
- package/dist/core/tracing.js.map +1 -0
- package/dist/core/types.d.ts +165 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +3 -0
- package/dist/core/types.js.map +1 -0
- package/dist/demo/agents.d.ts +23 -0
- package/dist/demo/agents.d.ts.map +1 -0
- package/dist/demo/agents.js +69 -0
- package/dist/demo/agents.js.map +1 -0
- package/dist/demo/index.d.ts +2 -0
- package/dist/demo/index.d.ts.map +1 -0
- package/dist/demo/index.js +250 -0
- package/dist/demo/index.js.map +1 -0
- package/dist/demo/mock-provider.d.ts +22 -0
- package/dist/demo/mock-provider.d.ts.map +1 -0
- package/dist/demo/mock-provider.js +138 -0
- package/dist/demo/mock-provider.js.map +1 -0
- package/dist/demo/tools.d.ts +14 -0
- package/dist/demo/tools.d.ts.map +1 -0
- package/dist/demo/tools.js +115 -0
- package/dist/demo/tools.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/factory.d.ts +22 -0
- package/dist/memory/factory.d.ts.map +1 -0
- package/dist/memory/factory.js +88 -0
- package/dist/memory/factory.js.map +1 -0
- package/dist/memory/providers/in-memory.d.ts +7 -0
- package/dist/memory/providers/in-memory.d.ts.map +1 -0
- package/dist/memory/providers/in-memory.js +287 -0
- package/dist/memory/providers/in-memory.js.map +1 -0
- package/dist/memory/providers/postgres.d.ts +15 -0
- package/dist/memory/providers/postgres.d.ts.map +1 -0
- package/dist/memory/providers/postgres.js +495 -0
- package/dist/memory/providers/postgres.js.map +1 -0
- package/dist/memory/providers/redis.d.ts +18 -0
- package/dist/memory/providers/redis.d.ts.map +1 -0
- package/dist/memory/providers/redis.js +354 -0
- package/dist/memory/providers/redis.js.map +1 -0
- package/dist/memory/types.d.ts +296 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +93 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/policies/handoff.d.ts +16 -0
- package/dist/policies/handoff.d.ts.map +1 -0
- package/dist/policies/handoff.js +20 -0
- package/dist/policies/handoff.js.map +1 -0
- package/dist/policies/validation.d.ts +14 -0
- package/dist/policies/validation.d.ts.map +1 -0
- package/dist/policies/validation.js +92 -0
- package/dist/policies/validation.js.map +1 -0
- package/dist/providers/mcp.d.ts +17 -0
- package/dist/providers/mcp.d.ts.map +1 -0
- package/dist/providers/mcp.js +111 -0
- package/dist/providers/mcp.js.map +1 -0
- package/dist/providers/model.d.ts +3 -0
- package/dist/providers/model.d.ts.map +1 -0
- package/dist/providers/model.js +113 -0
- package/dist/providers/model.js.map +1 -0
- package/dist/server/index.d.ts +35 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +66 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/server.d.ts +12 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +394 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/types.d.ts +456 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +75 -0
- package/dist/server/types.js.map +1 -0
- package/dist/test-utils/db-setup.d.ts +34 -0
- package/dist/test-utils/db-setup.d.ts.map +1 -0
- package/dist/test-utils/db-setup.js +149 -0
- package/dist/test-utils/db-setup.js.map +1 -0
- package/dist/utils/logger.d.ts +63 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +199 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/safe-math.d.ts +31 -0
- package/dist/utils/safe-math.d.ts.map +1 -0
- package/dist/utils/safe-math.js +86 -0
- package/dist/utils/safe-math.js.map +1 -0
- package/dist/visualization/example.d.ts +9 -0
- package/dist/visualization/example.d.ts.map +1 -0
- package/dist/visualization/example.js +236 -0
- package/dist/visualization/example.js.map +1 -0
- package/dist/visualization/graphviz.d.ts +42 -0
- package/dist/visualization/graphviz.d.ts.map +1 -0
- package/dist/visualization/graphviz.js +403 -0
- package/dist/visualization/graphviz.js.map +1 -0
- package/dist/visualization/index.d.ts +10 -0
- package/dist/visualization/index.d.ts.map +1 -0
- package/dist/visualization/index.js +12 -0
- package/dist/visualization/index.js.map +1 -0
- 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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"}
|