Commit Graph

25 Commits

Author SHA1 Message Date
c9d384a4fa add scripts/release-tag.sh (bump package.json, tag, push; triggers port + npm publish CI)
All checks were successful
port-to-omp / port (push) Successful in 4s
2026-08-12 19:31:39 -04:00
dedcf994df add npm publish workflow (v* tags): publishes pi + omp packages via NPM_TOKEN
All checks were successful
port-to-omp / port (push) Successful in 4s
2026-08-12 19:27:11 -04:00
4e56b46dc9 fix: missing sawMessage init in accumulator literal; add pre-commit port typecheck hook
All checks were successful
port-to-omp / port (push) Successful in 5s
The CI port job's tsc --noEmit caught SessionEventAccumulator literals not
initializing the new sawMessage field (tests don't typecheck, so bun test
was green). Add a committed .githooks/pre-commit that mirrors the CI port
job — regenerate the port into a temp dir and tsc --noEmit it — so this
class of error fails at commit time, not in CI.
2026-08-11 12:26:00 -04:00
82888f3137 docs: port is updated only by CI on push — drop manual regeneration usage note
Some checks failed
port-to-omp / port (push) Failing after 5s
2026-08-11 12:16:24 -04:00
d8be026a2b fix: todos scan task ballooned to 2.5MB and analysis produced no output
The todos pre-scan walked .output/ (Nitro) and .vercel/ (Vercel) build
dirs, flagging 119 of 124 candidates inside minified bundles (single
lines up to 162KB). buildTodosScanTask embedded full candidate lines in
the task prompt, producing a 2.5MB prompt on freno-dev; the analysis
agent settled with ok:true + empty text + no findings.md, verify failed,
and resume re-ran the same oversized prompt and failed identically.

- scope: exclude .output/.vercel/.netlify (shared by all checks)
- todos: truncate candidate code at 160 chars in the prompt + fallback
- agent-runner: a session settling with no text and no observed message/
  tool events now fails the run loudly instead of reporting ok:true
- agent prompts: add the three dirs to each skip list
- tests: excluded-dir scan, prompt truncation, emptySessionError cases
2026-08-11 12:12:15 -04:00
595ce48f3c workflow: Gitea-canonical auth (Mike:<token>), PORTING_KEY everywhere, workflow_dispatch, preflight auth check
Some checks failed
port-to-omp / port (push) Failing after 4s
2026-08-11 09:09:25 -04:00
3f118202c1 don't log key, fix access
Some checks failed
port-to-omp / port (push) Failing after 7s
2026-08-11 09:00:12 -04:00
6ceb3c4889 correct key name
Some checks failed
port-to-omp / port (push) Failing after 4s
2026-08-11 08:58:35 -04:00
8768f9de97 fix: sub-agent hang/crash stranding runs mid-phase with no save
Some checks failed
port-to-omp / port (push) Failing after 2s
A stalled sub-agent (provider stream never settling after the final tool
call, or a throwing session-event listener recursing through the SDK's
run-failure path to stack overflow) left the phase stuck in_progress with
no state save, no error, and no completion message — observed twice in
freno-dev, both times after comments wrote findings.md.

- agent-runner: 60-min settle watchdog on every agent phase
  (PYGIENIUM_AGENT_TIMEOUT_MS, env-tunable); timeout disposes the session
  and fails the phase loudly with a /pygienium-resume hint instead of
  hanging the check-runner's await forever.
- agent-runner: applySessionEvent — the session.subscribe listener can no
  longer throw into the SDK event pipeline (guards for partial/malformed
  events, optional-chained message_update, throwing chat forwarder).
- comments: scan no longer regenerates the full report as its final
  message (findings.md is the source of truth); fix phase reads
  findings.md with embedded fallback.
- check-runner: failing state-save inside the catch path can't double-
  fault or escape as an unhandled rejection; completion posting is
  best-effort.
- tests: watchdog timeout test, comments task-text regression tests,
  applySessionEvent malformed-shape unit tests. 146 pass, tsc clean.
