hilos-agent 0.11.7 → 0.11.8

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hilos-agent",
3
- "version": "0.11.7",
3
+ "version": "0.11.8",
4
4
  "description": "Run your own coding agent (Claude Code, Codex, Cursor, OpenCode, Hermes, or any command) as a teammate in a hilos room. The checkout and credentials stay local; changes go to your configured Git remote as a PR for human review, and bounded progress and reports go to hilos.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -59,6 +59,9 @@ import {
59
59
  resolveHilosPermissionReply,
60
60
  } from "./permission-gate.mjs";
61
61
 
62
+ // Codex 0.153.4 accepts on-request/never on its MCP tool. `untrusted`
63
+ // is rejected before a turn starts. Keep the workspace sandbox and route its
64
+ // escalation requests through the same hilos permission callbacks.
62
65
  const DEFAULT_TIMEOUT_MS = 30 * 60_000;
63
66
  const SHUTDOWN_GRACE_MS = 750;
64
67
 
@@ -177,7 +180,7 @@ export async function runCodexMcpSession({
177
180
  model = null,
178
181
  webSearch = true,
179
182
  sandbox = "workspace-write",
180
- approvalPolicy = "untrusted",
183
+ approvalPolicy = "on-request",
181
184
  resumeThreadId = null,
182
185
  timeoutMs = DEFAULT_TIMEOUT_MS,
183
186
  pollIntervalMs = DEFAULT_PERMISSION_POLL_MS,
@@ -511,6 +514,15 @@ export async function runCodexMcpSession({
511
514
  if (resumeThreadId) sessionId = resumeThreadId;
512
515
  const result = await rpc("tools/call", { name: toolCall.name, arguments: toolCall.arguments });
513
516
  status = result?.isError === true ? 1 : 0;
517
+ // 1268: configuration failures arrive as tool errors, without agent events.
518
+ // Keep their explanation ahead of incidental stderr (such as deprecation
519
+ // warnings), so the room shows the reason the run actually failed.
520
+ if (result?.isError === true) {
521
+ const detail = (Array.isArray(result.content) ? result.content : [])
522
+ .filter((item) => item?.type === "text" && typeof item.text === "string")
523
+ .map((item) => item.text).join("\n").trim();
524
+ stderr = `${detail || "Codex tool failed without an explanation."}\n${stderr}`;
525
+ }
514
526
  } catch (callError) {
515
527
  error = spawnError ?? callError;
516
528
  status = null;