Commit Graph

960 Commits

Author SHA1 Message Date
Oliver Kieselbach 1da5cf7a76 added known-issues docs site 2026-04-05 12:37:47 +02:00
Oliver Kieselbach b9b3ae9bc3 IME newline fix 2026-04-05 01:47:23 +02:00
Oliver Kieselbach 7b4b3071a4 refactor: replace Fuse/vector event search with weighted keyword scoring
Fuse fuzzy matching was too loose for structured event data (matched
"app_tracking_summary" instead of "app_install_failed"). Vector embeddings
didn't scale (timeout on 1000+ events even with 2 vCPU).

New approach: prefix-aware keyword matching with weighted field scoring.
EventType matches score 3x, message 2x, source 1.5x, data 0.5x.
Prefix matching handles morphological variants (install↔installation).
Knowledge base search_knowledge still uses vector (pre-indexed at startup).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 01:39:01 +02:00
Oliver Kieselbach 3f4a27b9e8 suitable search for events (fuse, keyord) scale down container again 2026-04-05 01:31:59 +02:00
Oliver Kieselbach fb0d646463 more compute for mcp and semantic search 2026-04-05 01:11:33 +02:00
Oliver Kieselbach a6d8ab9a1a beter mcp semantic search 2026-04-05 01:00:18 +02:00
Oliver Kieselbach f3dc3909a9 better DO calculations 2026-04-05 00:47:21 +02:00
Oliver Kieselbach c7227df06d feat: added DO details to geo report 2026-04-05 00:16:39 +02:00
Oliver Kieselbach ab0c6b5092 fix admin refresh bug 2026-04-04 23:38:43 +02:00
Oliver Kieselbach 474bd25085 hardware alerts toggle always visable 2026-04-04 21:16:04 +02:00
Oliver Kieselbach a3de5355ee hardware-rejected route rename 2026-04-04 20:33:42 +02:00
Oliver Kieselbach 536d275f32 feat: non-whitelisted hardware list and optional alerts 2026-04-04 20:20:55 +02:00
Oliver Kieselbach a782345429 readme update #2 2026-04-04 19:17:01 +02:00
Oliver Kieselbach b191bd67d4 updated Readme 2026-04-04 19:13:33 +02:00
Oliver Kieselbach b6d641b06d startup flow optimized (performance) 2026-04-04 14:19:53 +02:00
Oliver Kieselbach 9fdab5fb97 info exposure reduced during startup 2026-04-04 13:47:15 +02:00
Oliver Kieselbach 06f02b422d added check for ConfigMgr client 2026-04-04 13:05:40 +02:00
Oliver Kieselbach 997ac84328 fine tuning MCP error handler 2026-04-04 12:41:27 +02:00
Oliver Kieselbach a8305c95b5 fix phase regression 2026-04-04 01:12:05 +02:00
Oliver Kieselbach 19bd6f8a68 fix fleet health 2026-04-03 21:12:56 +02:00
Oliver Kieselbach 0976a6e45e new template analyze rule fix 2026-04-03 20:05:19 +02:00
Oliver Kieselbach ed0e19fa36 added template vars to analyze rules for better user journey 2026-04-03 19:52:58 +02:00
Oliver Kieselbach 66d9795105 fix post-config integrity check: use separate EXE hash instead of ZIP hash
The post-config binary integrity check was comparing the running EXE's
SHA-256 against LatestAgentSha256 which is the hash of the ZIP package —
these can never match. Introduces LatestAgentExeSha256 as a separate hash
computed from AutopilotMonitor.Agent.exe at build time, flowing through
AdminConfiguration → AgentConfigResponse → MonitoringService.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 19:49:20 +02:00
Oliver Kieselbach 8d99251e38 add CVE Mapping column to vulnerability report inventory and delta tabs
Separates registry identification confidence (high/medium/low) from CPE
mapping status (mapped/unmapped) so users can see at a glance which
software is checked against the CVE database and which is not.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 19:38:13 +02:00
Oliver Kieselbach 64aa486e48 fix missing LatestAgentSha256/Version mapping in AdminConfiguration table entity
The CI/CD pipeline correctly writes these fields via REST Merge, but
ConvertFromAdminTableEntity never read them back — causing the agent to
always skip the post-config binary integrity check.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 17:51:26 +02:00
Oliver Kieselbach dfd8c6173b update agent changelog with latest April 2026 entries
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 17:18:16 +02:00
Oliver Kieselbach 65599575d6 add ESP provisioning status check and settle delay before enrollment completion
When the IME pattern fires, the agent now checks ESP provisioning category
status from the registry before completing. If categories are still unresolved
(e.g. agent started late), it waits up to 30s for Windows to finalize the
outcomes. The ESP provisioning snapshot (category outcomes + subcategory states)
is included in every enrollment_complete event for observability.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 17:13:39 +02:00
Oliver Kieselbach e19852cd9a add structured error code extraction from IME log patterns
The backend already reads errorCode from event data for FailureCode and
failure reason formatting, but the agent never populated it. This change
extracts error codes (exit codes, HRESULT) from named regex capture groups
in IME log error patterns and sends them as structured errorCode fields.

