Skip to content

Fix/codex activity status#167

Closed
DavidUmKongs wants to merge 54 commits intopablodelucca:mainfrom
DavidUmKongs:fix/codex-activity-status
Closed

Fix/codex activity status#167
DavidUmKongs wants to merge 54 commits intopablodelucca:mainfrom
DavidUmKongs:fix/codex-activity-status

Conversation

@DavidUmKongs
Copy link

Description

Type of change

  • Bug fix
  • New feature
  • Refactor / code cleanup
  • Documentation
  • CI / build
  • Other: ___

Related issues

Screenshots / GIFs

Test plan

  • PR targets main branch
  • npm run build passes locally
  • Tested in Extension Development Host (F5)
  • No inline constants (all in src/constants.ts or webview-ui/src/constants.ts)
  • UI follows pixel art style (sharp corners, solid borders, pixel font)

DavidUmKongs and others added 30 commits March 18, 2026 05:58
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…e JSONL interference

- getProjectDirPath now validates cwd/workspace exists before returning (returns null if not)
- Extract isRelevantToWorkspace() helper to check session_meta.cwd in JSONL files
- Apply workspace filtering during ensureProjectScan initial seed (previously seeded ALL files)
- Deduplicate workspace check in scanForNewJsonlFiles using shared helper

Fixes PR #2 review comment about cross-workspace agent-to-file mapping corruption
when multiple VS Code windows share the same ~/.codex/sessions/ directory.

Amp-Thread-ID: https://ampcode.com/threads/T-019cfe31-cba5-76c0-8ed6-1c0caf42519b
Co-authored-by: Amp <amp@ampcode.com>
…nused constant

- Add CODEX_DIR_NAME, CODEX_SESSIONS_DIR_NAME, CODEX_SESSION_COMMAND to constants.ts
- Replace inline '.codex', 'sessions', 'codex --session-id' in agentManager.ts
- Remove unused TERMINAL_NAME_PREFIX_CLAUDE constant

Addresses PR #2 review comments from Devin, Gemini, and CodeRabbit about
inline magic strings and unused constants.

Amp-Thread-ID: https://ampcode.com/threads/T-019cfe31-cba5-76c0-8ed6-1c0caf42519b
Co-authored-by: Amp <amp@ampcode.com>
Phase 1: Paths and Terminal commands
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…imations

Refactor runtime adapters and improve Codex activity mapping
Phase A — Click/Selection flow normalization:
- Changed handleClick to dispatch agentSelected as local window event
  instead of posting to vscode extension (selection is webview-internal)
- Terminal focus sync from onDidChangeActiveTerminal still works

Phase B — Tool history preservation:
- Added TOOL_HISTORY_MAX_SIZE (20) constant
- Added agentToolHistory and subagentToolHistory state
- On agentToolDone/subagentToolDone: completed tools appended to history
- On agentToolsClear: only active tools cleared, history preserved
- On agentClosed: both active tools and history cleaned up
- ToolOverlay merges past history with active tools (shows latest 5)
- DebugView merges history for full timeline view

Amp-Thread-ID: https://ampcode.com/threads/T-019d045f-1fa1-74ee-8425-ef53073db9ac
Co-authored-by: Amp <amp@ampcode.com>
DavidUmKongs and others added 24 commits March 19, 2026 14:04
feat: add agent visibility inspector and timeline
Phase C — Propagate heuristic metadata to webview:
- agentToolPermission handler now reads source/inferred/confidence
  from extension message and sets them on affected ToolActivity items
- subagentToolPermission handler does the same for sub-agent tools
- Permission tools marked with source='heuristic', inferred=true,
  confidence='low' when originating from timer-based detection

Phase D (partial) — Inspector heuristic display:
- Status line shows '(heuristic)' suffix when status is inferred
- Permission line shows '(estimated)' when tool permission is inferred
- Heuristic-sourced tools show 'Auto (estimated)' label

Amp-Thread-ID: https://ampcode.com/threads/T-019d045f-1fa1-74ee-8425-ef53073db9ac
Co-authored-by: Amp <amp@ampcode.com>
…rface

feat: surface heuristic confidence in tool activity
…y styles

Address PR review comments: update AgentLabels and DebugView overlays
to use 2px solid borders and 2px 2px 0px #0a0a14 hard offset shadows
per the pixel art aesthetic guidelines.

