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.
|
|
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.
|
|
9
|
-
|
|
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 = "
|
|
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;
|