@estebanforge/pi-ask-antigravity 1.2.13 → 1.3.1

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,16 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [1.3.1] - 2026-10-21
8
+
9
+ ### Added
10
+ - The generated reviewer agent.md frontmatter is now pinned by a test that parses it with a real YAML parser. The plan-review tool shares the failure mode fixed in pi-antigravity-bridge 1.8.3 (agy silently drops an agent whose frontmatter does not parse); the guard keeps a future wording edit from reintroducing it here.
11
+
12
+ ## [1.3.0] - 2026-10-12
13
+
14
+ ### Changed
15
+ - Settings dialog now renders on the shared `@estebanforge/pi-tui-dialogs` framed dialog kit instead of the bare pi-tui `SettingsList`: bordered rows, a help panel per setting, type-to-search, and the config file path under the title. Same three rows, same stage-then-save-on-close behavior.
16
+
7
17
  ## [1.2.13] - 2026-10-12
8
18
 
9
19
  ### Changed
@@ -37,12 +37,12 @@ import {
37
37
  type AgentToolResult,
38
38
  buildSessionContext,
39
39
  getAgentDir,
40
- getSettingsListTheme,
41
40
  keyHint,
42
41
  type ExtensionAPI,
43
42
  } from "@earendil-works/pi-coding-agent";
44
43
 
45
- import { Container, SettingsList, Text, type SettingItem } from "@earendil-works/pi-tui";
44
+ import { Text } from "@earendil-works/pi-tui";
45
+ import { DIALOG_OPTIONS, DialogMenu, type DialogRow } from "@estebanforge/pi-tui-dialogs";
46
46
  import { contentText } from "@earendil-works/pi-ai";
47
47
  import { Type } from "typebox";
48
48
  import {
@@ -781,7 +781,7 @@ export default async function (pi: ExtensionAPI) {
781
781
  const currentResolved =
782
782
  resolveAgyModel(config.defaultModel, discovered, config.defaultThinking)?.model ?? config.defaultModel;
783
783
 
784
- const items: SettingItem[] = [
784
+ const rows: DialogRow[] = [
785
785
  {
786
786
  id: "defaultModel",
787
787
  label: "Default model",
@@ -813,40 +813,41 @@ export default async function (pi: ExtensionAPI) {
813
813
 
814
814
  const pending: Partial<Config> = {};
815
815
 
816
- await ctx.ui.custom((tui, theme, _kb, done) => {
817
- const container = new Container();
818
- container.addChild(
819
- new Text(theme.fg("accent", theme.bold("AskAntigravity defaults")), 1, 1),
820
- );
821
-
822
- const settingsList = new SettingsList(
823
- items,
824
- Math.min(items.length + 4, 15),
825
- getSettingsListTheme(),
826
- (id, newValue) => {
827
- if (id === "defaultModel") {
828
- // Value is "alias → resolved"; keep the alias part.
829
- const alias = newValue.split("→")[0].trim();
830
- pending.defaultModel = alias;
831
- } else if (id === "defaultThinking") {
832
- pending.defaultThinking = newValue as ThinkingTier;
833
- } else if (id === "permissions") {
834
- pending.skipPermissions = newValue === "auto-approved";
835
- }
836
- },
837
- () => done(undefined),
838
- );
839
- container.addChild(settingsList);
840
-
841
- return {
842
- render: (w: number) => container.render(w),
843
- invalidate: () => container.invalidate(),
844
- handleInput: (data: string) => {
845
- settingsList.handleInput?.(data);
846
- tui.requestRender();
847
- },
848
- };
849
- });
816
+ await ctx.ui.custom<void>(
817
+ (host, theme, _kb, done) => {
818
+ const menu = new DialogMenu(
819
+ host,
820
+ theme,
821
+ {
822
+ title: "AskAntigravity defaults",
823
+ subtitle: `Project file: ${path.join(getAgentDir(), "ask-antigravity.json")} — changes save when the dialog closes`,
824
+ rows,
825
+ footer: "↑↓ navigate · Enter/Space cycle · Type to search · Esc close",
826
+ onChange: (id, newValue) => {
827
+ if (id === "defaultModel") {
828
+ // Value is "alias → resolved"; keep the alias part.
829
+ const alias = newValue.split("→")[0].trim();
830
+ pending.defaultModel = alias;
831
+ } else if (id === "defaultThinking") {
832
+ pending.defaultThinking = newValue as ThinkingTier;
833
+ } else if (id === "permissions") {
834
+ pending.skipPermissions = newValue === "auto-approved";
835
+ }
836
+ },
837
+ },
838
+ () => done(),
839
+ );
840
+ return {
841
+ render: (w: number) => menu.render(w),
842
+ invalidate: () => menu.invalidate(),
843
+ handleInput: (data: string) => {
844
+ menu.handleInput(data);
845
+ host.requestRender();
846
+ },
847
+ };
848
+ },
849
+ DIALOG_OPTIONS,
850
+ );
850
851
 
851
852
  if (Object.keys(pending).length === 0) return;
852
853
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@estebanforge/pi-ask-antigravity",
3
- "version": "1.2.13",
3
+ "version": "1.3.1",
4
4
  "description": "Pi tool that delegates a self-contained sub-task to Google Antigravity's agy CLI (the CLI for Gemini). Friendly model aliases (flash/pro/gemini), configurable default model + thinking, and the AskAntigravity delegation tool.",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -28,7 +28,8 @@
28
28
  },
29
29
  "type": "module",
30
30
  "dependencies": {
31
- "@estebanforge/pi-ask-shared": "^0.1.2"
31
+ "@estebanforge/pi-ask-shared": "^0.1.2",
32
+ "@estebanforge/pi-tui-dialogs": "^0.1.1"
32
33
  },
33
34
  "files": [
34
35
  "extensions",