Also fixes a pre-existing bug where ErrorPatternId/ErrorDetail were not
persisted across agent restarts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 16:56:00 +02:00
Oliver Kieselbach 77ff826c20 add post-config binary integrity check to close self-update trust gap
On first run (no cached config), the self-updater only has the version.json
hash from the same blob storage as the ZIP — a single point of compromise.
After config fetch, the agent now verifies the running binary against the
backend-provided LatestAgentSha256 hash (separate trust channel). On mismatch,
logs an ERROR and sends an IntegrityCheckFailed emergency report.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 16:46:52 +02:00
Oliver Kieselbach ea322aef5c improve report modal: cumulative file picker for agent logs and screenshots
Browse button now adds files incrementally instead of replacing the
previous selection. Each file shows name, size, and an x-button to
remove it. Duplicate files (same name+size) are silently skipped.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 15:28:27 +02:00
Oliver Kieselbach 30728c7011 fix report modal: clarify that multiple agent log files are allowed
The input already supports multiple files but the label didn't indicate
it, unlike the screenshots field.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 15:16:47 +02:00
Oliver Kieselbach d1e6f9c18d fix session report submission: raise body size limit from 1 MB to 20 MB
Reports with screenshots and agent logs easily exceed 1 MB after base64
encoding. 20 MB accommodates 5 MB agent logs (~6.7 MB base64) plus
multi-MB screenshots plus CSV/TXT exports.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 15:09:44 +02:00
Oliver Kieselbach ab030dce7f fix crash rate: only count exception crashes, not hard/reboot kills
Hard kills and reboot kills are expected during enrollment (reboots, process
termination) and should not inflate the crash rate. Only exception crashes
represent actual failures. UI updated to visually separate expected exits.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 14:50:51 +02:00
Oliver Kieselbach 23195dcd1b fix agent docs: bootstrapper arrives seconds after enrollment, not minutes
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 14:50:14 +02:00
Oliver Kieselbach b53e992f25 add full enrollment timeline docs section explaining IME log backfill
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 14:41:41 +02:00
Oliver Kieselbach d0842913c6 fix settings docs: correct group ordering, add missing settings, merge enrollment summary into agent parameters
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 14:26:21 +02:00
Oliver Kieselbach 26d0ae5ea7 update agent changelog with April 2026 entries
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 14:10:05 +02:00
Oliver Kieselbach 60b8372de0 fix composite PartitionKey leaking into event TenantId + add MCP integration test suite
MapToEnrollmentEvent was returning the composite PartitionKey ({TenantId}_{SessionId})
as TenantId instead of extracting the actual tenant ID. Now prefers the stored TenantId
property with fallback extraction from the composite key.

Also adds a Vitest-based integration test suite (39 tests) covering all MCP tool endpoints:
- Session tools (search, get, events, analysis, CVE, blocked devices)
- Admin tools (metrics, geographic, platform, usage, audit, ops, reports)
- Raw data tools (tables, raw sessions/events, backend logs)
- Read-only verification (PUT/DELETE rejection)
- Error handling (404, 400, empty results)

Run with: AUTOPILOT_API_TOKEN="eyJ..." npm test

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 13:12:44 +02:00
Oliver Kieselbach e940273a89 fix Global Admin cross-tenant fallback for session events, analysis, and vulnerability endpoints
GetSessionEventsFunction, GetRuleResultsFunction, and GetVulnerabilityReportFunction
were missing the FindSessionTenantIdAsync fallback that GetSessionFunction already had.
When a Global Admin queried a cross-tenant session without explicit tenantId, the
middleware defaulted to the JWT tenant, causing partition key mismatch and empty results.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:34:38 +02:00
Oliver Kieselbach a493ccaec4 add desktop fallback strategy for summary dialog launch (0x8007045A)
First 3 attempts use default desktop (""), then alternate with explicit
"WinSta0\Default" to handle post-Hello desktop access issues. Log tags
[default desktop]/[explicit desktop] for traceability.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:32:22 +02:00
Oliver Kieselbach eaba031b82 fix multiline script output matching in PS-AGENT-OUTPUT/ERROR patterns
.* doesn't match newlines without Singleline flag — script stdout/stderr
from AgentExecutor.log spans multiple lines and was never captured.
Changed to [\s\S]*? to match across newlines.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:25:53 +02:00
Oliver Kieselbach 221233b029 fix link 2026-04-03 10:50:37 +02:00
Oliver Kieselbach 37acdb5794 added exclude pattern to ui 2026-04-03 10:43:13 +02:00
Oliver Kieselbach 6cac2ba513 Ops Alerts discoverability 2026-04-03 10:38:32 +02:00
Oliver Kieselbach 6214c9993d fixed seed import 2026-04-03 01:30:23 +02:00
Oliver Kieselbach 7763563c76 improved matching with exclude pattern 2026-04-02 23:13:21 +02:00
Oliver Kieselbach cc42a22fcb vulnerability matching improvements, including confidence levels and data freshness indicators. These changes enhance the accuracy and transparency of vulnerability reporting in the Autopilot Monitor application. 2026-04-02 22:55:28 +02:00
Oliver Kieselbach b2871b9a9d added more tests 2026-04-02 22:43:44 +02:00
Oliver Kieselbach 44e8ea6f9b added sigterm handler 2026-04-02 22:33:33 +02:00
Oliver Kieselbach 3cfb586da6 even better error handler with more granular details 2026-04-02 22:22:18 +02:00