@hasna/loops 0.4.8 → 0.4.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,30 @@ documented in this file. Version entries are generated from the
5
5
  conventional-commit git history; one commit maps to one released patch version
6
6
  unless noted.
7
7
 
8
+ ## 0.4.9 (2026-07-04)
9
+
10
+ Unblock the PR-merge pipeline: task-lifecycle/route workers now dispatch real
11
+ work, and the PR-review admission gate can resolve authors it was not handed.
12
+
13
+ ### Fixed
14
+
15
+ - **Agent adapter / executor:** launch Codewith agent steps with non-interactive
16
+ `codewith exec --json` instead of the durable `codewith agent start`
17
+ background-agent controller. `agent start` reloaded the multi-megabyte rollout
18
+ history on every turn, hitting `context_length_exceeded` and completing
19
+ silently with no work — stalling task-lifecycle and route workers. exec runs a
20
+ fresh session per invocation, honors `--auth-profile`, streams JSONL, and keeps
21
+ network egress for gh/git (the `workspace-write` sandbox opts back into
22
+ `sandbox_workspace_write.network_access`). Codewith is now a normal one-shot
23
+ exec provider (remote-capable like codex); the unreachable durable
24
+ start/read/logs/poll controller was removed.
25
+ - **Route PR review:** when a PR approval/merge route is required and no author is
26
+ present in task metadata or text, derive the PR author from a concrete
27
+ `owner/repo#number` reference via `gh pr view ... --json author` before
28
+ selecting a non-author reviewer. Self-review protection is preserved (a derived
29
+ author that matches the sole reviewer is still blocked), and the gate fails
30
+ closed when the reference is unresolvable.
31
+
8
32
  ## 0.4.8 (2026-07-04)
9
33
 
10
34
  Lifecycle prompt hardening for routed task workflows.
package/README.md CHANGED
@@ -12,7 +12,7 @@ It supports deterministic command loops, JSON-defined workflows, and guarded CLI
12
12
 
13
13
  - `claude`
14
14
  - `agent` (Cursor Agent CLI)
15
- - `codewith agent start`
15
+ - `codewith exec`
16
16
  - `aicopilot run`
17
17
  - `opencode run`
18
18
  - `codex exec`
@@ -882,13 +882,13 @@ On Linux this writes a user systemd service. On macOS it writes a LaunchAgent pl
882
882
  The adapters intentionally use provider command surfaces instead of pretending every agent has one SDK:
883
883
 
884
884
  - Claude uses `claude -p --output-format json` and safe-mode/local setting sources by default.
885
- - Codewith uses durable `codewith --ask-for-approval never agent start` background-agent runs by default, then polls `codewith agent read` until the run is terminal. While the step is running, OpenLoops records bounded agent id/status updates as `step_progress` workflow events and as the running step's compact stdout; on terminal completion it records compact status/event evidence. Remote Codewith agent steps fail closed until remote durable readback is implemented, so workflows do not advance immediately after enqueue. OpenLoops rejects Codewith `extraArgs` that try to force `exec`, `--ephemeral`, or other non-durable exec-only flags for task-lifecycle, planner, worker, verifier, reviewer, release, or other long-running agentic work.
885
+ - Codewith runs non-interactive `codewith --ask-for-approval never exec --json` sessions by default. exec starts a fresh session per invocation, avoiding the multi-megabyte rollout history that `codewith agent start` reloaded every turn (which drove `context_length_exceeded` silent no-ops), and it keeps network egress for gh/git the `workspace-write` sandbox opts back into `sandbox_workspace_write.network_access`. Codewith exec is remote-capable like codex. OpenLoops rejects Codewith `extraArgs` that try to force `exec`, `--ephemeral`, `--json`, or other exec launch flags that the adapter already manages.
886
886
  - AI Copilot and OpenCode use `run --format json --pure`. OpenCode requires an explicit provider/model id because ambient OpenCode config is machine-specific.
887
887
  - Cursor is CLI-first for now via the standalone `agent -p` binary. OpenLoops no longer falls back to `cursor agent`; install the standalone Cursor Agent CLI so preflight and scheduled runs use the same executable.
888
888
  - Codex uses `codex --ask-for-approval never exec --json --ephemeral --skip-git-repo-check`, with `--add-dir` for explicit extra writable directories where supported.
889
- - Agent prompts are sent through child stdin instead of argv where the provider supports stdin. Codewith durable background agents currently accept prompts as native `agent start` arguments, so OpenLoops stores only bounded status/event evidence and omits raw Codewith prompt text and raw event payloads from workflow stdout.
889
+ - Agent prompts are sent through child stdin instead of argv where the provider supports stdin, including Codewith `exec` (which reads instructions from stdin when no positional prompt is given), so the prompt never lands on argv.
890
890
  - When `--account` or a step `account` is set, OpenLoops resolves `accounts env <profile> --tool <tool>` before spawning the target, strips inherited tool home/API-key variables, and applies the selected profile only to that process. Missing account profiles fail before the provider binary receives the prompt.
891
- - `--auth-profile` and step `authProfile` are provider-native auth selectors. They currently apply to Codewith and are passed to Codewith as `--auth-profile <name>` before `agent start/read/logs`; they do not call OpenAccounts.
891
+ - `--auth-profile` and step `authProfile` are provider-native auth selectors. They currently apply to Codewith and are passed to Codewith as `--auth-profile <name>` on the `exec` invocation; they do not call OpenAccounts.
892
892
  - `--sandbox` maps to provider-native sandbox flags. Codewith/Codex accept `read-only`, `workspace-write`, or `danger-full-access`; Cursor accepts `enabled` or `disabled`.
893
893
  - `--permission-mode` maps `plan`, `auto`, and `bypass` where the provider supports it. Claude uses native permission modes, Cursor maps bypass to `--force`, and OpenCode/AICopilot map bypass to `--dangerously-skip-permissions`.
894
894
  - `--variant` is provider-specific reasoning/model effort. Claude maps it to `--effort`, Codewith/Codex map it to `model_reasoning_effort`, and OpenCode/AICopilot pass `--variant`.
package/dist/api/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  // package.json
4
4
  var package_default = {
5
5
  name: "@hasna/loops",
6
- version: "0.4.8",
6
+ version: "0.4.10",
7
7
  description: "Persistent local loop and workflow runner for deterministic commands and headless AI coding agents",
8
8
  type: "module",
9
9
  main: "dist/index.js",