pullfrog 0.1.75 → 0.1.77
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/agents/opencodeShared.d.ts +20 -0
- package/dist/cli.mjs +174 -33
- package/dist/external.d.ts +20 -2
- package/dist/index.js +158 -31
- package/dist/internal/index.d.ts +2 -2
- package/dist/internal.js +169 -45
- package/dist/models.d.ts +73 -0
- package/dist/utils/payload.d.ts +14 -0
- package/dist/utils/runContext.d.ts +4 -0
- package/dist/utils/runContextData.d.ts +3 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -108891,6 +108891,71 @@ var AUTO_TIER_TARGET = {
|
|
|
108891
108891
|
function isAutoTier(slug2) {
|
|
108892
108892
|
return slug2 === AUTO_EFFICIENT || slug2 === AUTO_INTELLIGENT;
|
|
108893
108893
|
}
|
|
108894
|
+
var PROVIDER_LADDERS = {
|
|
108895
|
+
anthropic: {
|
|
108896
|
+
minimal: "anthropic/claude-haiku",
|
|
108897
|
+
light: "anthropic/claude-sonnet",
|
|
108898
|
+
standard: "anthropic/claude-opus",
|
|
108899
|
+
deep: "anthropic/claude-opus"
|
|
108900
|
+
},
|
|
108901
|
+
openai: {
|
|
108902
|
+
minimal: "openai/gpt-luna",
|
|
108903
|
+
light: "openai/gpt-terra",
|
|
108904
|
+
standard: "openai/gpt-sol",
|
|
108905
|
+
deep: "openai/gpt-astra"
|
|
108906
|
+
},
|
|
108907
|
+
google: {
|
|
108908
|
+
minimal: "google/gemini-flash",
|
|
108909
|
+
light: "google/gemini-flash",
|
|
108910
|
+
standard: "google/gemini-pro",
|
|
108911
|
+
deep: "google/gemini-pro"
|
|
108912
|
+
},
|
|
108913
|
+
deepseek: {
|
|
108914
|
+
minimal: "deepseek/deepseek-flash",
|
|
108915
|
+
light: "deepseek/deepseek-flash",
|
|
108916
|
+
standard: "deepseek/deepseek-pro",
|
|
108917
|
+
deep: "deepseek/deepseek-pro"
|
|
108918
|
+
},
|
|
108919
|
+
xai: {
|
|
108920
|
+
minimal: "xai/grok-fast",
|
|
108921
|
+
light: "xai/grok-fast",
|
|
108922
|
+
standard: "xai/grok",
|
|
108923
|
+
deep: "xai/grok"
|
|
108924
|
+
},
|
|
108925
|
+
moonshotai: {
|
|
108926
|
+
minimal: "moonshotai/kimi-k2",
|
|
108927
|
+
light: "moonshotai/kimi-k2",
|
|
108928
|
+
standard: "moonshotai/kimi-k3",
|
|
108929
|
+
deep: "moonshotai/kimi-k3"
|
|
108930
|
+
},
|
|
108931
|
+
openrouter: {
|
|
108932
|
+
minimal: "openrouter/deepseek-flash",
|
|
108933
|
+
light: "openrouter/gpt-luna",
|
|
108934
|
+
standard: "openrouter/gpt-sol",
|
|
108935
|
+
deep: "openrouter/claude-opus"
|
|
108936
|
+
},
|
|
108937
|
+
opencode: {
|
|
108938
|
+
minimal: "opencode/gpt-luna",
|
|
108939
|
+
light: "opencode/gpt-luna",
|
|
108940
|
+
standard: "opencode/gpt-sol",
|
|
108941
|
+
deep: "opencode/claude-opus"
|
|
108942
|
+
}
|
|
108943
|
+
};
|
|
108944
|
+
var ROUTER_LADDER = {
|
|
108945
|
+
minimal: "deepseek/deepseek-flash",
|
|
108946
|
+
light: "openai/gpt-luna",
|
|
108947
|
+
standard: "openai/gpt-sol",
|
|
108948
|
+
deep: "anthropic/claude-opus"
|
|
108949
|
+
};
|
|
108950
|
+
var AUTO_PREFIX = "auto/";
|
|
108951
|
+
function autoLadder(slug2) {
|
|
108952
|
+
if (!slug2 || !slug2.startsWith(AUTO_PREFIX) || isAutoTier(slug2)) return void 0;
|
|
108953
|
+
const target = slug2.slice(AUTO_PREFIX.length);
|
|
108954
|
+
return target === "router" ? ROUTER_LADDER : PROVIDER_LADDERS[target];
|
|
108955
|
+
}
|
|
108956
|
+
var ROUTED_PROVIDERS = Object.keys(
|
|
108957
|
+
PROVIDER_LADDERS
|
|
108958
|
+
).map((key) => ({ key, displayName: providers[key].displayName }));
|
|
108894
108959
|
function isCardGatedModel(slug2) {
|
|
108895
108960
|
return resolveOpenRouterModel(slug2) !== void 0;
|
|
108896
108961
|
}
|
|
@@ -108899,7 +108964,7 @@ function resolveModelSlug(slug2) {
|
|
|
108899
108964
|
}
|
|
108900
108965
|
var MAX_FALLBACK_DEPTH = 10;
|
|
108901
108966
|
function resolveDisplayAlias(slug2) {
|
|
108902
|
-
let current = isAutoTier(slug2) ? AUTO_TIER_TARGET[slug2] : slug2;
|
|
108967
|
+
let current = isAutoTier(slug2) ? AUTO_TIER_TARGET[slug2] : autoLadder(slug2)?.standard ?? slug2;
|
|
108903
108968
|
const visited = /* @__PURE__ */ new Set();
|
|
108904
108969
|
for (let i = 0; i < MAX_FALLBACK_DEPTH; i++) {
|
|
108905
108970
|
if (visited.has(current)) return void 0;
|
|
@@ -108934,6 +108999,11 @@ if (!defaultProxyAlias?.openRouterResolve) {
|
|
|
108934
108999
|
}
|
|
108935
109000
|
var DEFAULT_PROXY_MODEL = defaultProxyAlias.openRouterResolve;
|
|
108936
109001
|
var defaultProxyDisplayName = defaultProxyAlias.displayName;
|
|
109002
|
+
for (const [name, ladder] of Object.entries({ ...PROVIDER_LADDERS, router: ROUTER_LADDER })) {
|
|
109003
|
+
for (const slug2 of Object.values(ladder)) {
|
|
109004
|
+
if (!resolveDisplayAlias(slug2)) throw new Error(`${name} ladder names unknown alias ${slug2}`);
|
|
109005
|
+
}
|
|
109006
|
+
}
|
|
108937
109007
|
var OSS_MODEL_ALLOWLIST = [
|
|
108938
109008
|
"deepseek/deepseek-flash",
|
|
108939
109009
|
"deepseek/deepseek-pro",
|
|
@@ -108971,6 +109041,17 @@ var OPENAI_COMPATIBLE_API_KEY_ENV = "OPENAI_COMPATIBLE_API_KEY";
|
|
|
108971
109041
|
var OPENAI_COMPATIBLE_MODEL_ENV = "OPENAI_COMPATIBLE_MODEL";
|
|
108972
109042
|
var OPENAI_COMPATIBLE_CONTEXT_ENV = "OPENAI_COMPATIBLE_CONTEXT";
|
|
108973
109043
|
var OPENAI_COMPATIBLE_MAX_OUTPUT_ENV = "OPENAI_COMPATIBLE_MAX_OUTPUT";
|
|
109044
|
+
var PROVIDER_GATEWAY_URL_ENV = {
|
|
109045
|
+
anthropic: "ANTHROPIC_BASE_URL",
|
|
109046
|
+
openai: "OPENAI_BASE_URL"
|
|
109047
|
+
};
|
|
109048
|
+
function getProviderGatewayUrl(specifier) {
|
|
109049
|
+
const slashIndex = specifier?.indexOf("/") ?? -1;
|
|
109050
|
+
if (!specifier || slashIndex <= 0) return void 0;
|
|
109051
|
+
const envVar = PROVIDER_GATEWAY_URL_ENV[specifier.slice(0, slashIndex)];
|
|
109052
|
+
if (!envVar) return void 0;
|
|
109053
|
+
return process.env[envVar]?.trim().replace(/\/$/, "") || void 0;
|
|
109054
|
+
}
|
|
108974
109055
|
function isBedrockAnthropicId(bedrockModelId) {
|
|
108975
109056
|
return bedrockModelId.toLowerCase().split(/[./:]/).includes("anthropic");
|
|
108976
109057
|
}
|
|
@@ -109795,7 +109876,7 @@ var import_semver = __toESM(require_semver2(), 1);
|
|
|
109795
109876
|
// package.json
|
|
109796
109877
|
var package_default = {
|
|
109797
109878
|
name: "pullfrog",
|
|
109798
|
-
version: "0.1.
|
|
109879
|
+
version: "0.1.77",
|
|
109799
109880
|
cliContractVersion: "1",
|
|
109800
109881
|
type: "module",
|
|
109801
109882
|
bin: {
|
|
@@ -110594,26 +110675,24 @@ For simple, well-defined tasks, skip the plan phase and go straight to build.`
|
|
|
110594
110675
|
|
|
110595
110676
|
2. Checkout the PR branch via \`${t("checkout_pr")}\`.
|
|
110596
110677
|
|
|
110597
|
-
3. Fetch review comments via \`${t("get_review_comments")}
|
|
110678
|
+
3. Fetch review comments via \`${t("get_review_comments")}\` and read the full conversation in each relevant thread.
|
|
110598
110679
|
|
|
110599
|
-
4. For each
|
|
110600
|
-
-
|
|
110680
|
+
4. For each thread:
|
|
110681
|
+
- **check intent first**: questions, explanations, and disagreement call for a reply, not a code change. Change code only when explicitly requested. Automatic review feedback on Pullfrog-authored PRs (\`address_scope: all\`) remains actionable without a separate request; later replies can narrow or withdraw that permission.
|
|
110682
|
+
- under \`address_scope: mentions\`, unmentioned threads are context only unless the user's review-body request explicitly includes them
|
|
110601
110683
|
- **verify the finding yourself** against the actual code before deciding whether to apply \u2014 every comment (human or agent) is a hypothesis, not a directive. agent reviewers especially are fallible.
|
|
110602
|
-
-
|
|
110603
|
-
- if the
|
|
110684
|
+
- keep requested changes **sound, minimal, and elegant**. Reject defensive checks for impossible cases, single-use abstractions, redundant comments, and tautological tests rather than mechanically applying reviewer suggestions.
|
|
110685
|
+
- if intent permits a code change and the finding stands, implement it using your native tools; otherwise reply without editing
|
|
110604
110686
|
- record what was done (or why nothing was done)
|
|
110605
110687
|
|
|
110606
110688
|
5. Quality check:
|
|
110607
|
-
- re-call \`${t("get_review_comments")}\` with \`fresh: true\` before
|
|
110608
|
-
-
|
|
110609
|
-
- ${commitStep}
|
|
110689
|
+
- re-call \`${t("get_review_comments")}\` with \`fresh: true\` before finishing, even when only replying. Apply the same scope and intent checks to new comments; respect requests to stop or change direction before committing.
|
|
110690
|
+
- if code changed, test and review the diff, remove unintended changes or bloat, then ${commitStep}
|
|
110610
110691
|
|
|
110611
|
-
6. Finalize
|
|
110612
|
-
- ${finalizeStep} (same push/prepush guidance as Build mode in *SYSTEM*)
|
|
110613
|
-
-
|
|
110614
|
-
-
|
|
110615
|
-
- reply ONCE via \`${t("reply_to_review_comment")}\`. The \`comment_id\` parameter takes the root comment's numeric \`id=\` (from the first \`comment author=...\` tag in the \`${t("get_review_comments")}\` output) \u2014 NOT the \`thread=\` value; that's a separate GraphQL ID used by resolve. The runtime dedupes identical bodies within a session.
|
|
110616
|
-
- **immediately** call \`${t("resolve_review_thread")}\` with that thread's \`thread=\` value as \`thread_id\`. Resolve every thread where you (a) made the requested code change in full \u2014 partial fixes leave the thread open \u2014 OR (b) replied with a substantive answer the user explicitly asked for. Do NOT resolve threads where you pushed back on the request and the disagreement is unresolved; leave those open for the human to mediate.
|
|
110692
|
+
6. Finalize:
|
|
110693
|
+
- **only if code changed**, ${finalizeStep} (same push/prepush guidance as Build mode in *SYSTEM*). If push/commit fails, report the exact error and STOP without claiming a fix or resolving its threads.
|
|
110694
|
+
- reply ONCE per relevant thread via \`${t("reply_to_review_comment")}\`, including when no code changed. The \`comment_id\` is the root comment's numeric \`id=\`, NOT the \`thread=\` value from \`${t("get_review_comments")}\`. The runtime dedupes identical bodies within a session.
|
|
110695
|
+
- resolve a thread via \`${t("resolve_review_thread")}\` (using \`thread=\` as \`thread_id\`) only after its requested fix is fully on the remote, or the user explicitly asks to resolve it. Leave discussion-only replies, partial fixes, and disagreements open.
|
|
110617
110696
|
- call \`${t("report_progress")}\` with a brief summary. If your last \`${t("get_review_comments")}\` turned up threads you did not address, name them there \u2014 a review arriving this late is suppressed as a duplicate and nothing else will pick it up.`
|
|
110618
110697
|
},
|
|
110619
110698
|
// Review and IncrementalReview route the minimum reviewfrog specialists
|
|
@@ -112514,6 +112593,19 @@ function warnIfNativeEditsUnavailable(ctx) {
|
|
|
112514
112593
|
"\xBB this run cannot change files: codex's native write tool depends on bubblewrap, which Ubuntu 24.04 blocks (https://github.com/openai/codex/issues/29908), and the MCP shell is disabled for this repo. read-only work is unaffected \u2014 set `shell: restricted` if the agent needs to edit anything."
|
|
112515
112594
|
);
|
|
112516
112595
|
}
|
|
112596
|
+
var CODEX_GATEWAY_PROVIDER = "pullfrog-gateway";
|
|
112597
|
+
function gatewayProvider(gatewayUrl) {
|
|
112598
|
+
if (!gatewayUrl) return [];
|
|
112599
|
+
return [
|
|
112600
|
+
`[model_providers.${CODEX_GATEWAY_PROVIDER}]`,
|
|
112601
|
+
'name = "OpenAI gateway"',
|
|
112602
|
+
`base_url = ${JSON.stringify(gatewayUrl)}`,
|
|
112603
|
+
'wire_api = "responses"',
|
|
112604
|
+
// where the harness puts the run's OPENAI_API_KEY
|
|
112605
|
+
'env_key = "CODEX_API_KEY"',
|
|
112606
|
+
""
|
|
112607
|
+
];
|
|
112608
|
+
}
|
|
112517
112609
|
function writeCodexConfig(params) {
|
|
112518
112610
|
const shellEnabled = params.ctx.payload.shell === "enabled";
|
|
112519
112611
|
const sandboxMode = params.ctx.payload.push === "disabled" ? "read-only" : "workspace-write";
|
|
@@ -112530,6 +112622,7 @@ function writeCodexConfig(params) {
|
|
|
112530
112622
|
'web_search = "live"',
|
|
112531
112623
|
...params.model ? [`model = ${JSON.stringify(params.model)}`] : [],
|
|
112532
112624
|
...params.effortRung ? [`model_reasoning_effort = ${JSON.stringify(params.effortRung)}`] : [],
|
|
112625
|
+
...params.gatewayUrl ? [`model_provider = ${JSON.stringify(CODEX_GATEWAY_PROVIDER)}`] : [],
|
|
112533
112626
|
"",
|
|
112534
112627
|
"[features]",
|
|
112535
112628
|
tomlBool(CODEX_DISABLED_FEATURES, false),
|
|
@@ -112559,6 +112652,7 @@ function writeCodexConfig(params) {
|
|
|
112559
112652
|
"tool_timeout_sec = 660",
|
|
112560
112653
|
"",
|
|
112561
112654
|
...repoMcpApprovals(repoDir),
|
|
112655
|
+
...gatewayProvider(params.gatewayUrl),
|
|
112562
112656
|
// UNTRUSTED, deliberately, and this one line is the whole config-precedence
|
|
112563
112657
|
// boundary. Codex loads `<repo>/.codex/config.toml` as a layer that
|
|
112564
112658
|
// OUTRANKS ours (project 25 vs user 20), and its denylist strips none of
|
|
@@ -112827,7 +112921,11 @@ var codex = agent({
|
|
|
112827
112921
|
ctx,
|
|
112828
112922
|
codexHome,
|
|
112829
112923
|
model: resolveCodexModel(ctx),
|
|
112830
|
-
effortRung: effort.rung && CODEX_EFFORTS.includes(effort.rung) ? effort.rung : void 0
|
|
112924
|
+
effortRung: effort.rung && CODEX_EFFORTS.includes(effort.rung) ? effort.rung : void 0,
|
|
112925
|
+
// keyed off OpenAI, not the resolved model: codex serves nothing else, an
|
|
112926
|
+
// auto-selected run has no model, and a ChatGPT-subscription token is
|
|
112927
|
+
// valid only at ChatGPT's own backend
|
|
112928
|
+
gatewayUrl: codexHomeAuth ? void 0 : getProviderGatewayUrl("openai/")
|
|
112831
112929
|
});
|
|
112832
112930
|
if (codexHomeAuth) {
|
|
112833
112931
|
core3.saveState(
|
|
@@ -118594,6 +118692,14 @@ function openAICompatibleProvider(model) {
|
|
|
118594
118692
|
}
|
|
118595
118693
|
};
|
|
118596
118694
|
}
|
|
118695
|
+
var OPENCODE_GATEWAY_PATH = { anthropic: "/v1" };
|
|
118696
|
+
function providerGatewayOverride(model) {
|
|
118697
|
+
const gatewayUrl = getProviderGatewayUrl(model);
|
|
118698
|
+
if (!model || !gatewayUrl) return {};
|
|
118699
|
+
const provider2 = model.slice(0, model.indexOf("/"));
|
|
118700
|
+
const baseURL = `${gatewayUrl}${OPENCODE_GATEWAY_PATH[provider2] ?? ""}`;
|
|
118701
|
+
return { [provider2]: { options: { baseURL } } };
|
|
118702
|
+
}
|
|
118597
118703
|
function azureProvider(model) {
|
|
118598
118704
|
const prefix = `${AZURE_PROVIDER}/`;
|
|
118599
118705
|
if (!model?.startsWith(prefix)) return {};
|
|
@@ -118709,7 +118815,8 @@ function buildSecurityConfig(ctx, model) {
|
|
|
118709
118815
|
provider: {
|
|
118710
118816
|
openrouter: { models: kimiOpenRouterProviderOverrides() },
|
|
118711
118817
|
...openAICompatibleProvider(model),
|
|
118712
|
-
...azureProvider(model)
|
|
118818
|
+
...azureProvider(model),
|
|
118819
|
+
...providerGatewayOverride(model)
|
|
118713
118820
|
}
|
|
118714
118821
|
};
|
|
118715
118822
|
if (model) {
|
|
@@ -197180,7 +197287,7 @@ function GetReviewCommentsTool(ctx) {
|
|
|
197180
197287
|
threadCount: threadBlocks.length,
|
|
197181
197288
|
commentsPath,
|
|
197182
197289
|
toc: formatted.toc,
|
|
197183
|
-
instructions: `the file at commentsPath contains ${threadBlocks.length} review threads with full conversation history. comments marked with * are from the target review (${params.review_id}); any other thread is open feedback on this PR
|
|
197290
|
+
instructions: `the file at commentsPath contains ${threadBlocks.length} review threads with full conversation history. comments marked with * are from the target review (${params.review_id}); any other thread is open feedback on this PR, including comments that landed after this run started. Being returned does not authorize a code change; follow the task's scope and each thread's latest request. the TOC shows each thread's file:line and the line number where it appears in the file. to read a specific thread, use: grep -A 50 "^## <file:line>" ${commentsPath} (replace <file:line> with the path from the TOC, e.g. "^## action/utils/foo.ts:42"). read each full thread before deciding whether it calls for a reply or a code change.`
|
|
197184
197291
|
};
|
|
197185
197292
|
})
|
|
197186
197293
|
});
|
|
@@ -197303,8 +197410,7 @@ An existing plan comment was found for this issue. Update that comment with the
|
|
|
197303
197410
|
};
|
|
197304
197411
|
}
|
|
197305
197412
|
var modeInstructionParent = {
|
|
197306
|
-
IncrementalReview: "Review"
|
|
197307
|
-
Fix: "Build"
|
|
197413
|
+
IncrementalReview: "Review"
|
|
197308
197414
|
};
|
|
197309
197415
|
function buildOrchestratorGuidance(ctx, mode, overrideGuidance) {
|
|
197310
197416
|
const hardcoded = overrideGuidance ?? mode.prompt ?? "";
|
|
@@ -198516,18 +198622,13 @@ function hasEnvVar4(name) {
|
|
|
198516
198622
|
const value2 = process.env[name];
|
|
198517
198623
|
return typeof value2 === "string" && value2.length > 0;
|
|
198518
198624
|
}
|
|
198519
|
-
var HOST_OVERRIDES = {
|
|
198520
|
-
ANTHROPIC_API_KEY: "ANTHROPIC_BASE_URL",
|
|
198521
|
-
CLAUDE_CODE_OAUTH_TOKEN: "ANTHROPIC_BASE_URL"
|
|
198522
|
-
};
|
|
198523
198625
|
function envVarsFor(model) {
|
|
198524
198626
|
return model.includes("/") ? getModelEnvVars(model) : [];
|
|
198525
198627
|
}
|
|
198526
198628
|
async function checkOne(params) {
|
|
198527
198629
|
const value2 = process.env[params.envVar];
|
|
198528
198630
|
if (!value2) return null;
|
|
198529
|
-
|
|
198530
|
-
if (hostOverride && hasEnvVar4(hostOverride)) return null;
|
|
198631
|
+
if (getProviderGatewayUrl(params.model)) return null;
|
|
198531
198632
|
if (params.envVar === "CLAUDE_CODE_OAUTH_TOKEN") {
|
|
198532
198633
|
const preflight = await preflightClaudeSubscription({
|
|
198533
198634
|
token: value2,
|
|
@@ -199445,6 +199546,15 @@ var JsonPayload = type({
|
|
|
199445
199546
|
"type?": "string | undefined",
|
|
199446
199547
|
"model?": "string | undefined",
|
|
199447
199548
|
"modelExplicit?": "boolean | undefined",
|
|
199549
|
+
// optional so a payload from a pre-router server build still parses against a
|
|
199550
|
+
// newer action across a rolling deploy.
|
|
199551
|
+
"routing?": type({
|
|
199552
|
+
tier: "'minimal' | 'light' | 'standard' | 'deep'",
|
|
199553
|
+
stakes: "number",
|
|
199554
|
+
workload: "number",
|
|
199555
|
+
source: "'scorer' | 'heuristic' | 'fixed'",
|
|
199556
|
+
rationale: "string"
|
|
199557
|
+
}).or("undefined"),
|
|
199448
199558
|
"effort?": "number | string | undefined",
|
|
199449
199559
|
"debug?": "boolean | undefined",
|
|
199450
199560
|
prompt: "string",
|
|
@@ -199626,6 +199736,7 @@ function resolvePayload(resolvedPromptInput, repoSettings) {
|
|
|
199626
199736
|
// explicit only when the model came from a per-run override flag (carried on
|
|
199627
199737
|
// the JSON payload). a GHA `model` input or the repo default is not explicit.
|
|
199628
199738
|
modelExplicit: jsonPayload?.modelExplicit ?? false,
|
|
199739
|
+
routing: jsonPayload?.routing,
|
|
199629
199740
|
effort,
|
|
199630
199741
|
debug: debug3 || void 0,
|
|
199631
199742
|
prompt,
|
|
@@ -200312,9 +200423,12 @@ async function fetchRunContext(params) {
|
|
|
200312
200423
|
if (params.oidcToken) {
|
|
200313
200424
|
headers["X-GitHub-OIDC-Token"] = params.oidcToken;
|
|
200314
200425
|
}
|
|
200315
|
-
const query =
|
|
200426
|
+
const query = new URLSearchParams();
|
|
200427
|
+
if (params.runType) query.set("type", params.runType);
|
|
200428
|
+
if (params.routedTier) query.set("tier", params.routedTier);
|
|
200429
|
+
const search2 = query.toString();
|
|
200316
200430
|
const response = await apiFetch({
|
|
200317
|
-
path: `/api/repo/${params.repoContext.owner}/${params.repoContext.name}/run-context${
|
|
200431
|
+
path: `/api/repo/${params.repoContext.owner}/${params.repoContext.name}/run-context${search2 ? `?${search2}` : ""}`,
|
|
200318
200432
|
headers,
|
|
200319
200433
|
signal: controller.signal
|
|
200320
200434
|
});
|
|
@@ -200381,7 +200495,13 @@ async function resolveRunContextData(params) {
|
|
|
200381
200495
|
retries: [100, 500],
|
|
200382
200496
|
bail: (error62) => !isTransientOctokitError(error62)
|
|
200383
200497
|
})(),
|
|
200384
|
-
fetchRunContext({
|
|
200498
|
+
fetchRunContext({
|
|
200499
|
+
token: params.token,
|
|
200500
|
+
repoContext,
|
|
200501
|
+
oidcToken,
|
|
200502
|
+
runType: params.runType,
|
|
200503
|
+
routedTier: params.routedTier
|
|
200504
|
+
})
|
|
200385
200505
|
]);
|
|
200386
200506
|
return {
|
|
200387
200507
|
repo: {
|
|
@@ -201289,6 +201409,12 @@ function logRunStartup(ctx) {
|
|
|
201289
201409
|
log.info(
|
|
201290
201410
|
`\xBB effort: ${resolveEffortForLog({ payload: ctx.payload, resolvedModel: ctx.resolvedModel })}`
|
|
201291
201411
|
);
|
|
201412
|
+
const routing = ctx.payload.routing;
|
|
201413
|
+
if (routing) {
|
|
201414
|
+
log.info(
|
|
201415
|
+
`\xBB routed: ${routing.tier} (${routing.source}: stakes ${routing.stakes}, workload ${routing.workload}) \u2014 ${routing.rationale}`
|
|
201416
|
+
);
|
|
201417
|
+
}
|
|
201292
201418
|
log.info(
|
|
201293
201419
|
`\xBB agent: ${resolveAgentForLog({ agentName: ctx.agentName, resolvedModel: ctx.resolvedModel })}`
|
|
201294
201420
|
);
|
|
@@ -201483,7 +201609,8 @@ async function main() {
|
|
|
201483
201609
|
const runContext = await resolveRunContextData({
|
|
201484
201610
|
octokit: initialOctokit,
|
|
201485
201611
|
token: jobToken,
|
|
201486
|
-
runType: typeof resolvedPromptInput === "string" ? void 0 : resolvedPromptInput.type
|
|
201612
|
+
runType: typeof resolvedPromptInput === "string" ? void 0 : resolvedPromptInput.type,
|
|
201613
|
+
routedTier: typeof resolvedPromptInput === "string" ? void 0 : resolvedPromptInput.routing?.tier
|
|
201487
201614
|
});
|
|
201488
201615
|
timer.checkpoint("runContextData");
|
|
201489
201616
|
const payload = resolvePayload(resolvedPromptInput, runContext.repoSettings);
|
package/dist/internal/index.d.ts
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
export { CLI_CONTRACT_HEADER, CLI_CONTRACT_VERSION, CLI_UPGRADE_MESSAGE } from "../cliContract.ts";
|
|
6
6
|
export type { ConfigField, ConfigScope, ConfigValue } from "../configuration.ts";
|
|
7
7
|
export { configEntrySchema, configFields, configResponseSchema, configValueSchema, } from "../configuration.ts";
|
|
8
|
-
export type { AuthorPermission, AutoTier, EffortPosition, ModelAlias, ModelProvider, Payload, PayloadEvent, ProviderConfig, PushPermission, ShellPermission, ToolPermission, WriteablePayload, XrepoConfig, } from "../external.ts";
|
|
9
|
-
export { AUTO_EFFICIENT, AUTO_INTELLIGENT, DEFAULT_EFFORT_POSITION, DEFAULT_PROXY_MODEL, defaultAutoTier, EFFORT_ALIASES, getAutoSelectHintModel, getModelEffortLevels, getModelEnvVars, getModelManagedCredentials, getModelProvider, getProviderDisplayName, isAutoTier, isCardGatedModel, isEffortPosition, isOssAllowedModel, modelAliases, modelHasStoredAuth, OSS_MODEL_ALLOWLIST, OSS_RECOMMENDED_MODEL, offeredRungs, ossFundedModelNames, parseEffortPosition, parseModel, providers, pullfrogMcpName, resolveAutoTier, resolveCliModel, resolveDisplayAlias, resolveModelRung, resolveModelSlug, resolveOpenRouterModel, resolveRung, rungLabel, rungPosition, SUBSIDY_RUNG, } from "../external.ts";
|
|
8
|
+
export type { AuthorPermission, AutoTier, EffortPosition, ModelAlias, ModelProvider, Payload, PayloadEvent, PayloadRouting, ProviderConfig, PushPermission, RouterSource, RouterTier, ShellPermission, ToolPermission, WriteablePayload, XrepoConfig, } from "../external.ts";
|
|
9
|
+
export { AUTO_EFFICIENT, AUTO_INTELLIGENT, AUTO_ROUTER, autoLadder, autoRoutedSlug, DEFAULT_EFFORT_POSITION, DEFAULT_PROXY_MODEL, defaultAutoTier, EFFORT_ALIASES, getAutoSelectHintModel, getModelEffortLevels, getModelEnvVars, getModelManagedCredentials, getModelProvider, getProviderDisplayName, isAutoRouted, isAutoSlug, isAutoTier, isCardGatedModel, isEffortPosition, isOssAllowedModel, isRouterTier, ladderRungs, modelAliases, modelHasStoredAuth, OSS_MODEL_ALLOWLIST, OSS_RECOMMENDED_MODEL, offeredRungs, ossFundedModelNames, PROVIDER_GATEWAY_URL_ENV, parseEffortPosition, parseModel, providers, pullfrogMcpName, ROUTED_PROVIDERS, ROUTER_LADDER, ROUTER_TIERS, resolveAutoTier, resolveCliModel, resolveDisplayAlias, resolveModelRung, resolveModelSlug, resolveOpenRouterModel, resolveRoutedModel, resolveRung, rungLabel, rungPosition, SUBSIDY_RUNG, } from "../external.ts";
|
|
10
10
|
export type { Mode } from "../modes.ts";
|
|
11
11
|
export { modes } from "../modes.ts";
|
|
12
12
|
export { commercialPaywallBody } from "../utils/billingErrors.ts";
|