@signalridge/pi-subagents 1.6.1 → 1.7.0

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
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.7.0
4
+ ### Minor Changes
5
+
6
+ - 07350d4: Standardize extension-owned popup surfaces with an idempotent Pi-style border adapter. Native Pi dialogs retain their built-in framing and RPC behavior; custom menus and overlays gain consistent border rules.
7
+
8
+ ### Patch Changes
9
+
10
+ - Updated dependencies [07350d4]
11
+ - @signalridge/pi-ui@1.3.0
12
+
3
13
  ## 1.6.1
4
14
  ### Patch Changes
5
15
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signalridge/pi-subagents",
3
- "version": "1.6.1",
3
+ "version": "1.7.0",
4
4
  "description": "Signalridge's managed subagent runtime with workflow-owned orchestration RPC.",
5
5
  "author": "tintinweb and signalridge contributors",
6
6
  "license": "MIT",
@@ -33,6 +33,7 @@
33
33
  "@sinclair/typebox": "^0.34.50",
34
34
  "croner": "^10.0.1",
35
35
  "@signalridge/pi-subagents-protocol": "^1.3.1",
36
+ "@signalridge/pi-ui": "^1.3.0",
36
37
  "nanoid": "^5.0.0"
37
38
  },
38
39
  "scripts": {
package/src/index.ts CHANGED
@@ -37,6 +37,7 @@ import {
37
37
  Spacer,
38
38
  Text,
39
39
  } from "@earendil-works/pi-tui";
40
+ import { wrapCustomUi } from "@signalridge/pi-ui";
40
41
  import { Type } from "@sinclair/typebox";
41
42
  import { abortable } from "./abortable.js";
42
43
  import {
@@ -3435,7 +3436,7 @@ Terse command-style prompts produce shallow, generic work.
3435
3436
  if (hasCustom) legendParts.push("source labels: project and global");
3436
3437
  if (hasDisabled) legendParts.push("disabled = unavailable");
3437
3438
 
3438
- const selected = await ctx.ui.custom<string | undefined>(
3439
+ const selected = await wrapCustomUi(ctx.ui).custom<string | undefined>(
3439
3440
  (_tui, _theme, _kb, done) => {
3440
3441
  const slTheme = getSettingsListTheme();
3441
3442
  const list = new SettingsList(
@@ -3501,7 +3502,7 @@ Terse command-style prompts produce shallow, generic work.
3501
3502
  const session = record.session;
3502
3503
  const activity = agentActivity.get(record.id);
3503
3504
 
3504
- await ctx.ui.custom<undefined>(
3505
+ await wrapCustomUi(ctx.ui).custom<undefined>(
3505
3506
  (tui, theme, keybindings, done) => {
3506
3507
  return new ConversationViewer(
3507
3508
  tui,
@@ -5038,7 +5039,7 @@ Do not wrap the response in a markdown code fence. Return only the file contents
5038
5039
  // Updated on arrow keys so Enter knows which field is selected immediately.
5039
5040
  let currentIndex = 0;
5040
5041
 
5041
- const result = await ctx.ui.custom<string | undefined>(
5042
+ const result = await wrapCustomUi(ctx.ui).custom<string | undefined>(
5042
5043
  (_tui, _theme, _kb, done) => {
5043
5044
  const items = buildItems();
5044
5045
 
@@ -183,7 +183,7 @@ export class ConversationViewer implements Component {
183
183
  // agent's conversation ends and the parent's resumes. An inner rule would be
184
184
  // a third horizontal line competing with the two that mark the boundary, and
185
185
  // a four-sided box would cost two columns on every row for the same job.
186
- const rule = () => th.fg("border", "─".repeat(Math.max(0, width)));
186
+ const rule = () => th.fg("borderAccent", "─".repeat(Math.max(0, width)));
187
187
  const hrMid = row("");
188
188
 
189
189
  lines.push(rule());
@@ -12,6 +12,7 @@
12
12
  */
13
13
 
14
14
  import { Editor, isKeyRelease, Key, matchesKey, type TUI, truncateToWidth, visibleWidth } from "@earendil-works/pi-tui";
15
+ import { borderedComponent } from "@signalridge/pi-ui";
15
16
  import { renderAgentName } from "../agent-color.js";
16
17
  import type { AgentManager } from "../agent-manager.js";
17
18
  import type { AgentRecord } from "../types.js";
@@ -302,7 +303,7 @@ export class FleetList {
302
303
  void this.ui.custom<undefined>(
303
304
  (tui, theme, keybindings, done) => {
304
305
  this.viewerClose = () => done(undefined);
305
- return new ConversationViewer(
306
+ return borderedComponent(new ConversationViewer(
306
307
  tui,
307
308
  session,
308
309
  record,
@@ -315,7 +316,7 @@ export class FleetList {
315
316
  keybindings,
316
317
  (message: string) => this.manager.steer(record.id, message),
317
318
  () => this.manager.getRecord?.(record.id),
318
- );
319
+ ), (text) => theme.fg("borderAccent", text));
319
320
  },
320
321
  {
321
322
  overlay: true,