Keep reconstructed activity and activitySignal coherent, preserve stronger lifecycle states when repeated polls only surface weak evidence, and switch release notes from manual changelog edits to a Changesets entry. This also stabilizes the respond/working path investigated in issue #126.
Represent missing activity probes as first-class signal states so lifecycle inference only treats valid idle evidence as proof. This prevents false stuck transitions, keeps API/UI lifecycle truth aligned, and makes root monorepo verification deterministic by serializing recursive build and typecheck.
* fix: prevent sidebar empty-state flash on session pages (#1230)
* fix: reuse sidebar data across session navigation (#1230)
* fix: revalidate cached sidebar data on session pages (#1230)
* fix: harden session sidebar live updates (#1230)
* fix: remove sidebarSessions from mux effect deps
Read from the module-level cachedSidebarSessions cache instead so the
mux effect only re-fires when new mux data arrives, not on every
sidebar state change. Addresses review feedback on #1230.
* fix: address PR #1232 review comments on sidebar session handling
- Guard against out-of-order sidebar fetches with a per-invocation token
so concurrent pollers/retries don't overwrite fresh responses with stale ones.
- Gate mux overlay on `mux.status === "connected"`; clear pending patches on
disconnect so a stale WS snapshot doesn't shadow fresher REST data.
- Surface a stale-data banner in the sidebar when a refresh fails but cached
sessions are still rendered, so users see the failure instead of silently
viewing outdated state.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Preserve the split lifecycle observability and UI truth model while retaining the latest sessions-redone PR transition handling and dependency updates.
Implement the Stage 5 rollout so API and UI consumers stop depending on one overloaded status and operators can see structured transition evidence without breaking older session metadata.
* fix Next.js build warnings, pin flatted override, regenerate lockfile
* fix ignoreDuringBuilds, add ao-core to serverExternalPackages, clean dist-server in prebuild
* fix ESLint plugin detection, remove ao-core from transpilePackages, suppress plugin-registry webpack warning
* fix(web): restore ao-core to transpilePackages, document overrides, fix dev:optimized cleanup
Move @aoagents/ao-core back to transpilePackages only. dist/ is gitignored so fresh
checkout has no dist/index.js; serverExternalPackages causes a hard crash at runtime.
Client components (SessionDetail, ProjectSidebar, sessions/[id]/page) also import
@aoagents/ao-core/types which serverExternalPackages does not cover.
Keep @composio/core in serverExternalPackages only with comment explaining it is an
optional transitive dep via tracker-linear dynamic import.
Add _overrides_rationale to document axios (SSRF CVE-2023-45857) and flatted
(prototype-pollution) security pins in root package.json.
Fix dev:optimized to clean both .next and dist-server, matching what prebuild does.
* fix: webpackIgnore dynamic imports in plugin-registry fixes#1056
* fix: move Next.js ESLint config to packages/web for build-time detection fixes#1058
* fix: remove scope creep and phantom agent-soma from lockfile
- remove agent-soma importer block from pnpm-lock.yaml
- remove @composio/core from serverExternalPackages
- remove redundant exprContextCritical webpack override
- remove flatted override and _overrides_rationale
- align @next/eslint-plugin-next to ^15.5.15
* fix: replace rm -rf with rimraf for cross-platform compatibility
* fix: use rimraf in clean script and sort devDependencies
* fix: add postcss.config.mjs to web ESLint ignores
* fix: restore no-console exemption for web package in root ESLint config
Address Copilot review feedback on PR #117:
- lifecycle-manager: replace string-matching guards (`metadata["role"]`,
`session.id.endsWith("-orchestrator")`) with the authoritative
`lifecycle.session.kind !== "orchestrator"` check. The previous guard
missed numbered orchestrator IDs like `${prefix}-orchestrator-1`, which
could let a fresh agent report incorrectly override an orchestrator
session's status.
- orchestrator-prompt: reword the "Explicit Agent Reports" section to stop
promising automatic surfacing in status/dashboard. CLI/UI display work
is not part of this PR; the prompt now describes reports as a hint to
lifecycle inference and explicitly notes SCM/runtime truth still wins.
Co-Authored-By: Claude <noreply@anthropic.com>
Address Copilot review feedback on PR #117:
- Drop the `done` alias from `INPUT_ALIASES`. Agents cannot self-report the
terminal `done` state (AO owns that transition via SCM ground truth), so
silently aliasing `done` → `completed` contradicted the prompts and
weakened the reserved-transition boundary.
- Tighten `validateAgentReportTransition` to reject ALL reports when
`session.state === "done"`. Previously `completed` slipped through, but
`completed` maps to `idle` and would have re-opened a terminal session,
contradicting the function's own doc comment.
- Reject future timestamps in `isAgentReportFresh`. A skewed/future
`agentReportedAt` would otherwise yield a negative delta that satisfies
`<= windowMs`, making the report appear "fresh" indefinitely and
overriding stronger inference signals.
Tests updated:
- Replace done→completed alias assertion with explicit null expectation.
- Expand `done`-state rejection test to cover `completed` and `needs_input`.
- Add freshness test for future-dated timestamps.
Co-Authored-By: Claude <noreply@anthropic.com>
Introduce an explicit reporting channel so worker agents can self-declare
their workflow phase (started/working/waiting/needs-input/fixing-ci/
addressing-reviews/completed). Fresh reports are trusted over weak inference
but runtime death, activity-based waiting_input, and SCM ground truth still
take precedence.
- Add `applyAgentReport`, validator, canonical mapping, and freshness helper
in `packages/core/src/agent-report.ts`.
- Wire the fallback into `determineStatus` just before the idle-beyond-
threshold promotion, skipping orchestrator and terminal sessions.
- Add `ao acknowledge` and `ao report <state>` CLI commands. Both resolve
the session from `AO_SESSION_ID` when no argument is passed.
- Teach the base agent prompt and orchestrator prompt about the new
reporting commands.
- Ship unit tests covering normalization, mapping, transition validation,
metadata persistence, freshness, and first-start behavior.
Stage 3 of the state-machine redesign (see aa-2/state-machine-redesign-
rollout-plan.md).