mirror of
https://github.com/EKKOLearnAI/hermes-web-ui.git
synced 2026-05-25 21:40:13 +00:00
9a9416c99c
* feat: support profile-aware group chat bridge flows * feat: route cron jobs through hermes cli * Fix group chat routing and isolate bridge tests * Add Grok image-to-video media skill * Default Grok videos to media directory * Fix bridge profile fallback and cron repeat clearing * Refine bridge chat and gateway platform handling * Filter bridge tool-call text deltas * Preserve structured bridge chat history * Prepare beta release build artifacts * Fix Windows run profile resolution * Fix Windows path compatibility checks * Fix profile-scoped model page display * Hide Windows subprocess windows for jobs and updates * Hide Windows file backend subprocess windows * Avoid Windows gateway restart lock conflicts * Treat Windows gateway lock as running on startup * Force release Windows gateway lock on restart * Tighten Windows gateway lock cleanup * Update chat e2e source expectation * Bump package version to 0.5.30 --------- Co-authored-by: Codex <codex@openai.com>
39 lines
1.9 KiB
TypeScript
39 lines
1.9 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { normalizePlatformPath } from '../../packages/server/src/services/hermes/file-provider'
|
|
import { isPathWithin, relativePathFromBase } from '../../packages/server/src/services/hermes/hermes-path'
|
|
|
|
describe('file provider platform path normalization', () => {
|
|
it('converts MSYS drive paths to Windows absolute paths on Windows', () => {
|
|
expect(normalizePlatformPath('/c/Users/Administrator/Desktop/screenshot.png', 'win32'))
|
|
.toBe('C:\\Users\\Administrator\\Desktop\\screenshot.png')
|
|
expect(normalizePlatformPath('/d/tmp/report.txt', 'win32'))
|
|
.toBe('D:\\tmp\\report.txt')
|
|
})
|
|
|
|
it('leaves MSYS-style paths unchanged on non-Windows platforms', () => {
|
|
expect(normalizePlatformPath('/c/Users/Administrator/Desktop/screenshot.png', 'darwin'))
|
|
.toBe('/c/Users/Administrator/Desktop/screenshot.png')
|
|
expect(normalizePlatformPath('/c/Users/Administrator/Desktop/screenshot.png', 'linux'))
|
|
.toBe('/c/Users/Administrator/Desktop/screenshot.png')
|
|
})
|
|
|
|
it('leaves normal Windows paths unchanged', () => {
|
|
expect(normalizePlatformPath('C:\\Users\\Administrator\\Desktop\\screenshot.png', 'win32'))
|
|
.toBe('C:\\Users\\Administrator\\Desktop\\screenshot.png')
|
|
})
|
|
})
|
|
|
|
describe('Hermes path containment helpers', () => {
|
|
it('does not treat sibling paths with the same prefix as inside the base', () => {
|
|
expect(isPathWithin('/tmp/hermes-profile2/state.db', '/tmp/hermes-profile')).toBe(false)
|
|
expect(isPathWithin('/tmp/hermes-profile/state.db', '/tmp/hermes-profile')).toBe(true)
|
|
})
|
|
|
|
it('returns normalized relative paths only for children', () => {
|
|
expect(relativePathFromBase('/tmp/hermes-profile/logs/run.txt', '/tmp/hermes-profile'))
|
|
.toBe('logs/run.txt')
|
|
expect(relativePathFromBase('/tmp/hermes-profile2/logs/run.txt', '/tmp/hermes-profile'))
|
|
.toBeNull()
|
|
})
|
|
})
|