mirror of
https://github.com/stablyai/orca.git
synced 2026-09-21 16:02:20 +00:00
* fix(grok): stop replayed Claude/Cursor hooks reporting Grok panes as Claude Grok's hook discovery reads ~/.claude/settings.json (and the Cursor equivalent) for vendor compatibility, and that is on by default. So inside every Grok pane Orca's managed Claude hook fires in addition to Orca's managed Grok hook, and both POST the same Grok envelope. The Claude-routed copy lands last and wins, so the pane's agent type is resolved from the POST route as "claude" and no Grok-specific normalization runs for it. Guard the managed Claude and Cursor scripts on GROK_HOOK_EVENT, which Grok's hook runner stamps into every hook subprocess it spawns — including replayed vendor configs — after any user-supplied environment, so a hook cannot spoof it. This mirrors the existing DEVIN_PROJECT_DIR guard in the same script, which solves the identical problem for another agent that imports Claude hooks. Placement is load-bearing: the guard sits after the stdin capture, so Grok's writer never blocks, and before both the spool write and the HTTP POST, so a replayed event cannot leave a spool entry that replays later. The Windows variants jump to the stdin-drain label rather than exiting, because abandoning stdin there hangs the writer. The guard is scoped to agent === 'claude'; OpenClaude reuses ClaudeHookService with its own settings file, which Grok does not replay, so it is unaffected. Verified live against Grok 1.0.25 in a dev instance: the pane's reported agent type goes from "claude" to "grok" on every turn-end, including the hidden follow-up turns Grok runs when background work finishes. The guard pushed hook-service.ts past the 300-line cap, so the script builder moves to a sibling hook-script.ts. That mirrors the existing split under src/main/cursor/, where the service owns install/status and the script module owns script text. * fix(agent-hooks): preserve Windows background worker stdin contract
155 lines
7.6 KiB
JSON
155 lines
7.6 KiB
JSON
{
|
|
"extends": "@electron-toolkit/tsconfig/tsconfig.node.json",
|
|
"include": [
|
|
"../src/cli/**/*",
|
|
"../src/shared/**/*",
|
|
"../src/main/agent-state-file-reader.ts",
|
|
"../src/main/agent-hooks/grok-replay-guard.ts",
|
|
"../src/main/claude/hook-script.ts",
|
|
"../src/main/agent-hooks/hook-stdin-contract.ts",
|
|
"../src/main/agent-hooks/hook-post-command.ts",
|
|
"../src/main/agent-hooks/hook-config-write-path.ts",
|
|
"../src/main/agent-hooks/hooks-json-read.ts",
|
|
"../src/main/agent-hooks/installer-utils.ts",
|
|
"../src/main/agent-hooks/installer-utils-remote.ts",
|
|
"../src/main/agent-hooks/local-agent-cli-presence.ts",
|
|
"../src/main/agent-hooks/managed-toml-ownership.ts",
|
|
"../src/main/agent-hooks/managed-agent-hook-controls.ts",
|
|
"../src/main/agent-hooks/managed-agent-hook-registry.ts",
|
|
"../src/main/agent-hooks/managed-hook-script-refresh.ts",
|
|
"../src/main/agent-hooks/posix-hook-command.ts",
|
|
"../src/main/agent-hooks/runtime-home-hook-command.ts",
|
|
"../src/main/agent-hooks/windows-direct-cmd-hook-command.ts",
|
|
"../src/main/agent-hooks/windows-powershell-hook-launcher.ts",
|
|
"../src/main/amp/agent-status-plugin-source.ts",
|
|
"../src/main/amp/hook-service.ts",
|
|
"../src/main/amp/managed-plugin-install-status.ts",
|
|
"../src/main/antigravity/hook-events.ts",
|
|
"../src/main/antigravity/hook-script.ts",
|
|
"../src/main/antigravity/hook-service.ts",
|
|
"../src/main/antigravity/hooks-json-bundle.ts",
|
|
"../src/main/claude/hook-settings.ts",
|
|
"../src/main/claude/hook-service.ts",
|
|
"../src/main/claude/statusline-script.ts",
|
|
"../src/main/claude-accounts/keychain.ts",
|
|
"../src/main/codex/codex-app-server-capability-cache.ts",
|
|
"../src/main/codex/codex-app-server-capability-signal.ts",
|
|
"../src/main/codex/codex-app-server-client.ts",
|
|
"../src/main/codex/codex-app-server-process-tree-kill.ts",
|
|
"../src/main/codex/codex-app-server-record-reader.ts",
|
|
"../src/main/codex/codex-app-server-session.ts",
|
|
"../src/main/codex/codex-config-mirror.ts",
|
|
"../src/main/codex/codex-config-path-reference-rewrite.ts",
|
|
"../src/main/codex/codex-config-settings-preservation.ts",
|
|
"../src/main/codex/codex-config-settings-removal.ts",
|
|
"../src/main/codex/codex-config-settings-upsert.ts",
|
|
"../src/main/codex/codex-home-paths.ts",
|
|
"../src/main/codex/codex-hook-definition.ts",
|
|
"../src/main/codex/codex-managed-home-resource-copy-marker.ts",
|
|
"../src/main/codex/codex-managed-trust-grant-plan.ts",
|
|
"../src/main/codex/codex-path-observation.ts",
|
|
"../src/main/codex/codex-hook-identity.ts",
|
|
"../src/main/codex/codex-hook-legacy-cleanup.ts",
|
|
"../src/main/codex/codex-hook-local-install.ts",
|
|
"../src/main/codex/codex-hook-local-maintenance.ts",
|
|
"../src/main/codex/codex-hook-remote-install.ts",
|
|
"../src/main/codex/codex-hook-script.ts",
|
|
"../src/main/codex/codex-hook-service-implementation.ts",
|
|
"../src/main/codex/codex-hook-status.ts",
|
|
"../src/main/codex/codex-hook-system-trust.ts",
|
|
"../src/main/codex/codex-hook-trust-cleanup.ts",
|
|
"../src/main/codex/codex-hook-trust-grant.ts",
|
|
"../src/main/codex/codex-hook-trust-queue.ts",
|
|
"../src/main/codex/codex-hook-user-mirroring.ts",
|
|
"../src/main/codex/codex-hook-wsl-runtime.ts",
|
|
"../src/main/codex/codex-managed-trust-reconciliation.ts",
|
|
"../src/main/codex/codex-process-exit-deadline.ts",
|
|
"../src/main/codex/codex-state-db.ts",
|
|
"../src/main/codex/codex-trust-identity.ts",
|
|
"../src/main/codex/codex-trust-config-rollback.ts",
|
|
"../src/main/codex/codex-trust-config-mutation-queue.ts",
|
|
"../src/main/codex/codex-trust-grant-telemetry.ts",
|
|
"../src/main/codex/codex-trust-grant-host.ts",
|
|
"../src/main/codex/codex-trust-grant-ledger.ts",
|
|
"../src/main/codex/codex-user-hook-trust-rebase-client.ts",
|
|
"../src/main/codex/codex-user-hook-trust-rebase.ts",
|
|
"../src/main/codex/codex-wsl-hook-install-plan.ts",
|
|
"../src/main/codex/config-settings-baseline.ts",
|
|
"../src/main/codex/config-settings-conflict-resolution.ts",
|
|
"../src/main/codex/config-plugin-registration-promotion.ts",
|
|
"../src/main/codex/config-toml-plugin-registration-tables.ts",
|
|
"../src/main/codex/config-toml-promoted-setting-values.ts",
|
|
"../src/main/codex/config-settings-promotion.ts",
|
|
"../src/main/codex/config-settings-promotion-write-target.ts",
|
|
"../src/main/codex/config-sync-stall.ts",
|
|
"../src/main/codex/config-toml-atomic-write.ts",
|
|
"../src/main/codex/config-toml-deprecated-hook-flag.ts",
|
|
"../src/main/codex/config-toml-hook-trust-blocks.ts",
|
|
"../src/main/codex/config-toml-hook-trust-edit.ts",
|
|
"../src/main/codex/config-toml-hook-trust-read.ts",
|
|
"../src/main/codex/config-toml-key-path.ts",
|
|
"../src/main/codex/config-toml-line-scan.ts",
|
|
"../src/main/codex/config-toml-project-trust.ts",
|
|
"../src/main/codex/config-toml-runtime-owned-sections.ts",
|
|
"../src/main/codex/config-toml-syntax.ts",
|
|
"../src/main/codex/config-toml-trust.ts",
|
|
"../src/main/codex/hook-service.ts",
|
|
"../src/main/codex/hook-trust-promotion.ts",
|
|
"../src/main/codex/managed-home-shell-preflight.ts",
|
|
"../src/main/codex-accounts/fs-utils.ts",
|
|
"../src/main/codex-accounts/wsl-codex-command.ts",
|
|
"../src/main/codex-cli/command.ts",
|
|
"../src/main/command-code/command-code-managed-script.ts",
|
|
"../src/main/command-code/hook-service.ts",
|
|
"../src/main/copilot/copilot-managed-hook-definitions.ts",
|
|
"../src/main/copilot/copilot-managed-script.ts",
|
|
"../src/main/copilot/copilot-remote-hook-install.ts",
|
|
"../src/main/copilot/hook-service.ts",
|
|
"../src/main/cursor/hook-events.ts",
|
|
"../src/main/cursor/hook-script.ts",
|
|
"../src/main/cursor/hook-service.ts",
|
|
"../src/main/droid/hook-service.ts",
|
|
"../src/main/gemini/hook-service.ts",
|
|
"../src/main/grok/grok-hook-config.ts",
|
|
"../src/main/grok/grok-hook-config-cleanup.ts",
|
|
"../src/main/grok/grok-hook-config-file.ts",
|
|
"../src/main/grok/grok-hook-owners.ts",
|
|
"../src/main/grok/grok-hook-remote-install.ts",
|
|
"../src/main/grok/grok-hook-script.ts",
|
|
"../src/main/grok/grok-hook-symlink-cleanup-marker.ts",
|
|
"../src/main/grok/hook-service.ts",
|
|
"../src/main/grok/windows-grok-hook-script.ts",
|
|
"../src/main/devin/hook-settings.ts",
|
|
"../src/main/devin/hook-service.ts",
|
|
"../src/main/devin/hook-config-json.ts",
|
|
"../src/main/hermes/hermes-config-yaml.ts",
|
|
"../src/main/hermes/hermes-home-filesystem.ts",
|
|
"../src/main/hermes/hermes-managed-plugin-source.ts",
|
|
"../src/main/hermes/hook-service.ts",
|
|
"../src/main/git-bash.ts",
|
|
"../src/main/in-flight-run-dedupe.ts",
|
|
"../src/main/kimi/hook-service.ts",
|
|
"../src/main/kimi/kimi-hook-config-toml.ts",
|
|
"../src/main/openclaude/hook-service.ts",
|
|
"../src/main/rolling-file-backup.ts",
|
|
"../src/main/startup/hydrate-shell-path.ts",
|
|
"../src/main/startup/windows-shell-path-ownership.ts",
|
|
// Why: serve-electron-flag-parity.test.ts checks the Electron-side serve argv rewrite against this
|
|
// project's serve spec; the module has no imports, so listing it pulls in nothing else.
|
|
"../src/main/startup/serve-mode-argv.ts",
|
|
// The parity test keeps this import-free list aligned with COMMAND_SPECS.
|
|
"../src/main/startup/cli-command-names.ts",
|
|
"../src/main/runtime/runtime-metadata.ts",
|
|
"../src/main/sqlite/sync-database.ts",
|
|
"../src/main/win32-utils.ts"
|
|
],
|
|
"compilerOptions": {
|
|
"composite": true,
|
|
// TypeScript 7 removed node10 resolution; Node16 preserves CommonJS emit for this package.
|
|
"module": "Node16",
|
|
"moduleResolution": "Node16",
|
|
"rootDir": "../src",
|
|
"outDir": "../out"
|
|
}
|
|
}
|