Reconcile plugin declarations and validation through PM's atomic generation publication; preserve external runtimes, target markers, and conflict refusal. Keep one source-update completion owner and port upstream lifecycle changes to the PM desktop/runtime paths.
475 lines
16 KiB
Plaintext
475 lines
16 KiB
Plaintext
|
|
!apps/desktop/src/global.d.ts
|
|
!apps/desktop/src/plugins/*/plugin.js
|
|
!apps/desktop/src/vite-env.d.ts
|
|
!hermes_cli/data/
|
|
# — ignore so `git status` stays clean and update's autostash skips them.
|
|
# (launch-time stale-bytecode sweep). Runtime state, never a code change.
|
|
# `data/` pattern above would otherwise swallow it.
|
|
# `npm run sync-assets` (see web/package.json).
|
|
# also created in-repo when an agent operates in this checkout). Plans, audit
|
|
# and `hermes update`'s untracked autostash does not treat it as a local edit (#66189 / #54855).
|
|
# automation-blueprints-index.json is a build artifact emitted by
|
|
# bootstrap installer. It is Hermes-managed runtime state, never a code change —
|
|
# Bundled community plugin index seed (shipped as package data) — the bare
|
|
# by `hermes update` / launch-time self-heal. Runtime state, never a code change
|
|
# by accident via 3a69e34702, removed in the #72002 salvage).
|
|
# Checkout fingerprint the __pycache__ tree was last validated against
|
|
# CLI config (may contain sensitive SSH paths)
|
|
# committed to the repo root. See the hermes-release skill.
|
|
# Cross-process web UI build lock (flock target, always empty)
|
|
# cut (passed to `gh release create --notes-file`); the GitHub Release itself
|
|
# Desktop demo-run scratch output (hermes writes demo/*.txt during recorded
|
|
# Desktop/bootstrap install marker written into the managed checkout root by the
|
|
# e.g. hermes-bots): plugin.js IS the source, not tsc output. No .tsx
|
|
# every build).
|
|
# EXCEPT bundled plain-ESM plugin entries (adopted SDK-consumer plugins,
|
|
# git for the same reason as skills-index.json (large, generated, change
|
|
# ignore it so `hermes update`'s `git stash push --include-untracked` does not
|
|
# image-provider (fal.media) URL — they are NEVER committed to the repo. The
|
|
# infographic-check CI job is what actually enforces this.
|
|
# Installer-written method stamp in the managed checkout root (scripts/install.sh).
|
|
# interrupted; consumed by launch-time recovery. Never commit it (was tracked
|
|
# Interrupted-update breadcrumb + recovery lock written next to the shared venv
|
|
# Local editor / agent tooling (machine-specific; keep in global config, not the repo)
|
|
# logs, and per-session caches are never artifacts of the codebase.
|
|
# Nix
|
|
# No trailing slash: also matches node_modules SYMLINKS (worktrees often
|
|
# Per-release changelog drafts. These exist only transiently during a release
|
|
# Persistent dev sandbox dir (scripts/dev-sandbox.sh --persistent)
|
|
# Playwright visual regression baselines — cached from main in CI, not committed
|
|
# PR body is the archive. See the hermes-agent-dev skill's
|
|
# PR infographics are rendered locally and embedded in PR descriptions via the
|
|
# pr-infographic-workflow reference (storage rule + lapse #8 / #COMMIT-1).
|
|
# Private keys
|
|
# regenerated by scripts/tool_search_livetest.py. Never an artifact of the repo.
|
|
# Release script temp files
|
|
# Repo-root build/debug artifacts that must never be committed
|
|
# resolves the stale .js OVER the .tsx — never track these)
|
|
# Runtime marker written by hermes update when a lazy dependency refresh is
|
|
# Runtime metadata only — never a code change. Ignore so `git status` stays clean
|
|
# Sandbox dirs used by the install/update E2E (tests/install/). The suffix is
|
|
# sibling exists, so the stale-shadow hazard above cannot apply.
|
|
# sidestepped by an `infograficos/` directory (#70552). .gitignore is only
|
|
# Skills Hub state (lives in ~/.hermes/skills/.hub/ at runtime, but just in case)
|
|
# skills.json + skills-meta.json are build artifacts emitted by
|
|
# slip into a commit and break `npm ci` on CI with ENOTDIR).
|
|
# Spelling variants are listed because a single `infographic/` pattern was
|
|
# stores the published notes. They are not a build artifact and must never be
|
|
# symlink node_modules to the main checkout; the dir-only pattern let one
|
|
# the first line of defence and cannot stop `git add -f` at all — the
|
|
# the route name, so each route gets its own tree and two can run at once.
|
|
# Tool Search live-test harness output — non-deterministic model transcripts,
|
|
# treat it as a local edit and autostash it on every run (#38529).
|
|
# tsc-emitted artifacts (a stray `tsc -b` compiles into src/, and vite then
|
|
# walkthroughs). Throwaway artifacts, never part of the app.
|
|
# Web UI assets — synced from @nous-research/ui at build time via
|
|
# Web UI build output
|
|
# website/scripts/extract-automation-blueprints.py during prebuild.
|
|
# website/scripts/extract-skills.py during prebuild — keep them out of
|
|
# Working directory for the Hermes Agent's session state (~/.hermes/ at runtime;
|
|
#
|
|
%SystemDrive%/
|
|
*.pem
|
|
*.ppk
|
|
*.pyc*
|
|
*.tsbuildinfo
|
|
*-snapshots/
|
|
.act-sandbox-agent.*
|
|
.build/
|
|
.cache/
|
|
.bytecode-fingerprint
|
|
.bytecode-fingerprint.tmp
|
|
.codex/
|
|
.cursor/
|
|
.direnv/
|
|
.DS_Store
|
|
.env
|
|
.env.development
|
|
.env.development.local
|
|
.env.local
|
|
.env.production.local
|
|
.env.test
|
|
.env.test.local
|
|
.gemini/
|
|
.hermes/
|
|
.hermes-bootstrap-complete
|
|
.hermes-docker/
|
|
.hermes-sandbox/
|
|
.hermes-sandbox-e2e*/
|
|
.lazy-refresh-incomplete
|
|
.mcp.json
|
|
.nix-stamps/
|
|
.notebooklm-cli-venv/
|
|
.notebooklm-home/
|
|
.notebooklm-playwright/
|
|
.op.env
|
|
.pip-cache/
|
|
.pytest_cache/
|
|
.pytest-cache/
|
|
.release_notes.md
|
|
.skills_prompt_snapshot.json
|
|
.update-incomplete
|
|
.update-incomplete.lock
|
|
.uv-cache/
|
|
.venv
|
|
.venv/
|
|
.vscode/
|
|
.web_ui_build.lock
|
|
.worktrees/
|
|
.zed/
|
|
/*.png.bak
|
|
/.hermes-runtime/
|
|
/.install_method
|
|
/_pycache/
|
|
/bin/
|
|
/pm/.lock.json.lock
|
|
/default.tar.gz
|
|
/log.txt
|
|
/sqlite_leak_fix.png
|
|
/venv.old/
|
|
/venv.stale.runtime-*/
|
|
/venv/
|
|
__pycache__/
|
|
__pycache__/model_tools.cpython-310.pyc
|
|
__pycache__/web_tools.cpython-310.pyc
|
|
act/
|
|
agent-browser/
|
|
apps/desktop/build/
|
|
apps/desktop/demo/
|
|
apps/desktop/dist/
|
|
apps/desktop/release/
|
|
apps/desktop/src/**/*.d.ts
|
|
apps/desktop/src/**/*.js
|
|
apps/desktop/src/**/*.js.map
|
|
apps/shared/src/**/*.d.ts
|
|
apps/shared/src/**/*.js
|
|
apps/shared/src/**/*.js.map
|
|
browser-use/
|
|
cli-config.yaml
|
|
compose.hermes.local.yml
|
|
config/mcporter.json
|
|
data/
|
|
data/*
|
|
docs/superpowers/*
|
|
environments/benchmarks/evals/
|
|
examples/
|
|
export*
|
|
hermes-*/*
|
|
hermes_agent.egg-info/
|
|
hermes_cli/scripts/
|
|
hermes_cli/tui_dist/*
|
|
hermes_cli/web_dist/
|
|
ignored/
|
|
images/
|
|
infografico/
|
|
infograficos/
|
|
infographic/
|
|
infographics/
|
|
logs/
|
|
mini-swe-agent/
|
|
models-dev-upstream/
|
|
native/fts5_cjk/*.so
|
|
node_modules
|
|
opencode.json
|
|
playwright-report/
|
|
privvy*
|
|
RELEASE_v*.md
|
|
result
|
|
run_datagen_kimik2-thinking.sh
|
|
run_datagen_megascience_glm4-6.sh
|
|
run_datagen_sonnet.sh
|
|
source-data/*
|
|
run_datagen_megascience_glm4-6.sh
|
|
data/*
|
|
MagicMock/
|
|
# No trailing slash: also matches node_modules SYMLINKS (worktrees often
|
|
# symlink node_modules to the main checkout; the dir-only pattern let one
|
|
# slip into a commit and break `npm ci` on CI with ENOTDIR).
|
|
node_modules
|
|
browser-use/
|
|
agent-browser/
|
|
# Private keys
|
|
*.ppk
|
|
*.pem
|
|
privvy*
|
|
images/
|
|
__pycache__/
|
|
hermes_agent.egg-info/
|
|
wandb/
|
|
testlogs
|
|
playwright-report/
|
|
test-results/
|
|
# Playwright visual regression baselines — cached from main in CI, not committed
|
|
*-snapshots/
|
|
|
|
# CLI config (may contain sensitive SSH paths)
|
|
cli-config.yaml
|
|
|
|
# Skills Hub state (lives in ~/.hermes/skills/.hub/ at runtime, but just in case)
|
|
skills/.hub/
|
|
ignored/
|
|
.worktrees/
|
|
environments/benchmarks/evals/
|
|
|
|
# Web UI build output
|
|
hermes_cli/web_dist/
|
|
# Cross-process web UI build lock (flock target, always empty)
|
|
.web_ui_build.lock
|
|
apps/desktop/build/
|
|
apps/desktop/dist/
|
|
|
|
# tsc-emitted artifacts (a stray `tsc -b` compiles into src/, and vite then
|
|
# resolves the stale .js OVER the .tsx — never track these)
|
|
apps/desktop/src/**/*.js
|
|
apps/desktop/src/**/*.js.map
|
|
apps/desktop/src/**/*.d.ts
|
|
# EXCEPT bundled plain-ESM plugin entries (adopted SDK-consumer plugins,
|
|
# e.g. hermes-bots): plugin.js IS the source, not tsc output. No .tsx
|
|
# sibling exists, so the stale-shadow hazard above cannot apply.
|
|
!apps/desktop/src/plugins/*/plugin.js
|
|
!apps/desktop/src/global.d.ts
|
|
!apps/desktop/src/vite-env.d.ts
|
|
|
|
# Build/debug artifacts that must never be committed
|
|
/log.txt
|
|
/sqlite_leak_fix.png
|
|
/*.png.bak
|
|
*.tar.gz
|
|
*.tgz
|
|
apps/shared/src/**/*.js
|
|
apps/shared/src/**/*.js.map
|
|
apps/shared/src/**/*.d.ts
|
|
apps/desktop/release/
|
|
# stage-and-swap Desktop rebuild output (#86443); removed after the swap, but
|
|
# a killed build must not leave the checkout dirty
|
|
apps/desktop/.staging-*/
|
|
*.tsbuildinfo
|
|
|
|
# Web UI assets — synced from @nous-research/ui at build time via
|
|
# `npm run sync-assets` (see web/package.json).
|
|
web/public/fonts/
|
|
web/public/ds-assets/
|
|
|
|
# Release script temp files
|
|
.release_notes.md
|
|
mini-swe-agent/
|
|
|
|
# Nix
|
|
.direnv/
|
|
.nix-stamps/
|
|
result
|
|
website/static/api/skills-index.json
|
|
# skills.json + skills-meta.json are build artifacts emitted by
|
|
# website/scripts/extract-skills.py during prebuild — keep them out of
|
|
# git for the same reason as skills-index.json (large, generated, change
|
|
# every build).
|
|
website/static/api/skills.json
|
|
website/static/api/skills-meta.json
|
|
# Plugin catalog JSON is generated from plugin-catalog/ during prebuild.
|
|
website/static/api/plugins.json
|
|
website/static/api/plugin-stars.json
|
|
website/static/api/plugin-catalog.json
|
|
website/static/api/plugins-meta.json
|
|
# automation-blueprints-index.json is a build artifact emitted by
|
|
# website/scripts/extract-automation-blueprints.py during prebuild.
|
|
website/static/api/automation-blueprints-index.json
|
|
models-dev-upstream/
|
|
|
|
# Local editor / agent tooling (machine-specific; keep in global config, not the repo)
|
|
.codex/
|
|
.cursor/
|
|
.gemini/
|
|
.zed/
|
|
.mcp.json
|
|
opencode.json
|
|
config/mcporter.json
|
|
|
|
hermes_cli/tui_dist/*
|
|
hermes_cli/scripts/
|
|
docs/superpowers/*
|
|
# Working directory for the Hermes Agent's session state (~/.hermes/ at runtime;
|
|
# also created in-repo when an agent operates in this checkout). Plans, audit
|
|
# logs, and per-session caches are never artifacts of the codebase.
|
|
.hermes/
|
|
|
|
# Desktop/bootstrap install marker written into the managed checkout root by the
|
|
# bootstrap installer. It is Hermes-managed runtime state, never a code change —
|
|
# ignore it so `hermes update`'s `git stash push --include-untracked` does not
|
|
# treat it as a local edit and autostash it on every run (#38529).
|
|
.hermes-bootstrap-complete
|
|
|
|
# Flat-install runtime state (checkout root == $HERMES_HOME, e.g. installs made
|
|
# with HERMES_INSTALL_DIR=$HERMES_HOME or by older installers): every root-level
|
|
# SQLite store (state.db, kanban.db, response_store.db, ...) with its
|
|
# WAL/SHM/journal sidecars and every dot-suffixed `<db>.db.*` runtime artifact
|
|
# (retired-WAL capture dirs, quarantine/repair/rebuild/maintenance/init/dispatch
|
|
# lock files, the repair-attempts ledger, malformed-backup copies — a swept lock
|
|
# path is re-created on a new inode and a second exclusive flock succeeds while
|
|
# the first holder is still live, #112974), the legacy transcripts,
|
|
# the cron job store (jobs.json), its lock/heartbeat/output files and all three
|
|
# cron SQLite stores (executions/deliveries/notepad, WAL-mode like the root
|
|
# ones), gateway lock/pid/state files and per-launch markers, cache/spill
|
|
# directories, and the profile's own config/credential/
|
|
# memory/profile/pairing roots, the pre-update backups (the very copies a
|
|
# swept state.db is restored from) and the secret vault are Hermes-managed
|
|
# runtime state, never code changes. (`*-snapshots/` above already covers state-snapshots/.)
|
|
# Ignore them so `hermes update`'s `git stash push --include-untracked` cannot
|
|
# sweep the live state.db/-wal into the stash and unlink it under the running
|
|
# gateway (#110648). Nested installs keep all of this under $HERMES_HOME outside
|
|
# the checkout, where the `.hermes/` rule above already applies.
|
|
/*.db
|
|
/*.db-wal
|
|
/*.db-shm
|
|
/*.db-journal
|
|
/*.db.*
|
|
/gateway/discord_message_recovery.db*
|
|
/sessions/
|
|
/browser-profile/
|
|
/cron/*.db
|
|
/cron/*.db-wal
|
|
/cron/*.db-shm
|
|
/cron/*.db-journal
|
|
/cron/*.db.*
|
|
/cron/jobs.json
|
|
/cron/.jobs.lock
|
|
/cron/ticker_heartbeat
|
|
/cron/output/
|
|
/cron.pid
|
|
/gateway.lock
|
|
/gateway.pid
|
|
/gateway_state.json
|
|
/gateway-starts.log
|
|
/processes.json
|
|
/.update_check
|
|
/.clean_shutdown
|
|
/active_profile
|
|
/.hermes_history
|
|
/slack_tokens.json
|
|
/hook_outputs/
|
|
/hooks/
|
|
/cache/
|
|
/checkpoints/
|
|
/pending_messages/
|
|
/plugin-data/
|
|
/kanban/
|
|
/config.yaml
|
|
/auth.json
|
|
/auth.lock
|
|
/auth/
|
|
/.anthropic_oauth.json
|
|
/google_token.json
|
|
/google_oauth_pending.json
|
|
/webhook_subscriptions.json
|
|
/channel_directory.json
|
|
/channel_aliases.json
|
|
/feishu_comment_pairing.json
|
|
/memories/
|
|
/profiles/
|
|
/credentials/
|
|
/mcp-tokens/
|
|
/pairing/
|
|
/platforms/
|
|
/backups/
|
|
/vault.key
|
|
/vault.json.enc
|
|
|
|
# Persistent dev sandbox dir (scripts/dev-sandbox.sh --persistent)
|
|
.hermes-sandbox/
|
|
# Sandbox dirs used by the install/update E2E (tests/install/). The suffix is
|
|
# the route name, so each route gets its own tree and two can run at once.
|
|
.hermes-sandbox-e2e*/
|
|
|
|
# Interrupted-update breadcrumb + recovery lock written next to the shared venv
|
|
# by `hermes update` / launch-time self-heal. Runtime state, never a code change
|
|
# — ignore so `git status` stays clean and update's autostash skips them.
|
|
.update-incomplete
|
|
.update-incomplete.lock
|
|
|
|
# Checkout fingerprint the __pycache__ tree was last validated against
|
|
# (launch-time stale-bytecode sweep). Runtime state, never a code change.
|
|
.bytecode-fingerprint
|
|
.bytecode-fingerprint.tmp
|
|
|
|
# Installer-written method stamp in the managed checkout root (scripts/install.sh).
|
|
# Runtime metadata only — never a code change. Ignore so `git status` stays clean
|
|
# and `hermes update`'s untracked autostash does not treat it as a local edit (#66189 / #54855).
|
|
/.install_method
|
|
install-stamp.json
|
|
|
|
# Tool Search live-test harness output — non-deterministic model transcripts,
|
|
# regenerated by scripts/tool_search_livetest.py. Never an artifact of the repo.
|
|
|
|
scripts/out/
|
|
evals/tool_search/out*/
|
|
|
|
# Per-release changelog drafts. These exist only transiently during a release
|
|
# cut (passed to `gh release create --notes-file`); the GitHub Release itself
|
|
# stores the published notes. They are not a build artifact and must never be
|
|
# committed to the repo root. See the hermes-release skill.
|
|
|
|
# Desktop demo-run scratch output (hermes writes demo/*.txt during recorded
|
|
# walkthroughs). Throwaway artifacts, never part of the app.
|
|
|
|
# PR infographics are rendered locally and embedded in PR descriptions via the
|
|
# image-provider (fal.media) URL — they are NEVER committed to the repo. The
|
|
# PR body is the archive. See the hermes-agent-dev skill's
|
|
# pr-infographic-workflow reference (storage rule + lapse #8 / #COMMIT-1).
|
|
#
|
|
# Spelling variants are listed because a single `infographic/` pattern was
|
|
# sidestepped by an `infograficos/` directory (#70552). .gitignore is only
|
|
# the first line of defence and cannot stop `git add -f` at all — the
|
|
# infographic-check CI job is what actually enforces this.
|
|
# Runtime marker written by hermes update when a lazy dependency refresh is
|
|
# interrupted; consumed by launch-time recovery. Never commit it (was tracked
|
|
# by accident via 3a69e34702, removed in the #72002 salvage).
|
|
|
|
# Disposable profile created by scripts/probe_active_session_exclusivity.py
|
|
.probe-home/
|
|
skills/.hub/
|
|
source-data/*
|
|
temp_vision_images/
|
|
test_durations.json
|
|
testlogs
|
|
test-results/
|
|
tests/quick_test_dataset.jsonl
|
|
tests/sample_dataset.jsonl
|
|
tmp/
|
|
wandb/
|
|
web/public/ds-assets/
|
|
web/public/fonts/
|
|
website/static/api/automation-blueprints-index.json
|
|
website/static/api/skills.json
|
|
website/static/api/skills-index.json
|
|
website/static/api/skills-meta.json
|
|
# ── generated icon assets (see scripts/generate_icons.py) ──────────────────
|
|
# Regenerated on demand by every consuming pipeline (website/desktop/
|
|
# installer/web prebuild via scripts/generate-icons.mjs). Sources of truth:
|
|
# assets/nous-girl-*.svg + assets/backgrounds/.
|
|
assets/icon-master.svg
|
|
assets/icon-master-dark.svg
|
|
apps/desktop/assets/icon.png
|
|
apps/desktop/assets/icon.ico
|
|
apps/desktop/assets/icon.icns
|
|
apps/desktop/assets/icon-dark.png
|
|
apps/desktop/assets/icon-dark.ico
|
|
apps/desktop/assets/icon-dark.icns
|
|
apps/desktop/assets/appx/*.png
|
|
apps/desktop/public/apple-touch-icon.png
|
|
apps/desktop/public/nous-girl.png
|
|
apps/desktop/public/nous-girl-dark.png
|
|
apps/bootstrap-installer/src-tauri/icons/*.png
|
|
apps/bootstrap-installer/src-tauri/icons/icon.ico
|
|
apps/bootstrap-installer/src-tauri/icons/icon.icns
|
|
apps/bootstrap-installer/public/nous-girl.png
|
|
website/static/img/logo.png
|
|
website/static/img/logo-dark.png
|
|
website/static/img/nous-logo.png
|
|
website/static/img/nous-logo-dark.png
|
|
website/static/img/favicon-16x16.png
|
|
website/static/img/favicon-32x32.png
|
|
website/static/img/apple-touch-icon.png
|
|
website/static/img/favicon.ico
|
|
website/static/img/favicon.svg
|
|
web/public/favicon.ico
|