Amp-Thread-ID: https://ampcode.com/threads/T-019d0ceb-a3cd-7758-83bb-37642e596fda
Co-authored-by: Amp <amp@ampcode.com>
Sub-agent work was being lost when live characters were cleared, which made the inspector and debug rail forget the user's recent context. This change keeps persistent sub-agent descriptors alongside live characters and separates debug selection from terminal focus so browsing the office no longer steals terminal state.

Constraint: Vite is running on the available Node 20.18.3 runtime, so build verification includes the toolchain warning and the repo-level typecheck caveat below.
Rejected: Keep rendering only live sub-agent characters | would keep losing history after clear
Confidence: high
Scope-risk: moderate
Directive: Keep live character lifecycle separate from persistent descriptor/history state; do not reintroduce focus on selection clicks
Tested: lsp diagnostics on modified files; webview-ui npm test; webview-ui npm run build; root npm run lint
Not-tested: root npm run check-types (existing repo-level DOM-lib errors remain)
- Replace inline #0a0a14 boxShadow with var(--pixel-shadow) in AgentLabels
- Extract hardcoded zIndex 42 to AGENT_VIS_LABEL_Z constant
- Add boxSizing: border-box to RowLabel sharedStyle in DebugView
- Upgrade ToolOverlay action buttons to 2px borders with pixel shadow

Amp-Thread-ID: https://ampcode.com/threads/T-019d0d0e-8ed1-778f-8b0f-62f06745b6d8
Co-authored-by: Amp <amp@ampcode.com>
- DebugView: add borderRadius: 0 + boxShadow to all 5 overlay elements
- AgentLabels: move z-index to --pixel-agent-label-z CSS variable
- useExtensionMessages: filter subagentCharacters on clear instead of marking inactive
- useExtensionMessages: cap subagentDescriptors to TOOL_HISTORY_MAX_SIZE per agent
- ToolOverlay: use responsive width min(360px, calc(100% - 24px))

Amp-Thread-ID: https://ampcode.com/threads/T-019d0d0e-8ed1-778f-8b0f-62f06745b6d8
Co-authored-by: Amp <amp@ampcode.com>
…rface

feat: upgrade inspector and debug timeline rails
Vite 8 is already in use, so the practical fix is to make the repo and docs require a Node version that satisfies Vite instead of leaving contributors on an older 22.x floor. The version manager pin, package engines, and setup docs now agree on Node 22.12.0+.

Constraint: Vite 8 requires Node 20.19+ or 22.12+; the local environment was on Node 20.18.3 and emitted a runtime warning.
Rejected: Bump Vite first | does not solve the Node floor and adds unnecessary churn
Confidence: high
Scope-risk: narrow
Directive: Keep Node version guidance aligned across , package engines, and README setup text
Tested: root npm run lint; webview-ui npm test; webview-ui npm run build
Not-tested: root npm run check-types (existing DOM-lib errors remain)
Vite 8 is already in use, so the practical fix is to make the repo and docs require a Node version that satisfies Vite instead of leaving contributors on an older 22.x floor. The version manager pin, package engines, and setup docs now agree on Node 22.12.0+.

Constraint: Vite 8 requires Node 20.19+ or 22.12+; the local environment was on Node 20.18.3 and emitted a runtime warning.
Rejected: Bump Vite first | does not solve the Node floor and adds unnecessary churn
Confidence: high
Scope-risk: narrow
Directive: Keep Node version guidance aligned across .nvmrc, package engines, and README setup text
Tested: root npm run lint; webview-ui npm test; webview-ui npm run build
Not-tested: root npm run check-types (existing DOM-lib errors remain)
Contributors needed a concrete, repo-specific verification path after the recent Node/Vite alignment, and Korean readers had no first-class entry point. This updates the English README with a practical verification section and adds a Korean companion README with matching setup and validation guidance.

Constraint: The root `npm run check-types` signal is still noisy because of existing transitive DOM-lib type issues, so the README needs to point at the checks that currently prove the branch is healthy.
Rejected: Keep a single English-only README | leaves Korean onboarding and verification guidance harder to discover
Confidence: high
Scope-risk: narrow
Directive: Keep README.md and README.ko.md aligned whenever setup, verification, or contributor expectations change
Tested: npx prettier --check README.md README.ko.md; root npm run lint; webview-ui npm test; webview-ui npm run build
Not-tested: root npm run check-types (existing DOM-lib errors remain)
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…rface

