@modular-prompt/driver 0.4.5
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 +597 -0
- package/dist/anthropic/anthropic-driver.d.ts +47 -0
- package/dist/anthropic/anthropic-driver.d.ts.map +1 -0
- package/dist/anthropic/anthropic-driver.js +217 -0
- package/dist/anthropic/anthropic-driver.js.map +1 -0
- package/dist/driver-registry/ai-service.d.ts +43 -0
- package/dist/driver-registry/ai-service.d.ts.map +1 -0
- package/dist/driver-registry/ai-service.js +77 -0
- package/dist/driver-registry/ai-service.js.map +1 -0
- package/dist/driver-registry/config-based-factory.d.ts +64 -0
- package/dist/driver-registry/config-based-factory.d.ts.map +1 -0
- package/dist/driver-registry/config-based-factory.js +90 -0
- package/dist/driver-registry/config-based-factory.js.map +1 -0
- package/dist/driver-registry/factory-helper.d.ts +49 -0
- package/dist/driver-registry/factory-helper.d.ts.map +1 -0
- package/dist/driver-registry/factory-helper.js +109 -0
- package/dist/driver-registry/factory-helper.js.map +1 -0
- package/dist/driver-registry/index.d.ts +9 -0
- package/dist/driver-registry/index.d.ts.map +1 -0
- package/dist/driver-registry/index.js +8 -0
- package/dist/driver-registry/index.js.map +1 -0
- package/dist/driver-registry/registry.d.ts +50 -0
- package/dist/driver-registry/registry.d.ts.map +1 -0
- package/dist/driver-registry/registry.js +208 -0
- package/dist/driver-registry/registry.js.map +1 -0
- package/dist/driver-registry/types.d.ts +108 -0
- package/dist/driver-registry/types.d.ts.map +1 -0
- package/dist/driver-registry/types.js +6 -0
- package/dist/driver-registry/types.js.map +1 -0
- package/dist/echo-driver.d.ts +88 -0
- package/dist/echo-driver.d.ts.map +1 -0
- package/dist/echo-driver.js +198 -0
- package/dist/echo-driver.js.map +1 -0
- package/dist/formatter/completion-formatter.d.ts +27 -0
- package/dist/formatter/completion-formatter.d.ts.map +1 -0
- package/dist/formatter/completion-formatter.js +84 -0
- package/dist/formatter/completion-formatter.js.map +1 -0
- package/dist/formatter/converter.d.ts +20 -0
- package/dist/formatter/converter.d.ts.map +1 -0
- package/dist/formatter/converter.js +176 -0
- package/dist/formatter/converter.js.map +1 -0
- package/dist/formatter/element-formatters/base.d.ts +34 -0
- package/dist/formatter/element-formatters/base.d.ts.map +1 -0
- package/dist/formatter/element-formatters/base.js +36 -0
- package/dist/formatter/element-formatters/base.js.map +1 -0
- package/dist/formatter/element-formatters/chunk.d.ts +11 -0
- package/dist/formatter/element-formatters/chunk.d.ts.map +1 -0
- package/dist/formatter/element-formatters/chunk.js +12 -0
- package/dist/formatter/element-formatters/chunk.js.map +1 -0
- package/dist/formatter/element-formatters/index.d.ts +14 -0
- package/dist/formatter/element-formatters/index.d.ts.map +1 -0
- package/dist/formatter/element-formatters/index.js +15 -0
- package/dist/formatter/element-formatters/index.js.map +1 -0
- package/dist/formatter/element-formatters/json.d.ts +11 -0
- package/dist/formatter/element-formatters/json.d.ts.map +1 -0
- package/dist/formatter/element-formatters/json.js +27 -0
- package/dist/formatter/element-formatters/json.js.map +1 -0
- package/dist/formatter/element-formatters/material.d.ts +11 -0
- package/dist/formatter/element-formatters/material.d.ts.map +1 -0
- package/dist/formatter/element-formatters/material.js +35 -0
- package/dist/formatter/element-formatters/material.js.map +1 -0
- package/dist/formatter/element-formatters/message.d.ts +13 -0
- package/dist/formatter/element-formatters/message.d.ts.map +1 -0
- package/dist/formatter/element-formatters/message.js +35 -0
- package/dist/formatter/element-formatters/message.js.map +1 -0
- package/dist/formatter/element-formatters/registry.d.ts +29 -0
- package/dist/formatter/element-formatters/registry.d.ts.map +1 -0
- package/dist/formatter/element-formatters/registry.js +82 -0
- package/dist/formatter/element-formatters/registry.js.map +1 -0
- package/dist/formatter/element-formatters/section.d.ts +18 -0
- package/dist/formatter/element-formatters/section.d.ts.map +1 -0
- package/dist/formatter/element-formatters/section.js +46 -0
- package/dist/formatter/element-formatters/section.js.map +1 -0
- package/dist/formatter/element-formatters/string-pattern.d.ts +22 -0
- package/dist/formatter/element-formatters/string-pattern.d.ts.map +1 -0
- package/dist/formatter/element-formatters/string-pattern.js +124 -0
- package/dist/formatter/element-formatters/string-pattern.js.map +1 -0
- package/dist/formatter/element-formatters/text.d.ts +11 -0
- package/dist/formatter/element-formatters/text.d.ts.map +1 -0
- package/dist/formatter/element-formatters/text.js +11 -0
- package/dist/formatter/element-formatters/text.js.map +1 -0
- package/dist/formatter/formatter.d.ts +24 -0
- package/dist/formatter/formatter.d.ts.map +1 -0
- package/dist/formatter/formatter.js +252 -0
- package/dist/formatter/formatter.js.map +1 -0
- package/dist/formatter/types.d.ts +91 -0
- package/dist/formatter/types.d.ts.map +1 -0
- package/dist/formatter/types.js +2 -0
- package/dist/formatter/types.js.map +1 -0
- package/dist/google-genai/google-genai-driver.d.ts +67 -0
- package/dist/google-genai/google-genai-driver.d.ts.map +1 -0
- package/dist/google-genai/google-genai-driver.js +351 -0
- package/dist/google-genai/google-genai-driver.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/mlx-ml/mlx-driver.d.ts +65 -0
- package/dist/mlx-ml/mlx-driver.d.ts.map +1 -0
- package/dist/mlx-ml/mlx-driver.js +235 -0
- package/dist/mlx-ml/mlx-driver.js.map +1 -0
- package/dist/mlx-ml/model-spec/index.d.ts +7 -0
- package/dist/mlx-ml/model-spec/index.d.ts.map +1 -0
- package/dist/mlx-ml/model-spec/index.js +7 -0
- package/dist/mlx-ml/model-spec/index.js.map +1 -0
- package/dist/mlx-ml/model-spec/types.d.ts +30 -0
- package/dist/mlx-ml/model-spec/types.d.ts.map +1 -0
- package/dist/mlx-ml/model-spec/types.js +7 -0
- package/dist/mlx-ml/model-spec/types.js.map +1 -0
- package/dist/mlx-ml/process/index.d.ts +33 -0
- package/dist/mlx-ml/process/index.d.ts.map +1 -0
- package/dist/mlx-ml/process/index.js +65 -0
- package/dist/mlx-ml/process/index.js.map +1 -0
- package/dist/mlx-ml/process/model-handlers.d.ts +58 -0
- package/dist/mlx-ml/process/model-handlers.d.ts.map +1 -0
- package/dist/mlx-ml/process/model-handlers.js +197 -0
- package/dist/mlx-ml/process/model-handlers.js.map +1 -0
- package/dist/mlx-ml/process/model-specific.d.ts +35 -0
- package/dist/mlx-ml/process/model-specific.d.ts.map +1 -0
- package/dist/mlx-ml/process/model-specific.js +35 -0
- package/dist/mlx-ml/process/model-specific.js.map +1 -0
- package/dist/mlx-ml/process/parameter-mapper.d.ts +17 -0
- package/dist/mlx-ml/process/parameter-mapper.d.ts.map +1 -0
- package/dist/mlx-ml/process/parameter-mapper.js +91 -0
- package/dist/mlx-ml/process/parameter-mapper.js.map +1 -0
- package/dist/mlx-ml/process/parameter-validator.d.ts +55 -0
- package/dist/mlx-ml/process/parameter-validator.d.ts.map +1 -0
- package/dist/mlx-ml/process/parameter-validator.js +203 -0
- package/dist/mlx-ml/process/parameter-validator.js.map +1 -0
- package/dist/mlx-ml/process/process-communication.d.ts +25 -0
- package/dist/mlx-ml/process/process-communication.d.ts.map +1 -0
- package/dist/mlx-ml/process/process-communication.js +117 -0
- package/dist/mlx-ml/process/process-communication.js.map +1 -0
- package/dist/mlx-ml/process/queue.d.ts +30 -0
- package/dist/mlx-ml/process/queue.d.ts.map +1 -0
- package/dist/mlx-ml/process/queue.js +147 -0
- package/dist/mlx-ml/process/queue.js.map +1 -0
- package/dist/mlx-ml/process/types.d.ts +97 -0
- package/dist/mlx-ml/process/types.d.ts.map +1 -0
- package/dist/mlx-ml/process/types.js +2 -0
- package/dist/mlx-ml/process/types.js.map +1 -0
- package/dist/mlx-ml/types.d.ts +66 -0
- package/dist/mlx-ml/types.d.ts.map +1 -0
- package/dist/mlx-ml/types.js +7 -0
- package/dist/mlx-ml/types.js.map +1 -0
- package/dist/ollama/ollama-driver.d.ts +15 -0
- package/dist/ollama/ollama-driver.d.ts.map +1 -0
- package/dist/ollama/ollama-driver.js +15 -0
- package/dist/ollama/ollama-driver.js.map +1 -0
- package/dist/openai/openai-driver.d.ts +71 -0
- package/dist/openai/openai-driver.d.ts.map +1 -0
- package/dist/openai/openai-driver.js +230 -0
- package/dist/openai/openai-driver.js.map +1 -0
- package/dist/test-driver.d.ts +78 -0
- package/dist/test-driver.d.ts.map +1 -0
- package/dist/test-driver.js +193 -0
- package/dist/test-driver.js.map +1 -0
- package/dist/types.d.ts +90 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/vertexai/vertexai-driver.d.ts +63 -0
- package/dist/vertexai/vertexai-driver.d.ts.map +1 -0
- package/dist/vertexai/vertexai-driver.js +335 -0
- package/dist/vertexai/vertexai-driver.js.map +1 -0
- package/package.json +61 -0
- package/scripts/download-model.js +40 -0
- package/scripts/setup-mlx.js +53 -0
- package/src/mlx-ml/python/.python-version +1 -0
- package/src/mlx-ml/python/__main__.py +312 -0
- package/src/mlx-ml/python/chat_template_constraints.py +164 -0
- package/src/mlx-ml/python/pyproject.toml +19 -0
- package/src/mlx-ml/python/token_utils.py +262 -0
- package/src/mlx-ml/python/uv.lock +1029 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/formatter/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAQR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAErG;;GAEG;AACH,qBAAa,gBAAiB,YAAW,gBAAgB;IACvD,OAAO,CAAC,OAAO,CACgE;IAC/E,OAAO,CAAC,aAAa,CAAC,CAAkD;gBAE5D,OAAO,GAAE,gBAAqB;IA4B1C,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAwBhC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM;IAKtC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAAC,GAAG,IAAI;IAS/E,OAAO,CAAC,8BAA8B;IAoBtC,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,cAAc;IAqCtB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,WAAW;IA+BnB,OAAO,CAAC,aAAa;IAqCrB,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,gBAAgB;CAuBzB"}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default formatter implementation for converting elements to text
|
|
3
|
+
*/
|
|
4
|
+
export class DefaultFormatter {
|
|
5
|
+
options;
|
|
6
|
+
specialTokens;
|
|
7
|
+
constructor(options = {}) {
|
|
8
|
+
this.options = {
|
|
9
|
+
preamble: options.preamble,
|
|
10
|
+
sectionDescriptions: options.sectionDescriptions,
|
|
11
|
+
markers: {
|
|
12
|
+
sectionStart: options.markers?.sectionStart || '',
|
|
13
|
+
sectionEnd: options.markers?.sectionEnd || '',
|
|
14
|
+
subsectionStart: options.markers?.subsectionStart || '',
|
|
15
|
+
subsectionEnd: options.markers?.subsectionEnd || '',
|
|
16
|
+
materialStart: options.markers?.materialStart || '<material>',
|
|
17
|
+
materialEnd: options.markers?.materialEnd || '</material>',
|
|
18
|
+
chunkStart: options.markers?.chunkStart || '<chunk>',
|
|
19
|
+
chunkEnd: options.markers?.chunkEnd || '</chunk>',
|
|
20
|
+
messageRole: options.markers?.messageRole || '',
|
|
21
|
+
messageContent: options.markers?.messageContent || '',
|
|
22
|
+
...options.markers
|
|
23
|
+
},
|
|
24
|
+
indent: {
|
|
25
|
+
size: options.indent?.size || 2,
|
|
26
|
+
char: options.indent?.char || ' ',
|
|
27
|
+
...options.indent
|
|
28
|
+
},
|
|
29
|
+
lineBreak: options.lineBreak || '\n',
|
|
30
|
+
specialTokens: options.specialTokens
|
|
31
|
+
};
|
|
32
|
+
this.specialTokens = options.specialTokens;
|
|
33
|
+
}
|
|
34
|
+
format(element) {
|
|
35
|
+
switch (element.type) {
|
|
36
|
+
case 'text':
|
|
37
|
+
return this.formatText(element);
|
|
38
|
+
case 'message':
|
|
39
|
+
return this.formatMessage(element);
|
|
40
|
+
case 'material':
|
|
41
|
+
return this.formatMaterial(element);
|
|
42
|
+
case 'chunk':
|
|
43
|
+
return this.formatChunk(element);
|
|
44
|
+
case 'section':
|
|
45
|
+
return this.formatSection(element);
|
|
46
|
+
case 'subsection':
|
|
47
|
+
return this.formatSubSection(element);
|
|
48
|
+
case 'json':
|
|
49
|
+
return this.formatJSONElement(element);
|
|
50
|
+
default: {
|
|
51
|
+
// Type guard exhaustive check
|
|
52
|
+
const _exhaustive = element;
|
|
53
|
+
throw new Error(`Unknown element type: ${_exhaustive.type}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
formatAll(elements) {
|
|
58
|
+
const { lineBreak } = this.options;
|
|
59
|
+
return elements.map(el => this.format(el)).join(lineBreak + lineBreak);
|
|
60
|
+
}
|
|
61
|
+
setSpecialTokens(tokens) {
|
|
62
|
+
this.specialTokens = tokens;
|
|
63
|
+
this.options.specialTokens = tokens;
|
|
64
|
+
// Update markers if special tokens are provided
|
|
65
|
+
if (tokens) {
|
|
66
|
+
this.updateMarkersFromSpecialTokens(tokens);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
updateMarkersFromSpecialTokens(tokens) {
|
|
70
|
+
// Auto-configure markers based on special tokens if available
|
|
71
|
+
const markers = this.options.markers;
|
|
72
|
+
// Update section markers if tokens are available
|
|
73
|
+
if (tokens.system && this.isTokenPair(tokens.system)) {
|
|
74
|
+
markers.sectionStart = markers.sectionStart || tokens.system.start.text;
|
|
75
|
+
markers.sectionEnd = markers.sectionEnd || tokens.system.end.text;
|
|
76
|
+
}
|
|
77
|
+
// Update thinking/reasoning markers for subsections
|
|
78
|
+
if (tokens.thinking && this.isTokenPair(tokens.thinking)) {
|
|
79
|
+
markers.subsectionStart = markers.subsectionStart || tokens.thinking.start.text;
|
|
80
|
+
markers.subsectionEnd = markers.subsectionEnd || tokens.thinking.end.text;
|
|
81
|
+
}
|
|
82
|
+
// Note: Material formatting now uses special tokens directly in formatMaterial()
|
|
83
|
+
// with priority: quote > ref > citation > context
|
|
84
|
+
}
|
|
85
|
+
isTokenPair(token) {
|
|
86
|
+
return 'start' in token && 'end' in token;
|
|
87
|
+
}
|
|
88
|
+
formatText(element) {
|
|
89
|
+
return element.content;
|
|
90
|
+
}
|
|
91
|
+
formatMessage(element) {
|
|
92
|
+
const { markers } = this.options;
|
|
93
|
+
const role = element.role.toUpperCase();
|
|
94
|
+
// Convert content to string if it's an Attachment array
|
|
95
|
+
const contentStr = typeof element.content === 'string'
|
|
96
|
+
? element.content
|
|
97
|
+
: JSON.stringify(element.content);
|
|
98
|
+
// Use special tokens or custom markers if available
|
|
99
|
+
if (this.specialTokens && this.specialTokens[element.role]) {
|
|
100
|
+
const token = this.specialTokens[element.role];
|
|
101
|
+
if (this.isTokenPair(token)) {
|
|
102
|
+
return `${token.start.text}${contentStr}${token.end.text}`;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Use role-specific markers if configured
|
|
106
|
+
if (markers.messageRole && markers.messageContent) {
|
|
107
|
+
const roleMarker = markers.messageRole.replace('{role}', role);
|
|
108
|
+
const contentMarker = markers.messageContent.replace('{content}', contentStr);
|
|
109
|
+
return roleMarker + contentMarker;
|
|
110
|
+
}
|
|
111
|
+
// Default formatting with XML-like tags for MLX models
|
|
112
|
+
return `<!-- begin of ${role} -->\n${contentStr.trim()}\n<!-- end of ${role} -->`;
|
|
113
|
+
}
|
|
114
|
+
formatMaterial(element) {
|
|
115
|
+
const { lineBreak } = this.options;
|
|
116
|
+
// Handle content which can be string or Attachment[]
|
|
117
|
+
const contentStr = typeof element.content === 'string'
|
|
118
|
+
? element.content
|
|
119
|
+
: JSON.stringify(element.content);
|
|
120
|
+
// Try to use special tokens with priority: quote > ref > citation > context
|
|
121
|
+
if (this.specialTokens) {
|
|
122
|
+
const quoteToken = this.getSpecialToken('quote');
|
|
123
|
+
if (quoteToken) {
|
|
124
|
+
return `${quoteToken.start}${element.title}${lineBreak}${contentStr}${quoteToken.end}${lineBreak}`;
|
|
125
|
+
}
|
|
126
|
+
const refToken = this.getSpecialToken('ref');
|
|
127
|
+
if (refToken) {
|
|
128
|
+
return `${refToken.start}${element.title}${lineBreak}${contentStr}${refToken.end}${lineBreak}`;
|
|
129
|
+
}
|
|
130
|
+
const citationToken = this.getSpecialToken('citation');
|
|
131
|
+
if (citationToken) {
|
|
132
|
+
return `${citationToken.start}${element.title}${lineBreak}${contentStr}${citationToken.end}${lineBreak}`;
|
|
133
|
+
}
|
|
134
|
+
const contextToken = this.getSpecialToken('context');
|
|
135
|
+
if (contextToken) {
|
|
136
|
+
return `${contextToken.start}Material: ${element.title}${lineBreak}${contentStr}${contextToken.end}${lineBreak}`;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Default: markdown quote format
|
|
140
|
+
const lines = contentStr.split(lineBreak);
|
|
141
|
+
const quotedContent = lines.map((line) => `> ${line}`).join(lineBreak);
|
|
142
|
+
return `### ${element.title}${lineBreak}${lineBreak}${quotedContent}${lineBreak}`;
|
|
143
|
+
}
|
|
144
|
+
getSpecialToken(tokenName) {
|
|
145
|
+
if (!this.specialTokens)
|
|
146
|
+
return null;
|
|
147
|
+
const token = this.specialTokens[tokenName];
|
|
148
|
+
if (token && this.isTokenPair(token)) {
|
|
149
|
+
return {
|
|
150
|
+
start: token.start.text || '',
|
|
151
|
+
end: token.end.text || ''
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
formatChunk(element) {
|
|
157
|
+
const { markers, lineBreak } = this.options;
|
|
158
|
+
const lines = [];
|
|
159
|
+
// Handle content which can be string or Attachment[]
|
|
160
|
+
const contentStr = typeof element.content === 'string'
|
|
161
|
+
? element.content
|
|
162
|
+
: JSON.stringify(element.content);
|
|
163
|
+
// Add custom markers if provided
|
|
164
|
+
if (markers.chunkStart)
|
|
165
|
+
lines.push(markers.chunkStart);
|
|
166
|
+
// Format chunk title based on available information
|
|
167
|
+
let chunkTitle;
|
|
168
|
+
if (element.index !== undefined && element.total !== undefined) {
|
|
169
|
+
chunkTitle = `#### Chunk ${element.index}/${element.total} of ${element.partOf}`;
|
|
170
|
+
}
|
|
171
|
+
else if (element.index !== undefined) {
|
|
172
|
+
chunkTitle = `#### Chunk ${element.index} of ${element.partOf}`;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
chunkTitle = `#### Part of ${element.partOf}`;
|
|
176
|
+
}
|
|
177
|
+
lines.push(chunkTitle);
|
|
178
|
+
lines.push('');
|
|
179
|
+
lines.push(contentStr);
|
|
180
|
+
if (markers.chunkEnd)
|
|
181
|
+
lines.push(markers.chunkEnd);
|
|
182
|
+
return lines.join(lineBreak);
|
|
183
|
+
}
|
|
184
|
+
formatSection(element) {
|
|
185
|
+
const { lineBreak } = this.options;
|
|
186
|
+
const lines = [];
|
|
187
|
+
lines.push(`## ${element.title}`);
|
|
188
|
+
lines.push('');
|
|
189
|
+
// Track previous item type for spacing
|
|
190
|
+
let previousItemType = null;
|
|
191
|
+
// Format items without automatic bullet points
|
|
192
|
+
for (const item of element.items) {
|
|
193
|
+
if (typeof item === 'string') {
|
|
194
|
+
// Add blank line if previous was subsection
|
|
195
|
+
if (previousItemType === 'subsection') {
|
|
196
|
+
lines.push('');
|
|
197
|
+
}
|
|
198
|
+
lines.push(item);
|
|
199
|
+
previousItemType = 'string';
|
|
200
|
+
}
|
|
201
|
+
else if (typeof item === 'function') {
|
|
202
|
+
// Skip DynamicContent functions - they should be resolved before formatting
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
// Subsection element
|
|
207
|
+
// Add blank line if there was any previous item
|
|
208
|
+
if (previousItemType !== null) {
|
|
209
|
+
lines.push('');
|
|
210
|
+
}
|
|
211
|
+
const formatted = this.format(item);
|
|
212
|
+
lines.push(formatted);
|
|
213
|
+
previousItemType = 'subsection';
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return lines.join(lineBreak);
|
|
217
|
+
}
|
|
218
|
+
formatJSONElement(element) {
|
|
219
|
+
const { lineBreak } = this.options;
|
|
220
|
+
const lines = [];
|
|
221
|
+
const jsonContent = typeof element.content === 'string'
|
|
222
|
+
? element.content
|
|
223
|
+
: JSON.stringify(element.content, null, 2);
|
|
224
|
+
lines.push('### JSON Output Format');
|
|
225
|
+
lines.push('');
|
|
226
|
+
lines.push('```json');
|
|
227
|
+
lines.push(jsonContent);
|
|
228
|
+
lines.push('```');
|
|
229
|
+
return lines.join(lineBreak);
|
|
230
|
+
}
|
|
231
|
+
formatSubSection(element) {
|
|
232
|
+
const { markers, lineBreak } = this.options;
|
|
233
|
+
const lines = [];
|
|
234
|
+
// Add subsection start marker if provided
|
|
235
|
+
if (markers.subsectionStart)
|
|
236
|
+
lines.push(markers.subsectionStart);
|
|
237
|
+
lines.push(`### ${element.title}`);
|
|
238
|
+
lines.push('');
|
|
239
|
+
// Format items without automatic bullet points
|
|
240
|
+
for (const item of element.items) {
|
|
241
|
+
if (typeof item === 'string') {
|
|
242
|
+
lines.push(item);
|
|
243
|
+
}
|
|
244
|
+
// SimpleDynamicContent functions should be resolved before formatting
|
|
245
|
+
}
|
|
246
|
+
// Add subsection end marker if provided
|
|
247
|
+
if (markers.subsectionEnd)
|
|
248
|
+
lines.push(markers.subsectionEnd);
|
|
249
|
+
return lines.join(lineBreak);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/formatter/formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { Element } from '@modular-prompt/core';
|
|
2
|
+
/**
|
|
3
|
+
* Special token definition
|
|
4
|
+
*/
|
|
5
|
+
export interface SpecialToken {
|
|
6
|
+
text: string;
|
|
7
|
+
id: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Special token pair definition
|
|
11
|
+
*/
|
|
12
|
+
export interface SpecialTokenPair {
|
|
13
|
+
start: SpecialToken;
|
|
14
|
+
end: SpecialToken;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Chat message format
|
|
18
|
+
*/
|
|
19
|
+
export interface ChatMessage {
|
|
20
|
+
role: 'system' | 'user' | 'assistant';
|
|
21
|
+
content: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Formatter options for converting elements to text
|
|
25
|
+
*/
|
|
26
|
+
export interface FormatterOptions {
|
|
27
|
+
/**
|
|
28
|
+
* Custom formatter instance to use
|
|
29
|
+
*/
|
|
30
|
+
formatter?: ElementFormatter;
|
|
31
|
+
/**
|
|
32
|
+
* Preamble text to be added at the beginning of the formatted prompt
|
|
33
|
+
*/
|
|
34
|
+
preamble?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Section descriptions for each major section
|
|
37
|
+
*/
|
|
38
|
+
sectionDescriptions?: {
|
|
39
|
+
instructions?: string;
|
|
40
|
+
data?: string;
|
|
41
|
+
output?: string;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Custom block markers for different element types
|
|
45
|
+
*/
|
|
46
|
+
markers?: {
|
|
47
|
+
sectionStart?: string;
|
|
48
|
+
sectionEnd?: string;
|
|
49
|
+
subsectionStart?: string;
|
|
50
|
+
subsectionEnd?: string;
|
|
51
|
+
materialStart?: string;
|
|
52
|
+
materialEnd?: string;
|
|
53
|
+
chunkStart?: string;
|
|
54
|
+
chunkEnd?: string;
|
|
55
|
+
messageRole?: string;
|
|
56
|
+
messageContent?: string;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Indentation settings
|
|
60
|
+
*/
|
|
61
|
+
indent?: {
|
|
62
|
+
size?: number;
|
|
63
|
+
char?: ' ' | '\t';
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Line break settings
|
|
67
|
+
*/
|
|
68
|
+
lineBreak?: '\n' | '\r\n';
|
|
69
|
+
/**
|
|
70
|
+
* Model-specific special tokens
|
|
71
|
+
*/
|
|
72
|
+
specialTokens?: Record<string, SpecialToken | SpecialTokenPair>;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Element formatter interface
|
|
76
|
+
*/
|
|
77
|
+
export interface ElementFormatter {
|
|
78
|
+
/**
|
|
79
|
+
* Format a single element
|
|
80
|
+
*/
|
|
81
|
+
format(element: Element): string;
|
|
82
|
+
/**
|
|
83
|
+
* Format multiple elements
|
|
84
|
+
*/
|
|
85
|
+
formatAll(elements: Element[]): string;
|
|
86
|
+
/**
|
|
87
|
+
* Set special tokens for formatting
|
|
88
|
+
*/
|
|
89
|
+
setSpecialTokens?(tokens: Record<string, SpecialToken | SpecialTokenPair>): void;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/formatter/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,EAAE,YAAY,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,mBAAmB,CAAC,EAAE;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IAEF;;OAEG;IACH,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;KACnB,CAAC;IAEF;;OAEG;IACH,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAE1B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAAC,CAAC;CACjE;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC;IAEjC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEvC;;OAEG;IACH,gBAAgB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAAC,GAAG,IAAI,CAAC;CAClF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/formatter/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { CompiledPrompt } from '@modular-prompt/core';
|
|
2
|
+
import type { AIDriver, QueryOptions, QueryResult, StreamResult } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* GoogleGenAI driver configuration
|
|
5
|
+
*/
|
|
6
|
+
export interface GoogleGenAIDriverConfig {
|
|
7
|
+
apiKey?: string;
|
|
8
|
+
model?: string;
|
|
9
|
+
temperature?: number;
|
|
10
|
+
defaultOptions?: Partial<GoogleGenAIQueryOptions>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* GoogleGenAI-specific query options
|
|
14
|
+
*/
|
|
15
|
+
export interface GoogleGenAIQueryOptions extends QueryOptions {
|
|
16
|
+
model?: string;
|
|
17
|
+
maxTokens?: number;
|
|
18
|
+
temperature?: number;
|
|
19
|
+
topP?: number;
|
|
20
|
+
topK?: number;
|
|
21
|
+
candidateCount?: number;
|
|
22
|
+
stopSequences?: string[];
|
|
23
|
+
thinkingConfig?: {
|
|
24
|
+
thinkingLevel?: 'HIGH' | 'MEDIUM' | 'LOW';
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* GoogleGenAI driver
|
|
29
|
+
*/
|
|
30
|
+
export declare class GoogleGenAIDriver implements AIDriver {
|
|
31
|
+
private client;
|
|
32
|
+
private defaultModel;
|
|
33
|
+
private defaultTemperature;
|
|
34
|
+
private defaultOptions;
|
|
35
|
+
constructor(config?: GoogleGenAIDriverConfig);
|
|
36
|
+
/**
|
|
37
|
+
* Convert content (string or Attachment[]) to string
|
|
38
|
+
*/
|
|
39
|
+
private contentToString;
|
|
40
|
+
/**
|
|
41
|
+
* Convert Element to Part (flat text conversion)
|
|
42
|
+
* Used for systemInstruction and simple data
|
|
43
|
+
*/
|
|
44
|
+
private elementToPart;
|
|
45
|
+
/**
|
|
46
|
+
* Convert Element to Content (structure-preserving conversion)
|
|
47
|
+
* Used for conversation history where role matters
|
|
48
|
+
*/
|
|
49
|
+
private elementToContent;
|
|
50
|
+
/**
|
|
51
|
+
* Convert JSON Schema to GoogleGenAI Schema format
|
|
52
|
+
*/
|
|
53
|
+
private convertJsonSchema;
|
|
54
|
+
/**
|
|
55
|
+
* Query implementation
|
|
56
|
+
*/
|
|
57
|
+
query(prompt: CompiledPrompt, options?: GoogleGenAIQueryOptions): Promise<QueryResult>;
|
|
58
|
+
/**
|
|
59
|
+
* Stream query implementation
|
|
60
|
+
*/
|
|
61
|
+
streamQuery(prompt: CompiledPrompt, options?: GoogleGenAIQueryOptions): Promise<StreamResult>;
|
|
62
|
+
/**
|
|
63
|
+
* Close the client
|
|
64
|
+
*/
|
|
65
|
+
close(): Promise<void>;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=google-genai-driver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-genai-driver.d.ts","sourceRoot":"","sources":["../../src/google-genai/google-genai-driver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAW,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE;QACf,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;KAC3C,CAAC;CACH;AAmBD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,QAAQ;IAChD,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,cAAc,CAAmC;gBAE7C,MAAM,GAAE,uBAA4B;IAahD;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAkDrB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAyBxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACG,KAAK,CACT,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,WAAW,CAAC;IAgGvB;;OAEG;IACG,WAAW,CACf,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,YAAY,CAAC;IAsIxB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|