Skip to content

Feat/audit#22

Merged
AperturePlus merged 10 commits into
mainfrom
feat/audit
May 25, 2026
Merged

Feat/audit#22
AperturePlus merged 10 commits into
mainfrom
feat/audit

Conversation

@AperturePlus
Copy link
Copy Markdown
Owner

No description provided.

…ey check

Add idempotency_key-based guard in ExecuteService.enqueue_execute to reject 409 when a execute BackgroundJob already exists for the same planJobId. Update test to mock the second scalar return and add test_execute_rejects_repeat_when_existing_execute_job_exists.
compute whether to render menu above or below trigger based on available space. Recalculate on resize/scroll. Add specs for both up and down placements.
…gned

Add guard to canExecute computed so the Execute button disappears after the turn already has an executeJobId, preventing duplicate action trigger.
Guard against calling executeAgentPlan when executeJobId is already set or the turn status is not 'succeeded'. Add corresponding specs.
…ion answer

- Add drive.countFiles tool for counting files by folder and category (video/audio/image/document/archive)
- Build natural-language execution answer (e.g. '你上传了 3 部电影')
- Retry LLM plan without reasoning on empty/invalid output with safe read-only fallback
- Simplify cancel route to mark any running job as canceled immediately
- Skip job result/error persistence when worker detects cancellation
- Add answer field to AgentExecutionResult schema
…el, and execution answer

- Test drive.countFiles dispatches recursive video counting with mime-type sampling
- Test ExecuteRunner returns natural-language answer for countFiles actions
- Test AnthropicPlannerClient retries without reasoning on empty output
- Test PlanRunner falls back to safe read-only plan when LLM returns invalid output
- Test PlanRunner fallback detects movie-count questions and uses drive.countFiles
- Test cancel route marks running jobs as canceled
…afety

- Replace setInterval-based polling with generation-gated async loop to prevent race conditions
- Add canceledTurns set for immediate local cancellation before API response arrives
- Guard all async boundaries (poll tick, execute dispatch) against stale generations and canceled turns
- Auto-execute read-only low-risk plans even under confirm policy via isReadOnlyAutoExecutable
- Replace window.confirm with ui.confirm dialog for high-risk action confirmation
- Clean up polling timers and cancel state on session delete/reset
… and answer rendering

- Test cancel before planJobId arrives keeps turn canceled and does not start polling
- Test in-flight poll response after cancel cannot overwrite canceled status
- Test auto-execute of read-only low-risk plans in confirm policy
- Test write plans are not auto-executed in confirm policy
- Test read-only plans are not auto-executed in planOnly policy
- Test TurnEntry renders execution answer before plan summary
- Test StorageStatus normalizes ratio-like storagePercentage in (0,1]
…ountFiles mock

- Add optional answer field to AgentExecutionResult type
- Add i18n keys for high-risk confirm and delete-session confirm (zh/en)
- Update mock handler to return countFiles actions and execution answer
- Render execution answer as primary result text in TurnEntry, hiding plan summary
- Add ui.confirm-based delete session dialog in AgentWorkspace
…raphy tokens

- Normalize storagePercentage in (0,1] range by multiplying by 100; fall back to used/limit ratio when percentage is missing
- Add border-radius inheritance to progress-bar-fill; move margin to wrapper
- Update typography scale: body 13.5px→14px, small 12px→12.5px, label 10px→10.5px, data 12px→12.5px
- Add fallback CJK font to mono stack for better Chinese character rendering
- Replace hardcoded font-size values (9px, 11px, 10px) with CSS custom property references across agent components
- Guard planHash display behind isAdmin check in PlanInspector
@AperturePlus AperturePlus merged commit 28a4abb into main May 25, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant