@open-multi-agent/core 1.4.2 → 1.6.0

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 (131) hide show
  1. package/README.md +135 -79
  2. package/dist/agent/agent.d.ts.map +1 -1
  3. package/dist/agent/agent.js +5 -0
  4. package/dist/agent/agent.js.map +1 -1
  5. package/dist/agent/runner.d.ts +12 -0
  6. package/dist/agent/runner.d.ts.map +1 -1
  7. package/dist/agent/runner.js +48 -12
  8. package/dist/agent/runner.js.map +1 -1
  9. package/dist/cli/oma.d.ts +10 -2
  10. package/dist/cli/oma.d.ts.map +1 -1
  11. package/dist/cli/oma.js +12 -5
  12. package/dist/cli/oma.js.map +1 -1
  13. package/dist/dashboard/render-team-run-dashboard.d.ts.map +1 -1
  14. package/dist/dashboard/render-team-run-dashboard.js +177 -84
  15. package/dist/dashboard/render-team-run-dashboard.js.map +1 -1
  16. package/dist/errors.d.ts +10 -0
  17. package/dist/errors.d.ts.map +1 -1
  18. package/dist/errors.js +13 -0
  19. package/dist/errors.js.map +1 -1
  20. package/dist/index.d.ts +2 -2
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +1 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/llm/adapter.d.ts +5 -1
  25. package/dist/llm/adapter.d.ts.map +1 -1
  26. package/dist/llm/adapter.js +16 -0
  27. package/dist/llm/adapter.js.map +1 -1
  28. package/dist/llm/ai-sdk.d.ts +2 -1
  29. package/dist/llm/ai-sdk.d.ts.map +1 -1
  30. package/dist/llm/ai-sdk.js +48 -13
  31. package/dist/llm/ai-sdk.js.map +1 -1
  32. package/dist/llm/anthropic.d.ts.map +1 -1
  33. package/dist/llm/anthropic.js +27 -13
  34. package/dist/llm/anthropic.js.map +1 -1
  35. package/dist/llm/azure-openai.d.ts.map +1 -1
  36. package/dist/llm/azure-openai.js +5 -2
  37. package/dist/llm/azure-openai.js.map +1 -1
  38. package/dist/llm/bedrock.d.ts.map +1 -1
  39. package/dist/llm/bedrock.js +32 -19
  40. package/dist/llm/bedrock.js.map +1 -1
  41. package/dist/llm/copilot.d.ts.map +1 -1
  42. package/dist/llm/copilot.js +5 -2
  43. package/dist/llm/copilot.js.map +1 -1
  44. package/dist/llm/deepseek.d.ts +9 -2
  45. package/dist/llm/deepseek.d.ts.map +1 -1
  46. package/dist/llm/deepseek.js +21 -2
  47. package/dist/llm/deepseek.js.map +1 -1
  48. package/dist/llm/doubao.d.ts +21 -0
  49. package/dist/llm/doubao.d.ts.map +1 -0
  50. package/dist/llm/doubao.js +24 -0
  51. package/dist/llm/doubao.js.map +1 -0
  52. package/dist/llm/gemini.d.ts.map +1 -1
  53. package/dist/llm/gemini.js +35 -18
  54. package/dist/llm/gemini.js.map +1 -1
  55. package/dist/llm/hunyuan.d.ts +40 -0
  56. package/dist/llm/hunyuan.d.ts.map +1 -0
  57. package/dist/llm/hunyuan.js +59 -0
  58. package/dist/llm/hunyuan.js.map +1 -0
  59. package/dist/llm/mimo.d.ts +24 -0
  60. package/dist/llm/mimo.d.ts.map +1 -0
  61. package/dist/llm/mimo.js +30 -0
  62. package/dist/llm/mimo.js.map +1 -0
  63. package/dist/llm/openai-common.d.ts +10 -17
  64. package/dist/llm/openai-common.d.ts.map +1 -1
  65. package/dist/llm/openai-common.js +92 -43
  66. package/dist/llm/openai-common.js.map +1 -1
  67. package/dist/llm/openai.d.ts +22 -1
  68. package/dist/llm/openai.d.ts.map +1 -1
  69. package/dist/llm/openai.js +51 -7
  70. package/dist/llm/openai.js.map +1 -1
  71. package/dist/llm/reasoning-fallback.d.ts +80 -15
  72. package/dist/llm/reasoning-fallback.d.ts.map +1 -1
  73. package/dist/llm/reasoning-fallback.js +45 -12
  74. package/dist/llm/reasoning-fallback.js.map +1 -1
  75. package/dist/llm/validate.d.ts +26 -0
  76. package/dist/llm/validate.d.ts.map +1 -0
  77. package/dist/llm/validate.js +55 -0
  78. package/dist/llm/validate.js.map +1 -0
  79. package/dist/memory/shared.d.ts +14 -7
  80. package/dist/memory/shared.d.ts.map +1 -1
  81. package/dist/memory/shared.js +97 -14
  82. package/dist/memory/shared.js.map +1 -1
  83. package/dist/orchestrator/orchestrator.d.ts +22 -1
  84. package/dist/orchestrator/orchestrator.d.ts.map +1 -1
  85. package/dist/orchestrator/orchestrator.js +155 -32
  86. package/dist/orchestrator/orchestrator.js.map +1 -1
  87. package/dist/tool/built-in/bash.d.ts +1 -1
  88. package/dist/tool/built-in/bash.d.ts.map +1 -1
  89. package/dist/tool/built-in/bash.js +60 -7
  90. package/dist/tool/built-in/bash.js.map +1 -1
  91. package/dist/tool/built-in/file-edit.d.ts.map +1 -1
  92. package/dist/tool/built-in/file-edit.js +13 -8
  93. package/dist/tool/built-in/file-edit.js.map +1 -1
  94. package/dist/tool/built-in/file-read.d.ts.map +1 -1
  95. package/dist/tool/built-in/file-read.js +9 -4
  96. package/dist/tool/built-in/file-read.js.map +1 -1
  97. package/dist/tool/built-in/file-write.d.ts.map +1 -1
  98. package/dist/tool/built-in/file-write.js +11 -6
  99. package/dist/tool/built-in/file-write.js.map +1 -1
  100. package/dist/tool/built-in/fs-walk.d.ts.map +1 -1
  101. package/dist/tool/built-in/fs-walk.js +6 -3
  102. package/dist/tool/built-in/fs-walk.js.map +1 -1
  103. package/dist/tool/built-in/glob.d.ts.map +1 -1
  104. package/dist/tool/built-in/glob.js +10 -4
  105. package/dist/tool/built-in/glob.js.map +1 -1
  106. package/dist/tool/built-in/grep.d.ts.map +1 -1
  107. package/dist/tool/built-in/grep.js +15 -6
  108. package/dist/tool/built-in/grep.js.map +1 -1
  109. package/dist/tool/built-in/path-safety.d.ts +30 -0
  110. package/dist/tool/built-in/path-safety.d.ts.map +1 -0
  111. package/dist/tool/built-in/path-safety.js +106 -0
  112. package/dist/tool/built-in/path-safety.js.map +1 -0
  113. package/dist/tool/mcp.d.ts.map +1 -1
  114. package/dist/tool/mcp.js +58 -33
  115. package/dist/tool/mcp.js.map +1 -1
  116. package/dist/types.d.ts +151 -5
  117. package/dist/types.d.ts.map +1 -1
  118. package/dist/utils/redaction.d.ts +4 -0
  119. package/dist/utils/redaction.d.ts.map +1 -0
  120. package/dist/utils/redaction.js +78 -0
  121. package/dist/utils/redaction.js.map +1 -0
  122. package/package.json +7 -4
  123. package/docs/DECISIONS.md +0 -49
  124. package/docs/cli.md +0 -265
  125. package/docs/context-management.md +0 -64
  126. package/docs/featured-partner.md +0 -28
  127. package/docs/observability.md +0 -56
  128. package/docs/providers/minimax.md +0 -75
  129. package/docs/providers.md +0 -80
  130. package/docs/shared-memory.md +0 -27
  131. package/docs/tool-configuration.md +0 -152
