[{"name":"args.ts","kind":"file","size":12155,"lastCommitHash":"824a9ee3b51e839c5daefa7fe5adf9e7333a8428","lastCommitWhen":"2026-08-18T12:23:59-07:00","lastCommitMessage":"Let subagents be spawned with their own reasoning level (#1510)\n\n* feat(coding-agent): let subagents be spawned with an explicit reasoning level, fixes ENG-5301\n\n* fix(coding-agent): neutral wording for the subagent thinking option in the rlm prompt\n\n* chore(coding-agent): drop a redundant doc comment\n\n* chore(coding-agent): drop the remaining name-restating doc comments in rlm-runtime\n\n* chore(coding-agent): simplify subagent thinking validation\n\n* fix(coding-agent): preserve early thinking validation\n\n* refactor(coding-agent): centralize thinking levels\n\n* refactor(coding-agent): keep thinking validation local\n\n* test(coding-agent): retain thinking option boundaries\n\n---------\n\nCo-authored-by: Seth <seth@primeintellect.ai>"},{"name":"command-registry.ts","kind":"file","size":12206,"lastCommitHash":"61eb64748eb077e2a084432db92d101a2a83e146","lastCommitWhen":"2026-08-26T15:24:10-07:00","lastCommitMessage":"Minimal CPython REPL runtime (rlm.repl) (#1685)\n\n* feat(coding-agent): add async-by-default bash() to the kernel runtime\n\n* chore(coding-agent): tighten bash() comments and changelog fragment\n\n* feat(coding-agent): add a standalone CPython REPL runtime speaking JSON lines over stdio\n\n* chore(coding-agent): tighten REPL runtime comments\n\n* feat(coding-agent): run the kernel on the REPL runtime over stdio\n\n* fix(coding-agent): reject pending host requests on kernel teardown\n\nThe runtime now fails pending host_request futures when stdin hits EOF or\na shutdown request arrives, so a cell awaiting a host reply can no longer\nblock _serve from consuming the shutdown and wedge the process. Startup\nand busy-kernel messages plus the ipython tool description now say Python\nkernel, matching the default REPL runtime client.\n\n* chore(coding-agent): describe the kernel-heavy test tag client-neutrally\n\n* feat(coding-agent): make the REPL runtime the only kernel\n\nRemoves the Jupyter/ipykernel/ZMQ kernel client, the fork server, the\nPRIME_AGENT_KERNEL escape hatch, and the %%bash/%cd/%env cell rewriting.\nMagic-style cells (%/%%/!) return a one-line error naming the Python or\nbash() replacement. The kernel venv no longer installs ipykernel;\nexisting venvs are rebuilt once via the bootstrap schema bump. Old\nsnapshot artifacts still restore through the runtime's pickle compat.\n\n* fix(coding-agent): close MCP transports in REPL shutdown\n\n* fix(coding-agent): address bash() review findings — exact tail retention, foreground-status lifecycle with group anchoring, post-kill forkserver reap, Windows start-id parity, executor-free await\n\n* fix(coding-agent): tree-kill bash() process trees on Windows and make running reflect group liveness\n\n* fix(runtime): address repl runtime review findings\n\n- revalidate targeted interrupts through SIGINT delivery so a stale signal\n  cannot cancel a later request\n- preserve a parked untargeted interrupt while another request is inflight\n- reject non-string interrupt ids and validate snapshot options\n  (prune_oversized bool, max_bytes/max_variable_bytes present => int)\n- guard str(exc) in error/skip/fail reasons so a broken __str__ cannot\n  kill the runtime\n- fail the snapshot when the manifest write fails (before any pruning)\n- report 'snapshot not found' reason on restore of a missing path\n- wait unbounded for the output-pump drain marker so done never precedes\n  captured output and marker bytes never leak\n- document that aggregate-cap skips are not pruned\n\n* fix(coding-agent): carry bash() status pipe as stdin so strict-POSIX shells accept single-digit fd redirections\n\n* fix(coding-agent): address host-swap review findings — runtime-neutral kernel wording, %cd/%env rewrite fidelity, linear-time magic regexes, restart supersession guard\n\n* fix(coding-agent): reject stale column-0 line magics on any cell line, not just the first\n\n* fix(coding-agent): close status fds when wake-pipe creation fails and gate bash() commands on orphan-journal registration\n\n* fix(coding-agent): strip quoted %cd targets, use UTF-16-safe %env parsing, and expand $var/${var} values PEP-215-style\n\n* fix(coding-agent): fail rlm.run fast outside a live kernel so vitest workers cannot hang on a comm that never replies\n\n* fix(coding-agent): clear the active cell id before terminal events so late background output is never tagged with a finished cell\n\n* fix(coding-agent): update legacy IPython-era tests to assert cutover behavior\n\n* fix(coding-agent): describe the column-0 magic scan without referencing the removed rewrite backend\n\n* fix(coding-agent): consume parked interrupts on compile failures and survive user-closed stdio in the drain path\n\n* fix(coding-agent): redact bare %env listings, prefer '=' in %env parsing, echo %cd targets, and keep graceful shutdowns owning their cleanup\n\n* fix(coding-agent): reject kernel startup promptly on spawn errors and commit %cd previous-dir tracking only after chdir succeeds\n\n* fix(coding-agent): trim ParsedIpythonBashCell to the body field its callers use\n\n* fix(coding-agent): kill full process trees in the Windows orphan reaper via taskkill /T\n\n* fix(coding-agent): survive compile-phase crashes and fd-reuse drain hangs in the REPL runtime\n\n* fix(coding-agent): shield snapshot prune deletions from interrupts and pin the host comm probe to its real seam\n\n* fix(coding-agent): route list_names through the per-request backstop and skip non-string namespace keys\n\n* fix(coding-agent): reject snapshot requests whose manifest path aliases the payload path\n\n* fix(coding-agent): reject negative snapshot size caps that would prune every user variable\n\n* fix(coding-agent): kill one-shot await bash() on cancel, resolve Windows helpers via System32, retry taskkill after reap, and fail closed on orphan-journal enrollment\n\n* fix(coding-agent): attribute REPL stream output at write time so raw fd and user-thread bytes never carry another cell's id\n\n* fix(coding-agent): surface unattributed REPL stream output as separate background output instead of dropping or merging it\n\n* fix(coding-agent): confirm group exit before a cancelled one-shot bash() await propagates and complete-write orphan-journal records\n\n* fix(coding-agent): expose a working sys.stdout.buffer on the tagged REPL writer routing bytes through the null-attributed raw channel\n\n* fix(coding-agent): mark between-cell background output truncated when the pending buffer cap is hit\n\n* fix(coding-agent): shield the cancelled-await bash() confirm-exit from re-cancellation, fail clearly without bash on Windows, and fence slow pumps out of result assembly\n\n* fix(coding-agent): survive hostile protocol lines in the REPL reader thread and interrupt without pthread_kill on Windows\n\n* fix(coding-agent): send the protocol shutdown from dispose() so the runtime closes MCP servers and kills live bash groups before the hard kill\n\n* fix(coding-agent): flag the pump's read-to-commit window so the bash() drain fence cannot miss an in-flight chunk\n\n* fix(coding-agent): guard the whole REPL request line against hostile input, reject duplicate in-flight ids, complete short buffer-pipe writes, and clean the snapshot temp file on KeyboardInterrupt\n\n* fix(coding-agent): drop stale between-cell background output on kernel teardown so it cannot surface after a restart\n\n* fix(coding-agent): assert the tagged channel only in the large buffer-write REPL test since cross-channel ordering is not guaranteed\n\n* fix(coding-agent): resolve taskkill via absolute System32 path in the host orphan reaper\n\n* fix(coding-agent): write the inactive orphan-journal record only after a delivered kill so undelivered signals leave the host reaper in charge\n\n* fix(coding-agent): keep a REPL request interrupt-targetable through its trailing-expression repr and output drain until done is emitted\n\n* fix(coding-agent): count an already-exited leader as delivered in the Windows bash() reap so clean exits still journal inactive\n\n* fix(coding-agent): reject NaN and Infinity in emit() payloads before they corrupt REPL protocol framing\n\n* chore(coding-agent): correct the stale ipykernel requirement on the python override doc\n\n* chore(coding-agent): drop migration-era wording from kernel comments\n\n* fix(coding-agent): resolve trusted absolute shell host-side and close Windows journal/reap gaps\n\n* fix(coding-agent): best-effort-kill pid-only orphan records in daemon force-stop and recovery reaps\n\n* refactor(coding-agent): drop the magic-cell rejection gate\n\n%-prefixed and !-prefixed cells now reach CPython and fail with its own\nSyntaxError, which names the offending line. The rejection layer guarded\nagainst model-produced IPython syntax, but with the shipped prompt fresh\nsessions do not produce it, and the plain SyntaxError is protection enough.\nparseIpythonBashCell stays: transcripts from ipykernel-era sessions render\n%%bash cells with shell highlighting forever.\n\n* fix(coding-agent): report a committed destructive snapshot as success even when an interrupt was parked\n\n* chore(ai): drop stray live-regen drift in models.generated.ts\n\nad657d7ec accidentally committed generate-models output produced by a local\nbuild; the catalog belongs to its own regen PRs.\n\n* test(coding-agent): expect a plain SyntaxError for legacy %%bash cells after the magic-rejection gate removal\n\n* fix(coding-agent): consume a finishing-targeted interrupt after a completed state request instead of failing the done\n\n* fix(coding-agent): exit the REPL runtime when its owner dies even during a busy cell\n\n* fix(coding-agent): resolve the kernel bash shell only from trusted absolute paths on Windows\n\n* fix(coding-agent): contain Windows bash children with kill-on-close job objects\n\n* test(coding-agent): cover owner death during a non-yielding REPL cell\n\n* fix(coding-agent): skip concurrently deleted names during snapshot instead of aborting\n\n* fix(coding-agent): fall back to taskkill when job termination fails\n\n* fix(coding-agent): stop telling REPL-default users they need ipykernel\n\n* fix(coding-agent): clear the SIGINT target when its request finishes\n\n* test(coding-agent): drop migration-era wording from the %%bash rejection comment\n\n* fix(coding-agent): start Windows bash children suspended and fail closed when job containment cannot be established\n\n* fix(coding-agent): re-assert the kernel SIGINT handler between cells so a cell rebinding SIGINT cannot break interrupts\n\n* fix(coding-agent): kill the whole tree for enriched orphan records on Windows force-stop\n\nstopTrackedProcess signals only the shell pid on Windows; use killOrphanProcess (taskkill /T) after the identity check, matching the owned-session-worker and daemon-supervisor reapers.\n\n* docs(coding-agent): describe current magic-cell behavior in release notes\n\nMagic-style cells fail with a plain SyntaxError; the migration error and %cd/%env rewrites were removed, so the notes stop claiming them.\n\n* fix(coding-agent): skip the liveness check when the orphan identity is stale\n\nA reused pid looked like a failed kill after the identity re-check skipped taskkill, blocking worker cleanup with a spurious failure.\n\n* fix(coding-agent): journal Windows bash() children before job assignment so a kernel kill mid-spawn cannot leak an unjournaled suspended process\n\n* fix(coding-agent): pre-create the Windows bash() job before spawn and contain the child before the journal start-id query\n\n* fix(coding-agent): create Windows bash() children atomically inside the kill-on-close job via PROC_THREAD_ATTRIBUTE_JOB_LIST, closing the Popen-to-assignment leak window\n\n* chore(coding-agent): compress the atomic-job-association comments to one-line rationale\n\n* fix(coding-agent): send duplicate-id protocol errors outside the interrupt lock and reject int payloads in the captured stdout buffer\n\n* docs(coding-agent): update the kernel provisioner docstring for the REPL/IPython split\n\n* fix(coding-agent): retain the Windows bash() process handle through job cleanup and taskkill fallbacks so a recycled pid can never be killed\n\n* fix(coding-agent): serialize Windows bash() abort cleanup under the kill lock so shutdown taskkill can never race the process-handle close\n\n* fix(coding-agent): commit REPL snapshot payload and manifest atomically via unique temp files with guaranteed cleanup and parked-SIGINT restore\n\n* fix(coding-agent): stage REPL restore before an interrupt-parked apply and recover committed snapshot/restore results from protocol interrupts so a committed operation is never misreported as failed\n\n* chore(coding-agent): compress restore-shield rationale comments to one line each\n\n* fix(coding-agent): surface unattributed background output in IPython cell details and render it after the traceback in the expanded cell view\n\n* docs(coding-agent): replace stale Jupyter comm vocabulary in rlm-runtime failure modes and focused validation with stdio-transport equivalents\n\n* docs(coding-agent): describe the REPL trust boundary and runtime-bootstrap failure in stdio terms and drop the removed TokenUsage export\n\n* fix(runtime): address REPL review findings\n\n* fix(runtime): preserve near-cap snapshots\n\n---------\n\nCo-authored-by: Seth <seth@primeintellect.ai>"},{"name":"config-selector.ts","kind":"file","size":1224,"lastCommitHash":"032e3ee74574ca16efaf8745a1394b821256a5d0","lastCommitWhen":"2026-08-18T12:17:35+02:00","lastCommitMessage":"chore: remove redundant comments and unused internals (#1505)\n\n* chore: remove redundant comments\n\n* chore(tui): remove redundant export comments\n\n* chore(coding-agent): remove redundant example comments\n\n* chore(ai): remove redundant comments\n\n* chore(coding-agent): remove obsolete core comments\n\n* chore(coding-agent): remove redundant test comments\n\n* chore(coding-agent): remove redundant test comments\n\n* chore(coding-agent): remove redundant rpc test comments\n\n* chore(coding-agent): remove redundant CLI comments\n\n* chore(agent): remove redundant comments\n\n* chore(tui): remove redundant source comments\n\n* chore(coding-agent): remove redundant mode comments\n\n* chore(coding-agent): remove redundant mode comments\n\n* chore(coding-agent): remove redundant test comments\n\n* chore(ai): remove redundant source comments\n\n* chore(coding-agent): remove redundant session comments\n\n* chore(coding-agent): remove redundant core comments\n\n* chore(coding-agent): remove redundant test comments\n\n* chore(tests): remove redundant test comments\n\n* chore: remove unused internal helpers\n\n* docs: restore public API contracts\n\n* chore(coding-agent): restore invariant documentation\n\n* chore(coding-agent): clarify agent family contracts\n\n* style(coding-agent): format restored contracts\n\n* fix: restore intentional catch explanations"},{"name":"daemon-command.ts","kind":"file","size":48663,"lastCommitHash":"8c4ab8f5d63790c660b89d356310852aecfaacba","lastCommitWhen":"2026-08-28T14:15:06+02:00","lastCommitMessage":"refactor(coding-agent): centralize the session-path predicate (#1846)"},{"name":"daemon-launch.ts","kind":"file","size":20787,"lastCommitHash":"8189b12d6c2f2912326aa369d5d12533ba9d91b5","lastCommitWhen":"2026-08-18T14:04:58-07:00","lastCommitMessage":"Normalize daemon socket paths before deriving identity (#1520)\n\n* fix(coding-agent): normalize daemon socket paths at every entry point, fixes ENG-5303\n\n* fix(coding-agent): address review findings on socket-path normalization\n\n- Defer --daemon-socket normalization until after --cwd applies so relative\n  socket paths resolve against the requested working directory\n- Migrate legacy raw-spelling worker-descriptor namespaces to the canonical\n  directory on supervisor construction so existing workers stay adoptable\n- Consolidate the remaining private normalizers (package-manager-cli,\n  daemon-update-restart) onto the shared normalizeSocketPath\n- Wait for killed test supervisors to exit before removing their directories\n  to fix ENOTEMPTY flakes in CI\n\n* fix(coding-agent): harden descriptor-namespace adoption and test cleanup\n\n- Adopt a raw-spelling descriptor namespace only after the socket-path lease\n  and registry ownership are held, so a rejected startup can never move a live\n  supervisor's directory\n- Skip unreadable JSON entries per file when identifying a namespace instead\n  of aborting the whole scan\n- Drop migration-era vocabulary from the helper names and test titles\n- Disable the Node compile cache for spawned test supervisors and tolerate\n  cleanup races so worker processes exiting late cannot fail the suite\n\n* refactor(coding-agent): drop the descriptor-namespace adoption machinery\n\nNormalization at the entry points prevents namespace forks going forward;\ndescriptors written under an old raw-spelling key are healed per-field on\nload only when they share the directory. Cross-directory adoption kept\naccreting ordering hazards (live-daemon rename races, persisted-config\nstaleness) disproportionate to its value, so a daemon that previously ran\non a non-canonical spelling simply starts fresh namespaces; saved sessions\nare unaffected (they live in the session catalog, not the descriptor dir).\n\n* docs(coding-agent): align the changelog with the simplified scope\n\n* chore(coding-agent): trim excessive comments\n\n* fix(coding-agent): normalize the early-launch socket key and drop an incidental test\n\nmaybeStartDaemonEarly memoized ensure attempts under the raw --daemon-socket\nspelling while main uses the normalized one, so equivalent spellings could\nrun two concurrent spawn attempts for one daemon. The early kick now derives\nthe same canonical spelling (resolving relative paths against --cwd).\n\n* chore(coding-agent): simplify socket normalization coverage\n\n* Address final review feedback\n\n---------\n\nCo-authored-by: Seth <seth@primeintellect.ai>"},{"name":"daemon-list-format.ts","kind":"file","size":3604,"lastCommitHash":"8d4a1e1165574dd37a948807958def4abd2734ce","lastCommitWhen":"2026-06-29T11:27:38-07:00","lastCommitMessage":"unify session state and remove the deferred-agent path (#269)\n\n* unify session state onto lifecycle + activity axes\n\ncollapse the three overlapping session taxonomies into orthogonal axes: a durable lifecycle (draft/live/archived) and a heuristic activity (working/idle), with the soft nemotron taskState only bucketing idle sessions. agents view now shows live sessions instead of only daemon-resident ones, fixing lost sessions. rename on-disk sleep to archived with a legacy read shim, and settle stalled classification to idle+needs_input.\n\n* replace DeferredAgentConnection with native draft lifecycle\n\ndelete the 534-line deferred wrapper and its discardEmptyDaemonSession helper. prime-agent now opens a real daemon session eagerly; a message-less session is a draft (hidden from the view) that the daemon discards when its last client detaches, so abandoned new-chats leave nothing behind. trim verbose comments across the session-state changes.\n\n* drop the design doc from the branch\n\n* address review bot findings on session-state changes\n\nagents view now lists with all so on-disk live sessions actually appear; a resident session is never treated as archived from stale disk state; draft discard keeps sessions with a running bash, persisted config, or scheduled jobs, and re-checks after yielding so a reattaching client cancels the discard.\n\n* retry summarizer after a needs_input fallback until a real recap lands\n\nthe fallback verdict set basedOnMessageCount, which suppressed future sweeps and left a transient failure with a permanently blank recap. track an owesSummary signal so a blank recap keeps retrying. also update the agents-view list-command test to expect all:true.\n\n* unify empty-draft check across detach and close paths\n\ncloseSessionOnce deleted any zero-message session file, which could wipe a draft carrying persisted model/name changes or scheduled jobs that the detach path explicitly preserves. both paths now share isEmptyDraftContent so config-bearing drafts are never discarded.\n\n* treat configured drafts as live and count thinking-level in user content\n\na message-less session the user configured (model/name/thinking level) is now kept on detach, so it must also show in the agents view: activeLifecycleForSession marks it live, not draft. hasUserContent also counts thinking_level_change so such a draft isn't wrongly discarded.\n\n* exclude default model/thinking entries from user-content check\n\nevery new session is created with a default model_change and thinking_level_change, so counting them made hasUserContent true for all fresh sessions — no draft was ever discardable and abandoned chats were archived instead of deleted. only count a second+ occurrence (an actual user change).\n\n* hide empty on-disk draft sessions from the agents view\n\nsummaryForInactiveSession marked every on-disk active record live, so empty session files (no messages, no name) showed as live agents with no runtime after list all. inactiveLifecycleForSession now treats a contentless active record as a draft, matching the active-session path.\n\n* only skip model/thinking defaults that match the creation signature\n\ncounting the first model/thinking entry as a default mis-discarded older sessions (pre-default-entries) where a lone model_change is a real user choice. now only the exact leading model_change+thinking_level_change pair that new sessions are created with is skipped; any other shape counts as content, so no configured session is deleted.\n\n* make session lifecycle purely message-based\n\nseparate two conflated concerns: lifecycle (agents-view visibility) is now message-based on both the active and on-disk paths, while hasUserContent governs only discard-safety. this fixes a config-only session being stuck in classifying forever (summarizer skips message-less sessions), an active/inactive inconsistency where it vanished after the daemon restarted, and removes the need for SessionInfo to replicate hasUserContent. config-only drafts stay hidden but are still preserved on disk.\n\n* recognize the no-model creation signature in user-content check\n\ncreateAgentSession omits the model_change when no model is available, so a fresh session's creation prefix can be a lone thinking_level_change. hasUserContent now skips an optional leading model_change then a thinking_level_change, so those no-model drafts are still discardable. the guard only runs on zero-message resident sessions, so this can't drop a real conversation.\n\n* re-check draft discard after a busy session settles\n\nif a client detached while a message-less draft was streaming, compacting, or running bash, isDiscardableDraft was false at detach and nothing re-evaluated afterward, leaving the draft in daemon memory. now turn_end/compaction_end/bash_end re-check discardability for client-less drafts.\n\n* carry persisted recap and verdict for off-daemon sessions\n\nsurfacing on-disk live sessions in the agents view made them all show as unjudged (defaulting to needs input), because summaryForInactiveSession never loaded the persisted agent_status. scanSessionInfo now captures the latest recap/verdict during its existing read and the summary carries it through.\n\n* gate off-daemon verdict on message-count currency\n\nsummaryForInactiveSession exposed the persisted recap/verdict unconditionally; a session that gained messages after its last status would show a stale verdict. gate on basedOnMessageCount === messageCount, matching isSummaryCurrent for resident sessions.\n\n* treat missing on-disk lifecycle state as not-archived\n\ninactiveLifecycleForSession returned archived whenever session_state was absent, so older sessions that never wrote a lifecycle entry were hidden despite having real messages. only explicit archived/crash now excludes a session; everything else falls through to the message-count check."},{"name":"daemon-ps-format.ts","kind":"file","size":2631,"lastCommitHash":"ebb240e5a8dce8cb0e169f0be94b8bae3c2ae1b1","lastCommitWhen":"2026-07-16T12:38:34-07:00","lastCommitMessage":"standardize cli commands and discovery (#423)\n\n* feat: standardize cli commands (ENG-4538)\n\n* fix: address cli review feedback\n\n* fix: address cli review follow-ups\n\n* fix: handle cli routing edge cases\n\n* fix: correct doctor cleanup guidance\n\n* fix: improve cli migration errors\n\n* fix: complete cli migration guidance\n\n* fix: harden shutdown cleanup output\n\n* fix: keep attach connect-only\n\n* fix: preserve agents options\n\n* fix: attach path-like agent names\n\n* test: migrate shutdown regression\n\n* fix(coding-agent): address cli review findings\n\nfixes #423\n\n* fix(coding-agent): route removed commands through help\n\nfixes #423\n\n* fix(coding-agent): preserve help and attach routing\n\nfixes #423\n\n* fix(coding-agent): preserve nested command options\n\nfixes #423\n\n* fix(coding-agent): distinguish help prompts from commands\n\nfixes #423\n\n* docs: add common cli commands"},{"name":"daemon-ps.ts","kind":"file","size":40497,"lastCommitHash":"0940833b771fbaf5144451988604b310a96722fd","lastCommitWhen":"2026-08-26T14:41:46-07:00","lastCommitMessage":"Async bash() tool for the kernel runtime (#1684)\n\n* feat(coding-agent): add async-by-default bash() to the kernel runtime\n\n* chore(coding-agent): tighten bash() comments and changelog fragment\n\n* fix(coding-agent): address bash() review findings — exact tail retention, foreground-status lifecycle with group anchoring, post-kill forkserver reap, Windows start-id parity, executor-free await\n\n* fix(coding-agent): tree-kill bash() process trees on Windows and make running reflect group liveness\n\n* fix(coding-agent): carry bash() status pipe as stdin so strict-POSIX shells accept single-digit fd redirections\n\n* fix(coding-agent): close status fds when wake-pipe creation fails and gate bash() commands on orphan-journal registration\n\n* fix(coding-agent): kill full process trees in the Windows orphan reaper via taskkill /T\n\n* fix(coding-agent): kill one-shot await bash() on cancel, resolve Windows helpers via System32, retry taskkill after reap, and fail closed on orphan-journal enrollment\n\n* fix(coding-agent): confirm group exit before a cancelled one-shot bash() await propagates and complete-write orphan-journal records\n\n* fix(coding-agent): shield the cancelled-await bash() confirm-exit from re-cancellation, fail clearly without bash on Windows, and fence slow pumps out of result assembly\n\n* fix(coding-agent): flag the pump's read-to-commit window so the bash() drain fence cannot miss an in-flight chunk\n\n* fix(coding-agent): resolve taskkill via absolute System32 path in the host orphan reaper\n\n* fix(coding-agent): write the inactive orphan-journal record only after a delivered kill so undelivered signals leave the host reaper in charge\n\n* fix(coding-agent): count an already-exited leader as delivered in the Windows bash() reap so clean exits still journal inactive\n\n* fix(coding-agent): resolve trusted absolute shell host-side and close Windows journal/reap gaps\n\n* fix(coding-agent): best-effort-kill pid-only orphan records in daemon force-stop and recovery reaps\n\n* fix(coding-agent): resolve the kernel bash shell only from trusted absolute paths on Windows\n\n* fix(coding-agent): contain Windows bash children with kill-on-close job objects\n\n* fix(coding-agent): fall back to taskkill when job termination fails\n\n* fix(coding-agent): start Windows bash children suspended and fail closed when job containment cannot be established\n\n* fix(coding-agent): kill the whole tree for enriched orphan records on Windows force-stop\n\nstopTrackedProcess signals only the shell pid on Windows; use killOrphanProcess (taskkill /T) after the identity check, matching the owned-session-worker and daemon-supervisor reapers.\n\n* fix(coding-agent): skip the liveness check when the orphan identity is stale\n\nA reused pid looked like a failed kill after the identity re-check skipped taskkill, blocking worker cleanup with a spurious failure.\n\n* fix(coding-agent): journal Windows bash() children before job assignment so a kernel kill mid-spawn cannot leak an unjournaled suspended process\n\n* fix(coding-agent): pre-create the Windows bash() job before spawn and contain the child before the journal start-id query\n\n* fix(coding-agent): create Windows bash() children atomically inside the kill-on-close job via PROC_THREAD_ATTRIBUTE_JOB_LIST, closing the Popen-to-assignment leak window\n\n* chore(coding-agent): compress the atomic-job-association comments to one-line rationale\n\n* fix(coding-agent): retain the Windows bash() process handle through job cleanup and taskkill fallbacks so a recycled pid can never be killed\n\n* fix(coding-agent): serialize Windows bash() abort cleanup under the kill lock so shutdown taskkill can never race the process-handle close"},{"name":"daemon-stop-confirm.ts","kind":"file","size":2990,"lastCommitHash":"ebb7fd5f6f3ebeb6c0d9dd17266cb2026940d9e0","lastCommitWhen":"2026-07-17T16:19:06-07:00","lastCommitMessage":"back all client modes with the daemon (#456)\n\n* refactor(coding-agent): daemon back all client modes (ENG-4685)\n\n* fix(coding-agent): harden daemon client modes (ENG-4685)\n\n* fix(coding-agent): address daemon client review findings (ENG-4685)\n\n* fix(coding-agent): close daemon client review gaps (ENG-4685)\n\n* fix(coding-agent): preserve daemon client ordering (ENG-4685)\n\n* fix(coding-agent): validate rpc command shapes (ENG-4685)\n\n* fix daemon worker adoption\n\n* fix daemon owned-session authorization (fixes #456)\n\n* hide client-owned daemon sessions (fixes #456)\n\n* route stale daemon clients locally (fixes #456)\n\n* fix(coding-agent): drain rpc prompts before eof\n\nfixes #456\n\n* fix(coding-agent): preserve rpc prompt streaming\n\nfixes #456\n\n* fix(coding-agent): preserve prompt wait calls\n\nfixes #456"},{"name":"daemon-update-restart.ts","kind":"file","size":20415,"lastCommitHash":"6d3e2609b33beb81af58523b867bc2a401425b3a","lastCommitWhen":"2026-08-31T23:35:01+09:00","lastCommitMessage":"fix(update): restart prepared daemon when coordination fails\n"},{"name":"file-processor.ts","kind":"file","size":2529,"lastCommitHash":"032e3ee74574ca16efaf8745a1394b821256a5d0","lastCommitWhen":"2026-08-18T12:17:35+02:00","lastCommitMessage":"chore: remove redundant comments and unused internals (#1505)\n\n* chore: remove redundant comments\n\n* chore(tui): remove redundant export comments\n\n* chore(coding-agent): remove redundant example comments\n\n* chore(ai): remove redundant comments\n\n* chore(coding-agent): remove obsolete core comments\n\n* chore(coding-agent): remove redundant test comments\n\n* chore(coding-agent): remove redundant test comments\n\n* chore(coding-agent): remove redundant rpc test comments\n\n* chore(coding-agent): remove redundant CLI comments\n\n* chore(agent): remove redundant comments\n\n* chore(tui): remove redundant source comments\n\n* chore(coding-agent): remove redundant mode comments\n\n* chore(coding-agent): remove redundant mode comments\n\n* chore(coding-agent): remove redundant test comments\n\n* chore(ai): remove redundant source comments\n\n* chore(coding-agent): remove redundant session comments\n\n* chore(coding-agent): remove redundant core comments\n\n* chore(coding-agent): remove redundant test comments\n\n* chore(tests): remove redundant test comments\n\n* chore: remove unused internal helpers\n\n* docs: restore public API contracts\n\n* chore(coding-agent): restore invariant documentation\n\n* chore(coding-agent): clarify agent family contracts\n\n* style(coding-agent): format restored contracts\n\n* fix: restore intentional catch explanations"},{"name":"initial-message.ts","kind":"file","size":996,"lastCommitHash":"3e5ad67e0f325d4888f82f9b82966218eb4407f5","lastCommitWhen":"2026-05-07T15:59:42+02:00","lastCommitMessage":"chore: migrate pi packages to earendil works scope\n"},{"name":"list-models.ts","kind":"file","size":3054,"lastCommitHash":"032e3ee74574ca16efaf8745a1394b821256a5d0","lastCommitWhen":"2026-08-18T12:17:35+02:00","lastCommitMessage":"chore: remove redundant comments and unused internals (#1505)\n\n* chore: remove redundant comments\n\n* chore(tui): remove redundant export comments\n\n* chore(coding-agent): remove redundant example comments\n\n* chore(ai): remove redundant comments\n\n* chore(coding-agent): remove obsolete core comments\n\n* chore(coding-agent): remove redundant test comments\n\n* chore(coding-agent): remove redundant test comments\n\n* chore(coding-agent): remove redundant rpc test comments\n\n* chore(coding-agent): remove redundant CLI comments\n\n* chore(agent): remove redundant comments\n\n* chore(tui): remove redundant source comments\n\n* chore(coding-agent): remove redundant mode comments\n\n* chore(coding-agent): remove redundant mode comments\n\n* chore(coding-agent): remove redundant test comments\n\n* chore(ai): remove redundant source comments\n\n* chore(coding-agent): remove redundant session comments\n\n* chore(coding-agent): remove redundant core comments\n\n* chore(coding-agent): remove redundant test comments\n\n* chore(tests): remove redundant test comments\n\n* chore: remove unused internal helpers\n\n* docs: restore public API contracts\n\n* chore(coding-agent): restore invariant documentation\n\n* chore(coding-agent): clarify agent family contracts\n\n* style(coding-agent): format restored contracts\n\n* fix: restore intentional catch explanations"},{"name":"node-version-check.ts","kind":"file","size":1844,"lastCommitHash":"10ef94a7583f0acba130493fe77c555d482fa835","lastCommitWhen":"2026-07-16T12:23:32-07:00","lastCommitMessage":"guide users on unsupported node instead of crashing on launch (#273)\n\n* guide users on unsupported node instead of crashing on launch\n\n* point node-version guidance at the releases page instead of a wrong npm name\n\n* fix node version preflight"},{"name":"owned-session-worker.ts","kind":"file","size":17039,"lastCommitHash":"0940833b771fbaf5144451988604b310a96722fd","lastCommitWhen":"2026-08-26T14:41:46-07:00","lastCommitMessage":"Async bash() tool for the kernel runtime (#1684)\n\n* feat(coding-agent): add async-by-default bash() to the kernel runtime\n\n* chore(coding-agent): tighten bash() comments and changelog fragment\n\n* fix(coding-agent): address bash() review findings — exact tail retention, foreground-status lifecycle with group anchoring, post-kill forkserver reap, Windows start-id parity, executor-free await\n\n* fix(coding-agent): tree-kill bash() process trees on Windows and make running reflect group liveness\n\n* fix(coding-agent): carry bash() status pipe as stdin so strict-POSIX shells accept single-digit fd redirections\n\n* fix(coding-agent): close status fds when wake-pipe creation fails and gate bash() commands on orphan-journal registration\n\n* fix(coding-agent): kill full process trees in the Windows orphan reaper via taskkill /T\n\n* fix(coding-agent): kill one-shot await bash() on cancel, resolve Windows helpers via System32, retry taskkill after reap, and fail closed on orphan-journal enrollment\n\n* fix(coding-agent): confirm group exit before a cancelled one-shot bash() await propagates and complete-write orphan-journal records\n\n* fix(coding-agent): shield the cancelled-await bash() confirm-exit from re-cancellation, fail clearly without bash on Windows, and fence slow pumps out of result assembly\n\n* fix(coding-agent): flag the pump's read-to-commit window so the bash() drain fence cannot miss an in-flight chunk\n\n* fix(coding-agent): resolve taskkill via absolute System32 path in the host orphan reaper\n\n* fix(coding-agent): write the inactive orphan-journal record only after a delivered kill so undelivered signals leave the host reaper in charge\n\n* fix(coding-agent): count an already-exited leader as delivered in the Windows bash() reap so clean exits still journal inactive\n\n* fix(coding-agent): resolve trusted absolute shell host-side and close Windows journal/reap gaps\n\n* fix(coding-agent): best-effort-kill pid-only orphan records in daemon force-stop and recovery reaps\n\n* fix(coding-agent): resolve the kernel bash shell only from trusted absolute paths on Windows\n\n* fix(coding-agent): contain Windows bash children with kill-on-close job objects\n\n* fix(coding-agent): fall back to taskkill when job termination fails\n\n* fix(coding-agent): start Windows bash children suspended and fail closed when job containment cannot be established\n\n* fix(coding-agent): kill the whole tree for enriched orphan records on Windows force-stop\n\nstopTrackedProcess signals only the shell pid on Windows; use killOrphanProcess (taskkill /T) after the identity check, matching the owned-session-worker and daemon-supervisor reapers.\n\n* fix(coding-agent): skip the liveness check when the orphan identity is stale\n\nA reused pid looked like a failed kill after the identity re-check skipped taskkill, blocking worker cleanup with a spurious failure.\n\n* fix(coding-agent): journal Windows bash() children before job assignment so a kernel kill mid-spawn cannot leak an unjournaled suspended process\n\n* fix(coding-agent): pre-create the Windows bash() job before spawn and contain the child before the journal start-id query\n\n* fix(coding-agent): create Windows bash() children atomically inside the kill-on-close job via PROC_THREAD_ATTRIBUTE_JOB_LIST, closing the Popen-to-assignment leak window\n\n* chore(coding-agent): compress the atomic-job-association comments to one-line rationale\n\n* fix(coding-agent): retain the Windows bash() process handle through job cleanup and taskkill fallbacks so a recycled pid can never be killed\n\n* fix(coding-agent): serialize Windows bash() abort cleanup under the kill lock so shutdown taskkill can never race the process-handle close"},{"name":"public-command.ts","kind":"file","size":15134,"lastCommitHash":"f8f02221eecad192c65324ebba50037505cfdac6","lastCommitWhen":"2026-08-20T13:17:52+02:00","lastCommitMessage":"feat: add generic kernel-owned MCP runtime (#1495)\n\n* feat(coding-agent): add generic MCP runtime\n\n* fix(coding-agent): harden MCP lifecycle and overrides\n\n* fix(runtime): close cancelled host request comms\n\n* fix(runtime): preserve MCP SDK result aliases\n\n* fix(runtime): preserve synchronous kernel shutdown\n\n* fix(runtime): allow MCP close retry after cancellation\n\n* feat(coding-agent): manage MCP servers from CLI and TUI\n\n* fix(coding-agent): preserve inherited stdio env names\n\n* fix(coding-agent): reserve built-in MCP identities\n\n* fix(coding-agent): allow cleanup of reserved MCP entries\n\n* test(coding-agent): update MCP command hint\n\n* fix: address MCP reload and cleanup findings\n\n* fix(coding-agent): advertise generic MCP connections\n\n* fix(coding-agent): keep MCP command results visible\n\n* fix(runtime): surface safe stdio startup diagnostics\n\n* fix(runtime): preserve startup errors through cleanup\n\n* fix(coding-agent): drop stored MCP credentials when a server is removed or replaced\n\n* fix(coding-agent): scope credential drops to generic servers and keep quoted empty argv tokens\n\n* docs(coding-agent): document the removed catalog-name override as a breaking change\n\n* fix: close kernel MCP servers during shutdown\n\n* docs: preserve changelog sections after main merge\n\n* fix: harden MCP shutdown boundaries\n\n* fix: bound graceful kernel shutdown\n\n---------\n\nCo-authored-by: Sebastian <sebastian@primeintellect.ai>"},{"name":"session-resolver.ts","kind":"file","size":45,"lastCommitHash":"b0a77adeb9f7e9c219803e25829c83a92c639ebb","lastCommitWhen":"2026-07-20T13:28:04-07:00","lastCommitMessage":"reject invalid resume session ids (#479)\n\n* fix(coding-agent): reject invalid resume selectors (ENG-4722)\n\n* fix(coding-agent): resolve ambiguous session selectors\n\nfixes #479\n\n* fix(coding-agent): prefer exact session ids\n\nfixes #479"},{"name":"subprocess-launch.ts","kind":"file","size":2142,"lastCommitHash":"ebb7fd5f6f3ebeb6c0d9dd17266cb2026940d9e0","lastCommitWhen":"2026-07-17T16:19:06-07:00","lastCommitMessage":"back all client modes with the daemon (#456)\n\n* refactor(coding-agent): daemon back all client modes (ENG-4685)\n\n* fix(coding-agent): harden daemon client modes (ENG-4685)\n\n* fix(coding-agent): address daemon client review findings (ENG-4685)\n\n* fix(coding-agent): close daemon client review gaps (ENG-4685)\n\n* fix(coding-agent): preserve daemon client ordering (ENG-4685)\n\n* fix(coding-agent): validate rpc command shapes (ENG-4685)\n\n* fix daemon worker adoption\n\n* fix daemon owned-session authorization (fixes #456)\n\n* hide client-owned daemon sessions (fixes #456)\n\n* route stale daemon clients locally (fixes #456)\n\n* fix(coding-agent): drain rpc prompts before eof\n\nfixes #456\n\n* fix(coding-agent): preserve rpc prompt streaming\n\nfixes #456\n\n* fix(coding-agent): preserve prompt wait calls\n\nfixes #456"}]