Skip to content

Commit f16c477

Browse files
committed
Merge remote-tracking branch 'upstream/main' into test/upstream-catchup
2 parents 2593f7f + 190e1ff commit f16c477

1,566 files changed

Lines changed: 147312 additions & 25550 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@
105105
# Get your token at: https://huggingface.co/settings/tokens
106106
# Required permission: "Make calls to Inference Providers"
107107
# HF_TOKEN=
108+
# HF_BASE_URL=https://router.huggingface.co/v1 # Override default base URL
108109
# OPENCODE_GO_BASE_URL=https://opencode.ai/zen/go/v1 # Override default base URL
109110

110111
# =============================================================================
@@ -411,6 +412,9 @@ IMAGE_TOOLS_DEBUG=false
411412
# Groq API key (free tier — used for Whisper STT in voice mode)
412413
# GROQ_API_KEY=
413414

415+
# ElevenLabs API key (cloud STT/TTS — Scribe transcription)
416+
# ELEVENLABS_API_KEY=
417+
414418
# =============================================================================
415419
# STT PROVIDER SELECTION
416420
# =============================================================================

.envrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
watch_file pyproject.toml uv.lock
22
watch_file package-lock.json package.json web/package.json ui-tui/package.json website/package.json apps/shared/package.json apps/desktop/package.json ui-tui/packages/hermes-ink/package.json
3-
watch_file flake.nix flake.lock nix/devShell.nix nix/tui.nix nix/package.nix nix/python.nix
3+
watch_file flake.nix flake.lock nix/devShell.nix nix/tui.nix nix/package.nix nix/python.nix nix/hermes-agent.nix nix/desktop.nix
44

55
use flake
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: Detect affected areas
2+
description: >-
3+
Classify a PR's changed files into CI work lanes (python, frontend, site,
4+
scan, deps, mcp_catalog) so the orchestrator can conditionally call only
5+
the sub-workflows a PR can affect. Outputs are always "true" on push/dispatch
6+
events and fail open (everything "true") when the diff cannot be computed.
7+
8+
outputs:
9+
python:
10+
description: Run Python tests / ruff / ty / windows-footguns.
11+
value: ${{ steps.classify.outputs.python }}
12+
frontend:
13+
description: Run the TypeScript typecheck matrix + desktop build.
14+
value: ${{ steps.classify.outputs.frontend }}
15+
docker_meta:
16+
description: Docker setup and meta files have changed.
17+
value: ${{ steps.classify.outputs.docker_meta }}
18+
site:
19+
description: Build the Docusaurus docs site.
20+
value: ${{ steps.classify.outputs.site }}
21+
scan:
22+
description: Run the supply-chain critical-pattern scanner.
23+
value: ${{ steps.classify.outputs.scan }}
24+
deps:
25+
description: Check pyproject.toml dependency upper bounds.
26+
value: ${{ steps.classify.outputs.deps }}
27+
mcp_catalog:
28+
description: Require MCP catalog security review label.
29+
value: ${{ steps.classify.outputs.mcp_catalog }}
30+
31+
runs:
32+
using: composite
33+
steps:
34+
- name: Classify changed files
35+
id: classify
36+
shell: bash
37+
env:
38+
GH_TOKEN: ${{ github.token }}
39+
REPO: ${{ github.repository }}
40+
EVENT_NAME: ${{ github.event_name }}
41+
BASE_SHA: ${{ github.event.pull_request.base.sha }}
42+
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
43+
run: |
44+
set -euo pipefail
45+
46+
# Only pull_request events are gated. Other events (push, release,
47+
# dispatch) leave CHANGED empty, so the classifier fails open and every
48+
# lane runs. Post-merge / on-demand validation is never weakened.
49+
if [ "$EVENT_NAME" = "pull_request" ]; then
50+
# Use the compare endpoint with the pinned base/head SHAs from the
51+
# event payload instead of the "current PR files" endpoint. The SHAs
52+
# are frozen at trigger time, so the file list is deterministic even
53+
# if the PR receives a new push between trigger and detect.
54+
CHANGED="$(gh api \
55+
--paginate \
56+
"repos/${REPO}/compare/${BASE_SHA}...${HEAD_SHA}" \
57+
--jq '.files[].filename' || true)"
58+
fi
59+
60+
echo "Changed files:"
61+
printf '%s\n' "${CHANGED:-(none)}"
62+
printf '%s\n' "${CHANGED:-}" | python3 scripts/ci/classify_changes.py

.github/actions/hermes-smoke-test/action.yml

Lines changed: 0 additions & 50 deletions
This file was deleted.

.github/actions/retry/action.yml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
name: Retry a flaky command
2+
description: >-
3+
Run a shell command, retrying on non-zero exit. For dependency installs
4+
(npm ci, uv sync) whose only failures are transient network/toolchain
5+
flakes — a node-gyp header fetch, a registry blip — so CI self-heals
6+
instead of needing a manual re-run.
7+
8+
inputs:
9+
command:
10+
description: Shell command to run (and retry).
11+
required: true
12+
attempts:
13+
description: Max attempts before giving up.
14+
default: "3"
15+
delay:
16+
description: Seconds to wait between attempts.
17+
default: "10"
18+
working-directory:
19+
description: Directory to run in.
20+
default: "."
21+
22+
runs:
23+
using: composite
24+
steps:
25+
- shell: bash
26+
working-directory: ${{ inputs.working-directory }}
27+
# command goes through env, never interpolated into the script body, so
28+
# a command with quotes/specials can't break or inject into the runner.
29+
env:
30+
_CMD: ${{ inputs.command }}
31+
_ATTEMPTS: ${{ inputs.attempts }}
32+
_DELAY: ${{ inputs.delay }}
33+
run: |
34+
set -uo pipefail
35+
n=0
36+
while :; do
37+
n=$((n + 1))
38+
echo "::group::attempt $n/$_ATTEMPTS: $_CMD"
39+
if bash -c "$_CMD"; then
40+
echo "::endgroup::"
41+
exit 0
42+
fi
43+
echo "::endgroup::"
44+
if [ "$n" -ge "$_ATTEMPTS" ]; then
45+
echo "::error::failed after $n attempts: $_CMD"
46+
exit 1
47+
fi
48+
echo "::warning::attempt $n failed; retrying in ${_DELAY}s: $_CMD"
49+
sleep "$_DELAY"
50+
done

.github/workflows/build-windows-installer.yml

Lines changed: 0 additions & 100 deletions
This file was deleted.

0 commit comments

Comments
 (0)