@@ -2,6 +2,7 @@
2
2
  * Pure HTML renderer for the post-run team task DAG dashboard (no filesystem or network I/O).
3
3
  */
4
4
  import { layoutTasks } from './layout-tasks.js';
5
+ import { redactSensitiveObject } from '../utils/redaction.js';
5
6
  /**
6
7
  * Escape serialized JSON so it can be embedded in HTML without closing a {@code <script>} tag.
7
8
  * The HTML tokenizer ends a script on {@code </script>} even for {@code type="application/json"}.
@@ -26,106 +27,198 @@ export function renderTeamRunDashboard(result) {
26
27
  nodeH: layout.nodeH,
27
28
  },
28
29
  };
29
- const dataJson = escapeJsonForHtmlScript(JSON.stringify(payload));
30
+ const dataJson = escapeJsonForHtmlScript(JSON.stringify(redactSensitiveObject(payload)));
30
31
  return `<!DOCTYPE html>
31
32
  <html class="dark" lang="en">
32
33
  <head>
33
34
  <meta charset="utf-8" />
34
35
  <meta content="width=device-width, initial-scale=1.0" name="viewport" />
35
36
  <title>Open Multi Agent</title>
36
- <script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
37
- <link
38
- href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&amp;family=Inter:wght@400;500;600&amp;display=swap"
39
- rel="stylesheet" />
40
- <link
41
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap"
42
- rel="stylesheet" />
43
- <script id="tailwind-config">
44
- tailwind.config = {
45
- darkMode: "class",
46
- theme: {
47
- extend: {
48
- "colors": {
49
- "inverse-surface": "#faf8ff",
50
- "secondary-dim": "#ecb200",
51
- "on-primary": "#005762",
52
- "on-tertiary-fixed-variant": "#006827",
53
- "primary-fixed-dim": "#00d4ec",
54
- "tertiary-container": "#5cfd80",
55
- "secondary": "#fdc003",
56
- "primary-dim": "#00d4ec",
57
- "surface-container": "#0f1930",
58
- "on-secondary": "#553e00",
59
- "surface": "#060e20",
60
- "on-surface": "#dee5ff",
61
- "surface-container-highest": "#192540",
62
- "on-secondary-fixed-variant": "#674c00",
63
- "on-tertiary-container": "#005d22",
64
- "secondary-fixed-dim": "#f7ba00",
65
- "surface-variant": "#192540",
66
- "surface-container-low": "#091328",
67
- "secondary-container": "#785900",
68
- "tertiary-fixed-dim": "#4bee74",
69
- "on-primary-fixed-variant": "#005762",
70
- "primary-container": "#00e3fd",
71
- "surface-dim": "#060e20",
72
- "error-container": "#9f0519",
73
- "on-error-container": "#ffa8a3",
74
- "primary-fixed": "#00e3fd",
75
- "tertiary-dim": "#4bee74",
76
- "surface-container-high": "#141f38",
77
- "background": "#060e20",
78
- "surface-bright": "#1f2b49",
79
- "error-dim": "#d7383b",
80
- "on-primary-container": "#004d57",
81
- "outline": "#6d758c",
82
- "error": "#ff716c",
83
- "on-secondary-container": "#fff6ec",
84
- "on-primary-fixed": "#003840",
85
- "inverse-on-surface": "#4d556b",
86
- "secondary-fixed": "#ffca4d",
87
- "tertiary-fixed": "#5cfd80",
88
- "on-tertiary-fixed": "#004819",
89
- "surface-tint": "#81ecff",
90
- "tertiary": "#b8ffbb",
91
- "outline-variant": "#40485d",
92
- "on-error": "#490006",
93
- "on-surface-variant": "#a3aac4",
94
- "surface-container-lowest": "#000000",
95
- "on-tertiary": "#006727",
96
- "primary": "#81ecff",
97
- "on-secondary-fixed": "#443100",
98
- "inverse-primary": "#006976",
99
- "on-background": "#dee5ff"
100
- },
101
- "borderRadius": {
102
- "DEFAULT": "0px",
103
- "lg": "0px",
104
- "xl": "0px",
105
- "full": "9999px"
106
- },
107
- "fontFamily": {
108
- "headline": ["Space Grotesk"],
109
- "body": ["Inter"],
110
- "label": ["Space Grotesk"]
111
- }
112
- },
113
- },
114
- }
115
- </script>
116
37
  <style>
38
+ :root {
39
+ --surface: #060e20;
40
+ --surface-container: #0f1930;
41
+ --surface-container-high: #141f38;
42
+ --surface-container-low: #091328;
43
+ --surface-container-lowest: #000000;
44
+ --surface-variant: #192540;
45
+ --on-surface: #dee5ff;
46
+ --on-surface-variant: #a3aac4;
47
+ --primary: #81ecff;
48
+ --secondary: #fdc003;
49
+ --tertiary: #b8ffbb;
50
+ --error: #ff716c;
51
+ --outline: #6d758c;
52
+ --outline-variant: #40485d;
53
+ }
54
+ * { box-sizing: border-box; }
55
+ body {
56
+ margin: 0;
57
+ min-height: 100vh;
58
+ background: var(--surface);
59
+ color: var(--on-surface);
60
+ font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
61
+ }
62
+ p, h2, h3 { margin: 0; }
63
+ main {
64
+ display: flex;
65
+ gap: 1.5rem;
66
+ min-height: calc(100vh - 64px);
67
+ padding: 2rem;
68
+ position: relative;
69
+ overflow: hidden;
70
+ }
71
+ #viewport {
72
+ flex: 1;
73
+ min-height: 600px;
74
+ position: relative;
75
+ overflow: hidden;
76
+ cursor: grab;
77
+ }
78
+ #viewport.cursor-grabbing { cursor: grabbing; }
79
+ #canvas {
80
+ position: absolute;
81
+ inset: 0;
82
+ transform-origin: top left;
83
+ }
84
+ #edgesLayer {
85
+ position: absolute;
86
+ inset: 0;
87
+ width: 100%;
88
+ height: 100%;
89
+ pointer-events: none;
90
+ }
91
+ #detailsPanel {
92
+ position: relative;
93
+ width: min(400px, 100%);
94
+ background: var(--surface-container-high);
95
+ padding: 1.5rem;
96
+ border-left: 1px solid rgba(64, 72, 93, 0.4);
97
+ display: flex;
98
+ flex-direction: column;
99
+ gap: 2rem;
100
+ }
101
+ #closePanel {
102
+ position: absolute;
103
+ top: 1rem;
104
+ right: 1rem;
105
+ color: var(--on-surface-variant);
106
+ background: transparent;
107
+ border: 0;
108
+ cursor: pointer;
109
+ }
110
+ #closePanel:hover { color: var(--primary); }
111
+ #liveOutput {
112
+ background: var(--surface-container-lowest);
113
+ flex: 1;
114
+ min-height: 160px;
115
+ padding: 0.75rem;
116
+ font: 10px/1.45 ui-monospace, SFMono-Regular, Menlo, monospace;
117
+ overflow-y: auto;
118
+ }
119
+ #selectedTokenRatio {
120
+ height: 100%;
121
+ width: 0;
122
+ background: var(--primary);
123
+ }
124
+ .hidden { display: none !important; }
117
125
  .material-symbols-outlined {
118
- font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
126
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
127
+ font-size: 0.75rem;
128
+ line-height: 1;
119
129
  }
120
-
121
130
  .grid-pattern {
122
131
  background-image: radial-gradient(circle, #40485d 1px, transparent 1px);
123
132
  background-size: 24px 24px;
124
133
  }
125
-
126
134
  .node-active-glow {
127
135
  box-shadow: 0 0 15px rgba(129, 236, 255, 0.15);
128
136
  }
137
+ .node {
138
+ position: absolute;
139
+ width: 16rem;
140
+ border-left: 2px solid var(--outline);
141
+ padding: 1rem;
142
+ cursor: pointer;
143
+ overflow: hidden;
144
+ }
145
+ .node h3 {
146
+ margin: 0.25rem 0;
147
+ font-size: 0.875rem;
148
+ font-weight: 700;
149
+ overflow-wrap: anywhere;
150
+ }
151
+ .node span { display: inline-block; }
152
+ .flex { display: flex; }
153
+ .flex-1 { flex: 1; }
154
+ .flex-col { flex-direction: column; }
155
+ .grid { display: grid; }
156
+ .grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
157
+ .justify-between { justify-content: space-between; }
158
+ .items-start { align-items: flex-start; }
159
+ .items-center { align-items: center; }
160
+ .gap-1 { gap: 0.25rem; }
161
+ .gap-2 { gap: 0.5rem; }
162
+ .gap-4 { gap: 1rem; }
163
+ .gap-8 { gap: 2rem; }
164
+ .mb-1 { margin-bottom: 0.25rem; }
165
+ .mb-4 { margin-bottom: 1rem; }
166
+ .mb-6 { margin-bottom: 1.5rem; }
167
+ .mt-2 { margin-top: 0.5rem; }
168
+ .p-2 { padding: 0.5rem; }
169
+ .p-3 { padding: 0.75rem; }
170
+ .p-4 { padding: 1rem; }
171
+ .px-2 { padding-left: 0.5rem; padding-right: 0.5rem; }
172
+ .py-0\\.5 { padding-top: 0.125rem; padding-bottom: 0.125rem; }
173
+ .w-full { width: 100%; }
174
+ .h-1 { height: 0.25rem; }
175
+ .text-xs { font-size: 0.75rem; }
176
+ .text-sm { font-size: 0.875rem; }
177
+ .text-lg { font-size: 1.125rem; }
178
+ .font-mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
179
+ .font-bold { font-weight: 700; }
180
+ .font-black { font-weight: 900; }
181
+ .uppercase { text-transform: uppercase; }
182
+ .tracking-widest { letter-spacing: 0.08em; }
183
+ .bg-surface-container { background: var(--surface-container); }
184
+ .bg-surface-container-low { background: var(--surface-container-low); }
185
+ .bg-surface-container-lowest { background: var(--surface-container-lowest); }
186
+ .bg-surface-variant { background: var(--surface-variant); }
187
+ .text-primary { color: var(--primary); }
188
+ .text-secondary { color: var(--secondary); }
189
+ .text-tertiary { color: var(--tertiary); }
190
+ .text-error { color: var(--error); }
191
+ .text-outline { color: var(--outline); }
192
+ .text-on-surface { color: var(--on-surface); }
193
+ .text-on-surface-variant { color: var(--on-surface-variant); }
194
+ .border-tertiary { border-color: var(--tertiary); }
195
+ .border-error { border-color: var(--error); }
196
+ .border-outline { border-color: var(--outline); }
197
+ .border-secondary { border-color: var(--secondary); }
198
+ .opacity-60 { opacity: 0.6; }
199
+ .grayscale { filter: grayscale(1); }
200
+ .space-y-1 > * + * { margin-top: 0.25rem; }
201
+ .space-y-2 > * + * { margin-top: 0.5rem; }
202
+ .space-y-6 > * + * { margin-top: 1.5rem; }
203
+ .bg-gradient-to-b {
204
+ position: fixed;
205
+ left: 0;
206
+ top: 0;
207
+ width: 4px;
208
+ height: 100vh;
209
+ background: linear-gradient(to bottom, var(--primary), var(--secondary), var(--tertiary));
210
+ opacity: 0.3;
211
+ z-index: 60;
212
+ }
213
+ .animate-spin { animation: spin 1s linear infinite; }
214
+ @keyframes spin { to { transform: rotate(360deg); } }
215
+ @media (max-width: 1023px) {
216
+ main { flex-direction: column; padding: 1rem; }
217
+ #detailsPanel { border-left: 0; border-top: 1px solid rgba(64, 72, 93, 0.4); }
218
+ }
219
+ @media (min-width: 1024px) {
220
+ main { flex-direction: row; }
221
+ }
129
222
  </style>
130
223
  </head>
131
224
  <body class="bg-surface text-on-surface font-body selection:bg-primary selection:text-on-primary">
@@ -1 +1 @@
1
- {"version":3,"file":"render-team-run-dashboard.js","sourceRoot":"","sources":["../../src/dashboard/render-team-run-dashboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAqB;IAC1D,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAA;IAChC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;IACjC,MAAM,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAChE,MAAM,OAAO,GAAG;QACd,WAAW;QACX,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;QACvB,KAAK;QACL,MAAM,EAAE;YACN,SAAS,EAAE,mBAAmB;YAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB;KACF,CAAA;IACD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IAEjE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oDA4K2C,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4PpD,CAAA;AACR,CAAC"}
1
+ {"version":3,"file":"render-team-run-dashboard.js","sourceRoot":"","sources":["../../src/dashboard/render-team-run-dashboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAE7D;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAqB;IAC1D,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAA;IAChC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;IACjC,MAAM,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAChE,MAAM,OAAO,GAAG;QACd,WAAW;QACX,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;QACvB,KAAK;QACL,MAAM,EAAE;YACN,SAAS,EAAE,mBAAmB;YAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB;KACF,CAAA;IACD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAExF,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oDAwQ2C,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4PpD,CAAA;AACR,CAAC"}
package/dist/errors.d.ts CHANGED
@@ -11,4 +11,14 @@ export declare class TokenBudgetExceededError extends Error {
11
11
  readonly code = "TOKEN_BUDGET_EXCEEDED";
12
12
  constructor(agent: string, tokensUsed: number, budget: number);
13
13
  }
14
+ /**
15
+ * Raised when a message list passed to an adapter violates the
16
+ * {@link LLMMessage}[] contract (e.g. a `content` that isn't a `ContentBlock[]`).
17
+ * Surfaced at the adapter entry so the violation fails loudly instead of
18
+ * crashing deep in provider-specific message conversion.
19
+ */
20
+ export declare class InvalidMessageError extends Error {
21
+ readonly code = "INVALID_MESSAGE";
22
+ constructor(message: string);
23
+ }
14
24
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;IAI/C,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM;IALzB,QAAQ,CAAC,IAAI,2BAA0B;gBAG5B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM;CAK1B"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;IAI/C,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM;IALzB,QAAQ,CAAC,IAAI,2BAA0B;gBAG5B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM;CAK1B;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,qBAAoB;gBAErB,OAAO,EAAE,MAAM;CAI5B"}
package/dist/errors.js CHANGED
@@ -17,4 +17,17 @@ export class TokenBudgetExceededError extends Error {
17
17
  this.name = 'TokenBudgetExceededError';
18
18
  }
