@mariozechner/pi-coding-agent 0.49.1 → 0.49.2
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 +23 -1
- package/README.md +2 -9
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +6 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/export-html/template.css +19 -0
- package/dist/core/export-html/template.js +70 -5
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/types.d.ts +10 -3
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +1 -3
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +9 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +2 -1
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +9 -0
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +84 -38
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +2 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +10 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +5 -2
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +48 -25
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +2 -1
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +1 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/docs/extensions.md +5 -3
- package/docs/tui.md +6 -3
- package/examples/extensions/README.md +1 -0
- package/examples/extensions/question.ts +9 -22
- package/examples/extensions/widget-placement.ts +17 -0
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/package.json +4 -4
|
@@ -22,28 +22,17 @@ interface QuestionDetails {
|
|
|
22
22
|
wasCustom?: boolean;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
//
|
|
26
|
-
const OptionSchema = Type.
|
|
27
|
-
Type.String(),
|
|
28
|
-
Type.
|
|
29
|
-
|
|
30
|
-
description: Type.Optional(Type.String({ description: "Optional description shown below label" })),
|
|
31
|
-
}),
|
|
32
|
-
]);
|
|
25
|
+
// Options with labels and optional descriptions
|
|
26
|
+
const OptionSchema = Type.Object({
|
|
27
|
+
label: Type.String({ description: "Display label for the option" }),
|
|
28
|
+
description: Type.Optional(Type.String({ description: "Optional description shown below label" })),
|
|
29
|
+
});
|
|
33
30
|
|
|
34
31
|
const QuestionParams = Type.Object({
|
|
35
32
|
question: Type.String({ description: "The question to ask the user" }),
|
|
36
33
|
options: Type.Array(OptionSchema, { description: "Options for the user to choose from" }),
|
|
37
34
|
});
|
|
38
35
|
|
|
39
|
-
// Normalize option to { label, description? }
|
|
40
|
-
function normalizeOption(opt: string | { label: string; description?: string }): OptionWithDesc {
|
|
41
|
-
if (typeof opt === "string") {
|
|
42
|
-
return { label: opt };
|
|
43
|
-
}
|
|
44
|
-
return opt;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
36
|
export default function question(pi: ExtensionAPI) {
|
|
48
37
|
pi.registerTool({
|
|
49
38
|
name: "question",
|
|
@@ -57,7 +46,7 @@ export default function question(pi: ExtensionAPI) {
|
|
|
57
46
|
content: [{ type: "text", text: "Error: UI not available (running in non-interactive mode)" }],
|
|
58
47
|
details: {
|
|
59
48
|
question: params.question,
|
|
60
|
-
options: params.options.map((o) =>
|
|
49
|
+
options: params.options.map((o) => o.label),
|
|
61
50
|
answer: null,
|
|
62
51
|
} as QuestionDetails,
|
|
63
52
|
};
|
|
@@ -70,9 +59,7 @@ export default function question(pi: ExtensionAPI) {
|
|
|
70
59
|
};
|
|
71
60
|
}
|
|
72
61
|
|
|
73
|
-
|
|
74
|
-
const normalizedOptions = params.options.map(normalizeOption);
|
|
75
|
-
const allOptions: DisplayOption[] = [...normalizedOptions, { label: "Type something.", isOther: true }];
|
|
62
|
+
const allOptions: DisplayOption[] = [...params.options, { label: "Type something.", isOther: true }];
|
|
76
63
|
|
|
77
64
|
const result = await ctx.ui.custom<{ answer: string; wasCustom: boolean; index?: number } | null>(
|
|
78
65
|
(tui, theme, _kb, done) => {
|
|
@@ -209,7 +196,7 @@ export default function question(pi: ExtensionAPI) {
|
|
|
209
196
|
);
|
|
210
197
|
|
|
211
198
|
// Build simple options list for details
|
|
212
|
-
const simpleOptions =
|
|
199
|
+
const simpleOptions = params.options.map((o) => o.label);
|
|
213
200
|
|
|
214
201
|
if (!result) {
|
|
215
202
|
return {
|
|
@@ -244,7 +231,7 @@ export default function question(pi: ExtensionAPI) {
|
|
|
244
231
|
let text = theme.fg("toolTitle", theme.bold("question ")) + theme.fg("muted", args.question);
|
|
245
232
|
const opts = Array.isArray(args.options) ? args.options : [];
|
|
246
233
|
if (opts.length) {
|
|
247
|
-
const labels = opts.map((o:
|
|
234
|
+
const labels = opts.map((o: OptionWithDesc) => o.label);
|
|
248
235
|
const numbered = [...labels, "Type something."].map((o, i) => `${i + 1}. ${o}`);
|
|
249
236
|
text += `\n${theme.fg("dim", ` Options: ${numbered.join(", ")}`)}`;
|
|
250
237
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ExtensionAPI, ExtensionContext } from "@mariozechner/pi-coding-agent";
|
|
2
|
+
|
|
3
|
+
const applyWidgets = (ctx: ExtensionContext) => {
|
|
4
|
+
if (!ctx.hasUI) return;
|
|
5
|
+
ctx.ui.setWidget("widget-above", ["Above editor widget"]);
|
|
6
|
+
ctx.ui.setWidget("widget-below", ["Below editor widget"], { placement: "belowEditor" });
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export default function widgetPlacementExtension(pi: ExtensionAPI) {
|
|
10
|
+
pi.on("session_start", (_event, ctx) => {
|
|
11
|
+
applyWidgets(ctx);
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
pi.on("session_switch", (_event, ctx) => {
|
|
15
|
+
applyWidgets(ctx);
|
|
16
|
+
});
|
|
17
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-extension-with-deps",
|
|
3
|
-
"version": "1.13.
|
|
3
|
+
"version": "1.13.2",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "pi-extension-with-deps",
|
|
9
|
-
"version": "1.13.
|
|
9
|
+
"version": "1.13.2",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"ms": "^2.1.3"
|
|
12
12
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mariozechner/pi-coding-agent",
|
|
3
|
-
"version": "0.49.
|
|
3
|
+
"version": "0.49.2",
|
|
4
4
|
"description": "Coding agent CLI with read, bash, edit, write tools and session management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"piConfig": {
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@mariozechner/clipboard": "^0.3.0",
|
|
42
42
|
"@mariozechner/jiti": "^2.6.2",
|
|
43
|
-
"@mariozechner/pi-agent-core": "^0.49.
|
|
44
|
-
"@mariozechner/pi-ai": "^0.49.
|
|
45
|
-
"@mariozechner/pi-tui": "^0.49.
|
|
43
|
+
"@mariozechner/pi-agent-core": "^0.49.2",
|
|
44
|
+
"@mariozechner/pi-ai": "^0.49.2",
|
|
45
|
+
"@mariozechner/pi-tui": "^0.49.2",
|
|
46
46
|
"@silvia-odwyer/photon-node": "^0.3.4",
|
|
47
47
|
"chalk": "^5.5.0",
|
|
48
48
|
"cli-highlight": "^2.1.11",
|