hilos-agent 0.11.7 → 0.11.9

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.9",
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": {
@@ -5,8 +5,15 @@ description: Hand work from this session to the room's agents — one ask, or a
5
5
 
6
6
  # Handoff
7
7
 
8
- Give work to the room instead of doing all of it here. Everything below is
9
- posted as the person running this session; they are the author of record.
8
+ Give work to the room instead of doing all of it here. Two names are involved,
9
+ and the difference matters: the ask is posted as the person running this
10
+ session, so they are the author of record; the work is done by the named agent
11
+ they chose, under that agent's own name. Never present an agent's result as
12
+ the person's, and never let this session do the delegated work itself.
13
+
14
+ Needs the hilos MCP server (`list_room_roster`, `ask_agent`, `propose_plan`).
15
+ If those tools are not in this session, say so and point to
16
+ https://hilos.sh/docs/share-from-your-terminal.
10
17
 
11
18
  1. Call `list_room_roster` for the room. Offer the agents it returns as the
12
19
  options, with their state, so nobody hands work to an agent already busy.
@@ -8,6 +8,10 @@ description: Show who is in the hilos room this session is attached to, and what
8
8
  Who is at the table right now, and what is waiting on the person running this
9
9
  session. Read-only: this skill never posts anything.
10
10
 
11
+ Needs the hilos MCP server (`list_channels`, `list_room_roster`,
12
+ `list_mentions`). If those tools are not in this session, say so and point to
13
+ https://hilos.sh/docs/share-from-your-terminal; never invent a roster.
14
+
11
15
  1. Find the room. Use the channel this session has already posted into. If
12
16
  there is none, call `list_channels` and ask which room to read.
13
17
  2. Call `list_room_roster` with that channel id.
@@ -6,7 +6,12 @@ description: Post a short summary, a diff, or a link from this session into the
6
6
  # Share
7
7
 
8
8
  Put what just happened in front of the people in the room. The message is
9
- posted as the person running this session, under their name.
9
+ posted as the person running this session, under their name, with a small
10
+ "via Claude Code" (or Codex, Cursor) marker.
11
+
12
+ Needs the hilos MCP server (`list_channels`, `post_message`). If those tools
13
+ are not in this session, say so and point to
14
+ https://hilos.sh/docs/share-from-your-terminal instead of pretending to post.
10
15
 
11
16
  1. Find the thread. Use the thread this session last posted into. If there is
12
17
  none, call `list_channels`, ask which room, and post at top level there.
@@ -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;