{"ref":"main","files":[{"name":".cursor","kind":"directory","size":0,"lastCommitHash":"25769089d9c742956abdd35df9b9d9e0a04f2597","lastCommitWhen":"2026-08-13T15:25:32-07:00","lastCommitMessage":"chore: add Bugbot review rules (#1350)\n\n* chore: add Bugbot review rules\n\nCode-quality rules distilled from recent PR reviews, as a versioned\n.cursor/BUGBOT.md so they evolve by PR like any other standard:\nno migration scaffolding left behind, comment discipline, persisted-\ndata compatibility before fail-closed validation, per-item subprocess\nand whole-file-read flags on hot paths, and regression-test\nexpectations for bug fixes.\n\n* chore: unwrap hard-wrapped lines in BUGBOT.md\n\nOne logical line per bullet; the hard wraps were noise.\n\n* chore: drop the compatibility/hot-paths section\n\nToo tied to one PR stack's bug class; keep the rules general.\n\n* chore: calibrate Bugbot quality rules\n\n---------\n\nCo-authored-by: Seth <seth@primeintellect.ai>"},{"name":".github","kind":"directory","size":0,"lastCommitHash":"a903d4b6768f484bd6d459b7b0aa7dee38e461e2","lastCommitWhen":"2026-08-29T20:06:21-04:00","lastCommitMessage":"chore: vouch sirouk as an external contributor (#1899)"},{"name":".husky","kind":"directory","size":0,"lastCommitHash":"94ece04f5d977326d01cc1b1913b04d2e2c8ff9e","lastCommitWhen":"2026-05-19T17:29:44-07:00","lastCommitMessage":"clean up legacy pi artifacts (#50)\n\n* chore: clean up legacy pi artifacts\n\n* test: update prime agent branding expectations"},{"name":"assets","kind":"directory","size":0,"lastCommitHash":"1d1d395165e0c796f1fd71460f5a83f952ce811f","lastCommitWhen":"2026-05-28T14:11:53-07:00","lastCommitMessage":"clean up prime agent branding (#75)\n\n* clean up prime agent branding\n\n* link upstream pi mono\n\n* move upstream link to end\n\n* update readme links\n\n* brand package readmes\n\n* fix logo asset url\n\n* restore centered readme headers\n\n* tighten readme header taglines\n\n* remove unused web ui package\n\n* restore main readme header\n\n* remove readme dividers"},{"name":"packages","kind":"directory","size":0,"lastCommitHash":"bee1dc826360b82ca9d943ca856cd2863f597297","lastCommitWhen":"2026-09-01T22:34:13+09:00","lastCommitMessage":"feat(coding-agent): add loss-bounded compaction projection\n"},{"name":"prime-agent-runtime","kind":"directory","size":0,"lastCommitHash":"94f25d4f34f31f4b5a096834097edd9ccb1a2992","lastCommitWhen":"2026-09-01T22:32:33+09:00","lastCommitMessage":"feat(coding-agent): add root session controls\n"},{"name":"scripts","kind":"directory","size":0,"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":".gitattributes","kind":"file","size":382,"lastCommitHash":"43c3c99dde1b5002097872f8d08bb2726f39a0ac","lastCommitWhen":"2026-02-26T01:11:34+01:00","lastCommitMessage":"chore: add repository .gitattributes for line ending normalization\n"},{"name":".gitignore","kind":"file","size":504,"lastCommitHash":"2ef9ab0ef9ecd67f11744b433298a92cfcb37ffa","lastCommitWhen":"2026-06-15T15:01:45-07:00","lastCommitMessage":"move goals to the ipython goal skill (#159)\n\n* move goals from harness tools to the ipython goal skill\n\nThe model's only built-in tool is now ipython. The rlm.run comm channel is\ngeneralized into a typed host bridge (comm target host.request, dispatched\nvia hostHandlers), rlm.host_request() is public for kernel-side skills, and\ngoals ship as the bundled python skill 'goal' (goal.get / goal.create /\ngoal.complete) backed by AgentSession state. Goal re-prompting, budgets,\nand goal_update events are unchanged.\n\n* let goal.create replace terminal goals and explain pending-goal rejections\n\nA complete or error goal is a finished record, not a pending objective, so\ngoal.create now starts a fresh goal over it (matching what /goal already\nallowed for users). Active, paused, and budget-limited goals still reject\ncreation, each with a message telling the model what to do instead.\n\n* harden the goal host bridge against review-bot findings\n\nCompleting a goal now drops any stale budget-limit steer queued earlier in\nthe same turn, host replies with an unexpected status reject instead of\nhanging the kernel future, and a payload type key can no longer reroute a\nhost request.\n\n* fix(coding-agent): stop goal completion usage overcount"},{"name":".npmrc","kind":"file","size":372,"lastCommitHash":"1511a98b85a3672606efd074f1d5628111b3f7e2","lastCommitWhen":"2026-06-11T11:39:08-07:00","lastCommitMessage":"add 7-day minimum release age for dependencies (#126)"},{"name":"AGENTS.md","kind":"file","size":12883,"lastCommitHash":"b5807b6f932ae3b208bc190176bc04a72126ff23","lastCommitWhen":"2026-08-20T10:01:49-07:00","lastCommitMessage":"Changelog fragments: conflict-free changelog entries (#1589)\n\n* feat(coding-agent): add changelog fragments with CI check and release-time aggregation (ENG-5408)\n\n* refactor: flag-day cutover — remove [Unreleased] sections entirely\n\nPer review: drop the transition machinery. All four changelogs lose their\n[Unreleased] header; coding-agent's pending entries move into a fragment.\nrelease.mjs no longer re-adds the header; the CI check accepts only\nfragments (or the no-changelog label). The stray-[Unreleased] absorption\nstays in buildReleaseSection so an accidentally merged old-style entry is\nfolded into the release instead of stranded. Test file removed.\n\n* fix: address bot findings — escape version in dry-run regex, refuse empty fragments\n\nCodeQL: the dry-run preview regex embedded the CLI version argument\nunescaped. Macroscope: empty fragments were git rm'd without appearing in\nthe changelog; the release now aborts on them and the CI check requires\nthe added fragment to have content. Cursor: normalizeFragment unexported.\n\n* fix(ci): verify fragment content, not just line additions\n\nA whitespace-only fragment passed the additions>0 guard but aborts the\nrelease. The check now reads each candidate fragment's content via its\ncontents_url (head-repo scoped, so fork PRs work) and requires non-blank\ntext.\n\n* refactor: decouple CI from release semantics for empty fragments\n\nThe fail-closed release abort forced CI to predict exactly what release\nwould reject, which pulled content fetching and fork-ref handling into\nthe workflow. Empty fragments have nothing to lose, so the release now\nwarns and leaves them unconsumed instead of aborting; CI goes back to a\nplain added-file presence check. Also trims comments and doc blocks.\n\n* fix(ci): fail closed when a PR exceeds the listFiles cap\n\nAbove 3000 changed files the API cannot return the full list, so the\ncheck could miss a src change. The no-changelog label remains the\nexplicit escape hatch."},{"name":"biome.json","kind":"file","size":954,"lastCommitHash":"47dccfad4c0e71cd357f12d233ac44cc803af8c5","lastCommitWhen":"2026-08-11T10:58:25-07:00","lastCommitMessage":"chore(deps): consolidate dependency updates (#632)\n\n* chore(deps): consolidate dependency updates\n\n* chore(deps): fold in remaining eligible Dependabot updates\n\nAdds the reviewed bumps from #571, #599, #713, and #714 to the\nconsolidated update:\n\n- brace-expansion 5.0.7 -> 5.0.9 (transitive, lockfile only)\n- ip-address 10.2.0 -> 10.4.0 (transitive, lockfile only)\n- typebox ^1.1.24 -> ^1.3.9 in packages/agent, packages/ai, and\n  packages/coding-agent (lockfile resolves 1.3.10, released 2026-08-02,\n  past the seven-day minimum release age)\n- typescript ^5.9.2/^5.7.3 -> ^7.0.2 (dev-only; every build and check in\n  this repo runs through tsgo, nothing invokes tsc)\n\nundici 8.9.0 from #712 is intentionally NOT included: undici 8 requires\nNode >= 22.19.0 while this package supports >= 22.8.0, so the major bump\nwould silently drop supported Node versions. It stays on 7.29.0."},{"name":"CONTRIBUTING.md","kind":"file","size":3950,"lastCommitHash":"b5807b6f932ae3b208bc190176bc04a72126ff23","lastCommitWhen":"2026-08-20T10:01:49-07:00","lastCommitMessage":"Changelog fragments: conflict-free changelog entries (#1589)\n\n* feat(coding-agent): add changelog fragments with CI check and release-time aggregation (ENG-5408)\n\n* refactor: flag-day cutover — remove [Unreleased] sections entirely\n\nPer review: drop the transition machinery. All four changelogs lose their\n[Unreleased] header; coding-agent's pending entries move into a fragment.\nrelease.mjs no longer re-adds the header; the CI check accepts only\nfragments (or the no-changelog label). The stray-[Unreleased] absorption\nstays in buildReleaseSection so an accidentally merged old-style entry is\nfolded into the release instead of stranded. Test file removed.\n\n* fix: address bot findings — escape version in dry-run regex, refuse empty fragments\n\nCodeQL: the dry-run preview regex embedded the CLI version argument\nunescaped. Macroscope: empty fragments were git rm'd without appearing in\nthe changelog; the release now aborts on them and the CI check requires\nthe added fragment to have content. Cursor: normalizeFragment unexported.\n\n* fix(ci): verify fragment content, not just line additions\n\nA whitespace-only fragment passed the additions>0 guard but aborts the\nrelease. The check now reads each candidate fragment's content via its\ncontents_url (head-repo scoped, so fork PRs work) and requires non-blank\ntext.\n\n* refactor: decouple CI from release semantics for empty fragments\n\nThe fail-closed release abort forced CI to predict exactly what release\nwould reject, which pulled content fetching and fork-ref handling into\nthe workflow. Empty fragments have nothing to lose, so the release now\nwarns and leaves them unconsumed instead of aborting; CI goes back to a\nplain added-file presence check. Also trims comments and doc blocks.\n\n* fix(ci): fail closed when a PR exceeds the listFiles cap\n\nAbove 3000 changed files the API cannot return the full list, so the\ncheck could miss a src change. The no-changelog label remains the\nexplicit escape hatch."},{"name":"install.sh","kind":"file","size":45268,"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":"LICENSE","kind":"file","size":1105,"lastCommitHash":"1d1d395165e0c796f1fd71460f5a83f952ce811f","lastCommitWhen":"2026-05-28T14:11:53-07:00","lastCommitMessage":"clean up prime agent branding (#75)\n\n* clean up prime agent branding\n\n* link upstream pi mono\n\n* move upstream link to end\n\n* update readme links\n\n* brand package readmes\n\n* fix logo asset url\n\n* restore centered readme headers\n\n* tighten readme header taglines\n\n* remove unused web ui package\n\n* restore main readme header\n\n* remove readme dividers"},{"name":"package-lock.json","kind":"file","size":153124,"lastCommitHash":"c382f09856d4a8c8d2b765179657047d58691f25","lastCommitWhen":"2026-08-30T17:18:36+02:00","lastCommitMessage":"feat(coding-agent): render Mermaid diagrams inline in the terminal (#1893)\n\n* feat(coding-agent): render Mermaid code blocks as inline Unicode diagrams\n\nPorts pi-mono's Mermaid rendering (grok-mermaid) into prime-agent:\n- pi-tui Markdown gains an options.transform hook that rewrites source\n  Markdown with the exact content width before parsing (ported from\n  upstream pi-tui).\n- New mermaid.ts transform replaces top-level mermaid code blocks with\n  themed Unicode diagrams, falls back to the raw block when the diagram\n  is wider than the message, and appends a themed warning line for\n  partially rendered final diagrams.\n- AssistantMessageComponent applies the transform to text blocks only\n  (never thinking blocks) and tracks streaming state so the\n  streaming-to-final transition re-renders.\n- New markdown.mermaid setting (off/final/streaming, default streaming)\n  with a settings-selector entry.\n\nLinear: ENG-5673\n\n* test(coding-agent): kill mermaid mutation survivors\n\nAdversarial review mutation testing found three surviving mutants:\n- width guard flipped to >= (exact-fit diagrams would fall back)\n- codeSpan fence reduced to a single backtick (backtick labels break)\n- isStreaming inverted at the message_end call site (final mode never renders)\n\nAdds an exact-width boundary test, a backtick-label test, and a\nhandleEvent-level final-mode transition test that kill them.\n\n* build(coding-agent): pin grok-mermaid exactly for renderer-output stability\n\n* test(coding-agent): collapse redundant mermaid coverage\n\n* docs(coding-agent): tighten mermaid comments\n\n* fix(coding-agent): tolerate non-object markdown settings values\n\nNormalize a malformed markdown settings value at the migration boundary\n(mirroring the telemetry handling) so changing the Mermaid mode cannot\nthrow, and add the missing tui changelog fragment.\n\n* test(coding-agent): drop mermaid.test.ts\n\n* chore(coding-agent): one-line mermaid codeSpan comments"},{"name":"package.json","kind":"file","size":2982,"lastCommitHash":"514633727bf26d74f39f3119c2b0e31a5ceb2a9d","lastCommitWhen":"2026-08-25T22:13:15-07:00","lastCommitMessage":"chore: prepare v0.8.1 release (#1794)"},{"name":"prime-agent.sh","kind":"file","size":2248,"lastCommitHash":"10a5de8f4595f7a60d9fa58ebd820248276698c6","lastCommitWhen":"2026-07-17T13:30:17-07:00","lastCommitMessage":"make daemon mismatches self-healing (#466)\n\n* fix daemon mismatch recovery for ENG-4687\n\n* fix daemon review findings for ENG-4687\n\n* bound daemon shutdown discovery for ENG-4687\n\n* fix daemon shutdown convergence state for ENG-4687\n\n* document isolated daemon message logging failure\n\n* fix daemon startup and update recovery for ENG-4687\n\n* isolate daemon recovery listeners for ENG-4687\n\n* preserve protocol 3 heartbeat support for ENG-4687"},{"name":"README.md","kind":"file","size":9339,"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":"SECURITY.md","kind":"file","size":1268,"lastCommitHash":"9f9501146e869466acaca66dac49cff857b7b4f9","lastCommitWhen":"2026-08-14T10:59:33+02:00","lastCommitMessage":"add trusted contribution process (#1340)\n\n* chore: gate external contributions\n\n* docs: simplify readme navigation\n\n* docs: tweak contrib guidelines\n\n* docs: add contribution overview\n\n* docs: simplify issue forms\n\n* Apply suggestion from @macroscopeapp[bot]\n\nCo-authored-by: macroscopeapp[bot] <170038800+macroscopeapp[bot]@users.noreply.github.com>\n\n* docs: align discussion categories\n\n---------\n\nCo-authored-by: macroscopeapp[bot] <170038800+macroscopeapp[bot]@users.noreply.github.com>"},{"name":"test.sh","kind":"file","size":1504,"lastCommitHash":"f1dc7394a3ef3bcabac95c3fc8edaf641f6fc581","lastCommitWhen":"2026-05-14T15:56:52-07:00","lastCommitMessage":"move config under prime agent (#32)\n\n* move config under prime agent\n\nrefs ENG-3630, ENG-3633\n\n* trim docs from config change\n\nrefs ENG-3630, ENG-3633\n\n* remove nonessential branding changes\n\nrefs ENG-3630, ENG-3633\n\n* drop optional aliases and comments\n\nrefs ENG-3630, ENG-3633\n\n* fix prime-agent config paths\n\n* fix prime-agent test expectations\n\n* test github release version parsing\n\n* test prime-agent env constants\n\n* fix extension loader package fallback\n\n* remove repo-local agent resources\n\n* narrow config directory migration\n\n* minimize config path diff\n\n* fix config path help output\n\n* fix tui log config path\n\n* fix tui log filenames\n\n* fix remaining prime agent config paths"},{"name":"tsconfig.base.json","kind":"file","size":553,"lastCommitHash":"24fcca5b7bb6e0c93e5dfcebef401a6a8d9376fe","lastCommitWhen":"2025-12-03T14:16:00+01:00","lastCommitMessage":"Try fixing root level compiles\n"},{"name":"tsconfig.json","kind":"file","size":1217,"lastCommitHash":"1d1d395165e0c796f1fd71460f5a83f952ce811f","lastCommitWhen":"2026-05-28T14:11:53-07:00","lastCommitMessage":"clean up prime agent branding (#75)\n\n* clean up prime agent branding\n\n* link upstream pi mono\n\n* move upstream link to end\n\n* update readme links\n\n* brand package readmes\n\n* fix logo asset url\n\n* restore centered readme headers\n\n* tighten readme header taglines\n\n* remove unused web ui package\n\n* restore main readme header\n\n* remove readme dividers"}],"branches":[{"name":"main","hash":"bee1dc826360b82ca9d943ca856cd2863f597297","when":"2026-09-01T22:34:13+09:00","isDefault":true,"message":"feat(coding-agent): add loss-bounded compaction projection\n"},{"name":"minimal-runtime-extensions","hash":"3b0c6ff6378079671ab8c5c8674209bfc3825294","when":"2026-09-11T16:24:41-04:00","isDefault":false,"message":"fix: improve Codex rate-limit detection and multi-account rotation\n"}],"totalBranches":2,"tags":[],"totalTags":0,"languages":[{"name":"TypeScript","size":12473686,"share":93.41218576687164,"percentage":93},{"name":"Python","size":549158,"share":4.112501237514212,"percentage":4},{"name":"JavaScript","size":242381,"share":1.8151281825083712,"percentage":2},{"name":"Shell","size":62402,"share":0.46731232582127885,"percentage":1},{"name":"CSS","size":21911,"share":0.1640857724282882,"percentage":0},{"name":"HTML","size":2135,"share":0.015988458953694277,"percentage":0},{"name":"C","size":1709,"share":0.012798255902512188,"percentage":0}],"failed":{"files":false,"refs":false,"languages":false},"compact":{"assets":"brand","packages/coding-agent/skills/agent-message/src":"agent_message","packages/coding-agent/skills/agent-observe/src":"agent_observe","packages/coding-agent/skills/attach-image/src":"attach_image","packages/coding-agent/skills/compact/src":"compact","packages/coding-agent/skills/edit/src":"edit","packages/coding-agent/skills/goal/src":"goal","packages/coding-agent/skills/linear/src":"linear","packages/coding-agent/skills/notion/src":"notion","packages/coding-agent/skills/refine/src":"refine","packages/coding-agent/skills/rlm-heartbeat/src":"rlm_heartbeat","packages/coding-agent/skills/websearch/src":"websearch","packages/coding-agent/test/fixtures/skills/nested":"child-skill","packages/coding-agent/test/fixtures/skills-collision/first":"calendar","packages/coding-agent/test/fixtures/skills-collision/second":"calendar","packages/coding-agent/test/fixtures/skills/python-skill/src":"python_skill"}}