Align Node 22 requirements and improve onboarding docs
Remove deprecated --session-id flag from Codex launch command (CLI no
longer supports it). Increase Inspector panel width (360→440px) and
font sizes throughout ToolOverlay for better readability. Add
turn_context as fallback record type for JSONL workspace matching.

Constraint: Codex CLI removed --session-id in recent versions
Confidence: high
Scope-risk: narrow
Tested: esbuild + vite build pass
Not-tested: runtime verification with live Codex session
Amp-Thread-ID: https://ampcode.com/threads/T-019d0de3-ae77-7789-8aa2-0922e9b0d7e1
Co-authored-by: Amp <amp@ampcode.com>
This release resets the fork version to 0.1.0, points repository metadata and
README links at this fork, records the Codex-focused feature set in the
changelog, and restores a clean root typecheck so release verification can run
end-to-end under the pinned Node runtime.

Constraint: Release was requested from the current codex branch state
Constraint: Fork release metadata must point at DavidUmKongs/oh-my-pixel-agents while retaining upstream extension identity
Rejected: Tag current HEAD without version/docs updates | would leave release metadata inconsistent
Rejected: Keep the existing root typecheck caveat | blocks clean release verification
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Keep fork-facing metadata and release notes aligned before future tags
Tested: nvm use 22.12.0; npm run format:check; npm run check-types; npm run lint; cd webview-ui && npm test && npm run lint && npm run build; npm run build
Not-tested: Marketplace/Open VSX publication for the fork
Codex now emits explicit active-phase signals for reasoning, text responses, custom tool calls, and task lifecycle events. The agent runtime stores the latest visible status and last activity time so the UI can rehydrate a working turn instead of defaulting to idle whenever no tool is open.

Constraint: Codex JSONL does not guarantee a tool call for every productive phase
Rejected: Infer activity purely from tool start/end events | misses reasoning-only work and text responses
Confidence: high
Scope-risk: moderate
Directive: Keep status updates in sync with AgentState.currentStatus; future Codex event handlers should set both visible status and lastActivityAt
Tested: npm run lint; npm run check-types; webview tests/build after the full change set
Not-tested: Future Codex event variants beyond the currently observed schema
…ithout a tool

The webview now keeps active Codex lifecycle states instead of deleting them immediately, and the shared agent-visibility helper formats those states into stable labels. This gives the UI a durable status source that can render Thinking, Responding, Active, or Waiting instead of dropping to Idle between tool calls.

Constraint: UI state is rehydrated from messages, not from the raw Codex transcript
Rejected: Store only tool activity and infer the rest in each component | duplicates logic and reintroduces idle fallbacks
Confidence: high
Scope-risk: moderate
Directive: Treat AgentStatusInfo as a visible lifecycle record; do not reintroduce status deletion for active phases
Tested: webview-ui npm test; webview-ui npm run lint; webview-ui npm run build
Not-tested: Browser-runtime behavior when a future Codex status string appears outside the known set
…le during work

The label, debug, and inspector views now prefer current lifecycle state and active tool summaries over a generic idle fallback. This keeps the office view aligned with the actual Codex turn phase while still showing the most specific tool activity when one exists.

Constraint: The UI needs a safe fallback for states that are not tool-driven
Rejected: Hide the status entirely until a tool exists | makes reasoning-only work look inert
Confidence: high
Scope-risk: moderate
Directive: Tool summaries still win when present; lifecycle labels are only the fallback path
Tested: webview-ui npm test; webview-ui npm run lint; webview-ui npm run build
Not-tested: Visual polish on very small inspector widths
File growth now clears stale waiting state immediately and the waiting timer only fires if no newer transcript activity has arrived since it was scheduled. This makes the heuristic recovery path match the actual transcript flow instead of leaving the UI parked in an outdated idle or waiting state.

Constraint: Codex activity can resume through non-tool transcript lines
Rejected: Shorten the waiting timeout globally | would increase false positives elsewhere
Confidence: high
Scope-risk: moderate
Directive: The waiting timer is now guarded by lastActivityAt; update that timestamp whenever new transcript activity is observed
Tested: npm run lint; npm run check-types; webview-ui npm test; webview-ui npm run lint; webview-ui npm run build
Not-tested: Extremely sparse transcript streams where Codex emits no parseable follow-up after an active phase
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant