@prefactor/core 0.3.1 → 0.3.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/dist/client.d.ts +16 -9
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +12 -0
- package/dist/client.js.map +1 -1
- package/dist/index.cjs +169 -1
- package/dist/index.cjs.map +5 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +169 -1
- package/dist/index.js.map +5 -4
- package/dist/tool-schema.d.ts +16 -0
- package/dist/tool-schema.d.ts.map +1 -0
- package/dist/tool-schema.js +152 -0
- package/dist/tool-schema.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { getLogger } from './utils/logging.js';
|
|
2
|
+
const logger = getLogger('tool-schema');
|
|
3
|
+
export function normalizeAgentToolSchemas(agentSchema, { defaultAgentSchema, providerName, }) {
|
|
4
|
+
const toolSchemas = extractToolSchemas(agentSchema, providerName);
|
|
5
|
+
return {
|
|
6
|
+
agentSchema: mergeWithDefaultAgentSchema(stripToolSchemas(agentSchema), defaultAgentSchema),
|
|
7
|
+
toolSchemas,
|
|
8
|
+
toolSpanTypes: buildToolSpanTypes(toolSchemas),
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export function resolveMappedSpanType(toolName, toolSpanTypes, defaultSpanType) {
|
|
12
|
+
return toolSpanTypes?.[toolName] ?? defaultSpanType;
|
|
13
|
+
}
|
|
14
|
+
function extractToolSchemas(agentSchema, providerName) {
|
|
15
|
+
const rawToolSchemas = getRawToolSchemas(agentSchema);
|
|
16
|
+
if (!rawToolSchemas) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
const toolSchemas = {};
|
|
20
|
+
const toolBySpanType = new Map();
|
|
21
|
+
for (const [toolName, rawConfig] of Object.entries(rawToolSchemas)) {
|
|
22
|
+
const parsedToolSchema = parseToolSchemaConfig(toolName, rawConfig, providerName, toolBySpanType);
|
|
23
|
+
if (!parsedToolSchema) {
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
toolSchemas[toolName] = parsedToolSchema;
|
|
27
|
+
}
|
|
28
|
+
return Object.keys(toolSchemas).length > 0 ? toolSchemas : undefined;
|
|
29
|
+
}
|
|
30
|
+
function getRawToolSchemas(agentSchema) {
|
|
31
|
+
if (!agentSchema || typeof agentSchema !== 'object' || Array.isArray(agentSchema)) {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
const rawToolSchemas = agentSchema.toolSchemas;
|
|
35
|
+
if (rawToolSchemas === undefined) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
if (!rawToolSchemas || typeof rawToolSchemas !== 'object' || Array.isArray(rawToolSchemas)) {
|
|
39
|
+
logger.warn('Ignoring invalid agentSchema.toolSchemas: expected an object keyed by tool name.');
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
return rawToolSchemas;
|
|
43
|
+
}
|
|
44
|
+
function parseToolSchemaConfig(toolName, rawConfig, providerName, toolBySpanType) {
|
|
45
|
+
if (!rawConfig || typeof rawConfig !== 'object' || Array.isArray(rawConfig)) {
|
|
46
|
+
logger.warn(`Invalid agentSchema.toolSchemas.${toolName}: expected an object with spanType and inputSchema.`);
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
const config = rawConfig;
|
|
50
|
+
if (typeof config.spanType !== 'string') {
|
|
51
|
+
logger.warn(`Invalid agentSchema.toolSchemas.${toolName}.spanType: expected a non-empty string.`);
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
const inputSchema = assertValidInputSchema(toolName, config.inputSchema);
|
|
55
|
+
if (!inputSchema) {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
const normalizedSpanType = normalizeUniqueToolSpanType(toolName, config.spanType, providerName, toolBySpanType);
|
|
59
|
+
if (!normalizedSpanType) {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
spanType: normalizedSpanType,
|
|
64
|
+
inputSchema,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function assertValidInputSchema(toolName, inputSchema) {
|
|
68
|
+
if (!inputSchema || typeof inputSchema !== 'object' || Array.isArray(inputSchema)) {
|
|
69
|
+
logger.warn(`Invalid agentSchema.toolSchemas.${toolName}.inputSchema: expected an object.`);
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
return inputSchema;
|
|
73
|
+
}
|
|
74
|
+
function normalizeUniqueToolSpanType(toolName, spanType, providerName, toolBySpanType) {
|
|
75
|
+
const normalizedSpanType = normalizeToolSpanType(spanType, toolName, providerName);
|
|
76
|
+
if (!normalizedSpanType) {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
const conflictingTool = toolBySpanType.get(normalizedSpanType);
|
|
80
|
+
if (conflictingTool && conflictingTool !== toolName) {
|
|
81
|
+
logger.warn(`Invalid agentSchema.toolSchemas.${toolName}.spanType: normalized span type "${normalizedSpanType}" conflicts with "${conflictingTool}".`);
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
toolBySpanType.set(normalizedSpanType, toolName);
|
|
85
|
+
return normalizedSpanType;
|
|
86
|
+
}
|
|
87
|
+
function buildToolSpanTypes(toolSchemas) {
|
|
88
|
+
if (!toolSchemas) {
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
return Object.fromEntries(Object.entries(toolSchemas).map(([toolName, config]) => [toolName, config.spanType]));
|
|
92
|
+
}
|
|
93
|
+
function cloneRecord(value) {
|
|
94
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
95
|
+
return {};
|
|
96
|
+
}
|
|
97
|
+
return { ...value };
|
|
98
|
+
}
|
|
99
|
+
function stripToolSchemas(baseSchema) {
|
|
100
|
+
if (!baseSchema || typeof baseSchema !== 'object' || Array.isArray(baseSchema)) {
|
|
101
|
+
return baseSchema;
|
|
102
|
+
}
|
|
103
|
+
const { toolSchemas: _, ...rest } = baseSchema;
|
|
104
|
+
return rest;
|
|
105
|
+
}
|
|
106
|
+
function mergeWithDefaultAgentSchema(baseSchema, defaultAgentSchema) {
|
|
107
|
+
if (!baseSchema) {
|
|
108
|
+
return defaultAgentSchema;
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
...defaultAgentSchema,
|
|
112
|
+
...baseSchema,
|
|
113
|
+
span_schemas: {
|
|
114
|
+
...cloneRecord(defaultAgentSchema.span_schemas),
|
|
115
|
+
...cloneRecord(baseSchema.span_schemas),
|
|
116
|
+
},
|
|
117
|
+
span_result_schemas: {
|
|
118
|
+
...cloneRecord(defaultAgentSchema.span_result_schemas),
|
|
119
|
+
...cloneRecord(baseSchema.span_result_schemas),
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function normalizeToolSpanType(spanType, toolName, providerName) {
|
|
124
|
+
const trimmedSpanType = spanType.trim();
|
|
125
|
+
if (trimmedSpanType.length === 0) {
|
|
126
|
+
logger.warn(`Invalid agentSchema.toolSchemas.${toolName}.spanType: expected a non-empty string.`);
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
const providerToolPrefix = `${providerName}:tool:`;
|
|
130
|
+
if (trimmedSpanType.startsWith(providerToolPrefix)) {
|
|
131
|
+
const suffix = trimmedSpanType.slice(providerToolPrefix.length).replace(/^:+/, '');
|
|
132
|
+
if (suffix.length === 0) {
|
|
133
|
+
logger.warn(`Invalid agentSchema.toolSchemas.${toolName}.spanType: expected a non-empty suffix after normalization.`);
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
return `${providerName}:tool:${suffix}`;
|
|
137
|
+
}
|
|
138
|
+
let suffix = trimmedSpanType;
|
|
139
|
+
if (suffix.startsWith(`${providerName}:`)) {
|
|
140
|
+
suffix = suffix.slice(`${providerName}:`.length);
|
|
141
|
+
}
|
|
142
|
+
if (suffix.startsWith('tool:')) {
|
|
143
|
+
suffix = suffix.slice('tool:'.length);
|
|
144
|
+
}
|
|
145
|
+
suffix = suffix.replace(/^:+/, '');
|
|
146
|
+
if (suffix.length === 0) {
|
|
147
|
+
logger.warn(`Invalid agentSchema.toolSchemas.${toolName}.spanType: expected a non-empty suffix after normalization.`);
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
150
|
+
return `${providerName}:tool:${suffix}`;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=tool-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-schema.js","sourceRoot":"","sources":["../src/tool-schema.ts"],"names":[],"mappings":"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"}
|