19
19
  }
20
+ /**
21
+ * Raised when a message list passed to an adapter violates the
22
+ * {@link LLMMessage}[] contract (e.g. a `content` that isn't a `ContentBlock[]`).
23
+ * Surfaced at the adapter entry so the violation fails loudly instead of
24
+ * crashing deep in provider-specific message conversion.
25
+ */
26
+ export class InvalidMessageError extends Error {
27
+ code = 'INVALID_MESSAGE';
28
+ constructor(message) {
29
+ super(message);
30
+ this.name = 'InvalidMessageError';
31
+ }
32
+ }
20
33
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IAItC;IACA;IACA;IALF,IAAI,GAAG,uBAAuB,CAAA;IAEvC,YACW,KAAa,EACb,UAAkB,EAClB,MAAc;QAEvB,KAAK,CAAC,UAAU,KAAK,4BAA4B,UAAU,yBAAyB,MAAM,GAAG,CAAC,CAAA;QAJrF,UAAK,GAAL,KAAK,CAAQ;QACb,eAAU,GAAV,UAAU,CAAQ;QAClB,WAAM,GAAN,MAAM,CAAQ;QAGvB,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAA;IACxC,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IAItC;IACA;IACA;IALF,IAAI,GAAG,uBAAuB,CAAA;IAEvC,YACW,KAAa,EACb,UAAkB,EAClB,MAAc;QAEvB,KAAK,CAAC,UAAU,KAAK,4BAA4B,UAAU,yBAAyB,MAAM,GAAG,CAAC,CAAA;QAJrF,UAAK,GAAL,KAAK,CAAQ;QACb,eAAU,GAAV,UAAU,CAAQ;QAClB,WAAM,GAAN,MAAM,CAAQ;QAGvB,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAA;IACxC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACnC,IAAI,GAAG,iBAAiB,CAAA;IAEjC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAA;IACnC,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -71,9 +71,9 @@ export { registerBuiltInTools, BUILT_IN_TOOLS, ALL_BUILT_IN_TOOLS_WITH_DELEGATE,
71
71
  export type { RegisterBuiltInToolsOptions } from './tool/built-in/index.js';
72
72
  export { createAdapter } from './llm/adapter.js';
73
73
  export type { SupportedProvider } from './llm/adapter.js';
74
- export { TokenBudgetExceededError } from './errors.js';
74
+ export { TokenBudgetExceededError, InvalidMessageError } from './errors.js';
75
75
  export { InMemoryStore } from './memory/store.js';
76
76
  export { SharedMemory } from './memory/shared.js';
77
- export type { ReasoningBlock, TextBlock, ToolUseBlock, ToolResultBlock, ImageBlock, ContentBlock, LLMMessage, LLMResponse, LLMAdapter, LLMChatOptions, LLMStreamOptions, LLMToolDef, TokenUsage, StreamEvent, ToolDefinition, ToolResult, ToolUseContext, AgentInfo, TeamInfo, DelegationPoolView, AgentConfig, AgentState, AgentRunResult, BeforeRunHookContext, ToolCallRecord, LoopDetectionConfig, LoopDetectionInfo, ContextStrategy, TeamConfig, TeamRunResult, RunTeamOptions, TaskExecutionMetrics, TaskExecutionRecord, Task, TaskStatus, OrchestratorConfig, OrchestratorEvent, CoordinatorConfig, TraceEventType, TraceEventBase, TraceEvent, LLMCallTrace, ToolCallTrace, TaskTrace, AgentTrace, PlanReadyTrace, AgentStreamTrace, MemoryEntry, MemoryStore, } from './types.js';
77
+ export type { ReasoningBlock, TextBlock, ToolUseBlock, ToolResultBlock, ImageBlock, ContentBlock, LLMMessage, LLMResponse, LLMAdapter, LLMChatOptions, LLMStreamOptions, LLMToolDef, TokenUsage, StreamEvent, ToolDefinition, ToolResult, ToolUseContext, AgentInfo, TeamInfo, DelegationPoolView, AgentConfig, AgentState, AgentRunResult, BeforeRunHookContext, ToolCallRecord, LoopDetectionConfig, LoopDetectionInfo, ContextStrategy, TeamConfig, TeamRunResult, RunTeamOptions, PlanArtifact, PlanTaskArtifact, TaskExecutionMetrics, TaskExecutionRecord, Task, TaskStatus, OrchestratorConfig, OrchestratorEvent, CoordinatorConfig, TraceEventType, TraceEventBase, TraceEvent, LLMCallTrace, ToolCallTrace, TaskTrace, AgentTrace, PlanReadyTrace, AgentStreamTrace, MemoryEntry, MemoryStore, SharedMemoryEntry, SharedMemoryValue, SharedMemoryWriteOptions, } from './types.js';
78
78
  export { generateRunId } from './utils/trace.js';
79
79
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAMH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AACpG,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AACvD,YAAY,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAErE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAA;AAMjF,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,gCAAgC,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC5G,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACtD,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAMjD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,YAAY,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAMlD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AAC1G,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAMrD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACrE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC5E,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,gCAAgC,EAChC,QAAQ,EACR,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,QAAQ,GACT,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAA;AAM3E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAMtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAMjD,YAAY,EAEV,cAAc,EACd,SAAS,EACT,YAAY,EACZ,eAAe,EACf,UAAU,EACV,YAAY,EAGZ,UAAU,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,WAAW,EAGX,cAAc,EACd,UAAU,EACV,cAAc,EACd,SAAS,EACT,QAAQ,EACR,kBAAkB,EAGlB,WAAW,EACX,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EAGf,UAAU,EACV,aAAa,EACb,cAAc,EAGd,oBAAoB,EACpB,mBAAmB,EAGnB,IAAI,EACJ,UAAU,EAGV,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EAGjB,cAAc,EACd,cAAc,EACd,UAAU,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,UAAU,EACV,cAAc,EACd,gBAAgB,EAGhB,WAAW,EACX,WAAW,GACZ,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -82,7 +82,7 @@ export { registerBuiltInTools, BUILT_IN_TOOLS, ALL_BUILT_IN_TOOLS_WITH_DELEGATE,
82
82
  // LLM adapters
83
83
  // ---------------------------------------------------------------------------
84
84
  export { createAdapter } from './llm/adapter.js';
85
- export { TokenBudgetExceededError } from './errors.js';
85
+ export { TokenBudgetExceededError, InvalidMessageError } from './errors.js';
86
86
  // ---------------------------------------------------------------------------
87
87
  // Memory
88
88
  // ---------------------------------------------------------------------------
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAEH,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E;AAE9E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AACpG,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAGvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAA;AAEjF,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,gCAAgC,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC5G,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGtD,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAGhD,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AAG1G,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAErE,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,gCAAgC,EAChC,QAAQ,EACR,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,QAAQ,GACT,MAAM,0BAA0B,CAAA;AAGjC,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAEtD,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AA6EjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAEH,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E;AAE9E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AACpG,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAGvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAA;AAEjF,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,gCAAgC,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC5G,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGtD,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAGhD,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AAG1G,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAErE,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,gCAAgC,EAChC,QAAQ,EACR,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,QAAQ,GACT,MAAM,0BAA0B,CAAA;AAGjC,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAE3E,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAkFjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA"}
@@ -22,7 +22,7 @@ import type { LLMAdapter } from '../types.js';
22
22
  * directly and bypassing this factory, or via {@link AISdkAdapter} from
23
23
  * `@open-multi-agent/core/ai-sdk` (optional peer `ai`).
24
24
  */
25
- export type SupportedProvider = 'anthropic' | 'azure-openai' | 'bedrock' | 'copilot' | 'deepseek' | 'grok' | 'minimax' | 'openai' | 'gemini' | 'qiniu';
25
+ export type SupportedProvider = 'anthropic' | 'azure-openai' | 'bedrock' | 'copilot' | 'deepseek' | 'doubao' | 'grok' | 'hunyuan' | 'minimax' | 'mimo' | 'openai' | 'gemini' | 'qiniu';
26
26
  /**
27
27
  * Instantiate the appropriate {@link LLMAdapter} for the given provider.
28
28
  *
@@ -34,7 +34,11 @@ export type SupportedProvider = 'anthropic' | 'azure-openai' | 'bedrock' | 'copi
34
34
  * - `gemini` → `GEMINI_API_KEY` / `GOOGLE_API_KEY`
35
35
  * - `grok` → `XAI_API_KEY`
36
36
  * - `minimax` → `MINIMAX_API_KEY`
37
+ * - `mimo` → `MIMO_API_KEY`, optional `MIMO_BASE_URL`
37
38
  * - `deepseek` → `DEEPSEEK_API_KEY`
39
+ * - `doubao` → `ARK_API_KEY`
40
+ * - `hunyuan` → `HUNYUAN_API_KEY`, optional `HUNYUAN_BASE_URL`
41
+ * (defaults to the Tencent MaaS / TokenHub endpoint)
38
42
  * - `qiniu` → `QINIU_API_KEY`
39
43
  * - `bedrock` → no API key; credentials via AWS SDK default provider chain
40
44
  * (env vars, shared config, IAM role). Pass `region` (4th arg)
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/llm/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,YAAY,EACV,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,eAAe,EACf,UAAU,GACX,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;AAEtJ;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC,CAsDrB"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/llm/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,YAAY,EACV,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,eAAe,EACf,UAAU,GACX,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;AAEtL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC,CAkErB"}
@@ -25,7 +25,11 @@
25
25
  * - `gemini` → `GEMINI_API_KEY` / `GOOGLE_API_KEY`
26
26
  * - `grok` → `XAI_API_KEY`
27
27
  * - `minimax` → `MINIMAX_API_KEY`
28
+ * - `mimo` → `MIMO_API_KEY`, optional `MIMO_BASE_URL`
28
29
  * - `deepseek` → `DEEPSEEK_API_KEY`
30
+ * - `doubao` → `ARK_API_KEY`
31
+ * - `hunyuan` → `HUNYUAN_API_KEY`, optional `HUNYUAN_BASE_URL`
32
+ * (defaults to the Tencent MaaS / TokenHub endpoint)
29
33
  * - `qiniu` → `QINIU_API_KEY`
30
34
  * - `bedrock` → no API key; credentials via AWS SDK default provider chain
31
35
  * (env vars, shared config, IAM role). Pass `region` (4th arg)
@@ -71,10 +75,22 @@ export async function createAdapter(provider, apiKey, baseURL, region) {
71
75
  const { MiniMaxAdapter } = await import('./minimax.js');
72
76
  return new MiniMaxAdapter(apiKey, baseURL);
73
77
  }
78
+ case 'mimo': {
79
+ const { MiMoAdapter } = await import('./mimo.js');
80
+ return new MiMoAdapter(apiKey, baseURL);
81
+ }
74
82
  case 'deepseek': {
75
83
  const { DeepSeekAdapter } = await import('./deepseek.js');
76
84
  return new DeepSeekAdapter(apiKey, baseURL);
77
85
  }
86
+ case 'doubao': {
87
+ const { DoubaoAdapter } = await import('./doubao.js');
88
+ return new DoubaoAdapter(apiKey, baseURL);
89
+ }
90
+ case 'hunyuan': {
91
+ const { HunyuanAdapter } = await import('./hunyuan.js');
92
+ return new HunyuanAdapter(apiKey, baseURL);
93
+ }
78
94
  case 'qiniu': {
79
95
  const { QiniuAdapter } = await import('./qiniu.js');
80
96
  return new QiniuAdapter(apiKey, baseURL);
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/llm/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA4BH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAA2B,EAC3B,MAAe,EACf,OAAgB,EAChB,MAAe;IAEf,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAA;YAC3D,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC9C,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAA;YAC3G,CAAC;YACD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACvD,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAA;QACnC,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YACrD,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAA;QAClC,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YACrD,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC3C,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;YACjD,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACzC,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACvD,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC5C,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;YACzD,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC7C,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAA;YACnD,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC1C,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,8EAA8E;YAC9E,qEAAqE;YACrE,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;YAChE,OAAO,IAAI,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAChD,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,OAAO;gBAAE,OAAO,CAAC,IAAI,CAAC,qGAAqG,CAAC,CAAA;YAChI,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACvD,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAA;QACnC,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,iEAAiE;YACjE,MAAM,WAAW,GAAU,QAAQ,CAAA;YACnC,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QACrE,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/llm/adapter.ts"],"names":[],"mappings":"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"}
@@ -7,11 +7,12 @@
7
7
  */
8
8
  import type { LanguageModel, ModelMessage } from 'ai';
9
9
  import type { LLMAdapter, LLMChatOptions, LLMMessage, LLMResponse, LLMStreamOptions, StreamEvent } from '../types.js';
10
+ import { type ReasoningOutboundOptions } from './reasoning-fallback.js';
10
11
  /**
11
12
  * Convert framework {@link LLMMessage}s to AI SDK {@link ModelMessage}s.
12
13
  * Exported for unit tests and for callers who need to preflight prompts.
13
14
  */
14
- export declare function llmMessagesToAiSdkModelMessages(messages: readonly LLMMessage[]): ModelMessage[];
15
+ export declare function llmMessagesToAiSdkModelMessages(messages: readonly LLMMessage[], outboundOptions?: ReasoningOutboundOptions): ModelMessage[];
15
16
  /**
16
17
  * {@link LLMAdapter} implementation backed by the Vercel AI SDK `generateText` /
17
18
  * `streamText` APIs. Pass any `LanguageModel` from an `@ai-sdk/*` provider.
@@ -1 +1 @@
1
- {"version":3,"file":"ai-sdk.d.ts","sourceRoot":"","sources":["../../src/llm/ai-sdk.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AAErD,OAAO,KAAK,EAEV,UAAU,EACV,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,WAAW,EAIZ,MAAM,aAAa,CAAA;AAkBpB;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,GAAG,YAAY,EAAE,CAgF/F;AA8DD;;;GAGG;AACH,qBAAa,YAAa,YAAW,UAAU;;IAC7C,QAAQ,CAAC,IAAI,YAAW;IAExB,QAAQ,CAAC,YAAY;;MAQpB;gBAIW,KAAK,EAAE,aAAa;IAI1B,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAwC1E,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,gBAAgB,GAAG,aAAa,CAAC,WAAW,CAAC;CAuG7F"}
1
+ {"version":3,"file":"ai-sdk.d.ts","sourceRoot":"","sources":["../../src/llm/ai-sdk.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AAErD,OAAO,KAAK,EAEV,UAAU,EACV,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,WAAW,EAIZ,MAAM,aAAa,CAAA;AAGpB,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,yBAAyB,CAAA;AAiBhC;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,eAAe,CAAC,EAAE,wBAAwB,GACzC,YAAY,EAAE,CAoGhB;AA8DD;;;GAGG;AACH,qBAAa,YAAa,YAAW,UAAU;;IAC7C,QAAQ,CAAC,IAAI,YAAW;IAExB,QAAQ,CAAC,YAAY;;MAiBpB;gBAIW,KAAK,EAAE,aAAa;IAI1B,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAyC1E,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,gBAAgB,GAAG,aAAa,CAAC,WAAW,CAAC;CAwG7F"}
@@ -6,6 +6,8 @@
6
6
  * provider package you need (for example `@ai-sdk/openai`).
7
7
  */
8
8
  import { normalizeFinishReason } from './openai-common.js';
9
+ import { assertValidMessages } from './validate.js';
10
+ import { reasoningBlockToInlineText, resolveReasoningOutboundMaxChars, } from './reasoning-fallback.js';
9
11
  // ---------------------------------------------------------------------------
10
12
  // Message conversion — OMA <-> AI SDK ModelMessage
11
13
  // ---------------------------------------------------------------------------
@@ -25,9 +27,16 @@ function collectToolNamesByCallId(messages) {
25
27
  * Convert framework {@link LLMMessage}s to AI SDK {@link ModelMessage}s.
26
28
  * Exported for unit tests and for callers who need to preflight prompts.
27
29
  */
28
- export function llmMessagesToAiSdkModelMessages(messages) {
30
+ export function llmMessagesToAiSdkModelMessages(messages, outboundOptions) {
29
31
  const toolNamesByCallId = collectToolNamesByCallId(messages);
30
32
  const out = [];
33
+ // When `preserveReasoningAsText` is enabled, swap the AI SDK structured
34
+ // reasoning emit for a `<thinking>` text part — honouring the adapter's
35
+ // declared `'never'` capability (see #223 Phase 2). When the flag is off,
36
+ // we preserve the pre-Phase-2 behaviour of passing structured reasoning
37
+ // through to the AI SDK provider, since some providers may handle it.
38
+ const preserveAsText = outboundOptions?.preserveReasoningAsText === true;
39
+ const maxChars = resolveReasoningOutboundMaxChars(outboundOptions);
31
40
  for (const msg of messages) {
32
41
  if (msg.role === 'assistant') {
33
42
  const acc = [];
@@ -36,10 +45,25 @@ export function llmMessagesToAiSdkModelMessages(messages) {
36
45
  acc.push({ type: 'text', text: block.text });
37
46
  }
38
47
  else if (block.type === 'reasoning') {
39
- const text = block.redactedData !== undefined && block.redactedData.length > 0
40
- ? `[redacted_thinking]${block.redactedData}`
41
- : block.text;
42
- acc.push({ type: 'reasoning', text });
48
+ if (preserveAsText) {
49
+ const text = maxChars === undefined
50
+ ? reasoningBlockToInlineText(block)
51
+ : reasoningBlockToInlineText(block, { maxChars });
52
+ if (text.length > 0)
53
+ acc.push({ type: 'text', text });
54
+ }
55
+ else {
56
+ // Default-off back-compat path: pass framework reasoning through
57
+ // as AI SDK structured `{ type: 'reasoning' }`. For redacted
58
+ // blocks emit ONLY the `[redacted_thinking]` marker — never the
59
+ // opaque `redactedData` payload (would leak Anthropic-issued
60
+ // encrypted content into the AI SDK provider's request body;
61
+ // hardened upstream in 6b63302).
62
+ const text = block.redactedData !== undefined && block.redactedData.length > 0
63
+ ? '[redacted_thinking]'
64
+ : block.text;
65
+ acc.push({ type: 'reasoning', text });
66
+ }
43
67
  }
44
68
  else if (block.type === 'tool_use') {
45
69
  acc.push({
@@ -153,12 +177,21 @@ function buildLlmResponseFromGenerateText(result) {
153
177
  export class AISdkAdapter {
154
178
  name = 'ai-sdk';
155
179
  capabilities = {
156
- // Conservative default: the AI SDK proxies many providers and the
157
- // adapter cannot introspect at IR-conversion time which underlying
158
- // provider would natively accept reasoning input. `'never'` keeps the
159
- // outbound path safe (always falls back via Phase 2 helper) without
160
- // risking signature-mismatch errors. Phase 2 may refine this if a
161
- // per-call provider hint becomes available on the AI SDK surface.
180
+ // `'never'` means: this framework cannot natively round-trip a
181
+ // {@link ReasoningBlock} into the AI SDK in a provider-agnostic way
182
+ // the AI SDK proxies many providers and we can't introspect at
183
+ // IR-conversion time which underlying provider would accept reasoning.
184
+ //
185
+ // When `preserveReasoningAsText` is set, the outbound conversion in
186
+ // `llmMessagesToAiSdkModelMessages` honours this by downgrading to
187
+ // inline `<thinking>` text via the shared helper.
188
+ //
189
+ // When the opt-in is OFF, however, we keep the pre-Phase-2 back-compat
190
+ // behaviour of passing the framework's `ReasoningBlock` through as an
191
+ // AI SDK structured `{ type: 'reasoning' }` part, letting the SDK
192
+ // handle it per-provider. This is a deliberate exception to the
193
+ // `'never'` semantic (which strictly would mean drop-on-default), made
194
+ // to avoid silently changing what existing AI-SDK users see today.
162
195
  echoesReasoning: 'never',
163
196
  };
164
197
  #model;
@@ -166,8 +199,9 @@ export class AISdkAdapter {
166
199
  this.#model = model;
167
200
  }
168
201
  async chat(messages, options) {
202
+ assertValidMessages(messages);
169
203
  const { generateText, tool, jsonSchema } = await import('ai');
170
- const aiMessages = llmMessagesToAiSdkModelMessages(messages);
204
+ const aiMessages = llmMessagesToAiSdkModelMessages(messages, { preserveReasoningAsText: options.preserveReasoningAsText, compressReasoningText: options.compressReasoningText });
171
205
  const tools = options.tools !== undefined && options.tools.length > 0
172
206
  ? Object.fromEntries(options.tools.map((def) => [
173
207
  def.name,
@@ -199,8 +233,9 @@ export class AISdkAdapter {
199
233
  return buildLlmResponseFromGenerateText(result);
200
234
  }
201
235
  async *stream(messages, options) {
236
+ assertValidMessages(messages);
202
237
  const { streamText, tool, jsonSchema } = await import('ai');
203
- const aiMessages = llmMessagesToAiSdkModelMessages(messages);
238
+ const aiMessages = llmMessagesToAiSdkModelMessages(messages, { preserveReasoningAsText: options.preserveReasoningAsText, compressReasoningText: options.compressReasoningText });
204
239
  const tools = options.tools !== undefined && options.tools.length > 0
205
240
  ? Object.fromEntries(options.tools.map((def) => [
206
241
  def.name,