@bitseek/hermes-webui 0.1.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +213 -0
- package/bin/hermes-webui.mjs +588 -0
- package/package.json +25 -0
- package/scripts/sync-vendor.mjs +74 -0
- package/templates/launchd/com.bitseek.hermes-webui.plist +21 -0
- package/templates/systemd/hermes-webui.service +13 -0
- package/templates/windows/hermes-webui-task.ps1 +3 -0
- package/vendor/agent-frontend-shell/.bitseek-source.json +6 -0
- package/vendor/agent-frontend-shell/.dockerignore +7 -0
- package/vendor/agent-frontend-shell/.env.docker.example +89 -0
- package/vendor/agent-frontend-shell/.env.example +34 -0
- package/vendor/agent-frontend-shell/.github/FUNDING.yml +3 -0
- package/vendor/agent-frontend-shell/.github/workflows/browser-smoke.yml +42 -0
- package/vendor/agent-frontend-shell/.github/workflows/docker-smoke.yml +233 -0
- package/vendor/agent-frontend-shell/.github/workflows/native-windows-startup.yml +132 -0
- package/vendor/agent-frontend-shell/.github/workflows/release.yml +57 -0
- package/vendor/agent-frontend-shell/.github/workflows/tests.yml +88 -0
- package/vendor/agent-frontend-shell/.vscode/launch.json +59 -0
- package/vendor/agent-frontend-shell/.vscode/settings.json +13 -0
- package/vendor/agent-frontend-shell/AGENTS.md +80 -0
- package/vendor/agent-frontend-shell/ARCHITECTURE.md +1658 -0
- package/vendor/agent-frontend-shell/BUGS.md +52 -0
- package/vendor/agent-frontend-shell/CHANGELOG.md +7295 -0
- package/vendor/agent-frontend-shell/CONTRIBUTING.md +205 -0
- package/vendor/agent-frontend-shell/CONTRIBUTORS.md +107 -0
- package/vendor/agent-frontend-shell/DESIGN.md +173 -0
- package/vendor/agent-frontend-shell/Dockerfile +91 -0
- package/vendor/agent-frontend-shell/LICENSE +21 -0
- package/vendor/agent-frontend-shell/README-CUSTOM.md +76 -0
- package/vendor/agent-frontend-shell/README.md +705 -0
- package/vendor/agent-frontend-shell/ROADMAP.md +351 -0
- package/vendor/agent-frontend-shell/SPRINTS.md +147 -0
- package/vendor/agent-frontend-shell/TESTING.md +1932 -0
- package/vendor/agent-frontend-shell/THEMES.md +170 -0
- package/vendor/agent-frontend-shell/api/__init__.py +1 -0
- package/vendor/agent-frontend-shell/api/agent_health.py +392 -0
- package/vendor/agent-frontend-shell/api/agent_sessions.py +782 -0
- package/vendor/agent-frontend-shell/api/auth.py +592 -0
- package/vendor/agent-frontend-shell/api/background.py +87 -0
- package/vendor/agent-frontend-shell/api/clarify.py +238 -0
- package/vendor/agent-frontend-shell/api/commands.py +124 -0
- package/vendor/agent-frontend-shell/api/compression_anchor.py +134 -0
- package/vendor/agent-frontend-shell/api/config.py +5178 -0
- package/vendor/agent-frontend-shell/api/dashboard_probe.py +255 -0
- package/vendor/agent-frontend-shell/api/extensions.py +253 -0
- package/vendor/agent-frontend-shell/api/gateway_chat.py +435 -0
- package/vendor/agent-frontend-shell/api/gateway_watcher.py +230 -0
- package/vendor/agent-frontend-shell/api/goals.py +608 -0
- package/vendor/agent-frontend-shell/api/helpers.py +474 -0
- package/vendor/agent-frontend-shell/api/kanban_bridge.py +1255 -0
- package/vendor/agent-frontend-shell/api/metering.py +194 -0
- package/vendor/agent-frontend-shell/api/models.py +4210 -0
- package/vendor/agent-frontend-shell/api/oauth.py +770 -0
- package/vendor/agent-frontend-shell/api/onboarding.py +1046 -0
- package/vendor/agent-frontend-shell/api/passkeys.py +365 -0
- package/vendor/agent-frontend-shell/api/profiles.py +1499 -0
- package/vendor/agent-frontend-shell/api/providers.py +2175 -0
- package/vendor/agent-frontend-shell/api/request_diagnostics.py +160 -0
- package/vendor/agent-frontend-shell/api/rollback.py +320 -0
- package/vendor/agent-frontend-shell/api/routes.py +13990 -0
- package/vendor/agent-frontend-shell/api/run_journal.py +284 -0
- package/vendor/agent-frontend-shell/api/runner_client.py +156 -0
- package/vendor/agent-frontend-shell/api/runtime_adapter.py +431 -0
- package/vendor/agent-frontend-shell/api/session_discoverability.py +640 -0
- package/vendor/agent-frontend-shell/api/session_events.py +45 -0
- package/vendor/agent-frontend-shell/api/session_lifecycle.py +208 -0
- package/vendor/agent-frontend-shell/api/session_ops.py +207 -0
- package/vendor/agent-frontend-shell/api/session_recovery.py +655 -0
- package/vendor/agent-frontend-shell/api/skill_usage.py +32 -0
- package/vendor/agent-frontend-shell/api/startup.py +128 -0
- package/vendor/agent-frontend-shell/api/state_sync.py +187 -0
- package/vendor/agent-frontend-shell/api/streaming.py +7048 -0
- package/vendor/agent-frontend-shell/api/system_health.py +167 -0
- package/vendor/agent-frontend-shell/api/terminal.py +410 -0
- package/vendor/agent-frontend-shell/api/turn_journal.py +214 -0
- package/vendor/agent-frontend-shell/api/updates.py +1261 -0
- package/vendor/agent-frontend-shell/api/upload.py +322 -0
- package/vendor/agent-frontend-shell/api/usage.py +26 -0
- package/vendor/agent-frontend-shell/api/workspace.py +867 -0
- package/vendor/agent-frontend-shell/api/workspace_git.py +1261 -0
- package/vendor/agent-frontend-shell/api/worktrees.py +357 -0
- package/vendor/agent-frontend-shell/bootstrap.py +492 -0
- package/vendor/agent-frontend-shell/ctl.sh +427 -0
- package/vendor/agent-frontend-shell/docker-compose.custom.yml +26 -0
- package/vendor/agent-frontend-shell/docker-compose.three-container.yml +168 -0
- package/vendor/agent-frontend-shell/docker-compose.two-container.yml +147 -0
- package/vendor/agent-frontend-shell/docker-compose.yml +57 -0
- package/vendor/agent-frontend-shell/docker_init.bash +459 -0
- package/vendor/agent-frontend-shell/docs/CONTRACTS.md +207 -0
- package/vendor/agent-frontend-shell/docs/EXTENSIONS.md +212 -0
- package/vendor/agent-frontend-shell/docs/ISSUES.md +23 -0
- package/vendor/agent-frontend-shell/docs/UIUX-GUIDE.md +196 -0
- package/vendor/agent-frontend-shell/docs/advanced-chat-setup.md +83 -0
- package/vendor/agent-frontend-shell/docs/docker.md +337 -0
- package/vendor/agent-frontend-shell/docs/onboarding-agent-checklist.md +207 -0
- package/vendor/agent-frontend-shell/docs/onboarding.md +202 -0
- package/vendor/agent-frontend-shell/docs/remote-access.md +75 -0
- package/vendor/agent-frontend-shell/docs/rfcs/README.md +53 -0
- package/vendor/agent-frontend-shell/docs/rfcs/agent-source-boundary.md +70 -0
- package/vendor/agent-frontend-shell/docs/rfcs/canonical-session-resolution.md +124 -0
- package/vendor/agent-frontend-shell/docs/rfcs/hermes-run-adapter-contract.md +1079 -0
- package/vendor/agent-frontend-shell/docs/rfcs/turn-journal.md +195 -0
- package/vendor/agent-frontend-shell/docs/rfcs/webui-run-state-consistency-contract.md +157 -0
- package/vendor/agent-frontend-shell/docs/supervisor.md +280 -0
- package/vendor/agent-frontend-shell/docs/troubleshooting.md +132 -0
- package/vendor/agent-frontend-shell/docs/ui-ux/index.html +863 -0
- package/vendor/agent-frontend-shell/docs/ui-ux/two-stage-proposal.html +768 -0
- package/vendor/agent-frontend-shell/docs/why-hermes.md +489 -0
- package/vendor/agent-frontend-shell/docs/workspace-git.md +92 -0
- package/vendor/agent-frontend-shell/docs/wsl-autostart.md +126 -0
- package/vendor/agent-frontend-shell/eslint.runtime-guard.config.mjs +35 -0
- package/vendor/agent-frontend-shell/extensions/bitseek-design-system.md +330 -0
- package/vendor/agent-frontend-shell/extensions/branding/assets/apple-touch-icon.png +0 -0
- package/vendor/agent-frontend-shell/extensions/branding/assets/empty-logo.svg +739 -0
- package/vendor/agent-frontend-shell/extensions/branding/assets/favicon-192.png +0 -0
- package/vendor/agent-frontend-shell/extensions/branding/assets/favicon-32.png +0 -0
- package/vendor/agent-frontend-shell/extensions/branding/assets/favicon-512.png +0 -0
- package/vendor/agent-frontend-shell/extensions/branding/assets/favicon-512.svg +745 -0
- package/vendor/agent-frontend-shell/extensions/branding/assets/favicon.ico +0 -0
- package/vendor/agent-frontend-shell/extensions/branding/assets/favicon.svg +745 -0
- package/vendor/agent-frontend-shell/extensions/branding/assets/titlebar-icon-v2.svg +751 -0
- package/vendor/agent-frontend-shell/extensions/branding/assets/titlebar-icon-v3.svg +739 -0
- package/vendor/agent-frontend-shell/extensions/branding/assets/titlebar-icon.svg +745 -0
- package/vendor/agent-frontend-shell/extensions/branding/branding.js +112 -0
- package/vendor/agent-frontend-shell/extensions/branding/config.json +14 -0
- package/vendor/agent-frontend-shell/extensions/branding/manifest.json +53 -0
- package/vendor/agent-frontend-shell/extensions/index.js +67 -0
- package/vendor/agent-frontend-shell/extensions/loader/hermes-loader.js +77 -0
- package/vendor/agent-frontend-shell/extensions/manifest.json +16 -0
- package/vendor/agent-frontend-shell/extensions/pages/ai-teammates/page.css +333 -0
- package/vendor/agent-frontend-shell/extensions/pages/ai-teammates/page.js +487 -0
- package/vendor/agent-frontend-shell/extensions/pages/manifest.json +6 -0
- package/vendor/agent-frontend-shell/extensions/pages/registry.css +56 -0
- package/vendor/agent-frontend-shell/extensions/pages/registry.js +302 -0
- package/vendor/agent-frontend-shell/extensions/themes/bitseek/index.css +93 -0
- package/vendor/agent-frontend-shell/extensions/themes/bitseek/index.js +98 -0
- package/vendor/agent-frontend-shell/install.sh +63 -0
- package/vendor/agent-frontend-shell/mcp_server.py +567 -0
- package/vendor/agent-frontend-shell/package.json +12 -0
- package/vendor/agent-frontend-shell/pyproject.toml +56 -0
- package/vendor/agent-frontend-shell/pytest.ini +3 -0
- package/vendor/agent-frontend-shell/requirements.txt +5 -0
- package/vendor/agent-frontend-shell/server.py +624 -0
- package/vendor/agent-frontend-shell/start.ps1 +210 -0
- package/vendor/agent-frontend-shell/start.sh +65 -0
- package/vendor/agent-frontend-shell/static/apple-touch-icon.png +0 -0
- package/vendor/agent-frontend-shell/static/boot.js +1990 -0
- package/vendor/agent-frontend-shell/static/commands.js +1402 -0
- package/vendor/agent-frontend-shell/static/favicon-192.png +0 -0
- package/vendor/agent-frontend-shell/static/favicon-32.png +0 -0
- package/vendor/agent-frontend-shell/static/favicon-512.png +0 -0
- package/vendor/agent-frontend-shell/static/favicon-512.svg +18 -0
- package/vendor/agent-frontend-shell/static/favicon.ico +0 -0
- package/vendor/agent-frontend-shell/static/favicon.svg +20 -0
- package/vendor/agent-frontend-shell/static/i18n.js +15389 -0
- package/vendor/agent-frontend-shell/static/icons.js +92 -0
- package/vendor/agent-frontend-shell/static/index.html +1506 -0
- package/vendor/agent-frontend-shell/static/login.js +177 -0
- package/vendor/agent-frontend-shell/static/manifest.json +53 -0
- package/vendor/agent-frontend-shell/static/messages.js +3521 -0
- package/vendor/agent-frontend-shell/static/onboarding.js +800 -0
- package/vendor/agent-frontend-shell/static/panels.js +7995 -0
- package/vendor/agent-frontend-shell/static/pwa-startup.js +83 -0
- package/vendor/agent-frontend-shell/static/sessions.js +5165 -0
- package/vendor/agent-frontend-shell/static/style.css +4774 -0
- package/vendor/agent-frontend-shell/static/sw.js +173 -0
- package/vendor/agent-frontend-shell/static/terminal.js +632 -0
- package/vendor/agent-frontend-shell/static/ui.js +8997 -0
- package/vendor/agent-frontend-shell/static/vendor/js-yaml/4.1.0/js-yaml.min.js +2 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_AMS-Regular.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_AMS-Regular.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Fraktur-Bold.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Fraktur-Regular.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-Bold.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-Bold.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-Bold.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-BoldItalic.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-Italic.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-Italic.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-Italic.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-Regular.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-Regular.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-Regular.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Math-BoldItalic.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Math-Italic.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Math-Italic.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Math-Italic.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_SansSerif-Bold.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_SansSerif-Italic.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_SansSerif-Regular.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Script-Regular.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Script-Regular.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Script-Regular.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size1-Regular.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size1-Regular.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size2-Regular.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size2-Regular.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size3-Regular.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size3-Regular.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size4-Regular.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size4-Regular.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Typewriter-Regular.woff +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/katex.min.css +1 -0
- package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/katex.min.js +1 -0
- package/vendor/agent-frontend-shell/static/vendor/smd.min.js +29 -0
- package/vendor/agent-frontend-shell/static/workspace.js +680 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
name: Tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
branches: [master]
|
|
6
|
+
push:
|
|
7
|
+
branches: [master]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
# Forward-looking Python lint gate (ruff). The Python twin of the ESLint runtime
|
|
11
|
+
# guard. Runs the curated [tool.ruff] ruleset (E9 + F + B) but only on lines this
|
|
12
|
+
# PR adds/modifies vs the merge-base — so it keeps NEW code clean without demanding
|
|
13
|
+
# a reformat of the existing tree's cosmetic backlog (#3273). Fast, fails early.
|
|
14
|
+
lint:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
with:
|
|
19
|
+
# Need history so the gate can diff against the merge-base with master.
|
|
20
|
+
fetch-depth: 0
|
|
21
|
+
|
|
22
|
+
- name: Set up Python
|
|
23
|
+
uses: actions/setup-python@v5
|
|
24
|
+
with:
|
|
25
|
+
python-version: '3.12'
|
|
26
|
+
|
|
27
|
+
- name: Install ruff
|
|
28
|
+
run: pip install ruff
|
|
29
|
+
|
|
30
|
+
- name: Ensure origin/master ref is available for the diff gate
|
|
31
|
+
run: git fetch --no-tags --depth=1 origin master || true
|
|
32
|
+
|
|
33
|
+
- name: Ruff forward gate (new/changed lines only)
|
|
34
|
+
run: python3 scripts/ruff_lint.py --diff origin/master
|
|
35
|
+
|
|
36
|
+
- name: Ruff whole-tree report (informational — never blocks)
|
|
37
|
+
if: always()
|
|
38
|
+
run: python3 scripts/ruff_lint.py --all
|
|
39
|
+
|
|
40
|
+
test:
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
strategy:
|
|
43
|
+
# Don't cancel the other shards/versions when one fails — we want the full
|
|
44
|
+
# failure picture across the matrix in a single run.
|
|
45
|
+
fail-fast: false
|
|
46
|
+
matrix:
|
|
47
|
+
python-version: ['3.11', '3.12', '3.13']
|
|
48
|
+
# Split the suite across 3 parallel shards per Python version. pytest-shard
|
|
49
|
+
# partitions tests deterministically by test-id hash; the suite was made
|
|
50
|
+
# shard-safe (no cross-test state leakage) so every shard passes
|
|
51
|
+
# independently. See docs/agent-memory note on test-suite shard-safety.
|
|
52
|
+
# NOTE: pytest-shard is 0-indexed — shard ids must be 0..num_shards-1.
|
|
53
|
+
# Using 1-based ids would crash the out-of-range job AND silently skip
|
|
54
|
+
# shard 0's tests.
|
|
55
|
+
shard: [0, 1, 2]
|
|
56
|
+
|
|
57
|
+
steps:
|
|
58
|
+
- uses: actions/checkout@v4
|
|
59
|
+
|
|
60
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
61
|
+
uses: actions/setup-python@v5
|
|
62
|
+
with:
|
|
63
|
+
python-version: ${{ matrix.python-version }}
|
|
64
|
+
cache: 'pip'
|
|
65
|
+
cache-dependency-path: |
|
|
66
|
+
**/setup.cfg
|
|
67
|
+
**/requirements*.txt
|
|
68
|
+
**/pyproject.toml
|
|
69
|
+
|
|
70
|
+
- name: Install dependencies
|
|
71
|
+
run: |
|
|
72
|
+
python -m pip install --upgrade pip
|
|
73
|
+
pip install "pyyaml>=6.0" pytest pytest-timeout pytest-asyncio pytest-shard
|
|
74
|
+
# ruff is installed so tests/test_ruff_forward_lint.py runs its E9/F821
|
|
75
|
+
# tree-clean assertions in-suite (mirrors how eslint is available for
|
|
76
|
+
# tests/test_static_js_runtime_lint.py). If install fails the test
|
|
77
|
+
# skips cleanly — it never blocks the matrix.
|
|
78
|
+
pip install ruff || echo "ruff install failed — test_ruff_forward_lint.py will skip"
|
|
79
|
+
# Install the `mcp` package so tests/test_mcp_server.py runs in CI.
|
|
80
|
+
# The package is an optional runtime dep of mcp_server.py — users
|
|
81
|
+
# who run the MCP integration install it themselves; CI installs
|
|
82
|
+
# it so test coverage exists. If mcp install fails (Python 3.13
|
|
83
|
+
# wheel not yet available, etc.), tests/test_mcp_server.py uses
|
|
84
|
+
# importorskip and the matrix stays green.
|
|
85
|
+
pip install mcp || echo "mcp install failed — test_mcp_server.py will importorskip"
|
|
86
|
+
|
|
87
|
+
- name: Run tests (shard ${{ matrix.shard }} of 3)
|
|
88
|
+
run: pytest tests/ -v --timeout=60 --shard-id=${{ matrix.shard }} --num-shards=3
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.2.0",
|
|
3
|
+
"configurations": [
|
|
4
|
+
{
|
|
5
|
+
"name": "▶ Server (直接启动)",
|
|
6
|
+
"type": "debugpy",
|
|
7
|
+
"request": "launch",
|
|
8
|
+
"program": "${workspaceFolder}/server.py",
|
|
9
|
+
"console": "integratedTerminal",
|
|
10
|
+
"cwd": "${workspaceFolder}",
|
|
11
|
+
"envFile": "${workspaceFolder}/.env",
|
|
12
|
+
"justMyCode": false
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"name": "▶ Server (含 extensions)",
|
|
16
|
+
"type": "debugpy",
|
|
17
|
+
"request": "launch",
|
|
18
|
+
"program": "${workspaceFolder}/server.py",
|
|
19
|
+
"console": "integratedTerminal",
|
|
20
|
+
"cwd": "${workspaceFolder}",
|
|
21
|
+
"envFile": "${workspaceFolder}/.env",
|
|
22
|
+
"env": {
|
|
23
|
+
"HERMES_WEBUI_EXTENSION_DIR": "${workspaceFolder}/extensions"
|
|
24
|
+
},
|
|
25
|
+
"justMyCode": false
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"name": "▶ Bootstrap (完整启动)",
|
|
29
|
+
"type": "debugpy",
|
|
30
|
+
"request": "launch",
|
|
31
|
+
"program": "${workspaceFolder}/bootstrap.py",
|
|
32
|
+
"args": ["--no-browser"],
|
|
33
|
+
"console": "integratedTerminal",
|
|
34
|
+
"cwd": "${workspaceFolder}",
|
|
35
|
+
"envFile": "${workspaceFolder}/.env",
|
|
36
|
+
"justMyCode": false
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "▶ 当前文件",
|
|
40
|
+
"type": "debugpy",
|
|
41
|
+
"request": "launch",
|
|
42
|
+
"program": "${file}",
|
|
43
|
+
"console": "integratedTerminal",
|
|
44
|
+
"cwd": "${workspaceFolder}",
|
|
45
|
+
"envFile": "${workspaceFolder}/.env",
|
|
46
|
+
"justMyCode": false
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"name": "🔗 附加到已运行进程 (5678)",
|
|
50
|
+
"type": "debugpy",
|
|
51
|
+
"request": "attach",
|
|
52
|
+
"connect": {
|
|
53
|
+
"host": "127.0.0.1",
|
|
54
|
+
"port": 5678
|
|
55
|
+
},
|
|
56
|
+
"justMyCode": false
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"python.analysis.extraPaths": [
|
|
3
|
+
"${workspaceFolder}"
|
|
4
|
+
],
|
|
5
|
+
"python.analysis.typeCheckingMode": "off",
|
|
6
|
+
"python.analysis.diagnosticMode": "openFilesOnly",
|
|
7
|
+
"editor.rulers": [88, 120],
|
|
8
|
+
"files.exclude": {
|
|
9
|
+
"**/__pycache__": true,
|
|
10
|
+
"**/*.pyc": true,
|
|
11
|
+
".git": true
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Agent instructions for Hermes WebUI
|
|
2
|
+
|
|
3
|
+
This file is the shared entry point for AI assistants working in this
|
|
4
|
+
repository. Keep it project-specific and safe to publish. Do not put personal
|
|
5
|
+
machine setup, private network details, credentials, tokens, or local-only
|
|
6
|
+
workflow notes here.
|
|
7
|
+
|
|
8
|
+
## Read first
|
|
9
|
+
|
|
10
|
+
Before making changes, read:
|
|
11
|
+
|
|
12
|
+
1. `README.md`
|
|
13
|
+
2. `CONTRIBUTING.md`
|
|
14
|
+
3. `docs/CONTRACTS.md`
|
|
15
|
+
4. `CHANGELOG.md`
|
|
16
|
+
|
|
17
|
+
For architecture, testing, or setup work, also read the matching reference:
|
|
18
|
+
|
|
19
|
+
- `ARCHITECTURE.md` for design constraints and current module layout
|
|
20
|
+
- `TESTING.md` for local verification commands and manual test guidance
|
|
21
|
+
- `docs/onboarding.md` for first-run onboarding behavior
|
|
22
|
+
- `docs/troubleshooting.md` for diagnostic flows
|
|
23
|
+
- `docs/rfcs/README.md` for larger RFCs and state/durability contracts
|
|
24
|
+
|
|
25
|
+
For UI or UX work, read `docs/UIUX-GUIDE.md` and `DESIGN.md` before
|
|
26
|
+
changing layout, interaction flow, themes, chat rendering, or composer chrome.
|
|
27
|
+
|
|
28
|
+
## Onboarding and reinstall support
|
|
29
|
+
|
|
30
|
+
If the task involves install, reinstall, bootstrap, first-run onboarding,
|
|
31
|
+
provider setup, local model server setup, Docker onboarding, WSL onboarding, or
|
|
32
|
+
support for a failed first run, read `docs/onboarding-agent-checklist.md`
|
|
33
|
+
before running commands or inspecting logs.
|
|
34
|
+
|
|
35
|
+
Follow that checklist's safety rules:
|
|
36
|
+
|
|
37
|
+
- use isolated `HERMES_HOME` and `HERMES_WEBUI_STATE_DIR` for trials unless the
|
|
38
|
+
human explicitly asks to use real state
|
|
39
|
+
- do not delete or overwrite a real `~/.hermes` directory without explicit
|
|
40
|
+
approval
|
|
41
|
+
- do not print API keys, OAuth tokens, cookies, full `.env` files, full
|
|
42
|
+
`auth.json` files, or password hashes
|
|
43
|
+
- collect non-secret status and log evidence before recommending a fix
|
|
44
|
+
|
|
45
|
+
## Contribution style
|
|
46
|
+
|
|
47
|
+
- Keep one logical change per PR; split unrelated refactors or cleanup.
|
|
48
|
+
- Read `docs/CONTRACTS.md` and the linked contract/RFC for the touched
|
|
49
|
+
subsystem before editing.
|
|
50
|
+
- Prefer the existing Python + vanilla JavaScript structure. Do not add
|
|
51
|
+
dependencies, build tools, frameworks, or long-lived processes without clear
|
|
52
|
+
justification and a rollback story.
|
|
53
|
+
- Update docs when changing setup, onboarding, runtime behavior, architecture,
|
|
54
|
+
testing guidance, or user-facing workflows.
|
|
55
|
+
- Update `CHANGELOG.md` for user-visible behavior, setup, workflow, or
|
|
56
|
+
documentation changes that should be release-note ready.
|
|
57
|
+
- For UI or UX changes, include before/after evidence and test relevant
|
|
58
|
+
desktop, narrow, and mobile states.
|
|
59
|
+
- For behavior changes, add or update automated tests where practical and list
|
|
60
|
+
the manual verification performed.
|
|
61
|
+
- For runtime, streaming, recovery, replay, compression, or sidebar metadata
|
|
62
|
+
changes, name the state layer being mutated and prove the relevant invariant.
|
|
63
|
+
|
|
64
|
+
## Local state and secrets
|
|
65
|
+
|
|
66
|
+
Hermes WebUI can read and write real agent state, sessions, workspaces,
|
|
67
|
+
credentials, and cron data. Treat local validation as potentially destructive
|
|
68
|
+
unless you have confirmed the active state directories.
|
|
69
|
+
|
|
70
|
+
Prefer isolated trial state for experiments:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
HERMES_HOME=/tmp/hermes-webui-agent-home \
|
|
74
|
+
HERMES_WEBUI_STATE_DIR=/tmp/hermes-webui-agent-state \
|
|
75
|
+
HERMES_WEBUI_PORT=8789 \
|
|
76
|
+
python3 bootstrap.py
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Do not include private machine instructions in this tracked file. Use a
|
|
80
|
+
git-ignored local note for personal workflow details.
|