Commit Graph
21 Commits
Author SHA1 Message Date
Federico Jaramillo Martinez 355ebe8cf8 feat(sessions): add tracked subsessions behind a beta flag
Add spawn_subsession / list_subsessions / read_subsession tools that let an
agent start child sessions it stays attached to: the child records its parent
in the session tree, the parent is notified (as a system-authored custom
message that wakes an idle parent and queues behind in-flight work) when the
child stops working, and the parent can inspect children's status and result.

Gated behind a beta flag, off by default, mirroring spawnSessions: enable via
PI_WEB_SUBSESSIONS, the subsessions config key, or the Settings toggle. Also
requires spawnSessions.

Also fix the release skill so the version step resyncs package-lock.json
(npm install --package-lock-only) and the commit step refuses a release where
package.json and package-lock.json versions disagree.
2026-06-17 12:13:23 +02:00
Federico Jaramillo Martinez e77ab98361 fix(sessions): stop duplicating user message for slash commands
A slash command sent as the first (or any idle) message showed the raw
command text twice until reload: once from the client's optimistic insert
and once from the server's message.append echo, neither of which converges
with the agent's canonical expanded message (e.g. a /skill:* block).

Make commands obey the same source-of-truth contract as prompts:
- client no longer inserts the raw command text optimistically; it shows
  the existing per-session sending indicator instead
- forwarded runtime/skill commands return a bare done result rather than a
  synthetic "Accepted ..." line
- server suppresses the raw message.append echo for command-forwarded
  prompts (threaded through the compaction queue too)

Result: pre-reload state matches reload, with no transient duplicate.
2026-06-17 00:02:04 +02:00
Federico Jaramillo Martinez 95c151233a feat: let agents start new sessions via spawn_session tool
Add a project-scoped spawn_session tool so agents can dispatch new,
independent sessions (ralph loops, long-plan chaining). Spawned sessions
are constrained to a workspace/worktree of the same registered project,
appear in the session list immediately via a new session.created event,
and the capability is on by default with a Settings -> Session daemon
toggle (spawnSessions / PI_WEB_SPAWN_SESSIONS).

Note: adds a session daemon code path, so pi-web-sessiond.service must be
restarted manually for the server side to take effect.
2026-06-16 14:53:37 +02:00
Federico Jaramillo Martinez 82db15f894 fix(sessions): guard, gate, and test session reload
Build on the original Reload action with the fixes raised in review:

- Server reload() now refuses to run on archived (read-only) sessions
  and when the session has work in progress, mirroring archive(), so a
  reload can no longer silently abort an in-flight agent run.
- Add a sessions.reload runtime capability; the client gates both the
  reloadSession call and the Reload menu entry on it so the action only
  appears for machines whose Pi-Web runtime supports it.
- reloadSession ignores cached-new and archived sessions.
- Add server (PiSessionService + routes) and client (SessionController)
  tests covering reload success, the active-work guard, archived
  rejection, route forwarding, capability gating, and error mapping.
- Restore alphabetical parser import ordering in clients.ts.
- Add a changeset documenting the feature and the sessiond restart note.

Note: touches a session daemon code path, so pi-web-sessiond.service
must be restarted manually for the server side to take effect.
2026-06-14 14:17:51 +02:00
Federico Jaramillo Martinez 577594a622 fix: prevent sidebar action menus from being cropped
Use viewport-constrained positioning for sidebar action menus and keep the auth warning test isolated from local models.json config so pre-commit verification is deterministic.
2026-06-11 01:31:56 +02:00
Federico Jaramillo Martinez b99143f757 fix: preserve legacy session route lookups 2026-06-10 22:42:55 +02:00
Federico Jaramillo Martinez 71510444c4 Merge remote-tracking branch 'origin/main' into investigate/issue-12-session-dir
# Conflicts:
#	src/client/src/api.ts
#	src/client/src/api/clients.ts
#	src/client/src/api/federatedRouteContract.test.ts
#	src/server/sessions/piSessionService.ts
#	src/server/sessions/sessionRoutes.ts
2026-06-10 20:43:10 +02:00
Federico Jaramillo Martinez 824b7a0a2f fix: bind extensions for web sessions
Fixes #19
2026-06-10 20:32:25 +02:00
Federico Jaramillo Martinez 06052ea5ec fix: respect Pi session directories by cwd 2026-06-10 20:26:51 +02:00
Federico Jaramillo Martinez a3b5b722c9 feat: add safe session bulk cleanup actions 2026-06-08 17:20:00 +02:00
Federico Jaramillo Martinez 82ba2e0490 fix: validate prompt API payloads
Fixes #11
2026-06-05 11:09:15 +02:00
Federico Jaramillo Martinez 2abd1d9e19 fix: queue prompts during compaction 2026-05-28 14:15:52 +02:00
Federico Jaramillo Martinez 50f1ddc9c5 fix: refresh session message counts live 2026-05-26 08:52:43 +02:00
Federico Jaramillo Martinez 679008d132 fix: clear stale workspace activity indicators 2026-05-24 08:15:47 +02:00
Federico Jaramillo Martinez 428f7bb8c2 feat: archive session descendants 2026-05-23 00:05:03 +02:00
Federico Jaramillo Martinez 619840a398 fix: clear stale workspace activity 2026-05-19 21:41:58 +02:00
Federico Jaramillo Martinez 9c028a7353 feat: move archived sessions out of active storage 2026-05-18 21:58:40 +02:00
Federico Jaramillo Martinez c5c45195d7 Remove test type assertion suppressions 2026-05-17 08:58:46 +02:00
Federico Jaramillo Martinez 6a8f8b6ccf Add global web auth flows 2026-05-16 22:44:24 +02:00
Federico Jaramillo Martinez 63ef03f8f6 Improve queued message handling 2026-05-10 00:46:47 +02:00
Federico Jaramillo Martinez 7847858143 Add fake Pi session service tests 2026-05-08 16:13:56 +02:00