poe-code 3.0.223 → 3.0.224
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/dist/cli/commands/configure-payload.js +52 -12
- package/dist/cli/commands/configure-payload.js.map +1 -1
- package/dist/cli/commands/configure.js +2 -2
- package/dist/cli/commands/configure.js.map +1 -1
- package/dist/cli/commands/provider.d.ts +1 -0
- package/dist/cli/commands/provider.js +94 -3
- package/dist/cli/commands/provider.js.map +1 -1
- package/dist/cli/commands/shared.d.ts +4 -1
- package/dist/cli/commands/shared.js +55 -5
- package/dist/cli/commands/shared.js.map +1 -1
- package/dist/cli/constants.d.ts +1 -2
- package/dist/cli/constants.js +1 -13
- package/dist/cli/constants.js.map +1 -1
- package/dist/cli/options.d.ts +1 -1
- package/dist/cli/options.js +10 -1
- package/dist/cli/options.js.map +1 -1
- package/dist/cli/prompt-runner.js +4 -2
- package/dist/cli/prompt-runner.js.map +1 -1
- package/dist/cli/prompts.d.ts +3 -1
- package/dist/cli/prompts.js +13 -0
- package/dist/cli/prompts.js.map +1 -1
- package/dist/index.js +244 -39
- package/dist/index.js.map +3 -3
- package/dist/providers/claude-code.js +11 -22
- package/dist/providers/claude-code.js.map +2 -2
- package/dist/providers/codex.js +19 -29
- package/dist/providers/codex.js.map +2 -2
- package/dist/providers/goose.js +11 -22
- package/dist/providers/goose.js.map +2 -2
- package/dist/providers/kimi.js +11 -22
- package/dist/providers/kimi.js.map +2 -2
- package/dist/providers/opencode.js +11 -22
- package/dist/providers/opencode.js.map +2 -2
- package/dist/providers/poe-agent.js +11 -22
- package/dist/providers/poe-agent.js.map +2 -2
- package/package.json +1 -1
- package/packages/memory/dist/index.js +10 -8
- package/packages/memory/dist/index.js.map +2 -2
package/dist/cli/options.js
CHANGED
|
@@ -111,7 +111,7 @@ export function createOptionResolvers(init) {
|
|
|
111
111
|
return apiKey;
|
|
112
112
|
}
|
|
113
113
|
};
|
|
114
|
-
const resolveModel = async ({ value, assumeDefault, defaultValue, choices, label, onResolve }) => {
|
|
114
|
+
const resolveModel = async ({ value, assumeDefault, defaultValue, choices = [], label, onResolve }) => {
|
|
115
115
|
if (value != null) {
|
|
116
116
|
onResolve?.(label, value);
|
|
117
117
|
return value;
|
|
@@ -124,6 +124,15 @@ export function createOptionResolvers(init) {
|
|
|
124
124
|
onResolve?.(label, defaultValue);
|
|
125
125
|
return defaultValue;
|
|
126
126
|
}
|
|
127
|
+
if (!choices || choices.length === 0) {
|
|
128
|
+
return await ensure({
|
|
129
|
+
value,
|
|
130
|
+
descriptor: init.promptLibrary.model({
|
|
131
|
+
label,
|
|
132
|
+
defaultValue
|
|
133
|
+
})
|
|
134
|
+
});
|
|
135
|
+
}
|
|
127
136
|
const descriptor = init.promptLibrary.model({
|
|
128
137
|
label,
|
|
129
138
|
defaultValue,
|
package/dist/cli/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,8 @@ export function createPromptRunner(adapter = {
|
|
|
27
27
|
let result;
|
|
28
28
|
if (type === "password") {
|
|
29
29
|
result = await adapter.password({
|
|
30
|
-
message: descriptor.message
|
|
30
|
+
message: descriptor.message,
|
|
31
|
+
validate: descriptor.validate
|
|
31
32
|
});
|
|
32
33
|
}
|
|
33
34
|
else if (type === "select") {
|
|
@@ -47,7 +48,8 @@ export function createPromptRunner(adapter = {
|
|
|
47
48
|
else {
|
|
48
49
|
result = await adapter.text({
|
|
49
50
|
message: descriptor.message,
|
|
50
|
-
initialValue: toInitialValue(descriptor.initial)
|
|
51
|
+
initialValue: toInitialValue(descriptor.initial),
|
|
52
|
+
validate: descriptor.validate
|
|
51
53
|
});
|
|
52
54
|
}
|
|
53
55
|
if (adapter.isCancel(result)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-runner.js","sourceRoot":"","sources":["../../src/cli/prompt-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,UAAU,IAAI,IAAI,EACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAYtD,SAAS,cAAc,CAAC,KAAkC;IACxD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,oBAAoB,CAC3B,UAA4B;IAE5B,IAAI,UAAU,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC3C,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC;IACzD,CAAC;IACD,OAAO,UAAU,CAAC,OAAO,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,UAAyB;IACvB,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,MAAM;CACP;IAED,MAAM,SAAS,GAAG,KAAK,EACrB,UAA4B,EACF,EAAE;QAC5B,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,MAAM,CAAC;QACvC,IAAI,MAAuB,CAAC;QAE5B,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC;gBAC9B,OAAO,EAAE,UAAU,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"prompt-runner.js","sourceRoot":"","sources":["../../src/cli/prompt-runner.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/prompts.d.ts
CHANGED
|
@@ -7,11 +7,12 @@ export interface PromptDescriptor<TName extends string = string> {
|
|
|
7
7
|
title: string;
|
|
8
8
|
value: string;
|
|
9
9
|
}>;
|
|
10
|
+
readonly validate?: (value: string | undefined) => string | undefined;
|
|
10
11
|
}
|
|
11
12
|
export interface ModelPromptInput {
|
|
12
13
|
label: string;
|
|
13
14
|
defaultValue: string;
|
|
14
|
-
choices
|
|
15
|
+
choices?: Array<{
|
|
15
16
|
title: string;
|
|
16
17
|
value: string;
|
|
17
18
|
}>;
|
|
@@ -29,6 +30,7 @@ export interface ServiceSelectionInput {
|
|
|
29
30
|
}
|
|
30
31
|
export interface PromptLibrary {
|
|
31
32
|
loginApiKey(): PromptDescriptor<"apiKey">;
|
|
33
|
+
providerBaseUrl(label: string): PromptDescriptor<"baseUrl">;
|
|
32
34
|
model(input: ModelPromptInput): PromptDescriptor<"model">;
|
|
33
35
|
reasoningEffort(input: ReasoningPromptInput): PromptDescriptor<"reasoningEffort">;
|
|
34
36
|
configName(defaultName: string): PromptDescriptor<"configName">;
|
package/dist/cli/prompts.js
CHANGED
|
@@ -6,7 +6,20 @@ export function createPromptLibrary() {
|
|
|
6
6
|
message: "Enter your Poe API key - get one at https://poe.com/api/keys",
|
|
7
7
|
type: "password"
|
|
8
8
|
}),
|
|
9
|
+
providerBaseUrl: (label) => describe({
|
|
10
|
+
name: "baseUrl",
|
|
11
|
+
message: `${label} base URL`,
|
|
12
|
+
type: "text"
|
|
13
|
+
}),
|
|
9
14
|
model: ({ label, defaultValue, choices }) => {
|
|
15
|
+
if (!choices || choices.length === 0) {
|
|
16
|
+
return describe({
|
|
17
|
+
name: "model",
|
|
18
|
+
message: label,
|
|
19
|
+
type: "text",
|
|
20
|
+
initial: defaultValue
|
|
21
|
+
});
|
|
22
|
+
}
|
|
10
23
|
const initial = Math.max(choices.findIndex((choice) => choice.value === defaultValue), 0);
|
|
11
24
|
return describe({
|
|
12
25
|
name: "model",
|
package/dist/cli/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/cli/prompts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/cli/prompts.ts"],"names":[],"mappings":"AAsCA,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,CACf,UAAmC,EACV,EAAE,CAAC,UAAU,CAAC;IAEzC,OAAO;QACL,WAAW,EAAE,GAAG,EAAE,CAChB,QAAQ,CAAC;YACP,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,8DAA8D;YACvE,IAAI,EAAE,UAAU;SACjB,CAAC;QACJ,eAAe,EAAE,CAAC,KAAa,EAAE,EAAE,CACjC,QAAQ,CAAC;YACP,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,GAAG,KAAK,WAAW;YAC5B,IAAI,EAAE,MAAM;SACb,CAAC;QACJ,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;YAC1C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,OAAO,QAAQ,CAAC;oBACd,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,YAAY;iBACtB,CAAC,CAAC;YACL,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACtB,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,YAAY,CAAC,EAC5D,CAAC,CACF,CAAC;YACF,OAAO,QAAQ,CAAC;gBACd,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,QAAQ;gBACd,OAAO;gBACP,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QACD,eAAe,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,CAC3C,QAAQ,CAAC;YACP,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,YAAY;SACtB,CAAC;QACJ,UAAU,EAAE,CAAC,WAAmB,EAAE,EAAE,CAClC,QAAQ,CAAC;YACP,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,oBAAoB;YAC7B,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,WAAW;SACrB,CAAC;QACJ,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;YACzC,MAAM,UAAU,GAEZ;gBACF,IAAI,EAAE,kBAAkB;gBACxB,OAAO;gBACP,IAAI,EAAE,QAAQ;gBACd,OAAO;aACR,CAAC;YACF,OAAO,UAAU,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -13813,30 +13813,32 @@ var init_cloudflare = __esm({
|
|
|
13813
13813
|
cloudflareProvider = {
|
|
13814
13814
|
id: "cloudflare",
|
|
13815
13815
|
label: "Cloudflare AI Gateway",
|
|
13816
|
-
summary: "Route
|
|
13817
|
-
|
|
13816
|
+
summary: "Route coding agents through Cloudflare AI Gateway.",
|
|
13817
|
+
baseUrlEnvVar: "CF_AIG_BASE_URL",
|
|
13818
|
+
requiresBaseUrl: true,
|
|
13819
|
+
modelInput: { kind: "freeform" },
|
|
13818
13820
|
auth: {
|
|
13819
13821
|
kind: "api-key",
|
|
13820
|
-
envVar: "
|
|
13822
|
+
envVar: "CF_AIG_TOKEN",
|
|
13821
13823
|
storageKey: "provider:cloudflare",
|
|
13822
|
-
prompt: { title: "Cloudflare
|
|
13824
|
+
prompt: { title: "Cloudflare AI Gateway token" }
|
|
13823
13825
|
},
|
|
13824
13826
|
apiShapes: [
|
|
13825
13827
|
{
|
|
13826
13828
|
id: "openai-chat-completions",
|
|
13827
|
-
|
|
13829
|
+
baseUrlPath: "compat"
|
|
13828
13830
|
},
|
|
13829
13831
|
{
|
|
13830
13832
|
id: "openai-responses",
|
|
13831
|
-
|
|
13833
|
+
baseUrlPath: "openai"
|
|
13832
13834
|
},
|
|
13833
13835
|
{
|
|
13834
13836
|
id: "anthropic-messages",
|
|
13835
|
-
|
|
13837
|
+
baseUrlPath: "anthropic"
|
|
13836
13838
|
},
|
|
13837
13839
|
{
|
|
13838
13840
|
id: "google-generations",
|
|
13839
|
-
|
|
13841
|
+
baseUrlPath: "google-ai-studio"
|
|
13840
13842
|
}
|
|
13841
13843
|
]
|
|
13842
13844
|
};
|
|
@@ -14963,7 +14965,7 @@ var init_dry_run = __esm({
|
|
|
14963
14965
|
});
|
|
14964
14966
|
|
|
14965
14967
|
// src/cli/constants.ts
|
|
14966
|
-
var DEFAULT_FRONTIER_MODEL, DEFAULT_TEXT_MODEL, DEFAULT_IMAGE_BOT, DEFAULT_AUDIO_BOT, DEFAULT_VIDEO_BOT, CLAUDE_CODE_VARIANTS, DEFAULT_CLAUDE_CODE_MODEL,
|
|
14968
|
+
var DEFAULT_FRONTIER_MODEL, DEFAULT_TEXT_MODEL, DEFAULT_IMAGE_BOT, DEFAULT_AUDIO_BOT, DEFAULT_VIDEO_BOT, CLAUDE_CODE_VARIANTS, DEFAULT_CLAUDE_CODE_MODEL, KIMI_MODELS, DEFAULT_KIMI_MODEL, FEEDBACK_URL;
|
|
14967
14969
|
var init_constants = __esm({
|
|
14968
14970
|
"src/cli/constants.ts"() {
|
|
14969
14971
|
"use strict";
|
|
@@ -14978,19 +14980,6 @@ var init_constants = __esm({
|
|
|
14978
14980
|
opus: "anthropic/claude-opus-4.7"
|
|
14979
14981
|
};
|
|
14980
14982
|
DEFAULT_CLAUDE_CODE_MODEL = CLAUDE_CODE_VARIANTS.sonnet;
|
|
14981
|
-
CODEX_MODELS = [
|
|
14982
|
-
"openai/gpt-5.5",
|
|
14983
|
-
"openai/gpt-5.4",
|
|
14984
|
-
"openai/gpt-5.3-codex",
|
|
14985
|
-
"openai/gpt-5.2-codex",
|
|
14986
|
-
"openai/gpt-5.2",
|
|
14987
|
-
"openai/gpt-5.2-chat",
|
|
14988
|
-
"openai/gpt-5.2-pro",
|
|
14989
|
-
"openai/gpt-5.1",
|
|
14990
|
-
"openai/gpt-5.1-codex-mini",
|
|
14991
|
-
"anthropic/claude-opus-4.7"
|
|
14992
|
-
];
|
|
14993
|
-
DEFAULT_CODEX_MODEL = CODEX_MODELS[0];
|
|
14994
14983
|
KIMI_MODELS = [
|
|
14995
14984
|
"novitaai/kimi-k2.5",
|
|
14996
14985
|
"novitaai/kimi-k2-thinking",
|
|
@@ -42429,14 +42418,47 @@ async function buildActiveProvider(input) {
|
|
|
42429
42418
|
`Provider "${input.provider.id}" does not declare base URL for API shape "${apiShape}".`
|
|
42430
42419
|
);
|
|
42431
42420
|
}
|
|
42421
|
+
const configuredBaseUrl = resolveNonEmpty(input.explicitShapeBaseUrls?.[apiShape]) ?? resolveShapeBaseUrl(resolveNonEmpty(input.explicitBaseUrl), shape.baseUrlPath) ?? resolveShapeBaseUrl(
|
|
42422
|
+
resolveProviderBaseUrlEnv(input.container, input.provider),
|
|
42423
|
+
shape.baseUrlPath
|
|
42424
|
+
) ?? await resolveStoredShapeBaseUrl(input.container, input.provider.id, apiShape);
|
|
42425
|
+
if (input.provider.requiresBaseUrl === true && configuredBaseUrl === void 0) {
|
|
42426
|
+
throw new Error(
|
|
42427
|
+
`Provider "${input.provider.id}" requires a base URL for API shape "${apiShape}". Run \`poe-code provider login ${input.provider.id} --base-url <url>\`, set ${input.provider.baseUrlEnvVar ?? "the provider base URL env var"}, or pass --base-url.`
|
|
42428
|
+
);
|
|
42429
|
+
}
|
|
42430
|
+
if (configuredBaseUrl === void 0 && shape.defaultBaseUrl === void 0) {
|
|
42431
|
+
throw new Error(
|
|
42432
|
+
`Provider "${input.provider.id}" does not declare a default base URL for API shape "${apiShape}". Pass --base-url or --shape-base-url ${apiShape}=<url>.`
|
|
42433
|
+
);
|
|
42434
|
+
}
|
|
42435
|
+
const baseUrl = configuredBaseUrl ?? shape.defaultBaseUrl;
|
|
42436
|
+
if (baseUrl === void 0) {
|
|
42437
|
+
throw new Error(
|
|
42438
|
+
`Provider "${input.provider.id}" does not declare a default base URL for API shape "${apiShape}". Pass --base-url or --shape-base-url ${apiShape}=<url>.`
|
|
42439
|
+
);
|
|
42440
|
+
}
|
|
42441
|
+
assertHttpBaseUrl(input.provider.id, baseUrl);
|
|
42432
42442
|
return {
|
|
42433
42443
|
id: input.provider.id,
|
|
42434
42444
|
apiShape,
|
|
42435
|
-
baseUrl
|
|
42445
|
+
baseUrl,
|
|
42436
42446
|
credential: input.credential,
|
|
42447
|
+
modelInput: input.provider.modelInput,
|
|
42437
42448
|
extraEnv: {}
|
|
42438
42449
|
};
|
|
42439
42450
|
}
|
|
42451
|
+
function assertHttpBaseUrl(providerId, baseUrl) {
|
|
42452
|
+
let parsed;
|
|
42453
|
+
try {
|
|
42454
|
+
parsed = new URL(baseUrl);
|
|
42455
|
+
} catch {
|
|
42456
|
+
throw new Error(`Provider "${providerId}" base URL must be an http(s) URL.`);
|
|
42457
|
+
}
|
|
42458
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
42459
|
+
throw new Error(`Provider "${providerId}" base URL must be an http(s) URL.`);
|
|
42460
|
+
}
|
|
42461
|
+
}
|
|
42440
42462
|
function parseProviderShapeBaseUrls(provider2, values) {
|
|
42441
42463
|
const exposedShapes = provider2.apiShapes?.map((shape) => shape.id) ?? [];
|
|
42442
42464
|
const exposed = new Set(exposedShapes);
|
|
@@ -42467,6 +42489,31 @@ function resolveNonEmpty(value) {
|
|
|
42467
42489
|
const trimmed = value?.trim();
|
|
42468
42490
|
return trimmed && trimmed.length > 0 ? trimmed : void 0;
|
|
42469
42491
|
}
|
|
42492
|
+
function resolveProviderBaseUrlEnv(container, provider2) {
|
|
42493
|
+
const envVar = provider2.baseUrlEnvVar;
|
|
42494
|
+
return envVar ? resolveNonEmpty(container.env.getVariable(envVar)) : void 0;
|
|
42495
|
+
}
|
|
42496
|
+
function resolveShapeBaseUrl(baseUrl, pathSuffix) {
|
|
42497
|
+
if (baseUrl === void 0) {
|
|
42498
|
+
return void 0;
|
|
42499
|
+
}
|
|
42500
|
+
const suffix = resolveNonEmpty(pathSuffix);
|
|
42501
|
+
if (suffix === void 0) {
|
|
42502
|
+
return baseUrl;
|
|
42503
|
+
}
|
|
42504
|
+
const normalizedBaseUrl = stripTrailingPathSegment(trimTrailingSlash(baseUrl), "compat");
|
|
42505
|
+
return `${normalizedBaseUrl}/${trimLeadingSlash(suffix)}`;
|
|
42506
|
+
}
|
|
42507
|
+
function trimTrailingSlash(value) {
|
|
42508
|
+
return value.endsWith("/") ? value.slice(0, -1) : value;
|
|
42509
|
+
}
|
|
42510
|
+
function trimLeadingSlash(value) {
|
|
42511
|
+
return value.startsWith("/") ? value.slice(1) : value;
|
|
42512
|
+
}
|
|
42513
|
+
function stripTrailingPathSegment(value, segment) {
|
|
42514
|
+
const suffix = `/${segment}`;
|
|
42515
|
+
return value.endsWith(suffix) ? value.slice(0, -suffix.length) : value;
|
|
42516
|
+
}
|
|
42470
42517
|
async function resolveActiveProviderForService(container, serviceName) {
|
|
42471
42518
|
const configuredServices = await loadConfiguredServices({
|
|
42472
42519
|
fs: container.fs,
|
|
@@ -43273,7 +43320,7 @@ function resolvePoeBaseUrls(variables) {
|
|
|
43273
43320
|
const baseInput = typeof raw === "string" && raw.trim().length > 0 ? raw.trim() : DEFAULT_POE_API_BASE_URL;
|
|
43274
43321
|
const parsed = parseUrl(baseInput);
|
|
43275
43322
|
if (!parsed) {
|
|
43276
|
-
const trimmed =
|
|
43323
|
+
const trimmed = trimTrailingSlash2(baseInput.trim());
|
|
43277
43324
|
return {
|
|
43278
43325
|
poeApiBaseUrl: ensureV1Suffix(trimmed),
|
|
43279
43326
|
poeBaseUrl: stripV1Suffix(trimmed)
|
|
@@ -43317,7 +43364,7 @@ function buildPoeBaseUrl(origin, pathname) {
|
|
|
43317
43364
|
}
|
|
43318
43365
|
return pathname.length > 0 ? `${origin}${pathname}` : origin;
|
|
43319
43366
|
}
|
|
43320
|
-
function
|
|
43367
|
+
function trimTrailingSlash2(value) {
|
|
43321
43368
|
if (value.length > 1 && value.endsWith("/")) {
|
|
43322
43369
|
return value.slice(0, -1);
|
|
43323
43370
|
}
|
|
@@ -43449,7 +43496,20 @@ function createPromptLibrary() {
|
|
|
43449
43496
|
message: "Enter your Poe API key - get one at https://poe.com/api/keys",
|
|
43450
43497
|
type: "password"
|
|
43451
43498
|
}),
|
|
43499
|
+
providerBaseUrl: (label) => describe({
|
|
43500
|
+
name: "baseUrl",
|
|
43501
|
+
message: `${label} base URL`,
|
|
43502
|
+
type: "text"
|
|
43503
|
+
}),
|
|
43452
43504
|
model: ({ label, defaultValue, choices }) => {
|
|
43505
|
+
if (!choices || choices.length === 0) {
|
|
43506
|
+
return describe({
|
|
43507
|
+
name: "model",
|
|
43508
|
+
message: label,
|
|
43509
|
+
type: "text",
|
|
43510
|
+
initial: defaultValue
|
|
43511
|
+
});
|
|
43512
|
+
}
|
|
43453
43513
|
const initial = Math.max(
|
|
43454
43514
|
choices.findIndex((choice) => choice.value === defaultValue),
|
|
43455
43515
|
0
|
|
@@ -43956,7 +44016,7 @@ function createOptionResolvers(init) {
|
|
|
43956
44016
|
value,
|
|
43957
44017
|
assumeDefault,
|
|
43958
44018
|
defaultValue,
|
|
43959
|
-
choices,
|
|
44019
|
+
choices = [],
|
|
43960
44020
|
label,
|
|
43961
44021
|
onResolve
|
|
43962
44022
|
}) => {
|
|
@@ -43972,6 +44032,15 @@ function createOptionResolvers(init) {
|
|
|
43972
44032
|
onResolve?.(label, defaultValue);
|
|
43973
44033
|
return defaultValue;
|
|
43974
44034
|
}
|
|
44035
|
+
if (!choices || choices.length === 0) {
|
|
44036
|
+
return await ensure({
|
|
44037
|
+
value,
|
|
44038
|
+
descriptor: init.promptLibrary.model({
|
|
44039
|
+
label,
|
|
44040
|
+
defaultValue
|
|
44041
|
+
})
|
|
44042
|
+
});
|
|
44043
|
+
}
|
|
43975
44044
|
const descriptor = init.promptLibrary.model({
|
|
43976
44045
|
label,
|
|
43977
44046
|
defaultValue,
|
|
@@ -44480,12 +44549,14 @@ var init_cli_settings_merge = __esm({
|
|
|
44480
44549
|
async function createConfigurePayload(init) {
|
|
44481
44550
|
const { container, flags, options, context, adapter, logger: logger2, providerId } = init;
|
|
44482
44551
|
const payload = { env: context.env };
|
|
44552
|
+
let provider2;
|
|
44483
44553
|
if (providerId) {
|
|
44484
|
-
|
|
44554
|
+
provider2 = container.providerRegistry.get(providerId);
|
|
44485
44555
|
if (!provider2) {
|
|
44486
44556
|
throw new Error(`Unknown provider "${providerId}".`);
|
|
44487
44557
|
}
|
|
44488
44558
|
const explicitShapeBaseUrls = parseProviderShapeBaseUrls(provider2, options.shapeBaseUrl ?? []);
|
|
44559
|
+
const agent2 = resolveAgentDefinition(adapter.name) ?? { id: adapter.name };
|
|
44489
44560
|
const apiKey = providerId === POE_PROVIDER_ID ? await container.options.resolveApiKey({
|
|
44490
44561
|
value: options.apiKey,
|
|
44491
44562
|
envValue: provider2.auth.kind === "api-key" ? container.env.getVariable(provider2.auth.envVar) : void 0,
|
|
@@ -44496,12 +44567,15 @@ async function createConfigurePayload(init) {
|
|
|
44496
44567
|
{ apiKey: options.apiKey },
|
|
44497
44568
|
{ envVars: container.env.variables }
|
|
44498
44569
|
);
|
|
44570
|
+
const explicitBaseUrl = await resolveConfigureBaseUrl({
|
|
44571
|
+
options
|
|
44572
|
+
});
|
|
44499
44573
|
const activeProvider = await buildActiveProvider({
|
|
44500
44574
|
container,
|
|
44501
44575
|
provider: provider2,
|
|
44502
|
-
agent:
|
|
44576
|
+
agent: agent2,
|
|
44503
44577
|
credential: apiKey,
|
|
44504
|
-
explicitBaseUrl
|
|
44578
|
+
explicitBaseUrl,
|
|
44505
44579
|
explicitShapeBaseUrls
|
|
44506
44580
|
});
|
|
44507
44581
|
payload.provider = activeProvider;
|
|
@@ -44515,7 +44589,15 @@ async function createConfigurePayload(init) {
|
|
|
44515
44589
|
},
|
|
44516
44590
|
adapter.name
|
|
44517
44591
|
);
|
|
44518
|
-
const model = await
|
|
44592
|
+
const model = provider2?.modelInput?.kind === "freeform" ? await resolveFreeformProviderModel({
|
|
44593
|
+
container,
|
|
44594
|
+
flags,
|
|
44595
|
+
options,
|
|
44596
|
+
label: modelPrompt.label,
|
|
44597
|
+
configModel,
|
|
44598
|
+
provider: provider2,
|
|
44599
|
+
logger: logger2
|
|
44600
|
+
}) : await container.options.resolveModel({
|
|
44519
44601
|
value: options.model,
|
|
44520
44602
|
assumeDefault: flags.assumeYes,
|
|
44521
44603
|
defaultValue: configModel ?? modelPrompt.defaultValue,
|
|
@@ -44550,6 +44632,33 @@ async function createConfigurePayload(init) {
|
|
|
44550
44632
|
}
|
|
44551
44633
|
return payload;
|
|
44552
44634
|
}
|
|
44635
|
+
async function resolveConfigureBaseUrl(input) {
|
|
44636
|
+
return resolveNonEmpty(input.options.baseUrl);
|
|
44637
|
+
}
|
|
44638
|
+
async function resolveFreeformProviderModel(input) {
|
|
44639
|
+
const explicitModel = resolveNonEmpty(input.options.model);
|
|
44640
|
+
if (explicitModel !== void 0) {
|
|
44641
|
+
input.logger.resolved(input.label, explicitModel);
|
|
44642
|
+
return explicitModel;
|
|
44643
|
+
}
|
|
44644
|
+
const configuredModel = resolveNonEmpty(input.configModel ?? void 0);
|
|
44645
|
+
if (configuredModel !== void 0) {
|
|
44646
|
+
input.logger.resolved(input.label, configuredModel);
|
|
44647
|
+
return configuredModel;
|
|
44648
|
+
}
|
|
44649
|
+
if (input.flags.assumeYes) {
|
|
44650
|
+
throw new Error(
|
|
44651
|
+
`Provider "${input.provider.id}" requires a model for "${input.label}". Pass --model.`
|
|
44652
|
+
);
|
|
44653
|
+
}
|
|
44654
|
+
return await input.container.options.ensure({
|
|
44655
|
+
descriptor: {
|
|
44656
|
+
name: "model",
|
|
44657
|
+
message: input.label,
|
|
44658
|
+
type: "text"
|
|
44659
|
+
}
|
|
44660
|
+
});
|
|
44661
|
+
}
|
|
44553
44662
|
var init_configure_payload = __esm({
|
|
44554
44663
|
"src/cli/commands/configure-payload.ts"() {
|
|
44555
44664
|
"use strict";
|
|
@@ -63686,7 +63795,7 @@ var require_requirements_txt = __commonJS({
|
|
|
63686
63795
|
// src/templates/codex/config.toml.mustache
|
|
63687
63796
|
var require_config_toml = __commonJS({
|
|
63688
63797
|
"src/templates/codex/config.toml.mustache"(exports, module) {
|
|
63689
|
-
module.exports = 'model_provider = "{{providerId}}"\n\n[profiles."{{{profileName}}}"]\nmodel = "{{{model}}}"\nmodel_provider = "{{providerId}}"\nmodel_reasoning_effort = "{{reasoningEffort}}"\nmodel_verbosity = "medium"\n\n[model_providers.{{providerId}}]\nname = "{{providerId}}"\nbase_url = "{{{baseUrl}}}"\nwire_api = "responses"\nexperimental_bearer_token = "{{apiKey}}"\nrequires_openai_auth = false\nsupports_websockets = false\n';
|
|
63798
|
+
module.exports = 'model_provider = "{{providerId}}"\nmodel = "{{{model}}}"\nmodel_reasoning_effort = "{{reasoningEffort}}"\nmodel_verbosity = "medium"\n\n[profiles."{{{profileName}}}"]\nmodel = "{{{model}}}"\nmodel_provider = "{{providerId}}"\nmodel_reasoning_effort = "{{reasoningEffort}}"\nmodel_verbosity = "medium"\n\n[model_providers.{{providerId}}]\nname = "{{providerId}}"\nbase_url = "{{{baseUrl}}}"\nwire_api = "responses"\nexperimental_bearer_token = "{{apiKey}}"\nrequires_openai_auth = false\nsupports_websockets = false\n';
|
|
63690
63799
|
}
|
|
63691
63800
|
});
|
|
63692
63801
|
|
|
@@ -68604,8 +68713,10 @@ async function resolveProvider3(agent2, options, container, flags) {
|
|
|
68604
68713
|
return explicit ?? candidates[0].id;
|
|
68605
68714
|
}
|
|
68606
68715
|
if (explicit) {
|
|
68607
|
-
if (options.apiKey
|
|
68608
|
-
|
|
68716
|
+
if (options.apiKey === void 0 && !await container.providerRegistry.isLoggedIn(explicit)) {
|
|
68717
|
+
throw new Error(
|
|
68718
|
+
`Provider "${explicit}" is not configured. Run \`poe-code provider login ${explicit}\` first, or pass --api-key.`
|
|
68719
|
+
);
|
|
68609
68720
|
}
|
|
68610
68721
|
return explicit;
|
|
68611
68722
|
}
|
|
@@ -77883,7 +77994,7 @@ function registerProviderCommand(program, container) {
|
|
|
77883
77994
|
providerCmd.command("list").description("List available providers and their login status.").action(async () => {
|
|
77884
77995
|
await executeProviderList(program, container);
|
|
77885
77996
|
});
|
|
77886
|
-
providerCmd.command("login").description("Log in to a provider.").argument("<id>", "Provider id (e.g. poe, anthropic)").option("--api-key <key>", "API key for the provider").option(
|
|
77997
|
+
providerCmd.command("login").description("Log in to a provider.").argument("<id>", "Provider id (e.g. poe, anthropic)").option("--api-key <key>", "API key for the provider").option("--base-url <url>", "Provider gateway root URL").option(
|
|
77887
77998
|
"--shape-base-url <shape-id>=<url>",
|
|
77888
77999
|
"Base URL for one provider API shape",
|
|
77889
78000
|
collectRepeatedOption2
|
|
@@ -77907,6 +78018,7 @@ async function executeProviderList(program, container) {
|
|
|
77907
78018
|
return {
|
|
77908
78019
|
Provider: theme.accent(provider2.id),
|
|
77909
78020
|
Status: loggedIn ? theme.success("[logged in]") : theme.muted("[-]"),
|
|
78021
|
+
Env: formatProviderEnv(provider2),
|
|
77910
78022
|
"API shapes": formatProviderApiShapes(apiShapes),
|
|
77911
78023
|
Agents: listShapeCompatibleAgents(apiShapes).join(", ")
|
|
77912
78024
|
};
|
|
@@ -77915,6 +78027,7 @@ async function executeProviderList(program, container) {
|
|
|
77915
78027
|
const columns5 = [
|
|
77916
78028
|
{ name: "Provider", title: "Provider", alignment: "left", maxLen: 20 },
|
|
77917
78029
|
{ name: "Status", title: "Status", alignment: "left", maxLen: 14 },
|
|
78030
|
+
{ name: "Env", title: "Env", alignment: "left", maxLen: 34 },
|
|
77918
78031
|
{ name: "API shapes", title: "API shapes", alignment: "left", maxLen: 52 },
|
|
77919
78032
|
{ name: "Agents", title: "Agents", alignment: "left", maxLen: 60 }
|
|
77920
78033
|
];
|
|
@@ -77930,13 +78043,20 @@ async function executeProviderLogin(program, container, id, options) {
|
|
|
77930
78043
|
`Unknown provider "${id}". Run \`poe-code provider list\` to see available providers.`
|
|
77931
78044
|
);
|
|
77932
78045
|
}
|
|
77933
|
-
const
|
|
78046
|
+
const parsedShapeBaseUrls = parseProviderShapeBaseUrls(provider2, options.shapeBaseUrl ?? []);
|
|
78047
|
+
validateProviderLoginBaseUrlOptions({
|
|
78048
|
+
provider: provider2,
|
|
78049
|
+
options,
|
|
78050
|
+
container,
|
|
78051
|
+
flags,
|
|
78052
|
+
parsedShapeBaseUrls
|
|
78053
|
+
});
|
|
77934
78054
|
if (!flags.dryRun) {
|
|
77935
78055
|
await container.providerRegistry.login(
|
|
77936
78056
|
id,
|
|
77937
78057
|
{ apiKey: options.apiKey },
|
|
77938
78058
|
{
|
|
77939
|
-
envVars: container.env.variables,
|
|
78059
|
+
envVars: flags.assumeYes ? container.env.variables : {},
|
|
77940
78060
|
promptForSecret: createSecretPrompter(container),
|
|
77941
78061
|
resolvePreferredLogin: async (input) => container.options.resolveApiKey({
|
|
77942
78062
|
value: input.apiKey,
|
|
@@ -77947,6 +78067,14 @@ async function executeProviderLogin(program, container, id, options) {
|
|
|
77947
78067
|
})
|
|
77948
78068
|
}
|
|
77949
78069
|
);
|
|
78070
|
+
const shapeBaseUrls = await resolveProviderLoginShapeBaseUrls({
|
|
78071
|
+
provider: provider2,
|
|
78072
|
+
options,
|
|
78073
|
+
container,
|
|
78074
|
+
flags,
|
|
78075
|
+
logger: resources.logger,
|
|
78076
|
+
parsedShapeBaseUrls
|
|
78077
|
+
});
|
|
77950
78078
|
await saveProviderShapeBaseUrls({
|
|
77951
78079
|
fs: container.fs,
|
|
77952
78080
|
filePath: container.env.servicesConfigPath,
|
|
@@ -77960,12 +78088,87 @@ async function executeProviderLogin(program, container, id, options) {
|
|
|
77960
78088
|
});
|
|
77961
78089
|
resources.context.finalize();
|
|
77962
78090
|
}
|
|
78091
|
+
function validateProviderLoginBaseUrlOptions(input) {
|
|
78092
|
+
const explicitBaseUrl = resolveNonEmpty(input.options.baseUrl);
|
|
78093
|
+
if (explicitBaseUrl !== void 0) {
|
|
78094
|
+
assertHttpBaseUrl2(input.provider.id, explicitBaseUrl);
|
|
78095
|
+
return;
|
|
78096
|
+
}
|
|
78097
|
+
if (input.flags.assumeYes && input.provider.requiresBaseUrl === true && Object.keys(input.parsedShapeBaseUrls).length === 0 && resolveProviderBaseUrlEnv2(input.container, input.provider) === void 0) {
|
|
78098
|
+
throw new Error(
|
|
78099
|
+
`Provider "${input.provider.id}" requires a base URL. Pass --base-url or set ${input.provider.baseUrlEnvVar ?? "the provider base URL env var"}.`
|
|
78100
|
+
);
|
|
78101
|
+
}
|
|
78102
|
+
}
|
|
78103
|
+
async function resolveProviderLoginShapeBaseUrls(input) {
|
|
78104
|
+
const shapeBaseUrls = input.parsedShapeBaseUrls;
|
|
78105
|
+
const explicitBaseUrl = resolveNonEmpty(input.options.baseUrl);
|
|
78106
|
+
if (explicitBaseUrl !== void 0) {
|
|
78107
|
+
assertHttpBaseUrl2(input.provider.id, explicitBaseUrl);
|
|
78108
|
+
return {
|
|
78109
|
+
...shapeBaseUrls,
|
|
78110
|
+
...deriveShapeBaseUrls(input.provider, explicitBaseUrl)
|
|
78111
|
+
};
|
|
78112
|
+
}
|
|
78113
|
+
if (Object.keys(shapeBaseUrls).length > 0 || input.provider.requiresBaseUrl !== true) {
|
|
78114
|
+
return shapeBaseUrls;
|
|
78115
|
+
}
|
|
78116
|
+
if (resolveProviderBaseUrlEnv2(input.container, input.provider) !== void 0) {
|
|
78117
|
+
return shapeBaseUrls;
|
|
78118
|
+
}
|
|
78119
|
+
if (input.flags.assumeYes) {
|
|
78120
|
+
throw new Error(
|
|
78121
|
+
`Provider "${input.provider.id}" requires a base URL. Pass --base-url or set ${input.provider.baseUrlEnvVar ?? "the provider base URL env var"}.`
|
|
78122
|
+
);
|
|
78123
|
+
}
|
|
78124
|
+
const descriptor = input.container.promptLibrary.providerBaseUrl(input.provider.label);
|
|
78125
|
+
while (true) {
|
|
78126
|
+
const baseUrl = await input.container.options.ensure({ descriptor });
|
|
78127
|
+
if (isHttpBaseUrl(baseUrl)) {
|
|
78128
|
+
return deriveShapeBaseUrls(input.provider, baseUrl);
|
|
78129
|
+
}
|
|
78130
|
+
input.logger.warn(
|
|
78131
|
+
"Base URL must start with http:// or https://. Paste the Cloudflare gateway URL, not the API token."
|
|
78132
|
+
);
|
|
78133
|
+
}
|
|
78134
|
+
}
|
|
78135
|
+
function deriveShapeBaseUrls(provider2, baseUrl) {
|
|
78136
|
+
const result = {};
|
|
78137
|
+
for (const shape of provider2.apiShapes ?? []) {
|
|
78138
|
+
result[shape.id] = resolveShapeBaseUrl(baseUrl, shape.baseUrlPath) ?? baseUrl;
|
|
78139
|
+
}
|
|
78140
|
+
return result;
|
|
78141
|
+
}
|
|
78142
|
+
function resolveProviderBaseUrlEnv2(container, provider2) {
|
|
78143
|
+
const envVar = provider2.baseUrlEnvVar;
|
|
78144
|
+
return envVar ? resolveNonEmpty(container.env.getVariable(envVar)) : void 0;
|
|
78145
|
+
}
|
|
78146
|
+
function assertHttpBaseUrl2(providerId, baseUrl) {
|
|
78147
|
+
if (!isHttpBaseUrl(baseUrl)) {
|
|
78148
|
+
throw new Error(`Provider "${providerId}" base URL must be an http(s) URL.`);
|
|
78149
|
+
}
|
|
78150
|
+
}
|
|
78151
|
+
function isHttpBaseUrl(value) {
|
|
78152
|
+
try {
|
|
78153
|
+
const parsed = new URL(value);
|
|
78154
|
+
return parsed.protocol === "http:" || parsed.protocol === "https:";
|
|
78155
|
+
} catch {
|
|
78156
|
+
return false;
|
|
78157
|
+
}
|
|
78158
|
+
}
|
|
77963
78159
|
function collectRepeatedOption2(value, previous) {
|
|
77964
78160
|
return [...previous ?? [], value];
|
|
77965
78161
|
}
|
|
77966
78162
|
function formatProviderApiShapes(apiShapes) {
|
|
77967
78163
|
return apiShapes.map((shapeId) => apiShapeLabels2[shapeId]).join(", ");
|
|
77968
78164
|
}
|
|
78165
|
+
function formatProviderEnv(provider2) {
|
|
78166
|
+
const envVars = [
|
|
78167
|
+
provider2.auth.kind === "api-key" ? provider2.auth.envVar : void 0,
|
|
78168
|
+
provider2.baseUrlEnvVar
|
|
78169
|
+
].filter((value) => typeof value === "string" && value.length > 0);
|
|
78170
|
+
return envVars.join(", ");
|
|
78171
|
+
}
|
|
77969
78172
|
function listShapeCompatibleAgents(providerApiShapes) {
|
|
77970
78173
|
const shapeIds = new Set(providerApiShapes);
|
|
77971
78174
|
return allAgents.filter((agent2) => agent2.apiShapes?.some((shapeId) => shapeIds.has(shapeId))).map((agent2) => agent2.id).sort();
|
|
@@ -107568,7 +107771,7 @@ var init_package2 = __esm({
|
|
|
107568
107771
|
"package.json"() {
|
|
107569
107772
|
package_default2 = {
|
|
107570
107773
|
name: "poe-code",
|
|
107571
|
-
version: "3.0.
|
|
107774
|
+
version: "3.0.224",
|
|
107572
107775
|
description: "CLI tool to configure Poe API for developer workflows.",
|
|
107573
107776
|
type: "module",
|
|
107574
107777
|
main: "./dist/index.js",
|
|
@@ -108486,7 +108689,8 @@ function createPromptRunner(adapter = {
|
|
|
108486
108689
|
let result;
|
|
108487
108690
|
if (type2 === "password") {
|
|
108488
108691
|
result = await adapter.password({
|
|
108489
|
-
message: descriptor.message
|
|
108692
|
+
message: descriptor.message,
|
|
108693
|
+
validate: descriptor.validate
|
|
108490
108694
|
});
|
|
108491
108695
|
} else if (type2 === "select") {
|
|
108492
108696
|
const choices = descriptor.choices ?? [];
|
|
@@ -108504,7 +108708,8 @@ function createPromptRunner(adapter = {
|
|
|
108504
108708
|
} else {
|
|
108505
108709
|
result = await adapter.text({
|
|
108506
108710
|
message: descriptor.message,
|
|
108507
|
-
initialValue: toInitialValue(descriptor.initial)
|
|
108711
|
+
initialValue: toInitialValue(descriptor.initial),
|
|
108712
|
+
validate: descriptor.validate
|
|
108508
108713
|
});
|
|
108509
108714
|
}
|
|
108510
108715
|
if (adapter.isCancel(result)) {
|