You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 151d53d
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: docs/specs/ai-conversations.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -220,7 +220,7 @@ Each result should include:
220
220
- AI call count.
221
221
- Tool call count and tool error count.
222
222
- Tool names.
223
-
- Total tokens and total cost.
223
+
- Total tokens and a display-formatted USD total cost. Use `—` for zero, `<$0.01` for positive sub-cent costs, and compact currency formatting otherwise.
224
224
- Trace count and a small sample of trace IDs.
225
225
226
226
Search and detail structured outputs use Unix millisecond timestamps for
* Resolve the underlying provider failure from an AI SDK error.
@@ -210,6 +210,21 @@ export async function callEmbeddedAgent<
210
210
);
211
211
}
212
212
213
+
// NoOutputGeneratedError: the model exhausted its steps without emitting the
214
+
// structured output (typically after repeated tool/validation failures). This
215
+
// is a recoverable model limitation, not a system fault — surface it as user
216
+
// input like its NoObjectGeneratedError sibling and log a warning, instead of
217
+
// filing a Sentry issue for every occurrence.
218
+
if(NoOutputGeneratedError.isInstance(error)){
219
+
logWarn("Embedded agent produced no output",{
220
+
loggerScope: ["agents","embedded"],
221
+
extra: {errorMessage: error.message},
222
+
});
223
+
thrownewUserInputError(
224
+
"The AI could not construct a valid query for this request. Please rephrase or narrow it — for example, specify the fields, a real environment name, or a time range.",
225
+
);
226
+
}
227
+
213
228
// Handle LLM provider errors with user-friendly messages.
214
229
// These are operational availability failures that should NOT create Sentry
215
230
// issues per request (budget exhaustion, rate limits, provider outages).
@@ -242,9 +257,9 @@ export async function callEmbeddedAgent<
242
257
throwerror;
243
258
}
244
259
245
-
// Unexpected agent failures (including NoOutputGeneratedError): file one
246
-
// Sentry issue, then throw a typed error so AI-powered tools can fall back
247
-
// or return a graceful response instead of hard-failing the MCP tool.
260
+
// Genuinely unexpected agent failures: file one Sentry issue, then throw a
261
+
// typed error so AI-powered tools can fall back or return a graceful response
Copy file name to clipboardExpand all lines: packages/mcp-core/src/schema.ts
+3-1Lines changed: 3 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -185,8 +185,10 @@ export const ParamIssueIgnoreMode = z
185
185
exportconstParamAssignedTo=z
186
186
.string()
187
187
.trim()
188
+
.min(1)
189
+
.nullable()
188
190
.describe(
189
-
"The assignee in format 'user:ID' or 'team:ID_OR_SLUG' where ID is numeric. Example: 'user:123456', 'team:789', or 'team:my-team-slug'. Use `execute_sentry_tool(name='whoami', arguments={})` to find your user ID.",
191
+
"The assignee in format 'user:ID' or 'team:ID_OR_SLUG' where ID is numeric. Pass null to unassign the issue. Example: 'user:123456', 'team:789', or 'team:my-team-slug'. Use `execute_sentry_tool(name='whoami', arguments={})` to find your user ID.",
0 commit comments