@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,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JAF ADK Layer - Content System
|
|
3
|
+
*
|
|
4
|
+
* Functional content and message handling utilities
|
|
5
|
+
*/
|
|
6
|
+
// ========== Content Creation ==========
|
|
7
|
+
export const createContent = (role, text, metadata) => ({
|
|
8
|
+
role,
|
|
9
|
+
parts: [createTextPart(text)],
|
|
10
|
+
metadata
|
|
11
|
+
});
|
|
12
|
+
export const createUserMessage = (text, metadata) => createContent('user', text, metadata);
|
|
13
|
+
export const createModelMessage = (text, metadata) => createContent('model', text, metadata);
|
|
14
|
+
export const createSystemMessage = (text, metadata) => createContent('system', text, metadata);
|
|
15
|
+
// ========== Part Creation ==========
|
|
16
|
+
export const createTextPart = (text, metadata) => ({
|
|
17
|
+
type: 'text',
|
|
18
|
+
text,
|
|
19
|
+
metadata
|
|
20
|
+
});
|
|
21
|
+
export const createImagePart = (data, metadata) => ({
|
|
22
|
+
type: 'image',
|
|
23
|
+
data,
|
|
24
|
+
metadata
|
|
25
|
+
});
|
|
26
|
+
export const createAudioPart = (data, metadata) => ({
|
|
27
|
+
type: 'audio',
|
|
28
|
+
data,
|
|
29
|
+
metadata
|
|
30
|
+
});
|
|
31
|
+
export const createFunctionCallPart = (functionCall, metadata) => ({
|
|
32
|
+
type: 'function_call',
|
|
33
|
+
functionCall,
|
|
34
|
+
metadata
|
|
35
|
+
});
|
|
36
|
+
export const createFunctionResponsePart = (functionResponse, metadata) => ({
|
|
37
|
+
type: 'function_response',
|
|
38
|
+
functionResponse,
|
|
39
|
+
metadata
|
|
40
|
+
});
|
|
41
|
+
// ========== Function Call/Response Creation ==========
|
|
42
|
+
export const createFunctionCall = (id, name, args) => ({
|
|
43
|
+
id,
|
|
44
|
+
name,
|
|
45
|
+
args
|
|
46
|
+
});
|
|
47
|
+
export const createFunctionResponse = (id, name, response, success = true, error) => ({
|
|
48
|
+
id,
|
|
49
|
+
name,
|
|
50
|
+
response,
|
|
51
|
+
success,
|
|
52
|
+
error
|
|
53
|
+
});
|
|
54
|
+
// ========== Content Manipulation ==========
|
|
55
|
+
export const addPart = (content, part) => ({
|
|
56
|
+
...content,
|
|
57
|
+
parts: [...content.parts, part]
|
|
58
|
+
});
|
|
59
|
+
export const addTextPart = (content, text) => addPart(content, createTextPart(text));
|
|
60
|
+
export const addFunctionCall = (content, functionCall) => addPart(content, createFunctionCallPart(functionCall));
|
|
61
|
+
export const addFunctionResponse = (content, functionResponse) => addPart(content, createFunctionResponsePart(functionResponse));
|
|
62
|
+
// ========== Content Query Functions ==========
|
|
63
|
+
export const getTextContent = (content) => {
|
|
64
|
+
return content.parts
|
|
65
|
+
.filter(part => part.type === 'text' && part.text)
|
|
66
|
+
.map(part => part.text)
|
|
67
|
+
.join('');
|
|
68
|
+
};
|
|
69
|
+
export const getFunctionCalls = (content) => {
|
|
70
|
+
return content.parts
|
|
71
|
+
.filter(part => part.type === 'function_call' && part.functionCall)
|
|
72
|
+
.map(part => part.functionCall)
|
|
73
|
+
.filter(Boolean);
|
|
74
|
+
};
|
|
75
|
+
export const getFunctionResponses = (content) => {
|
|
76
|
+
return content.parts
|
|
77
|
+
.filter(part => part.type === 'function_response' && part.functionResponse)
|
|
78
|
+
.map(part => part.functionResponse)
|
|
79
|
+
.filter(Boolean);
|
|
80
|
+
};
|
|
81
|
+
export const hasTextContent = (content) => {
|
|
82
|
+
return content.parts.some(part => part.type === 'text' && part.text);
|
|
83
|
+
};
|
|
84
|
+
export const hasFunctionCalls = (content) => {
|
|
85
|
+
return content.parts.some(part => part.type === 'function_call');
|
|
86
|
+
};
|
|
87
|
+
export const hasFunctionResponses = (content) => {
|
|
88
|
+
return content.parts.some(part => part.type === 'function_response');
|
|
89
|
+
};
|
|
90
|
+
// ========== Content Conversion ==========
|
|
91
|
+
export const contentToString = (content) => {
|
|
92
|
+
const textContent = getTextContent(content);
|
|
93
|
+
const functionCalls = getFunctionCalls(content);
|
|
94
|
+
const functionResponses = getFunctionResponses(content);
|
|
95
|
+
let result = textContent;
|
|
96
|
+
if (functionCalls.length > 0) {
|
|
97
|
+
const callsStr = functionCalls
|
|
98
|
+
.map(call => `[FUNCTION_CALL: ${call.name}(${JSON.stringify(call.args)})]`)
|
|
99
|
+
.join(' ');
|
|
100
|
+
result += (result ? ' ' : '') + callsStr;
|
|
101
|
+
}
|
|
102
|
+
if (functionResponses.length > 0) {
|
|
103
|
+
const responsesStr = functionResponses
|
|
104
|
+
.map(response => `[FUNCTION_RESPONSE: ${response.name} -> ${JSON.stringify(response.response)}]`)
|
|
105
|
+
.join(' ');
|
|
106
|
+
result += (result ? ' ' : '') + responsesStr;
|
|
107
|
+
}
|
|
108
|
+
return result;
|
|
109
|
+
};
|
|
110
|
+
export const parseContent = (raw) => {
|
|
111
|
+
if (typeof raw === 'string') {
|
|
112
|
+
return createUserMessage(raw);
|
|
113
|
+
}
|
|
114
|
+
if (typeof raw === 'object' && raw !== null) {
|
|
115
|
+
// Try to parse as existing Content object
|
|
116
|
+
if ('role' in raw && 'parts' in raw) {
|
|
117
|
+
return raw;
|
|
118
|
+
}
|
|
119
|
+
// Try to parse as simple message object
|
|
120
|
+
if ('text' in raw || 'message' in raw) {
|
|
121
|
+
const text = raw.text || raw.message;
|
|
122
|
+
const role = raw.role || 'user';
|
|
123
|
+
return createContent(role, text);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
throw new Error(`Cannot parse content from: ${JSON.stringify(raw)}`);
|
|
127
|
+
};
|
|
128
|
+
// ========== Content Validation ==========
|
|
129
|
+
export const isValidContent = (content) => {
|
|
130
|
+
if (typeof content !== 'object' || content === null) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
const c = content;
|
|
134
|
+
return (typeof c.role === 'string' &&
|
|
135
|
+
['user', 'model', 'system'].includes(c.role) &&
|
|
136
|
+
Array.isArray(c.parts) &&
|
|
137
|
+
c.parts.every(isValidPart));
|
|
138
|
+
};
|
|
139
|
+
export const isValidPart = (part) => {
|
|
140
|
+
if (typeof part !== 'object' || part === null) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
const p = part;
|
|
144
|
+
return (typeof p.type === 'string' &&
|
|
145
|
+
['text', 'image', 'audio', 'function_call', 'function_response'].includes(p.type));
|
|
146
|
+
};
|
|
147
|
+
// ========== Content Utilities ==========
|
|
148
|
+
export const mergeContent = (...contents) => {
|
|
149
|
+
if (contents.length === 0) {
|
|
150
|
+
return createUserMessage('');
|
|
151
|
+
}
|
|
152
|
+
if (contents.length === 1) {
|
|
153
|
+
return contents[0];
|
|
154
|
+
}
|
|
155
|
+
const [first, ...rest] = contents;
|
|
156
|
+
const allParts = [first, ...rest].flatMap(c => c.parts);
|
|
157
|
+
return {
|
|
158
|
+
...first,
|
|
159
|
+
parts: allParts
|
|
160
|
+
};
|
|
161
|
+
};
|
|
162
|
+
export const cloneContent = (content) => ({
|
|
163
|
+
...content,
|
|
164
|
+
parts: content.parts.map(part => ({ ...part })),
|
|
165
|
+
metadata: content.metadata ? { ...content.metadata } : undefined
|
|
166
|
+
});
|
|
167
|
+
export const filterContentByRole = (contents, role) => {
|
|
168
|
+
return contents.filter(content => content.role === role);
|
|
169
|
+
};
|
|
170
|
+
export const getLastUserMessage = (contents) => {
|
|
171
|
+
const userMessages = filterContentByRole(contents, 'user');
|
|
172
|
+
return userMessages.length > 0 ? userMessages[userMessages.length - 1] : null;
|
|
173
|
+
};
|
|
174
|
+
export const getLastModelMessage = (contents) => {
|
|
175
|
+
const modelMessages = filterContentByRole(contents, 'model');
|
|
176
|
+
return modelMessages.length > 0 ? modelMessages[modelMessages.length - 1] : null;
|
|
177
|
+
};
|
|
178
|
+
// ========== Content Statistics ==========
|
|
179
|
+
export const getContentStats = (content) => {
|
|
180
|
+
const textParts = content.parts.filter(p => p.type === 'text').length;
|
|
181
|
+
const imageParts = content.parts.filter(p => p.type === 'image').length;
|
|
182
|
+
const audioParts = content.parts.filter(p => p.type === 'audio').length;
|
|
183
|
+
const functionCallParts = content.parts.filter(p => p.type === 'function_call').length;
|
|
184
|
+
const functionResponseParts = content.parts.filter(p => p.type === 'function_response').length;
|
|
185
|
+
const textLength = getTextContent(content).length;
|
|
186
|
+
return {
|
|
187
|
+
totalParts: content.parts.length,
|
|
188
|
+
textParts,
|
|
189
|
+
imageParts,
|
|
190
|
+
audioParts,
|
|
191
|
+
functionCallParts,
|
|
192
|
+
functionResponseParts,
|
|
193
|
+
textLength,
|
|
194
|
+
hasMedia: imageParts > 0 || audioParts > 0,
|
|
195
|
+
hasFunctions: functionCallParts > 0 || functionResponseParts > 0
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
export const getConversationStats = (contents) => {
|
|
199
|
+
const userMessages = filterContentByRole(contents, 'user').length;
|
|
200
|
+
const modelMessages = filterContentByRole(contents, 'model').length;
|
|
201
|
+
const systemMessages = filterContentByRole(contents, 'system').length;
|
|
202
|
+
const totalTextLength = contents
|
|
203
|
+
.map(getTextContent)
|
|
204
|
+
.reduce((sum, text) => sum + text.length, 0);
|
|
205
|
+
const totalFunctionCalls = contents
|
|
206
|
+
.flatMap(getFunctionCalls).length;
|
|
207
|
+
const totalFunctionResponses = contents
|
|
208
|
+
.flatMap(getFunctionResponses).length;
|
|
209
|
+
return {
|
|
210
|
+
totalMessages: contents.length,
|
|
211
|
+
userMessages,
|
|
212
|
+
modelMessages,
|
|
213
|
+
systemMessages,
|
|
214
|
+
totalTextLength,
|
|
215
|
+
totalFunctionCalls,
|
|
216
|
+
totalFunctionResponses,
|
|
217
|
+
averageMessageLength: contents.length > 0 ? totalTextLength / contents.length : 0
|
|
218
|
+
};
|
|
219
|
+
};
|
|
220
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adk/content/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JAF ADK Layer - Advanced Features Example
|
|
3
|
+
*
|
|
4
|
+
* Demonstrates schema validation, guardrails, streaming, and other advanced features
|
|
5
|
+
*/
|
|
6
|
+
import { Agent, RunnerConfig, SessionProvider } from '../index';
|
|
7
|
+
export declare const createBookingAgent: () => {
|
|
8
|
+
agent: Agent;
|
|
9
|
+
sessionProvider: SessionProvider;
|
|
10
|
+
runnerConfig: RunnerConfig;
|
|
11
|
+
};
|
|
12
|
+
export declare const createStreamingAgent: () => {
|
|
13
|
+
agent: Agent;
|
|
14
|
+
sessionProvider: SessionProvider;
|
|
15
|
+
runnerConfig: RunnerConfig;
|
|
16
|
+
};
|
|
17
|
+
export declare function runSchemaValidationExample(): Promise<void>;
|
|
18
|
+
export declare function runStreamingWithMonitoringExample(): Promise<void>;
|
|
19
|
+
export declare function runAdvancedStreamingExample(): Promise<void>;
|
|
20
|
+
export declare function runLiveStreamingExample(): Promise<void>;
|
|
21
|
+
export declare function runAllAdvancedExamples(): Promise<void>;
|
|
22
|
+
//# sourceMappingURL=advanced-features.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advanced-features.d.ts","sourceRoot":"","sources":["../../../src/adk/examples/advanced-features.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAsBL,KAAK,EACL,YAAY,EACZ,eAAe,EAGhB,MAAM,UAAU,CAAC;AAgGlB,eAAO,MAAM,kBAAkB;;;;CA0G9B,CAAC;AAIF,eAAO,MAAM,oBAAoB;;;;CAwDhC,CAAC;AAIF,wBAAsB,0BAA0B,kBAwC/C;AAED,wBAAsB,iCAAiC,kBAgDtD;AAED,wBAAsB,2BAA2B,kBAmChD;AAED,wBAAsB,uBAAuB,kBAmC5C;AAID,wBAAsB,sBAAsB,kBAW3C"}
|
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JAF ADK Layer - Advanced Features Example
|
|
3
|
+
*
|
|
4
|
+
* Demonstrates schema validation, guardrails, streaming, and other advanced features
|
|
5
|
+
*/
|
|
6
|
+
import { createAgent, createFunctionTool, createInMemorySessionProvider, createRunnerConfig, runAgent, runAgentStream, createUserMessage, createObjectValidator, stringSchema, numberSchema, booleanSchema, weatherQueryValidator, weatherResponseValidator, createAgentEvent, createLiveRequestQueue, monitorStream, metricsMonitor, Model, ToolParameterType } from '../index';
|
|
7
|
+
const bookingRequestValidator = createObjectValidator({
|
|
8
|
+
customerName: stringSchema({ description: 'Customer full name' }),
|
|
9
|
+
serviceType: stringSchema({
|
|
10
|
+
description: 'Type of service requested',
|
|
11
|
+
enum: ['consultation', 'maintenance', 'repair']
|
|
12
|
+
}),
|
|
13
|
+
preferredDate: stringSchema({ description: 'Preferred appointment date (YYYY-MM-DD)' }),
|
|
14
|
+
duration: numberSchema({ description: 'Expected duration in hours' }),
|
|
15
|
+
urgent: booleanSchema({ description: 'Whether this is an urgent request' }),
|
|
16
|
+
contactInfo: {
|
|
17
|
+
type: 'object',
|
|
18
|
+
properties: {
|
|
19
|
+
email: stringSchema({ description: 'Customer email address' }),
|
|
20
|
+
phone: stringSchema({ description: 'Customer phone number' })
|
|
21
|
+
},
|
|
22
|
+
required: ['email', 'phone']
|
|
23
|
+
}
|
|
24
|
+
}, ['customerName', 'serviceType', 'preferredDate', 'duration', 'urgent', 'contactInfo']);
|
|
25
|
+
// ========== Guardrails Example ==========
|
|
26
|
+
const contentModerationGuardrail = async (message) => {
|
|
27
|
+
const messageText = message.parts
|
|
28
|
+
.filter(p => p.type === 'text')
|
|
29
|
+
.map(p => p.text)
|
|
30
|
+
.join(' ')
|
|
31
|
+
.toLowerCase();
|
|
32
|
+
// Check for inappropriate content
|
|
33
|
+
const blockedWords = ['spam', 'scam', 'inappropriate'];
|
|
34
|
+
const containsBlockedContent = blockedWords.some(word => messageText.includes(word));
|
|
35
|
+
if (containsBlockedContent) {
|
|
36
|
+
return {
|
|
37
|
+
allowed: false,
|
|
38
|
+
reason: 'Content contains inappropriate language',
|
|
39
|
+
action: 'block'
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// Check for excessive length
|
|
43
|
+
if (messageText.length > 1000) {
|
|
44
|
+
return {
|
|
45
|
+
allowed: true,
|
|
46
|
+
modifiedMessage: {
|
|
47
|
+
...message,
|
|
48
|
+
parts: [{
|
|
49
|
+
type: 'text',
|
|
50
|
+
text: messageText.substring(0, 1000) + '... [truncated]'
|
|
51
|
+
}]
|
|
52
|
+
},
|
|
53
|
+
reason: 'Message truncated due to length',
|
|
54
|
+
action: 'modify'
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
return { allowed: true };
|
|
58
|
+
};
|
|
59
|
+
const rateLimitGuardrail = async (_message, context) => {
|
|
60
|
+
// Simple rate limiting based on session message count
|
|
61
|
+
const messageCount = context.session.messages.length;
|
|
62
|
+
if (messageCount > 10) {
|
|
63
|
+
return {
|
|
64
|
+
allowed: false,
|
|
65
|
+
reason: 'Rate limit exceeded - too many messages in this session',
|
|
66
|
+
action: 'block'
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return { allowed: true };
|
|
70
|
+
};
|
|
71
|
+
// ========== Advanced Agent with Schema Validation ==========
|
|
72
|
+
export const createBookingAgent = () => {
|
|
73
|
+
const processBookingTool = createFunctionTool({
|
|
74
|
+
name: 'process_booking',
|
|
75
|
+
description: 'Process a service booking request with validation',
|
|
76
|
+
execute: (params) => {
|
|
77
|
+
// Validate input using schema
|
|
78
|
+
const validation = bookingRequestValidator.validate(params);
|
|
79
|
+
if (!validation.success) {
|
|
80
|
+
throw new Error(`Invalid booking request: ${validation.errors?.join(', ')}`);
|
|
81
|
+
}
|
|
82
|
+
const booking = validation.data;
|
|
83
|
+
// Process the booking
|
|
84
|
+
const bookingId = `BK${Date.now()}`;
|
|
85
|
+
const estimatedCost = {
|
|
86
|
+
consultation: 100,
|
|
87
|
+
maintenance: 150,
|
|
88
|
+
repair: 200
|
|
89
|
+
}[booking.serviceType] * booking.duration;
|
|
90
|
+
return {
|
|
91
|
+
bookingId,
|
|
92
|
+
status: 'confirmed',
|
|
93
|
+
customer: booking.customerName,
|
|
94
|
+
service: booking.serviceType,
|
|
95
|
+
scheduledDate: booking.preferredDate,
|
|
96
|
+
duration: booking.duration,
|
|
97
|
+
estimatedCost,
|
|
98
|
+
priority: booking.urgent ? 'high' : 'normal',
|
|
99
|
+
contactMethod: 'email'
|
|
100
|
+
};
|
|
101
|
+
},
|
|
102
|
+
parameters: [
|
|
103
|
+
{
|
|
104
|
+
name: 'customerName',
|
|
105
|
+
type: ToolParameterType.STRING,
|
|
106
|
+
description: 'Customer full name',
|
|
107
|
+
required: true
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: 'serviceType',
|
|
111
|
+
type: ToolParameterType.STRING,
|
|
112
|
+
description: 'Type of service (consultation, maintenance, repair)',
|
|
113
|
+
required: true
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: 'preferredDate',
|
|
117
|
+
type: ToolParameterType.STRING,
|
|
118
|
+
description: 'Preferred date in YYYY-MM-DD format',
|
|
119
|
+
required: true
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
name: 'duration',
|
|
123
|
+
type: ToolParameterType.NUMBER,
|
|
124
|
+
description: 'Duration in hours',
|
|
125
|
+
required: true
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
name: 'urgent',
|
|
129
|
+
type: ToolParameterType.BOOLEAN,
|
|
130
|
+
description: 'Whether this is urgent',
|
|
131
|
+
required: true
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
name: 'contactInfo',
|
|
135
|
+
type: ToolParameterType.OBJECT,
|
|
136
|
+
description: 'Customer contact information',
|
|
137
|
+
required: true
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
});
|
|
141
|
+
const agent = createAgent({
|
|
142
|
+
name: 'booking_agent',
|
|
143
|
+
model: Model.GEMINI_2_0_FLASH,
|
|
144
|
+
instruction: `You are a professional booking assistant. Help customers schedule services.
|
|
145
|
+
|
|
146
|
+
When processing bookings:
|
|
147
|
+
1. Collect all required information
|
|
148
|
+
2. Validate the booking details
|
|
149
|
+
3. Use the process_booking tool to create the booking
|
|
150
|
+
4. Confirm details with the customer
|
|
151
|
+
|
|
152
|
+
Required information:
|
|
153
|
+
- Customer name
|
|
154
|
+
- Service type (consultation, maintenance, or repair)
|
|
155
|
+
- Preferred date
|
|
156
|
+
- Duration in hours
|
|
157
|
+
- Urgency level
|
|
158
|
+
- Contact information (email and phone)`,
|
|
159
|
+
tools: [processBookingTool],
|
|
160
|
+
inputSchema: weatherQueryValidator, // Example of input validation
|
|
161
|
+
outputSchema: weatherResponseValidator, // Example of output validation
|
|
162
|
+
guardrails: [contentModerationGuardrail, rateLimitGuardrail]
|
|
163
|
+
});
|
|
164
|
+
const sessionProvider = createInMemorySessionProvider();
|
|
165
|
+
const runnerConfig = createRunnerConfig(agent, sessionProvider, {
|
|
166
|
+
guardrails: [contentModerationGuardrail, rateLimitGuardrail],
|
|
167
|
+
maxLLMCalls: 5,
|
|
168
|
+
timeout: 30000
|
|
169
|
+
});
|
|
170
|
+
return { agent, sessionProvider, runnerConfig };
|
|
171
|
+
};
|
|
172
|
+
// ========== Streaming with Monitoring Example ==========
|
|
173
|
+
export const createStreamingAgent = () => {
|
|
174
|
+
const storyTool = createFunctionTool({
|
|
175
|
+
name: 'generate_story_part',
|
|
176
|
+
description: 'Generate part of a story',
|
|
177
|
+
execute: (params) => {
|
|
178
|
+
const { theme, character, setting } = params;
|
|
179
|
+
const storyParts = [
|
|
180
|
+
`In the ${setting}, ${character} discovered something extraordinary about ${theme}.`,
|
|
181
|
+
`The ${theme} seemed to pulse with an otherworldly energy as ${character} approached.`,
|
|
182
|
+
`${character} realized that ${theme} held the key to understanding the mysteries of ${setting}.`,
|
|
183
|
+
`As the sun set over ${setting}, ${character} made a decision that would change everything about ${theme}.`,
|
|
184
|
+
`The adventure continued as ${character} ventured deeper into the secrets of ${theme} within ${setting}.`
|
|
185
|
+
];
|
|
186
|
+
return {
|
|
187
|
+
part: storyParts[Math.floor(Math.random() * storyParts.length)],
|
|
188
|
+
theme,
|
|
189
|
+
character,
|
|
190
|
+
setting,
|
|
191
|
+
timestamp: new Date().toISOString()
|
|
192
|
+
};
|
|
193
|
+
},
|
|
194
|
+
parameters: [
|
|
195
|
+
{
|
|
196
|
+
name: 'theme',
|
|
197
|
+
type: ToolParameterType.STRING,
|
|
198
|
+
description: 'Story theme or topic',
|
|
199
|
+
required: true
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
name: 'character',
|
|
203
|
+
type: ToolParameterType.STRING,
|
|
204
|
+
description: 'Main character name',
|
|
205
|
+
required: true
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
name: 'setting',
|
|
209
|
+
type: ToolParameterType.STRING,
|
|
210
|
+
description: 'Story setting or location',
|
|
211
|
+
required: true
|
|
212
|
+
}
|
|
213
|
+
]
|
|
214
|
+
});
|
|
215
|
+
const agent = createAgent({
|
|
216
|
+
name: 'streaming_storyteller',
|
|
217
|
+
model: Model.GEMINI_2_0_FLASH,
|
|
218
|
+
instruction: `You are an interactive storyteller. Create engaging stories using the generate_story_part tool.
|
|
219
|
+
Build stories progressively, creating suspense and engaging narratives.`,
|
|
220
|
+
tools: [storyTool]
|
|
221
|
+
});
|
|
222
|
+
const sessionProvider = createInMemorySessionProvider();
|
|
223
|
+
const runnerConfig = createRunnerConfig(agent, sessionProvider);
|
|
224
|
+
return { agent, sessionProvider, runnerConfig };
|
|
225
|
+
};
|
|
226
|
+
// ========== Example Usage Functions ==========
|
|
227
|
+
export async function runSchemaValidationExample() {
|
|
228
|
+
console.log('=== JAF ADK Layer - Schema Validation Example ===\n');
|
|
229
|
+
const { runnerConfig } = createBookingAgent();
|
|
230
|
+
// Test valid booking request
|
|
231
|
+
console.log('1. Valid Booking Request:');
|
|
232
|
+
const validBookingMessage = createUserMessage(`
|
|
233
|
+
I need to book a repair service for next week.
|
|
234
|
+
My name is John Smith, I need a 3-hour repair on 2024-02-15.
|
|
235
|
+
It's urgent. My email is john@example.com and phone is 555-0123.
|
|
236
|
+
`);
|
|
237
|
+
try {
|
|
238
|
+
const response = await runAgent(runnerConfig, {
|
|
239
|
+
userId: 'user_123',
|
|
240
|
+
sessionId: 'booking_session_1'
|
|
241
|
+
}, validBookingMessage);
|
|
242
|
+
console.log('User:', validBookingMessage.parts[0].text);
|
|
243
|
+
console.log('Agent:', response.content.parts[0].text);
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
console.log('Error:', error.message);
|
|
247
|
+
}
|
|
248
|
+
// Test invalid booking request (blocked by guardrail)
|
|
249
|
+
console.log('\n2. Blocked Request (Guardrail):');
|
|
250
|
+
const blockedMessage = createUserMessage('This is spam content that should be blocked');
|
|
251
|
+
try {
|
|
252
|
+
const response = await runAgent(runnerConfig, {
|
|
253
|
+
userId: 'user_123',
|
|
254
|
+
sessionId: 'booking_session_2'
|
|
255
|
+
}, blockedMessage);
|
|
256
|
+
console.log('User:', blockedMessage.parts[0].text);
|
|
257
|
+
console.log('Agent:', response.content.parts[0].text);
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
console.log('Blocked by guardrail:', error.message);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
export async function runStreamingWithMonitoringExample() {
|
|
264
|
+
console.log('\n=== JAF ADK Layer - Streaming with Monitoring Example ===\n');
|
|
265
|
+
const { runnerConfig } = createStreamingAgent();
|
|
266
|
+
const message = createUserMessage('Tell me a story about a brave knight named Arthur in a mystical forest');
|
|
267
|
+
console.log('User:', message.parts[0].text);
|
|
268
|
+
console.log('Agent (streaming with monitoring):');
|
|
269
|
+
// Create monitoring
|
|
270
|
+
const metrics = metricsMonitor();
|
|
271
|
+
const events = runAgentStream(runnerConfig, {
|
|
272
|
+
userId: 'user_123',
|
|
273
|
+
sessionId: 'streaming_session'
|
|
274
|
+
}, message);
|
|
275
|
+
// Add monitoring to the stream
|
|
276
|
+
const monitoredStream = monitorStream(events, (event) => {
|
|
277
|
+
metrics.monitor(event);
|
|
278
|
+
// Log important events
|
|
279
|
+
if (event.type === 'function_call_start') {
|
|
280
|
+
console.log(`\n[FUNCTION CALL] ${event.functionCall?.name}`);
|
|
281
|
+
}
|
|
282
|
+
else if (event.type === 'function_call_complete') {
|
|
283
|
+
console.log(`[FUNCTION COMPLETE] ${event.functionResponse?.name}`);
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
let messageContent = '';
|
|
287
|
+
for await (const event of monitoredStream) {
|
|
288
|
+
if (event.type === 'message_delta' && event.content) {
|
|
289
|
+
const text = event.content.parts[0].text || '';
|
|
290
|
+
messageContent += text;
|
|
291
|
+
process.stdout.write(text);
|
|
292
|
+
}
|
|
293
|
+
else if (event.type === 'message_complete') {
|
|
294
|
+
console.log('\n[Stream complete]');
|
|
295
|
+
break;
|
|
296
|
+
}
|
|
297
|
+
else if (event.type === 'error') {
|
|
298
|
+
console.log('\n[Error]:', event.error);
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
// Show metrics
|
|
303
|
+
console.log('\nStream Metrics:', metrics.getMetrics());
|
|
304
|
+
}
|
|
305
|
+
export async function runAdvancedStreamingExample() {
|
|
306
|
+
console.log('\n=== JAF ADK Layer - Advanced Streaming Features ===\n');
|
|
307
|
+
// Create a live request queue
|
|
308
|
+
const queue = createLiveRequestQueue();
|
|
309
|
+
// Simulate incoming messages
|
|
310
|
+
setTimeout(async () => {
|
|
311
|
+
await queue.enqueue(createUserMessage('Start the story'));
|
|
312
|
+
await queue.enqueue(createUserMessage('Continue with action'));
|
|
313
|
+
await queue.enqueue(createUserMessage('Add a plot twist'));
|
|
314
|
+
queue.close();
|
|
315
|
+
}, 100);
|
|
316
|
+
console.log('Processing queued messages:');
|
|
317
|
+
// Process messages from queue
|
|
318
|
+
let isQueueActive = true;
|
|
319
|
+
while (isQueueActive) {
|
|
320
|
+
const message = await queue.dequeue();
|
|
321
|
+
if (!message) {
|
|
322
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
323
|
+
continue;
|
|
324
|
+
}
|
|
325
|
+
console.log('Processing:', message.parts[0].text);
|
|
326
|
+
if (queue.isEmpty()) {
|
|
327
|
+
isQueueActive = false;
|
|
328
|
+
break;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
console.log('Queue processing complete');
|
|
332
|
+
}
|
|
333
|
+
export async function runLiveStreamingExample() {
|
|
334
|
+
console.log('\n=== JAF ADK Layer - Live Streaming Simulation ===\n');
|
|
335
|
+
// Simulate a live streaming scenario
|
|
336
|
+
async function* mockAgentStream() {
|
|
337
|
+
const responses = [
|
|
338
|
+
'Hello! I\'m ready to help you.',
|
|
339
|
+
'What would you like to know?',
|
|
340
|
+
'I can assist with various tasks.',
|
|
341
|
+
'Feel free to ask me anything!'
|
|
342
|
+
];
|
|
343
|
+
for (const response of responses) {
|
|
344
|
+
// Simulate typing delay
|
|
345
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
346
|
+
yield createAgentEvent('message_delta', {
|
|
347
|
+
content: createUserMessage(response)
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
yield createAgentEvent('message_complete');
|
|
351
|
+
}
|
|
352
|
+
console.log('Live streaming simulation:');
|
|
353
|
+
const stream = mockAgentStream();
|
|
354
|
+
for await (const event of stream) {
|
|
355
|
+
if (event.type === 'message_delta' && event.content) {
|
|
356
|
+
console.log('→', event.content.parts[0].text);
|
|
357
|
+
}
|
|
358
|
+
else if (event.type === 'message_complete') {
|
|
359
|
+
console.log('[Stream ended]');
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
// ========== Main Example Runner ==========
|
|
364
|
+
export async function runAllAdvancedExamples() {
|
|
365
|
+
try {
|
|
366
|
+
await runSchemaValidationExample();
|
|
367
|
+
await runStreamingWithMonitoringExample();
|
|
368
|
+
await runAdvancedStreamingExample();
|
|
369
|
+
await runLiveStreamingExample();
|
|
370
|
+
console.log('\n=== All advanced examples completed successfully! ===');
|
|
371
|
+
}
|
|
372
|
+
catch (error) {
|
|
373
|
+
console.error('Advanced example failed:', error);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
// Run examples if this file is executed directly
|
|
377
|
+
if (require.main === module) {
|
|
378
|
+
runAllAdvancedExamples();
|
|
379
|
+
}
|
|
380
|
+
//# sourceMappingURL=advanced-features.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advanced-features.js","sourceRoot":"","sources":["../../../src/adk/examples/advanced-features.ts"],"names":[],"mappings":"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"}
|