- README: document PYGIENIUM_AGENT_TIMEOUT_MS.
2026-08-11 08:47:12 -04:00
6d23b04ef6 workflow: trim PORTING_TOKEN (paste newlines break oauth2 auth) + fail loudly when missing
Some checks failed
port-to-omp / port (push) Failing after 1s
2026-08-10 16:44:54 -04:00
663b207df1 port: stub omp README (omp install + source link); source README install via npm
Some checks failed
port-to-omp / port (push) Failing after 4s
2026-08-10 16:07:31 -04:00
c8fba70d1e port: refuse dst inside src (realpath-normalized) + workflow clones omp repo outside checkout
Some checks failed
port-to-omp / port (push) Failing after 6s
2026-08-10 15:56:48 -04:00
b4ed97c79f rename Actions secret to PORTING_TOKEN (GITEA_/GITHUB_ prefixes are reserved)
Some checks failed
port-to-omp / port (push) Failing after 5s
2026-08-10 15:29:09 -04:00
be76b31a6e rename port to omp-pygienium (repo renamed)
Some checks failed
port-to-omp / port (push) Failing after 5s
2026-08-10 15:18:01 -04:00
f6f997bb21 add port-to-omp.mjs + Gitea Actions workflow (regenerate omp port on push)
Some checks failed
port-to-omp / port (push) Failing after 4s
2026-08-10 12:24:17 -04:00
11eb2dc6ed register checks via static barrel instead of readdir + dynamic import
Checks keep self-registering on import; src/checks/all.ts imports every
shipped check from the entry's static graph. Keeps the check graph fully
statically resolvable (bundler/loader friendly) and removes the only
dynamic-import discovery in the codebase.
2026-08-10 10:51:33 -04:00
31c2048e57 add LICENSE (MIT) 2026-08-10 10:47:39 -04:00
259b1d3b2d feat: chat rendering toolcalls, footer overview 2026-08-09 20:24:11 -04:00
cb8a88d0bd feat(agents): project-local agent overrides
loadAgents merges <cwd>/agents/*.md on top of the extension's baseline:
a repo agent wins on name collision and may add brand-new agents. The
unknown-agent error now names both searched directories.
2026-08-09 16:45:30 -04:00
c605a709fb feat(run): resume-aware per-check runs, verify hooks, run-state hardening
/pygienium-<check> is now resume-aware (terminal checks skipped unless
--fresh) and shares run-state with all/resume; every check gets a verify
hook that fails loudly when a sub-agent returns ok with no artifact;
run-state clears stale errors on retry success and reconciles a run as
failed only when every check failed. Drops the superseded
hygiene-state.ts model.
2026-08-09 16:45:30 -04:00
5f8a5cbe5f feat(ui): ralpi-style chat progress and pipeline-overview footer
phases.ts becomes a live chat widget (spinner + tool-call tree) and the
check-runner posts per-agent tool-call summaries and an expandable
completion tree through a custom message renderer; footer.ts adds the
static pipeline-overview status strip for single checks and /pygienium-all.
2026-08-09 16:45:29 -04:00
d0e8ad5571 feat: keep run artifacts under hidden .pygienium/ and out of git
All per-check artifacts, all-summary, and export move from pygienium/ to
.pygienium/; ensureRunStateIgnored appends .pygienium/ to the target
repo's .gitignore on first run (opt out with --no-gitignore), so a run
never stages its own output. Export now reads a single canonical root.
2026-08-09 16:45:29 -04:00
288506e84d feat(checks): add TODOs & stubs check, replace noop template
/pygienium-todos inventories TODO/FIXME/HACK markers and stub bodies via a
deterministic pre-scan plus the todos sub-agent; --fix converts silent
stubs (placeholder returns, empty/pass bodies) into loud failures,
never implementing TODOs or deleting markers. Replaces the noop
reference check; the extensibility suite now registers a synthetic
witness. Adds agents/todos.md and tests/todos.test.ts.
2026-08-09 16:45:29 -04:00
2caeb2f790 feat(checks): unify inspection scope in checks/scope.ts
Single source of truth for what pygienium inspects (implementation-code
extensions, exclude dirs, .d.ts/.min.* exclusions) shared by recon,
dead-code, deep-modules, defensive-guards, comments, and complexity.
Every scan task and agent prompt injects the shared scope rules instead
of copy-pasted per-check lists.
2026-08-09 16:45:29 -04:00
581436ed23 Initial commit: pygenium as git submodule 2026-08-07 14:54:45 -04:00