@oh-my-pi/pi-coding-agent 16.2.12 → 16.2.13
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 +7 -0
- package/dist/cli.js +2112 -2112
- package/dist/types/config/models-config-schema.d.ts +12 -0
- package/dist/types/config/models-config.d.ts +9 -0
- package/package.json +12 -12
- package/src/config/models-config-schema.ts +13 -0
- package/src/prompts/tools/ssh.md +1 -0
- package/src/tools/ssh.ts +8 -1
|
@@ -245,6 +245,9 @@ export declare const ModelOverrideSchema: import("arktype/internal/variants/obje
|
|
|
245
245
|
api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
246
246
|
endpoint?: string | undefined;
|
|
247
247
|
model?: string | undefined;
|
|
248
|
+
v2StreamingEnabled?: boolean | undefined;
|
|
249
|
+
v2Endpoint?: string | undefined;
|
|
250
|
+
streamingEndpoint?: string | undefined;
|
|
248
251
|
} | undefined;
|
|
249
252
|
}, {}>;
|
|
250
253
|
export type ModelOverride = typeof ModelOverrideSchema.infer;
|
|
@@ -368,6 +371,9 @@ export declare const ModelsConfigSchema: import("arktype/internal/variants/objec
|
|
|
368
371
|
api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
369
372
|
endpoint?: string | undefined;
|
|
370
373
|
model?: string | undefined;
|
|
374
|
+
v2StreamingEnabled?: boolean | undefined;
|
|
375
|
+
v2Endpoint?: string | undefined;
|
|
376
|
+
streamingEndpoint?: string | undefined;
|
|
371
377
|
} | undefined;
|
|
372
378
|
authHeader?: boolean | undefined;
|
|
373
379
|
auth?: "apiKey" | "none" | "oauth" | undefined;
|
|
@@ -524,6 +530,9 @@ export declare const ModelsConfigSchema: import("arktype/internal/variants/objec
|
|
|
524
530
|
api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
525
531
|
endpoint?: string | undefined;
|
|
526
532
|
model?: string | undefined;
|
|
533
|
+
v2StreamingEnabled?: boolean | undefined;
|
|
534
|
+
v2Endpoint?: string | undefined;
|
|
535
|
+
streamingEndpoint?: string | undefined;
|
|
527
536
|
} | undefined;
|
|
528
537
|
}[] | undefined;
|
|
529
538
|
modelOverrides?: {
|
|
@@ -674,6 +683,9 @@ export declare const ModelsConfigSchema: import("arktype/internal/variants/objec
|
|
|
674
683
|
api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
675
684
|
endpoint?: string | undefined;
|
|
676
685
|
model?: string | undefined;
|
|
686
|
+
v2StreamingEnabled?: boolean | undefined;
|
|
687
|
+
v2Endpoint?: string | undefined;
|
|
688
|
+
streamingEndpoint?: string | undefined;
|
|
677
689
|
} | undefined;
|
|
678
690
|
};
|
|
679
691
|
} | undefined;
|
|
@@ -141,6 +141,9 @@ export declare const ModelsConfigFile: ConfigFile<{
|
|
|
141
141
|
api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
142
142
|
endpoint?: string | undefined;
|
|
143
143
|
model?: string | undefined;
|
|
144
|
+
v2StreamingEnabled?: boolean | undefined;
|
|
145
|
+
v2Endpoint?: string | undefined;
|
|
146
|
+
streamingEndpoint?: string | undefined;
|
|
144
147
|
} | undefined;
|
|
145
148
|
authHeader?: boolean | undefined;
|
|
146
149
|
auth?: "apiKey" | "none" | "oauth" | undefined;
|
|
@@ -282,6 +285,9 @@ export declare const ModelsConfigFile: ConfigFile<{
|
|
|
282
285
|
api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
283
286
|
endpoint?: string | undefined;
|
|
284
287
|
model?: string | undefined;
|
|
288
|
+
v2StreamingEnabled?: boolean | undefined;
|
|
289
|
+
v2Endpoint?: string | undefined;
|
|
290
|
+
streamingEndpoint?: string | undefined;
|
|
285
291
|
} | undefined;
|
|
286
292
|
}[] | undefined;
|
|
287
293
|
modelOverrides?: {
|
|
@@ -417,6 +423,9 @@ export declare const ModelsConfigFile: ConfigFile<{
|
|
|
417
423
|
api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
418
424
|
endpoint?: string | undefined;
|
|
419
425
|
model?: string | undefined;
|
|
426
|
+
v2StreamingEnabled?: boolean | undefined;
|
|
427
|
+
v2Endpoint?: string | undefined;
|
|
428
|
+
streamingEndpoint?: string | undefined;
|
|
420
429
|
} | undefined;
|
|
421
430
|
};
|
|
422
431
|
} | undefined;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@oh-my-pi/pi-coding-agent",
|
|
4
|
-
"version": "16.2.
|
|
4
|
+
"version": "16.2.13",
|
|
5
5
|
"description": "Coding agent CLI with read, bash, edit, write tools and session management",
|
|
6
6
|
"homepage": "https://omp.sh",
|
|
7
7
|
"author": "Can Boluk",
|
|
@@ -56,17 +56,17 @@
|
|
|
56
56
|
"@agentclientprotocol/sdk": "0.25.0",
|
|
57
57
|
"@babel/parser": "^7.29.7",
|
|
58
58
|
"@mozilla/readability": "^0.6.0",
|
|
59
|
-
"@oh-my-pi/hashline": "16.2.
|
|
60
|
-
"@oh-my-pi/omp-stats": "16.2.
|
|
61
|
-
"@oh-my-pi/pi-agent-core": "16.2.
|
|
62
|
-
"@oh-my-pi/pi-ai": "16.2.
|
|
63
|
-
"@oh-my-pi/pi-catalog": "16.2.
|
|
64
|
-
"@oh-my-pi/pi-mnemopi": "16.2.
|
|
65
|
-
"@oh-my-pi/pi-natives": "16.2.
|
|
66
|
-
"@oh-my-pi/pi-tui": "16.2.
|
|
67
|
-
"@oh-my-pi/pi-utils": "16.2.
|
|
68
|
-
"@oh-my-pi/pi-wire": "16.2.
|
|
69
|
-
"@oh-my-pi/snapcompact": "16.2.
|
|
59
|
+
"@oh-my-pi/hashline": "16.2.13",
|
|
60
|
+
"@oh-my-pi/omp-stats": "16.2.13",
|
|
61
|
+
"@oh-my-pi/pi-agent-core": "16.2.13",
|
|
62
|
+
"@oh-my-pi/pi-ai": "16.2.13",
|
|
63
|
+
"@oh-my-pi/pi-catalog": "16.2.13",
|
|
64
|
+
"@oh-my-pi/pi-mnemopi": "16.2.13",
|
|
65
|
+
"@oh-my-pi/pi-natives": "16.2.13",
|
|
66
|
+
"@oh-my-pi/pi-tui": "16.2.13",
|
|
67
|
+
"@oh-my-pi/pi-utils": "16.2.13",
|
|
68
|
+
"@oh-my-pi/pi-wire": "16.2.13",
|
|
69
|
+
"@oh-my-pi/snapcompact": "16.2.13",
|
|
70
70
|
"@opentelemetry/api": "^1.9.1",
|
|
71
71
|
"@opentelemetry/context-async-hooks": "^2.7.1",
|
|
72
72
|
"@opentelemetry/exporter-trace-otlp-proto": "^0.218.0",
|
|
@@ -127,6 +127,9 @@ const RemoteCompactionSchema = type({
|
|
|
127
127
|
"api?": ApiSchema,
|
|
128
128
|
"endpoint?": "string",
|
|
129
129
|
"model?": "string",
|
|
130
|
+
"v2StreamingEnabled?": "boolean",
|
|
131
|
+
"v2Endpoint?": "string",
|
|
132
|
+
"streamingEndpoint?": "string",
|
|
130
133
|
}).narrow((value, ctx) => {
|
|
131
134
|
if (value.endpoint !== undefined && typeof value.endpoint === "string" && value.endpoint.length === 0) {
|
|
132
135
|
return ctx.mustBe("remoteCompaction.endpoint a non-empty string");
|
|
@@ -134,6 +137,16 @@ const RemoteCompactionSchema = type({
|
|
|
134
137
|
if (value.model !== undefined && typeof value.model === "string" && value.model.length === 0) {
|
|
135
138
|
return ctx.mustBe("remoteCompaction.model a non-empty string");
|
|
136
139
|
}
|
|
140
|
+
if (value.v2Endpoint !== undefined && typeof value.v2Endpoint === "string" && value.v2Endpoint.length === 0) {
|
|
141
|
+
return ctx.mustBe("remoteCompaction.v2Endpoint a non-empty string");
|
|
142
|
+
}
|
|
143
|
+
if (
|
|
144
|
+
value.streamingEndpoint !== undefined &&
|
|
145
|
+
typeof value.streamingEndpoint === "string" &&
|
|
146
|
+
value.streamingEndpoint.length === 0
|
|
147
|
+
) {
|
|
148
|
+
return ctx.mustBe("remoteCompaction.streamingEndpoint a non-empty string");
|
|
149
|
+
}
|
|
137
150
|
return true;
|
|
138
151
|
});
|
|
139
152
|
|
package/src/prompts/tools/ssh.md
CHANGED
package/src/tools/ssh.ts
CHANGED
|
@@ -26,7 +26,7 @@ import { clampTimeout } from "./tool-timeouts";
|
|
|
26
26
|
const sshSchema = type({
|
|
27
27
|
host: type("string").describe("ssh host"),
|
|
28
28
|
command: type("string").describe("remote command"),
|
|
29
|
-
"cwd?": type("string").describe("remote working directory"),
|
|
29
|
+
"cwd?": type("string").describe("remote working directory; omit unless required, never ~ or ~/..."),
|
|
30
30
|
"timeout?": type("number").describe("timeout in seconds"),
|
|
31
31
|
});
|
|
32
32
|
|
|
@@ -89,6 +89,12 @@ function quoteCmdPath(value: string): string {
|
|
|
89
89
|
const escaped = value.replace(/"/g, '""');
|
|
90
90
|
return `"${escaped}"`;
|
|
91
91
|
}
|
|
92
|
+
function assertValidSshCwd(cwd: string | undefined): void {
|
|
93
|
+
if (!cwd) return;
|
|
94
|
+
if (cwd === "~" || cwd.startsWith("~/")) {
|
|
95
|
+
throw new ToolError("SSH cwd must be an absolute remote path; omit cwd instead of using ~.");
|
|
96
|
+
}
|
|
97
|
+
}
|
|
92
98
|
|
|
93
99
|
function buildRemoteCommand(command: string, cwd: string | undefined, info: SSHHostInfo): string {
|
|
94
100
|
if (!cwd) return command;
|
|
@@ -177,6 +183,7 @@ export class SshTool implements AgentTool<typeof sshSchema, SSHToolDetails> {
|
|
|
177
183
|
if (!hostConfig) {
|
|
178
184
|
throw new ToolError(`SSH host not loaded: ${host}`);
|
|
179
185
|
}
|
|
186
|
+
assertValidSshCwd(cwd);
|
|
180
187
|
|
|
181
188
|
const hostInfo = await ensureHostInfo(hostConfig);
|
|
182
189
|
const remoteCommand = buildRemoteCommand(command, cwd, hostInfo);
|