@prohost/cli 0.8.2 → 0.8.3

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
@@ -4,6 +4,17 @@ Versions follow [semver](https://semver.org/). Publishing is automated: merging
4
4
  a version bump to `main` triggers `.github/workflows/npm-publish-cli.yml`, which
5
5
  builds via `prepack`, runs the suite, publishes, and tags `cli-v<version>`.
6
6
 
7
+ ## 0.8.3
8
+
9
+ A paired agent's shell steps read as what they do, not "Running a command".
10
+
11
+ - **Shell calls report their description.** A `Bash` call's tool event now
12
+ carries Claude Code's own one-line `description` of the call beside the
13
+ command in `args_preview` (`{"command": …, "description": "Find the
14
+ handler"}`). The server uses it as the step's label in the live run view and
15
+ keeps "Running a command" when it is absent. Nothing else in the event
16
+ changes.
17
+
7
18
  ## 0.8.2
8
19
 
9
20
  A ProhostAI back-office agent is told its cross-account reads are allowed.
@@ -358,8 +358,16 @@ export function toolArgsPreview(name, input) {
358
358
  for (const key of headline) {
359
359
  const value = args[key];
360
360
  const text = typeof value === 'string' ? preview(value) : undefined;
361
- if (text)
362
- return JSON.stringify({ [key]: text });
361
+ if (!text)
362
+ continue;
363
+ // The tool's own one-line summary of the call ("Find the failing test"),
364
+ // which the server prefers over the generic "Running a command" label.
365
+ // Capped shorter than the headline so the object stays under the
366
+ // server's 500-char preview bound and still parses there.
367
+ const description = DESCRIBED_TOOLS.has(name) && typeof args.description === 'string'
368
+ ? preview(args.description)?.slice(0, MAX_PREVIEW_VALUE_CHARS)
369
+ : undefined;
370
+ return JSON.stringify(description ? { [key]: text, description } : { [key]: text });
363
371
  }
364
372
  // A headline-only tool with no headline shows nothing rather than its
365
373
  // whole input — that input is the file content this field exists to keep
@@ -410,6 +418,8 @@ const HEADLINE_FIELDS = {
410
418
  Task: ['description'],
411
419
  Agent: ['description'],
412
420
  };
421
+ /** Tools whose input carries a human `description` of the call alongside the headline. */
422
+ const DESCRIBED_TOOLS = new Set(['Bash', 'shell']);
413
423
  /** The text of a `tool_result` block — a string, or its `text` parts joined. */
414
424
  function toolResultText(content) {
415
425
  if (typeof content === 'string')
@@ -325,6 +325,8 @@ export interface AgentRunRequest {
325
325
  recent_messages?: RunMessage[];
326
326
  /** What the account remembers that bears on this run. Absent on older servers. */
327
327
  memories?: RunMemory[];
328
+ /** Selected records omitted whole by the server's inline context budget. */
329
+ memories_omitted?: number;
328
330
  }
329
331
  /** Reply destinations the server can bind a run to, including future surfaces. */
330
332
  export type ReplySurface = 'conversation' | 'task' | 'cleaning' | 'none' | (string & {});
@@ -280,6 +280,11 @@ function parseMemory(entry) {
280
280
  return null;
281
281
  return { content, scope: str(entry.scope) };
282
282
  }
283
+ function omittedMemoryCount(value) {
284
+ return typeof value === 'number' && Number.isSafeInteger(value) && value > 0
285
+ ? value
286
+ : undefined;
287
+ }
283
288
  /**
284
289
  * Extract the event body from a websocket frame's payload.
285
290
  *
@@ -368,5 +373,6 @@ export function parseRunRequest(data) {
368
373
  // CLI cannot be redeployed to follow.
369
374
  recent_messages: contextList(data.recent_messages ?? context.recent_messages, parseMessage),
370
375
  memories: contextList(data.memories ?? context.memories, parseMemory),
376
+ memories_omitted: omittedMemoryCount(data.memories_omitted ?? context.memories_omitted),
371
377
  };
372
378
  }
@@ -193,6 +193,9 @@ export function buildPrompt(run, context) {
193
193
  if (run.memories?.length) {
194
194
  lines.push('Things you remember (from earlier work in this workspace):', ...run.memories.map(renderMemory), '');
195
195
  }
196
+ if (run.memories_omitted) {
197
+ lines.push(`Incomplete memory recall: selected records omitted whole to fit the inline budget: ${run.memories_omitted}.`, 'If your tools and permissions allow, use full-memory reads or POST /v1/memories/search (memories:read) to recover relevant context. Check each result’s scope and target before applying it; exact recovery is not guaranteed. Omitted context is not evidence that no rule applies.', '');
198
+ }
196
199
  if (run.recent_messages?.length) {
197
200
  lines.push('Conversation so far (oldest first):', ...run.recent_messages.map(renderMessage), '--- end of conversation history ---', '');
198
201
  }
package/dist/version.d.ts CHANGED
@@ -7,6 +7,6 @@
7
7
  * `package.json`, so a release bump that forgets this file fails the suite
8
8
  * instead of shipping a `User-Agent` that lies about which build is calling.
9
9
  */
10
- export declare const CLI_VERSION = "0.8.2";
10
+ export declare const CLI_VERSION = "0.8.3";
11
11
  /** Sent on every HTTP request the CLI makes back into ProhostAI. */
12
- export declare const USER_AGENT = "prohost-cli/0.8.2";
12
+ export declare const USER_AGENT = "prohost-cli/0.8.3";
package/dist/version.js CHANGED
@@ -7,6 +7,6 @@
7
7
  * `package.json`, so a release bump that forgets this file fails the suite
8
8
  * instead of shipping a `User-Agent` that lies about which build is calling.
9
9
  */
10
- export const CLI_VERSION = '0.8.2';
10
+ export const CLI_VERSION = '0.8.3';
11
11
  /** Sent on every HTTP request the CLI makes back into ProhostAI. */
12
12
  export const USER_AGENT = `prohost-cli/${CLI_VERSION}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prohost/cli",
3
- "version": "0.8.2",
3
+ "version": "0.8.3",
4
4
  "description": "Run your own AI agent as a ProhostAI teammate, and stream your account's webhooks to your laptop.",
5
5
  "type": "module",
6
6
  "license": "MIT",