Add Exie AI assistant - #2430
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: be0b03b29c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d8f9ec4b33
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: fadb9a1993
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2d6f0fb55a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
niemyjski
left a comment
There was a problem hiding this comment.
Looks good and sweet feature, left some comments mostly on magic strings.
Also, what do we want to do for /docs/ and or running locally, would it detect ollama automatically?
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b083c501cd
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c993cd38c2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cd4d2054cf
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0c367aa420
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@niemyjski Regarding |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 825fe1e5aa
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
niemyjski
left a comment
There was a problem hiding this comment.
Really solid iteration overall: the assistant-specific services, organization boundary, focused tests, and published API contracts make this large feature much easier to reason about. I kept this pass intentionally focused and added one new inline blocker that matches the current test-api failure. The other high-value concerns are already captured in the three existing open threads; for the reservation issue, the cleanest structural fix would be one lifecycle object that owns reserve, reconcile, and conservative fallback persistence rather than another branch in the stream loop. I did not add cosmetic or broad refactor comments.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9a774eb4e8
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
# Conflicts: # src/Exceptionless.Web/ClientApp/package-lock.json # src/Exceptionless.Web/ClientApp/src/routes/(app)/stack/[stackId=objectid]/+page.svelte
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 08182c3d5c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a41aa87723
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 41cb1bad91
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ce0e65456c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f466ad820a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| <Button | ||
| class="h-auto min-h-7 gap-1.5 px-2 py-1 text-left text-xs whitespace-normal" | ||
| disabled={suggestionsDisabled} | ||
| onclick={() => onSuggestedAction?.(action.prompt)} |
There was a problem hiding this comment.
Do not treat model-suggested prompts as write approval
When a provider-generated suggestion has a benign label but a hidden mutation prompt, clicking the button submits action.prompt as an ordinary user message even though only the label is displayed. Fresh evidence beyond the earlier write-confirmation concern is that prompt-injected tool data can therefore produce a button labeled “View details” whose prompt says “Please ignore this stack”; the server then treats that generated text as the user's exact approval and can execute the write. Display and confirm the full mutation or mark suggested prompts as model-generated so they cannot authorize write tools.
Useful? React with 👍 / 👎.
| bool explicitlyRequested = remove | ||
| ? ContainsAny(message, "remove link", "delete link", "remove reference", "delete reference") | ||
| : ContainsAny(message, "add link", "attach link", "add reference", "attach reference"); | ||
| if (!explicitlyRequested) |
There was a problem hiding this comment.
Require affirmative commands for reference-link writes
When the latest message merely asks about adding a link, such as “Can you explain how to add link https://example.test to this stack?”, the general intent check accepts Can you, and this substring matcher authorizes add_stack_reference_link because the URL and current-stack reference also match. Fresh evidence after the status, snooze, and critical-command hardening is that reference-link writes still lack their affirmative-command check, so a provider-emitted call can mutate the stack in response to an explanatory question.
Useful? React with 👍 / 👎.
| await using var providerRequest = await assistantUsageService.StartProviderRequestAsync(request.OrganizationId, providerInputCharacters); | ||
| using var response = await SendRequestAsync(messages, options, allowTools, request, cancellationToken); |
There was a problem hiding this comment.
Avoid charging rejected provider requests
When the provider immediately rejects the request with a non-success status—for example because the API key is revoked or the account is rate-limited—the usage lifecycle has already reserved the maximum prompt and completion allowance. SendRequestAsync throws without a usage frame, so disposal converts that reservation into durable conservative usage even though no generation occurred; repeated 401/400/429 responses can exhaust an organization's monthly Exie allowance during a configuration error or provider outage. Only finalize fallback usage after the provider has accepted or begun streaming the request.
Useful? React with 👍 / 👎.
What changed
Why
Exceptionless users should be able to investigate errors, stacks, and events conversationally without leaving their current workflow. The first production version also needs predictable provider spend, plan-based access, web-farm correctness, operational visibility, and a complete off switch for self-hosted installations.
Plan limits
Free and Small plans receive the upgrade experience. Annual plans use the corresponding monthly allowance.
Operational impact
GET /api/v2/admin/assistant-usagepowers the global-admin monthly totals, per-organization consumption, plan utilization, and blocked-attempt reporting in System → Exie.Validation
npm run validate— formatting, ESLint, andsvelte-checkpassed with 0 errors and 0 warnings.dotnet build ./Exceptionless.slnx --no-restore --configuration Release— passed with 0 warnings and 0 errors.git diff --checkpassed.