@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.
Files changed (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +597 -0
  3. package/dist/anthropic/anthropic-driver.d.ts +47 -0
  4. package/dist/anthropic/anthropic-driver.d.ts.map +1 -0
  5. package/dist/anthropic/anthropic-driver.js +217 -0
  6. package/dist/anthropic/anthropic-driver.js.map +1 -0
  7. package/dist/driver-registry/ai-service.d.ts +43 -0
  8. package/dist/driver-registry/ai-service.d.ts.map +1 -0
  9. package/dist/driver-registry/ai-service.js +77 -0
  10. package/dist/driver-registry/ai-service.js.map +1 -0
  11. package/dist/driver-registry/config-based-factory.d.ts +64 -0
  12. package/dist/driver-registry/config-based-factory.d.ts.map +1 -0
  13. package/dist/driver-registry/config-based-factory.js +90 -0
  14. package/dist/driver-registry/config-based-factory.js.map +1 -0
  15. package/dist/driver-registry/factory-helper.d.ts +49 -0
  16. package/dist/driver-registry/factory-helper.d.ts.map +1 -0
  17. package/dist/driver-registry/factory-helper.js +109 -0
  18. package/dist/driver-registry/factory-helper.js.map +1 -0
  19. package/dist/driver-registry/index.d.ts +9 -0
  20. package/dist/driver-registry/index.d.ts.map +1 -0
  21. package/dist/driver-registry/index.js +8 -0
  22. package/dist/driver-registry/index.js.map +1 -0
  23. package/dist/driver-registry/registry.d.ts +50 -0
  24. package/dist/driver-registry/registry.d.ts.map +1 -0
  25. package/dist/driver-registry/registry.js +208 -0
  26. package/dist/driver-registry/registry.js.map +1 -0
  27. package/dist/driver-registry/types.d.ts +108 -0
  28. package/dist/driver-registry/types.d.ts.map +1 -0
  29. package/dist/driver-registry/types.js +6 -0
  30. package/dist/driver-registry/types.js.map +1 -0
  31. package/dist/echo-driver.d.ts +88 -0
  32. package/dist/echo-driver.d.ts.map +1 -0
  33. package/dist/echo-driver.js +198 -0
  34. package/dist/echo-driver.js.map +1 -0
  35. package/dist/formatter/completion-formatter.d.ts +27 -0
  36. package/dist/formatter/completion-formatter.d.ts.map +1 -0
  37. package/dist/formatter/completion-formatter.js +84 -0
  38. package/dist/formatter/completion-formatter.js.map +1 -0
  39. package/dist/formatter/converter.d.ts +20 -0
  40. package/dist/formatter/converter.d.ts.map +1 -0
  41. package/dist/formatter/converter.js +176 -0
  42. package/dist/formatter/converter.js.map +1 -0
  43. package/dist/formatter/element-formatters/base.d.ts +34 -0
  44. package/dist/formatter/element-formatters/base.d.ts.map +1 -0
  45. package/dist/formatter/element-formatters/base.js +36 -0
  46. package/dist/formatter/element-formatters/base.js.map +1 -0
  47. package/dist/formatter/element-formatters/chunk.d.ts +11 -0
  48. package/dist/formatter/element-formatters/chunk.d.ts.map +1 -0
  49. package/dist/formatter/element-formatters/chunk.js +12 -0
  50. package/dist/formatter/element-formatters/chunk.js.map +1 -0
  51. package/dist/formatter/element-formatters/index.d.ts +14 -0
  52. package/dist/formatter/element-formatters/index.d.ts.map +1 -0
  53. package/dist/formatter/element-formatters/index.js +15 -0
  54. package/dist/formatter/element-formatters/index.js.map +1 -0
  55. package/dist/formatter/element-formatters/json.d.ts +11 -0
  56. package/dist/formatter/element-formatters/json.d.ts.map +1 -0
  57. package/dist/formatter/element-formatters/json.js +27 -0
  58. package/dist/formatter/element-formatters/json.js.map +1 -0
  59. package/dist/formatter/element-formatters/material.d.ts +11 -0
  60. package/dist/formatter/element-formatters/material.d.ts.map +1 -0
  61. package/dist/formatter/element-formatters/material.js +35 -0
  62. package/dist/formatter/element-formatters/material.js.map +1 -0
  63. package/dist/formatter/element-formatters/message.d.ts +13 -0
  64. package/dist/formatter/element-formatters/message.d.ts.map +1 -0
  65. package/dist/formatter/element-formatters/message.js +35 -0
  66. package/dist/formatter/element-formatters/message.js.map +1 -0
  67. package/dist/formatter/element-formatters/registry.d.ts +29 -0
  68. package/dist/formatter/element-formatters/registry.d.ts.map +1 -0
  69. package/dist/formatter/element-formatters/registry.js +82 -0
  70. package/dist/formatter/element-formatters/registry.js.map +1 -0
  71. package/dist/formatter/element-formatters/section.d.ts +18 -0
  72. package/dist/formatter/element-formatters/section.d.ts.map +1 -0
  73. package/dist/formatter/element-formatters/section.js +46 -0
  74. package/dist/formatter/element-formatters/section.js.map +1 -0
  75. package/dist/formatter/element-formatters/string-pattern.d.ts +22 -0
  76. package/dist/formatter/element-formatters/string-pattern.d.ts.map +1 -0
  77. package/dist/formatter/element-formatters/string-pattern.js +124 -0
  78. package/dist/formatter/element-formatters/string-pattern.js.map +1 -0
  79. package/dist/formatter/element-formatters/text.d.ts +11 -0
  80. package/dist/formatter/element-formatters/text.d.ts.map +1 -0
  81. package/dist/formatter/element-formatters/text.js +11 -0
  82. package/dist/formatter/element-formatters/text.js.map +1 -0
  83. package/dist/formatter/formatter.d.ts +24 -0
  84. package/dist/formatter/formatter.d.ts.map +1 -0
  85. package/dist/formatter/formatter.js +252 -0
  86. package/dist/formatter/formatter.js.map +1 -0
  87. package/dist/formatter/types.d.ts +91 -0
  88. package/dist/formatter/types.d.ts.map +1 -0
  89. package/dist/formatter/types.js +2 -0
  90. package/dist/formatter/types.js.map +1 -0
  91. package/dist/google-genai/google-genai-driver.d.ts +67 -0
  92. package/dist/google-genai/google-genai-driver.d.ts.map +1 -0
  93. package/dist/google-genai/google-genai-driver.js +351 -0
  94. package/dist/google-genai/google-genai-driver.js.map +1 -0
  95. package/dist/index.d.ts +17 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +23 -0
  98. package/dist/index.js.map +1 -0
  99. package/dist/mlx-ml/mlx-driver.d.ts +65 -0
  100. package/dist/mlx-ml/mlx-driver.d.ts.map +1 -0
  101. package/dist/mlx-ml/mlx-driver.js +235 -0
  102. package/dist/mlx-ml/mlx-driver.js.map +1 -0
  103. package/dist/mlx-ml/model-spec/index.d.ts +7 -0
  104. package/dist/mlx-ml/model-spec/index.d.ts.map +1 -0
  105. package/dist/mlx-ml/model-spec/index.js +7 -0
  106. package/dist/mlx-ml/model-spec/index.js.map +1 -0
  107. package/dist/mlx-ml/model-spec/types.d.ts +30 -0
  108. package/dist/mlx-ml/model-spec/types.d.ts.map +1 -0
  109. package/dist/mlx-ml/model-spec/types.js +7 -0
  110. package/dist/mlx-ml/model-spec/types.js.map +1 -0
  111. package/dist/mlx-ml/process/index.d.ts +33 -0
  112. package/dist/mlx-ml/process/index.d.ts.map +1 -0
  113. package/dist/mlx-ml/process/index.js +65 -0
  114. package/dist/mlx-ml/process/index.js.map +1 -0
  115. package/dist/mlx-ml/process/model-handlers.d.ts +58 -0
  116. package/dist/mlx-ml/process/model-handlers.d.ts.map +1 -0
  117. package/dist/mlx-ml/process/model-handlers.js +197 -0
  118. package/dist/mlx-ml/process/model-handlers.js.map +1 -0
  119. package/dist/mlx-ml/process/model-specific.d.ts +35 -0
  120. package/dist/mlx-ml/process/model-specific.d.ts.map +1 -0
  121. package/dist/mlx-ml/process/model-specific.js +35 -0
  122. package/dist/mlx-ml/process/model-specific.js.map +1 -0
  123. package/dist/mlx-ml/process/parameter-mapper.d.ts +17 -0
  124. package/dist/mlx-ml/process/parameter-mapper.d.ts.map +1 -0
  125. package/dist/mlx-ml/process/parameter-mapper.js +91 -0
  126. package/dist/mlx-ml/process/parameter-mapper.js.map +1 -0
  127. package/dist/mlx-ml/process/parameter-validator.d.ts +55 -0
  128. package/dist/mlx-ml/process/parameter-validator.d.ts.map +1 -0
  129. package/dist/mlx-ml/process/parameter-validator.js +203 -0
  130. package/dist/mlx-ml/process/parameter-validator.js.map +1 -0
  131. package/dist/mlx-ml/process/process-communication.d.ts +25 -0
  132. package/dist/mlx-ml/process/process-communication.d.ts.map +1 -0
  133. package/dist/mlx-ml/process/process-communication.js +117 -0
  134. package/dist/mlx-ml/process/process-communication.js.map +1 -0
  135. package/dist/mlx-ml/process/queue.d.ts +30 -0
  136. package/dist/mlx-ml/process/queue.d.ts.map +1 -0
  137. package/dist/mlx-ml/process/queue.js +147 -0
  138. package/dist/mlx-ml/process/queue.js.map +1 -0
  139. package/dist/mlx-ml/process/types.d.ts +97 -0
  140. package/dist/mlx-ml/process/types.d.ts.map +1 -0
  141. package/dist/mlx-ml/process/types.js +2 -0
  142. package/dist/mlx-ml/process/types.js.map +1 -0
  143. package/dist/mlx-ml/types.d.ts +66 -0
  144. package/dist/mlx-ml/types.d.ts.map +1 -0
  145. package/dist/mlx-ml/types.js +7 -0
  146. package/dist/mlx-ml/types.js.map +1 -0
  147. package/dist/ollama/ollama-driver.d.ts +15 -0
  148. package/dist/ollama/ollama-driver.d.ts.map +1 -0
  149. package/dist/ollama/ollama-driver.js +15 -0
  150. package/dist/ollama/ollama-driver.js.map +1 -0
  151. package/dist/openai/openai-driver.d.ts +71 -0
  152. package/dist/openai/openai-driver.d.ts.map +1 -0
  153. package/dist/openai/openai-driver.js +230 -0
  154. package/dist/openai/openai-driver.js.map +1 -0
  155. package/dist/test-driver.d.ts +78 -0
  156. package/dist/test-driver.d.ts.map +1 -0
  157. package/dist/test-driver.js +193 -0
  158. package/dist/test-driver.js.map +1 -0
  159. package/dist/types.d.ts +90 -0
  160. package/dist/types.d.ts.map +1 -0
  161. package/dist/types.js +2 -0
  162. package/dist/types.js.map +1 -0
  163. package/dist/vertexai/vertexai-driver.d.ts +63 -0
  164. package/dist/vertexai/vertexai-driver.d.ts.map +1 -0
  165. package/dist/vertexai/vertexai-driver.js +335 -0
  166. package/dist/vertexai/vertexai-driver.js.map +1 -0
  167. package/package.json +61 -0
  168. package/scripts/download-model.js +40 -0
  169. package/scripts/setup-mlx.js +53 -0
  170. package/src/mlx-ml/python/.python-version +1 -0
  171. package/src/mlx-ml/python/__main__.py +312 -0
  172. package/src/mlx-ml/python/chat_template_constraints.py +164 -0
  173. package/src/mlx-ml/python/pyproject.toml +19 -0
  174. package/src/mlx-ml/python/token_utils.py +262 -0
  175. package/src/mlx-ml/python/uv.lock +1029 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk.js","sourceRoot":"","sources":["../../../src/formatter/element-formatters/chunk.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,OAAO,qBAAsB,SAAQ,oBAAkC;IAClE,WAAW,GAAG,OAAgB,CAAC;IAExC,KAAK,CAAC,MAAM,CACV,OAAqB,EACrB,cAAgE;QAEhE,qBAAqB;QACrB,OAAO,UAAU,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,OAAO,OAAO,CAAC,MAAM,MAAM,OAAO,CAAC,OAAO,IAAI,CAAC;IAChG,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Element Formatters
3
+ *
4
+ * Element型ごとのフォーマッター実装
5
+ */
6
+ export { ElementFormatter, BaseElementFormatter } from './base.js';
7
+ export { ElementFormatterRegistry } from './registry.js';
8
+ export { TextElementFormatter } from './text.js';
9
+ export { MessageElementFormatter } from './message.js';
10
+ export { MaterialElementFormatter } from './material.js';
11
+ export { ChunkElementFormatter } from './chunk.js';
12
+ export { JSONElementFormatter } from './json.js';
13
+ export { SectionElementFormatter, SubSectionElementFormatter } from './section.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/formatter/element-formatters/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAGzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Element Formatters
3
+ *
4
+ * Element型ごとのフォーマッター実装
5
+ */
6
+ export { BaseElementFormatter } from './base.js';
7
+ export { ElementFormatterRegistry } from './registry.js';
8
+ // 個別フォーマッター
9
+ export { TextElementFormatter } from './text.js';
10
+ export { MessageElementFormatter } from './message.js';
11
+ export { MaterialElementFormatter } from './material.js';
12
+ export { ChunkElementFormatter } from './chunk.js';
13
+ export { JSONElementFormatter } from './json.js';
14
+ export { SectionElementFormatter, SubSectionElementFormatter } from './section.js';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/formatter/element-formatters/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAoB,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEzD,YAAY;AACZ,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * JSONElement Formatter
3
+ */
4
+ import type { JSONElement } from '@modular-prompt/core';
5
+ import type { SpecialToken, SpecialTokenPair } from '../types.js';
6
+ import { BaseElementFormatter } from './base.js';
7
+ export declare class JSONElementFormatter extends BaseElementFormatter<JSONElement> {
8
+ readonly elementType: "json";
9
+ format(element: JSONElement, specialTokens?: Record<string, SpecialToken | SpecialTokenPair>): Promise<string>;
10
+ }
11
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../src/formatter/element-formatters/json.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjD,qBAAa,oBAAqB,SAAQ,oBAAoB,CAAC,WAAW,CAAC;IACzE,QAAQ,CAAC,WAAW,EAAG,MAAM,CAAU;IAEjC,MAAM,CACV,OAAO,EAAE,WAAW,EACpB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAAC,GAC9D,OAAO,CAAC,MAAM,CAAC;CAuBnB"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * JSONElement Formatter
3
+ */
4
+ import { BaseElementFormatter } from './base.js';
5
+ export class JSONElementFormatter extends BaseElementFormatter {
6
+ elementType = 'json';
7
+ async format(element, specialTokens) {
8
+ // JSONスキーマ要素は構造化データとして明確にマーク
9
+ const jsonContent = typeof element.content === 'string'
10
+ ? element.content
11
+ : JSON.stringify(element.content, null, 2);
12
+ // コードブロックトークンを使用
13
+ const codeBlockStart = this.getSingleToken(specialTokens, 'code_block_start') || '```';
14
+ const codeBlockEnd = this.getSingleToken(specialTokens, 'code_block_end') || '```';
15
+ if (codeBlockStart && codeBlockEnd) {
16
+ return `JSON Schema:\n${codeBlockStart}json\n${jsonContent}\n${codeBlockEnd}\n`;
17
+ }
18
+ // 代替:codeトークンを使用
19
+ const codeToken = this.getToken(specialTokens, 'code');
20
+ if (codeToken) {
21
+ return `JSON Schema:\n${codeToken.start}\n${jsonContent}\n${codeToken.end}\n`;
22
+ }
23
+ // デフォルト
24
+ return `JSON Schema:\n\`\`\`json\n${jsonContent}\n\`\`\`\n`;
25
+ }
26
+ }
27
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/formatter/element-formatters/json.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,OAAO,oBAAqB,SAAQ,oBAAiC;IAChE,WAAW,GAAG,MAAe,CAAC;IAEvC,KAAK,CAAC,MAAM,CACV,OAAoB,EACpB,aAA+D;QAE/D,6BAA6B;QAC7B,MAAM,WAAW,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;YACrD,CAAC,CAAC,OAAO,CAAC,OAAO;YACjB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE7C,iBAAiB;QACjB,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,kBAAkB,CAAC,IAAI,KAAK,CAAC;QACvF,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,gBAAgB,CAAC,IAAI,KAAK,CAAC;QAEnF,IAAI,cAAc,IAAI,YAAY,EAAE,CAAC;YACnC,OAAO,iBAAiB,cAAc,SAAS,WAAW,KAAK,YAAY,IAAI,CAAC;QAClF,CAAC;QAED,iBAAiB;QACjB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,iBAAiB,SAAS,CAAC,KAAK,KAAK,WAAW,KAAK,SAAS,CAAC,GAAG,IAAI,CAAC;QAChF,CAAC;QAED,QAAQ;QACR,OAAO,6BAA6B,WAAW,YAAY,CAAC;IAC9D,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * MaterialElement Formatter
3
+ */
4
+ import type { MaterialElement } from '@modular-prompt/core';
5
+ import type { SpecialToken, SpecialTokenPair } from '../types.js';
6
+ import { BaseElementFormatter } from './base.js';
7
+ export declare class MaterialElementFormatter extends BaseElementFormatter<MaterialElement> {
8
+ readonly elementType: "material";
9
+ format(element: MaterialElement, specialTokens?: Record<string, SpecialToken | SpecialTokenPair>): Promise<string>;
10
+ }
11
+ //# sourceMappingURL=material.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"material.d.ts","sourceRoot":"","sources":["../../../src/formatter/element-formatters/material.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjD,qBAAa,wBAAyB,SAAQ,oBAAoB,CAAC,eAAe,CAAC;IACjF,QAAQ,CAAC,WAAW,EAAG,UAAU,CAAU;IAErC,MAAM,CACV,OAAO,EAAE,eAAe,EACxB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAAC,GAC9D,OAAO,CAAC,MAAM,CAAC;CAgCnB"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * MaterialElement Formatter
3
+ */
4
+ import { BaseElementFormatter } from './base.js';
5
+ export class MaterialElementFormatter extends BaseElementFormatter {
6
+ elementType = 'material';
7
+ async format(element, specialTokens) {
8
+ // materialは主に引用・参照文書として扱う
9
+ // 優先順位: quote > ref > citation > context
10
+ const quoteToken = this.getToken(specialTokens, 'quote');
11
+ if (quoteToken) {
12
+ return `${quoteToken.start}${element.title}\n${element.content}${quoteToken.end}\n`;
13
+ }
14
+ const refToken = this.getToken(specialTokens, 'ref');
15
+ if (refToken) {
16
+ return `${refToken.start}${element.title}\n${element.content}${refToken.end}\n`;
17
+ }
18
+ const citationToken = this.getToken(specialTokens, 'citation');
19
+ if (citationToken) {
20
+ return `${citationToken.start}${element.title}\n${element.content}${citationToken.end}\n`;
21
+ }
22
+ const contextToken = this.getToken(specialTokens, 'context');
23
+ if (contextToken) {
24
+ return `${contextToken.start}Material: ${element.title}\n${element.content}${contextToken.end}\n`;
25
+ }
26
+ // デフォルト(マークダウン引用形式)
27
+ const contentStr = typeof element.content === 'string'
28
+ ? element.content
29
+ : JSON.stringify(element.content);
30
+ const lines = contentStr.split('\n');
31
+ const quotedContent = lines.map((line) => `> ${line}`).join('\n');
32
+ return `### ${element.title}\n\n${quotedContent}\n`;
33
+ }
34
+ }
35
+ //# sourceMappingURL=material.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"material.js","sourceRoot":"","sources":["../../../src/formatter/element-formatters/material.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,OAAO,wBAAyB,SAAQ,oBAAqC;IACxE,WAAW,GAAG,UAAmB,CAAC;IAE3C,KAAK,CAAC,MAAM,CACV,OAAwB,EACxB,aAA+D;QAE/D,0BAA0B;QAE1B,yCAAyC;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,GAAG,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC;QACtF,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,GAAG,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;QAClF,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAC/D,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,GAAG,aAAa,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,GAAG,IAAI,CAAC;QAC5F,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,GAAG,YAAY,CAAC,KAAK,aAAa,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC;QACpG,CAAC;QAED,oBAAoB;QACpB,MAAM,UAAU,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;YACpD,CAAC,CAAC,OAAO,CAAC,OAAO;YACjB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1E,OAAO,OAAO,OAAO,CAAC,KAAK,OAAO,aAAa,IAAI,CAAC;IACtD,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * MessageElement Formatter
3
+ */
4
+ import type { MessageElement } from '@modular-prompt/core';
5
+ import type { SpecialToken, SpecialTokenPair } from '../types.js';
6
+ import { BaseElementFormatter } from './base.js';
7
+ export declare class MessageElementFormatter extends BaseElementFormatter<MessageElement> {
8
+ private modelName;
9
+ readonly elementType: "message";
10
+ constructor(modelName: string);
11
+ format(element: MessageElement, specialTokens?: Record<string, SpecialToken | SpecialTokenPair>): Promise<string>;
12
+ }
13
+ //# sourceMappingURL=message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/formatter/element-formatters/message.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjD,qBAAa,uBAAwB,SAAQ,oBAAoB,CAAC,cAAc,CAAC;IAGnE,OAAO,CAAC,SAAS;IAF7B,QAAQ,CAAC,WAAW,EAAG,SAAS,CAAU;gBAEtB,SAAS,EAAE,MAAM;IAI/B,MAAM,CACV,OAAO,EAAE,cAAc,EACvB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAAC,GAC9D,OAAO,CAAC,MAAM,CAAC;CAwBnB"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * MessageElement Formatter
3
+ */
4
+ import { BaseElementFormatter } from './base.js';
5
+ export class MessageElementFormatter extends BaseElementFormatter {
6
+ modelName;
7
+ elementType = 'message';
8
+ constructor(modelName) {
9
+ super();
10
+ this.modelName = modelName;
11
+ }
12
+ async format(element, specialTokens) {
13
+ // 特殊トークンが利用可能な場合は使用
14
+ if (specialTokens) {
15
+ const roleTokens = this.getToken(specialTokens, element.role);
16
+ if (roleTokens) {
17
+ return `${roleTokens.start}${element.content}${roleTokens.end}\n`;
18
+ }
19
+ }
20
+ // モデル固有のフォールバック処理
21
+ if (this.modelName.includes('gemma-3')) {
22
+ const roleMap = {
23
+ system: 'user', // Gemma-3はsystemロールをサポートしない
24
+ user: 'user',
25
+ assistant: 'model'
26
+ };
27
+ const role = roleMap[element.role] || 'user';
28
+ // Gemma-3のデフォルトトークン
29
+ return `<start_of_turn>${role}\n${element.content}<end_of_turn>\n`;
30
+ }
31
+ // デフォルトは通常のテキスト形式
32
+ return `[${element.role.toUpperCase()}]\n${element.content}\n`;
33
+ }
34
+ }
35
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/formatter/element-formatters/message.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,OAAO,uBAAwB,SAAQ,oBAAoC;IAG3D;IAFX,WAAW,GAAG,SAAkB,CAAC;IAE1C,YAAoB,SAAiB;QACnC,KAAK,EAAE,CAAC;QADU,cAAS,GAAT,SAAS,CAAQ;IAErC,CAAC;IAED,KAAK,CAAC,MAAM,CACV,OAAuB,EACvB,aAA+D;QAE/D,oBAAoB;QACpB,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9D,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,GAAG,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC;YACpE,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG;gBACd,MAAM,EAAE,MAAM,EAAG,4BAA4B;gBAC7C,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,OAAO;aACnB,CAAC;YACF,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAA4B,CAAC,IAAI,MAAM,CAAC;YACrE,oBAAoB;YACpB,OAAO,kBAAkB,IAAI,KAAK,OAAO,CAAC,OAAO,iBAAiB,CAAC;QACrE,CAAC;QAED,kBAAkB;QAClB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,IAAI,CAAC;IACjE,CAAC;CACF"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Element Formatter Registry
3
+ *
4
+ * Element型ごとのフォーマッターを管理
5
+ */
6
+ import type { Element } from '@modular-prompt/core';
7
+ import type { SpecialToken, SpecialTokenPair } from '../types.js';
8
+ import type { ElementFormatter } from './base.js';
9
+ export declare class ElementFormatterRegistry {
10
+ private formatters;
11
+ constructor(modelName: string);
12
+ /**
13
+ * フォーマッターを登録
14
+ */
15
+ register(formatter: ElementFormatter): void;
16
+ /**
17
+ * 指定された型のフォーマッターを取得
18
+ */
19
+ getFormatter(type: string): ElementFormatter | undefined;
20
+ /**
21
+ * Elementをフォーマット
22
+ */
23
+ formatElement(element: Element, specialTokens?: Record<string, SpecialToken | SpecialTokenPair>): Promise<string>;
24
+ /**
25
+ * Output要素を特別にフォーマット(schemaがある場合)
26
+ */
27
+ formatOutputElement(element: Element, specialTokens: Record<string, SpecialToken | SpecialTokenPair> | undefined, hasOutputSchema: boolean): Promise<string>;
28
+ }
29
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/formatter/element-formatters/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AASlD,qBAAa,wBAAwB;IACnC,OAAO,CAAC,UAAU,CAA4C;gBAElD,SAAS,EAAE,MAAM;IAY7B;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;IAI3C;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIxD;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,OAAO,EAChB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAAC,GAC9D,OAAO,CAAC,MAAM,CAAC;IAYlB;;OAEG;IACG,mBAAmB,CACvB,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAAC,GAAG,SAAS,EAC1E,eAAe,EAAE,OAAO,GACvB,OAAO,CAAC,MAAM,CAAC;CAiCnB"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Element Formatter Registry
3
+ *
4
+ * Element型ごとのフォーマッターを管理
5
+ */
6
+ import { TextElementFormatter } from './text.js';
7
+ import { MessageElementFormatter } from './message.js';
8
+ import { MaterialElementFormatter } from './material.js';
9
+ import { ChunkElementFormatter } from './chunk.js';
10
+ import { JSONElementFormatter } from './json.js';
11
+ import { SectionElementFormatter, SubSectionElementFormatter } from './section.js';
12
+ export class ElementFormatterRegistry {
13
+ formatters = new Map();
14
+ constructor(modelName) {
15
+ // 各フォーマッターを登録
16
+ this.register(new TextElementFormatter());
17
+ this.register(new MessageElementFormatter(modelName));
18
+ this.register(new MaterialElementFormatter());
19
+ this.register(new ChunkElementFormatter());
20
+ this.register(new JSONElementFormatter());
21
+ this.register(new SubSectionElementFormatter());
22
+ // SectionElementFormatterは自己参照のため最後に登録
23
+ this.register(new SectionElementFormatter(this));
24
+ }
25
+ /**
26
+ * フォーマッターを登録
27
+ */
28
+ register(formatter) {
29
+ this.formatters.set(formatter.elementType, formatter);
30
+ }
31
+ /**
32
+ * 指定された型のフォーマッターを取得
33
+ */
34
+ getFormatter(type) {
35
+ return this.formatters.get(type);
36
+ }
37
+ /**
38
+ * Elementをフォーマット
39
+ */
40
+ async formatElement(element, specialTokens) {
41
+ const formatter = this.getFormatter(element.type);
42
+ if (!formatter) {
43
+ // 未知の要素はJSON文字列として扱う
44
+ console.warn(`No formatter found for element type: ${element.type}`);
45
+ return JSON.stringify(element);
46
+ }
47
+ return formatter.format(element, specialTokens);
48
+ }
49
+ /**
50
+ * Output要素を特別にフォーマット(schemaがある場合)
51
+ */
52
+ async formatOutputElement(element, specialTokens, hasOutputSchema) {
53
+ // schema情報がある場合はJSONブロックとしてマーク
54
+ if (hasOutputSchema && element.type === 'text') {
55
+ // コードブロックトークンを使用(JSONは構造化データ)
56
+ let codeBlockStart = '```';
57
+ let codeBlockEnd = '```';
58
+ if (specialTokens?.['code_block_start']) {
59
+ const token = specialTokens['code_block_start'];
60
+ if (typeof token === 'object' && 'text' in token) {
61
+ codeBlockStart = token.text || '```';
62
+ }
63
+ }
64
+ if (specialTokens?.['code_block_end']) {
65
+ const token = specialTokens['code_block_end'];
66
+ if (typeof token === 'object' && 'text' in token) {
67
+ codeBlockEnd = token.text || '```';
68
+ }
69
+ }
70
+ if (codeBlockStart && codeBlockEnd) {
71
+ return `Output Format (JSON):\n${codeBlockStart}json\n${element.content}\n${codeBlockEnd}`;
72
+ }
73
+ // 代替:コードトークンを使用
74
+ const codeToken = specialTokens?.['code'];
75
+ if (codeToken && typeof codeToken === 'object' && 'start' in codeToken && 'end' in codeToken) {
76
+ return `Output Format (JSON):\n${codeToken.start.text}\n${element.content}\n${codeToken.end.text}`;
77
+ }
78
+ }
79
+ return this.formatElement(element, specialTokens);
80
+ }
81
+ }
82
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/formatter/element-formatters/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * SectionElement and SubSectionElement Formatters
3
+ */
4
+ import type { SectionElement, SubSectionElement } from '@modular-prompt/core';
5
+ import type { SpecialToken, SpecialTokenPair } from '../types.js';
6
+ import { BaseElementFormatter } from './base.js';
7
+ import type { ElementFormatterRegistry } from './registry.js';
8
+ export declare class SectionElementFormatter extends BaseElementFormatter<SectionElement> {
9
+ private registry;
10
+ readonly elementType: "section";
11
+ constructor(registry: ElementFormatterRegistry);
12
+ format(element: SectionElement, specialTokens?: Record<string, SpecialToken | SpecialTokenPair>): Promise<string>;
13
+ }
14
+ export declare class SubSectionElementFormatter extends BaseElementFormatter<SubSectionElement> {
15
+ readonly elementType: "subsection";
16
+ format(element: SubSectionElement, _specialTokens?: Record<string, SpecialToken | SpecialTokenPair>): Promise<string>;
17
+ }
18
+ //# sourceMappingURL=section.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"section.d.ts","sourceRoot":"","sources":["../../../src/formatter/element-formatters/section.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAG9D,qBAAa,uBAAwB,SAAQ,oBAAoB,CAAC,cAAc,CAAC;IAGnE,OAAO,CAAC,QAAQ;IAF5B,QAAQ,CAAC,WAAW,EAAG,SAAS,CAAU;gBAEtB,QAAQ,EAAE,wBAAwB;IAIhD,MAAM,CACV,OAAO,EAAE,cAAc,EACvB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAAC,GAC9D,OAAO,CAAC,MAAM,CAAC;CA4BnB;AAED,qBAAa,0BAA2B,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IACrF,QAAQ,CAAC,WAAW,EAAG,YAAY,CAAU;IAEvC,MAAM,CACV,OAAO,EAAE,iBAAiB,EAC1B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAAC,GAC/D,OAAO,CAAC,MAAM,CAAC;CAInB"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * SectionElement and SubSectionElement Formatters
3
+ */
4
+ import { BaseElementFormatter } from './base.js';
5
+ import { StringPatternFormatter } from './string-pattern.js';
6
+ export class SectionElementFormatter extends BaseElementFormatter {
7
+ registry;
8
+ elementType = 'section';
9
+ constructor(registry) {
10
+ super();
11
+ this.registry = registry;
12
+ }
13
+ async format(element, specialTokens) {
14
+ // 文字列パターンフォーマッターを作成
15
+ const patternFormatter = new StringPatternFormatter(specialTokens);
16
+ const sectionItems = await Promise.all(element.items.map(async (item) => {
17
+ if (typeof item === 'string') {
18
+ // compileが生成した文字列化されたElement表現に特殊トークンを適用
19
+ return patternFormatter.format(item);
20
+ }
21
+ else if ('type' in item && item.type === 'subsection') {
22
+ const formatter = this.registry.getFormatter('subsection');
23
+ return formatter ? await formatter.format(item, specialTokens) : '';
24
+ }
25
+ else {
26
+ // DynamicContentは既にコンパイル時に解決されているはず
27
+ return '';
28
+ }
29
+ }));
30
+ const sectionContent = sectionItems.join('\n');
31
+ // headingトークンが利用可能な場合
32
+ const headingToken = this.getToken(specialTokens, 'heading');
33
+ if (headingToken) {
34
+ return `${headingToken.start}${element.title}${headingToken.end}\n${sectionContent}\n`;
35
+ }
36
+ return `=== ${element.title} ===\n${sectionContent}\n`;
37
+ }
38
+ }
39
+ export class SubSectionElementFormatter extends BaseElementFormatter {
40
+ elementType = 'subsection';
41
+ async format(element, _specialTokens) {
42
+ const subsectionContent = element.items.join('\n');
43
+ return `--- ${element.title} ---\n${subsectionContent}\n`;
44
+ }
45
+ }
46
+ //# sourceMappingURL=section.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"section.js","sourceRoot":"","sources":["../../../src/formatter/element-formatters/section.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,OAAO,uBAAwB,SAAQ,oBAAoC;IAG3D;IAFX,WAAW,GAAG,SAAkB,CAAC;IAE1C,YAAoB,QAAkC;QACpD,KAAK,EAAE,CAAC;QADU,aAAQ,GAAR,QAAQ,CAA0B;IAEtD,CAAC;IAED,KAAK,CAAC,MAAM,CACV,OAAuB,EACvB,aAA+D;QAE/D,oBAAoB;QACpB,MAAM,gBAAgB,GAAG,IAAI,sBAAsB,CAAC,aAAa,CAAC,CAAC;QAEnE,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;YAC7B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,yCAAyC;gBACzC,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;iBAAM,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACxD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;gBAC3D,OAAO,SAAS,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,oCAAoC;gBACpC,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QACF,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/C,sBAAsB;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,GAAG,YAAY,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,KAAK,cAAc,IAAI,CAAC;QACzF,CAAC;QAED,OAAO,OAAO,OAAO,CAAC,KAAK,SAAS,cAAc,IAAI,CAAC;IACzD,CAAC;CACF;AAED,MAAM,OAAO,0BAA2B,SAAQ,oBAAuC;IAC5E,WAAW,GAAG,YAAqB,CAAC;IAE7C,KAAK,CAAC,MAAM,CACV,OAA0B,EAC1B,cAAgE;QAEhE,MAAM,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,OAAO,OAAO,OAAO,CAAC,KAAK,SAAS,iBAAiB,IAAI,CAAC;IAC5D,CAAC;CACF"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * 文字列パターンから特殊トークンを適用するフォーマッター
3
+ *
4
+ * compileが生成した文字列化されたElement表現を認識し、
5
+ * 適切な特殊トークンでラップする
6
+ */
7
+ import type { SpecialToken, SpecialTokenPair } from '../types.js';
8
+ export declare class StringPatternFormatter {
9
+ private specialTokens?;
10
+ constructor(specialTokens?: Record<string, SpecialToken | SpecialTokenPair> | undefined);
11
+ /**
12
+ * 文字列化されたElementパターンを認識して特殊トークンを適用
13
+ */
14
+ format(content: string): string;
15
+ private applyJsonTokens;
16
+ private applyMaterialTokens;
17
+ private applyChunkTokens;
18
+ private applyMessageTokens;
19
+ private getToken;
20
+ private getTokenPair;
21
+ }
22
+ //# sourceMappingURL=string-pattern.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-pattern.d.ts","sourceRoot":"","sources":["../../../src/formatter/element-formatters/string-pattern.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAElE,qBAAa,sBAAsB;IACrB,OAAO,CAAC,aAAa,CAAC;gBAAd,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAAC,YAAA;IAEnF;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IA4B/B,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,YAAY;CAWrB"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * 文字列パターンから特殊トークンを適用するフォーマッター
3
+ *
4
+ * compileが生成した文字列化されたElement表現を認識し、
5
+ * 適切な特殊トークンでラップする
6
+ */
7
+ export class StringPatternFormatter {
8
+ specialTokens;
9
+ constructor(specialTokens) {
10
+ this.specialTokens = specialTokens;
11
+ }
12
+ /**
13
+ * 文字列化されたElementパターンを認識して特殊トークンを適用
14
+ */
15
+ format(content) {
16
+ if (!this.specialTokens) {
17
+ return content;
18
+ }
19
+ let result = content;
20
+ // JSONブロックパターン: ```json ... ```
21
+ if (result.includes('```json')) {
22
+ result = this.applyJsonTokens(result);
23
+ }
24
+ // Materialパターン: [Material: Title]
25
+ if (result.includes('[Material:')) {
26
+ result = this.applyMaterialTokens(result);
27
+ }
28
+ // Chunkパターン: [Chunk from ...]
29
+ if (result.includes('[Chunk from')) {
30
+ result = this.applyChunkTokens(result);
31
+ }
32
+ // Messageパターン: [Role]: content
33
+ result = this.applyMessageTokens(result);
34
+ return result;
35
+ }
36
+ applyJsonTokens(content) {
37
+ // コードブロックトークンが利用可能な場合
38
+ const codeBlockStart = this.getToken('code_block_start');
39
+ const codeBlockEnd = this.getToken('code_block_end');
40
+ if (codeBlockStart && codeBlockEnd) {
41
+ // ```json を特殊トークンに置換
42
+ return content.replace(/```json/g, `${codeBlockStart}json`)
43
+ .replace(/```/g, codeBlockEnd);
44
+ }
45
+ return content;
46
+ }
47
+ applyMaterialTokens(content) {
48
+ // 引用トークンが利用可能な場合
49
+ const quoteToken = this.getTokenPair('quote');
50
+ if (quoteToken) {
51
+ // [Material: Title]\nContent パターンを検出
52
+ const pattern = /\[Material: ([^\]]+)\]\n([\s\S]*?)(?=\n\[|$)/g;
53
+ return content.replace(pattern, (_, title, materialContent) => {
54
+ return `${quoteToken.start}${title}\n${materialContent}${quoteToken.end}`;
55
+ });
56
+ }
57
+ // 参照トークンが利用可能な場合
58
+ const refToken = this.getTokenPair('ref');
59
+ if (refToken) {
60
+ const pattern = /\[Material: ([^\]]+)\]\n([\s\S]*?)(?=\n\[|$)/g;
61
+ return content.replace(pattern, (_, title, materialContent) => {
62
+ return `${refToken.start}${title}\n${materialContent}${refToken.end}`;
63
+ });
64
+ }
65
+ return content;
66
+ }
67
+ applyChunkTokens(content) {
68
+ // contextトークンが利用可能な場合
69
+ const contextToken = this.getTokenPair('context');
70
+ if (contextToken) {
71
+ const pattern = /\[Chunk from ([^\]]+)\]\n([\s\S]*?)(?=\n\[|$)/g;
72
+ return content.replace(pattern, (_, partOf, chunkContent) => {
73
+ return `${contextToken.start}Chunk from ${partOf}\n${chunkContent}${contextToken.end}`;
74
+ });
75
+ }
76
+ return content;
77
+ }
78
+ applyMessageTokens(content) {
79
+ // [System]: content パターン
80
+ const systemToken = this.getTokenPair('system');
81
+ if (systemToken) {
82
+ content = content.replace(/\[System\]: (.*)/g, (_, msg) => {
83
+ return `${systemToken.start}${msg}${systemToken.end}`;
84
+ });
85
+ }
86
+ // [User]: content パターン
87
+ const userToken = this.getTokenPair('user');
88
+ if (userToken) {
89
+ content = content.replace(/\[User\]: (.*)/g, (_, msg) => {
90
+ return `${userToken.start}${msg}${userToken.end}`;
91
+ });
92
+ }
93
+ // [Assistant]: content パターン
94
+ const assistantToken = this.getTokenPair('assistant');
95
+ if (assistantToken) {
96
+ content = content.replace(/\[Assistant\]: (.*)/g, (_, msg) => {
97
+ return `${assistantToken.start}${msg}${assistantToken.end}`;
98
+ });
99
+ }
100
+ return content;
101
+ }
102
+ getToken(name) {
103
+ if (!this.specialTokens)
104
+ return null;
105
+ const token = this.specialTokens[name];
106
+ if (token && typeof token === 'object' && 'text' in token) {
107
+ return token.text || null;
108
+ }
109
+ return null;
110
+ }
111
+ getTokenPair(name) {
112
+ if (!this.specialTokens)
113
+ return null;
114
+ const token = this.specialTokens[name];
115
+ if (token && typeof token === 'object' && 'start' in token && 'end' in token) {
116
+ return {
117
+ start: token.start.text || '',
118
+ end: token.end.text || ''
119
+ };
120
+ }
121
+ return null;
122
+ }
123
+ }
124
+ //# sourceMappingURL=string-pattern.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-pattern.js","sourceRoot":"","sources":["../../../src/formatter/element-formatters/string-pattern.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * TextElement Formatter
3
+ */
4
+ import type { TextElement } from '@modular-prompt/core';
5
+ import type { SpecialToken, SpecialTokenPair } from '../types.js';
6
+ import { BaseElementFormatter } from './base.js';
7
+ export declare class TextElementFormatter extends BaseElementFormatter<TextElement> {
8
+ readonly elementType: "text";
9
+ format(element: TextElement, _specialTokens?: Record<string, SpecialToken | SpecialTokenPair>): Promise<string>;
10
+ }
11
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/formatter/element-formatters/text.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjD,qBAAa,oBAAqB,SAAQ,oBAAoB,CAAC,WAAW,CAAC;IACzE,QAAQ,CAAC,WAAW,EAAG,MAAM,CAAU;IAEjC,MAAM,CACV,OAAO,EAAE,WAAW,EACpB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAAC,GAC/D,OAAO,CAAC,MAAM,CAAC;CAGnB"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * TextElement Formatter
3
+ */
4
+ import { BaseElementFormatter } from './base.js';
5
+ export class TextElementFormatter extends BaseElementFormatter {
6
+ elementType = 'text';
7
+ async format(element, _specialTokens) {
8
+ return element.content;
9
+ }
10
+ }
11
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/formatter/element-formatters/text.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,OAAO,oBAAqB,SAAQ,oBAAiC;IAChE,WAAW,GAAG,MAAe,CAAC;IAEvC,KAAK,CAAC,MAAM,CACV,OAAoB,EACpB,cAAgE;QAEhE,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ import type { Element } from '@modular-prompt/core';
2
+ import type { ElementFormatter, FormatterOptions, SpecialToken, SpecialTokenPair } from './types.js';
3
+ /**
4
+ * Default formatter implementation for converting elements to text
5
+ */
6
+ export declare class DefaultFormatter implements ElementFormatter {
7
+ private options;
8
+ private specialTokens?;
9
+ constructor(options?: FormatterOptions);
10
+ format(element: Element): string;
11
+ formatAll(elements: Element[]): string;
12
+ setSpecialTokens(tokens: Record<string, SpecialToken | SpecialTokenPair>): void;
13
+ private updateMarkersFromSpecialTokens;
14
+ private isTokenPair;
15
+ private formatText;
16
+ private formatMessage;
17
+ private formatMaterial;
18
+ private getSpecialToken;
19
+ private formatChunk;
20
+ private formatSection;
21
+ private formatJSONElement;
22
+ private formatSubSection;
23
+ }
24
+ //# sourceMappingURL=formatter.d.ts.map