@posthog/wizard 2.45.0 → 2.46.0
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/README.md +5 -1
- package/dist/{add-mcp-server-to-clients-CNzZMSat.js → add-mcp-server-to-clients-Bv2CBSil.js} +53 -6
- package/dist/add-mcp-server-to-clients-Bv2CBSil.js.map +1 -0
- package/dist/{agent-interface-CF7GsdFf.js → agent-interface-B8roB2UP.js} +833 -8
- package/dist/agent-interface-B8roB2UP.js.map +1 -0
- package/dist/{agent-runner-B0LTVFfw.js → agent-runner-CV3qh_2p.js} +204 -48
- package/dist/agent-runner-CV3qh_2p.js.map +1 -0
- package/dist/analytics-D7vUZgzf.js +2 -0
- package/dist/{analytics-DQEuL6qS.js → analytics-k76OWsl0.js} +20 -6
- package/dist/analytics-k76OWsl0.js.map +1 -0
- package/dist/{api-uCMvDII5.js → api-CmIWcW-U.js} +3 -3
- package/dist/{api-uCMvDII5.js.map → api-CmIWcW-U.js.map} +1 -1
- package/dist/bin.js +228 -985
- package/dist/bin.js.map +1 -1
- package/dist/{ci-install-Bow8-f0j.js → ci-install-CNEJxdHf.js} +4 -4
- package/dist/{ci-install-Bow8-f0j.js.map → ci-install-CNEJxdHf.js.map} +1 -1
- package/dist/{commandments-CyB7Icr1.js → commandments-DSNrOeOC.js} +1 -1
- package/dist/{commandments-CyB7Icr1.js.map → commandments-DSNrOeOC.js.map} +1 -1
- package/dist/commandments-qTW7pwaT.js +2 -0
- package/dist/{debug-BixHZmHv.js → debug-BwIo7nwn.js} +1 -1
- package/dist/{debug-DBmxx59Q.js → debug-C9HmIrwx.js} +19 -5
- package/dist/debug-C9HmIrwx.js.map +1 -0
- package/dist/{defaults-8zjNjGGi.js → defaults-CtWMmC8s.js} +1 -1
- package/dist/{defaults-8zjNjGGi.js.map → defaults-CtWMmC8s.js.map} +1 -1
- package/dist/{env-api-key-AcC_tz8G.js → env-api-key-C3LzH8Lr.js} +1 -1
- package/dist/{env-api-key-AcC_tz8G.js.map → env-api-key-C3LzH8Lr.js.map} +1 -1
- package/dist/{environment-kZtkp7eG.js → environment-NJykOp33.js} +3 -3
- package/dist/{environment-kZtkp7eG.js.map → environment-NJykOp33.js.map} +1 -1
- package/dist/{file-utils-BAhYy5vC.js → file-utils-CLMcNIKi.js} +2 -2
- package/dist/{file-utils-BAhYy5vC.js.map → file-utils-CLMcNIKi.js.map} +1 -1
- package/dist/{file-watcher-BL-IRbR7.js → file-watcher-CBDCNQVV.js} +2 -2
- package/dist/{file-watcher-BL-IRbR7.js.map → file-watcher-CBDCNQVV.js.map} +1 -1
- package/dist/{headless-ui-DWmMyhaP.js → headless-ui-B3QKxbz8.js} +2 -2
- package/dist/{headless-ui-DWmMyhaP.js.map → headless-ui-B3QKxbz8.js.map} +1 -1
- package/dist/{interactive-Cyic0bGL.js → interactive-CIJRex02.js} +2 -2
- package/dist/{interactive-Cyic0bGL.js.map → interactive-CIJRex02.js.map} +1 -1
- package/dist/{mcp-prompt-streaming-C227vG1X.js → mcp-prompt-streaming-D6OgW3lC.js} +3 -3
- package/dist/{mcp-prompt-streaming-C227vG1X.js.map → mcp-prompt-streaming-D6OgW3lC.js.map} +1 -1
- package/dist/{mcp-BSGmEWjt.js → mcp-qTjKHqXN.js} +2 -2
- package/dist/{mcp-BSGmEWjt.js.map → mcp-qTjKHqXN.js.map} +1 -1
- package/dist/{non-interactive-DQA9vn9f.js → non-interactive-8Eypq_h-.js} +2 -2
- package/dist/{non-interactive-DQA9vn9f.js.map → non-interactive-8Eypq_h-.js.map} +1 -1
- package/dist/{orchestrator-tools-NuWONNkF.js → orchestrator-tools-DVXOV-kz.js} +3 -3
- package/dist/{orchestrator-tools-NuWONNkF.js.map → orchestrator-tools-DVXOV-kz.js.map} +1 -1
- package/dist/{package-manager-DKtR3xzM.js → package-manager-CAD9Uklp.js} +2 -2
- package/dist/{package-manager-DKtR3xzM.js.map → package-manager-CAD9Uklp.js.map} +1 -1
- package/dist/{pi-DJCln9jJ.js → pi-C9iHv5uG.js} +48 -32
- package/dist/pi-C9iHv5uG.js.map +1 -0
- package/dist/{playground-CbEndzc8.js → playground-C-9Q3ETa.js} +7 -7
- package/dist/{playground-CbEndzc8.js.map → playground-C-9Q3ETa.js.map} +1 -1
- package/dist/{posthog-DFyux4Vw.js → posthog-DZZbziJ1.js} +1 -1
- package/dist/{posthog-DFyux4Vw.js.map → posthog-DZZbziJ1.js.map} +1 -1
- package/dist/{posthog-integration-dmWJZ8mj.js → posthog-integration-Do997QON.js} +2006 -17
- package/dist/posthog-integration-Do997QON.js.map +1 -0
- package/dist/{provisioning-CcxCry5p.js → provisioning-DpqnGk3z.js} +3 -3
- package/dist/{provisioning-CcxCry5p.js.map → provisioning-DpqnGk3z.js.map} +1 -1
- package/dist/{queue-tools-Bw-AANLM.js → queue-tools-CTUgbOU8.js} +2 -2
- package/dist/{queue-tools-Bw-AANLM.js.map → queue-tools-CTUgbOU8.js.map} +1 -1
- package/dist/{registry-D2V88NoC.js → registry-DT58jEYr.js} +4 -4
- package/dist/{registry-D2V88NoC.js.map → registry-DT58jEYr.js.map} +1 -1
- package/dist/{security-DOtBCBvx.js → security-CTigdAWm.js} +10 -8
- package/dist/security-CTigdAWm.js.map +1 -0
- package/dist/{setup-utils-Qp-u6BZk.js → setup-utils-Cb5uACEO.js} +31 -9
- package/dist/setup-utils-Cb5uACEO.js.map +1 -0
- package/dist/{start-tui-DHa_9aiB.js → start-tui-Cwc-PFma.js} +36 -30
- package/dist/start-tui-Cwc-PFma.js.map +1 -0
- package/dist/{steps-D07HUQyE.js → steps-DyEKYM4I.js} +7 -7
- package/dist/{steps-D07HUQyE.js.map → steps-DyEKYM4I.js.map} +1 -1
- package/dist/{store-DSwsITKX.js → store-4sj-vWr5.js} +4 -4
- package/dist/{store-DSwsITKX.js.map → store-4sj-vWr5.js.map} +1 -1
- package/dist/{subagent-Dk4K5MDa.js → subagent-D8_yDgCB.js} +2 -2
- package/dist/{subagent-Dk4K5MDa.js.map → subagent-D8_yDgCB.js.map} +1 -1
- package/dist/{task-CQnV9Qd2.js → task-D8Y8pkzd.js} +12 -13
- package/dist/task-D8Y8pkzd.js.map +1 -0
- package/dist/{task-stream-B7qia9eW.js → task-stream-DQT3vjwS.js} +4 -4
- package/dist/{task-stream-B7qia9eW.js.map → task-stream-DQT3vjwS.js.map} +1 -1
- package/dist/{tasks-C7BQp659.js → tasks-D2WKssA5.js} +2 -2
- package/dist/{tasks-C7BQp659.js.map → tasks-D2WKssA5.js.map} +1 -1
- package/dist/{telemetry-DgahJGSx.js → telemetry-CYr4HgS2.js} +3 -3
- package/dist/{telemetry-DgahJGSx.js.map → telemetry-CYr4HgS2.js.map} +1 -1
- package/dist/{terminal-Bb6tZkf-.js → terminal-1RfyHQC2.js} +12 -12
- package/dist/{terminal-Bb6tZkf-.js.map → terminal-1RfyHQC2.js.map} +1 -1
- package/dist/tools-DQCUOQZX.js +199 -0
- package/dist/tools-DQCUOQZX.js.map +1 -0
- package/dist/{wizard-abort-DpDmuCfA.js → wizard-abort-D_-v1zvS.js} +1 -1
- package/dist/{wizard-abort-BxtdkgI-.js → wizard-abort-FuyIaI_0.js} +3 -3
- package/dist/{wizard-abort-BxtdkgI-.js.map → wizard-abort-FuyIaI_0.js.map} +1 -1
- package/dist/yara-hooks-6gNnPFPo.js +2 -0
- package/dist/{yara-hooks-pw86rZ8y.js → yara-hooks-DdYRRxfH.js} +82 -21
- package/dist/yara-hooks-DdYRRxfH.js.map +1 -0
- package/package.json +1 -1
- package/dist/add-mcp-server-to-clients-CNzZMSat.js.map +0 -1
- package/dist/agent-interface-CF7GsdFf.js.map +0 -1
- package/dist/agent-runner-B0LTVFfw.js.map +0 -1
- package/dist/analytics-DQEuL6qS.js.map +0 -1
- package/dist/analytics-YD3D38z2.js +0 -2
- package/dist/commandments-DguPfCX8.js +0 -2
- package/dist/debug-DBmxx59Q.js.map +0 -1
- package/dist/pi-DJCln9jJ.js.map +0 -1
- package/dist/posthog-integration-dmWJZ8mj.js.map +0 -1
- package/dist/security-DOtBCBvx.js.map +0 -1
- package/dist/setup-utils-Qp-u6BZk.js.map +0 -1
- package/dist/start-tui-DHa_9aiB.js.map +0 -1
- package/dist/task-CQnV9Qd2.js.map +0 -1
- package/dist/tools-BJEvSUWN.js +0 -122
- package/dist/tools-BJEvSUWN.js.map +0 -1
- package/dist/types-BRe_EzTW.js +0 -46
- package/dist/types-BRe_EzTW.js.map +0 -1
- package/dist/wizard-tools-Dg8o2lcH.js +0 -783
- package/dist/wizard-tools-Dg8o2lcH.js.map +0 -1
- package/dist/yara-hooks-CncaWRuC.js +0 -2
- package/dist/yara-hooks-pw86rZ8y.js.map +0 -1
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-B_-DWIq7.js";
|
|
2
|
-
import { A as GPT5_4_MODEL, D as DEFAULT_AGENT_MODEL, F as GPT5_MINI_MODEL, I as GPT5_MODEL, M as GPT5_6_LUNA_MODEL, N as GPT5_6_SOL_MODEL, P as GPT5_6_TERRA_MODEL, St as
|
|
3
|
-
import { a as ciExcludedTaskTypes, n as analytics, r as groupsFromUser } from "./analytics-
|
|
4
|
-
import { t as getOrAskForProjectData } from "./setup-utils-
|
|
2
|
+
import { A as GPT5_4_MODEL, Ct as runtimeEnv, D as DEFAULT_AGENT_MODEL, F as GPT5_MINI_MODEL, I as GPT5_MODEL, M as GPT5_6_LUNA_MODEL, N as GPT5_6_SOL_MODEL, P as GPT5_6_TERRA_MODEL, R as Harness, St as RUN_SURFACE, _ as evaluateWizardReadiness, _t as WIZARD_USE_PI_HARNESS_FLAG_KEY, a as getLogFilePath, c as WIZARD_BENCHMARK_FILE, dt as WIZARD_PI_MODEL_FLAG_KEY, f as getUI, g as SIGNUP_WIZARD_READINESS_CONFIG, h as SERVICE_LABELS, i as enableDebugLogs, it as Sequence, j as GPT5_5_MODEL, l as WIZARD_LOG_FILE, lt as WIZARD_ORCHESTRATOR_FLAG_KEY, mt as WIZARD_SELF_DRIVING_USE_PI_HARNESS_FLAG_KEY, o as initLogFile, rt as SONNET_5_MODEL, s as logToFile, t as configureLogFile, ut as WIZARD_PI_EFFORT_FLAG_KEY, v as getBlockingServiceKeys, vt as getSkillsBaseUrl } from "./debug-C9HmIrwx.js";
|
|
3
|
+
import { a as ciExcludedTaskTypes, n as analytics, r as groupsFromUser } from "./analytics-k76OWsl0.js";
|
|
4
|
+
import { t as getOrAskForProjectData } from "./setup-utils-Cb5uACEO.js";
|
|
5
5
|
import "./wizard-session-tp4Zdbwl.js";
|
|
6
|
-
import { i as wizardAbort, n as registerCleanup, t as WizardError } from "./wizard-abort-
|
|
7
|
-
import { n as isNonInteractiveEnvironment } from "./environment-
|
|
8
|
-
import { c as classifySettingsConflicts, i as runAgent$1, n as buildRunTags, o as backupAndFixClaudeSettings, p as AgentSignals, r as initializeAgent, s as checkAllSettingsConflicts, u as restoreClaudeSettings } from "./agent-interface-
|
|
9
|
-
import { a as QUEUE_DIR_NAME, o as QueueStore, s as TaskStatus } from "./queue-tools-
|
|
10
|
-
import { a as
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import { t as FRAMEWORK_REGISTRY } from "./registry-D2V88NoC.js";
|
|
6
|
+
import { i as wizardAbort, n as registerCleanup, t as WizardError } from "./wizard-abort-FuyIaI_0.js";
|
|
7
|
+
import { n as isNonInteractiveEnvironment } from "./environment-NJykOp33.js";
|
|
8
|
+
import { O as fetchWithRetry, S as installSkillById, c as classifySettingsConflicts, i as runAgent$1, k as createWizardAskBridge, n as buildRunTags, o as backupAndFixClaudeSettings, p as AgentSignals, r as initializeAgent, s as checkAllSettingsConflicts, u as restoreClaudeSettings, x as fetchSkillMenu } from "./agent-interface-B8roB2UP.js";
|
|
9
|
+
import { a as QUEUE_DIR_NAME, o as QueueStore, s as TaskStatus } from "./queue-tools-CTUgbOU8.js";
|
|
10
|
+
import { a as flushScanReport, o as formatScanReport, p as writeScanReport, s as formatYaraAbortMessage } from "./yara-hooks-DdYRRxfH.js";
|
|
11
|
+
import { r as detectNodePackageManagers } from "./package-manager-CAD9Uklp.js";
|
|
12
|
+
import { a as piBackend, l as isThinkingLevel } from "./pi-C9iHv5uG.js";
|
|
13
|
+
import { t as FRAMEWORK_REGISTRY } from "./registry-DT58jEYr.js";
|
|
15
14
|
import fs, { existsSync, rmSync } from "fs";
|
|
16
15
|
import * as path$1 from "path";
|
|
17
16
|
import path from "path";
|
|
17
|
+
import { z } from "zod";
|
|
18
18
|
import { randomUUID } from "crypto";
|
|
19
19
|
//#region src/lib/agent/runner/shared/authenticate.ts
|
|
20
20
|
async function authenticate(session, programId) {
|
|
@@ -149,6 +149,7 @@ async function bootstrapProgram(session, config, programConfig) {
|
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
151
|
const wizardFlags = await analytics.getAllFlagsForWizard();
|
|
152
|
+
const wizardFlagPayloads = analytics.getWizardFlagPayloads();
|
|
152
153
|
const wizardMetadata = buildRunTags({
|
|
153
154
|
programId: programConfig.id,
|
|
154
155
|
integration: config.integrationLabel,
|
|
@@ -160,6 +161,7 @@ async function bootstrapProgram(session, config, programConfig) {
|
|
|
160
161
|
skillsBaseUrl,
|
|
161
162
|
credentials: session.credentials,
|
|
162
163
|
wizardFlags,
|
|
164
|
+
wizardFlagPayloads,
|
|
163
165
|
wizardMetadata,
|
|
164
166
|
project
|
|
165
167
|
};
|
|
@@ -247,21 +249,67 @@ const anthropicBackend = {
|
|
|
247
249
|
}
|
|
248
250
|
};
|
|
249
251
|
//#endregion
|
|
250
|
-
//#region src/lib/agent/runner/switchboard/
|
|
252
|
+
//#region src/lib/agent/runner/switchboard/flags/basic-integration.ts
|
|
251
253
|
/**
|
|
252
|
-
*
|
|
254
|
+
* Basic-integration pi experiment.
|
|
255
|
+
*
|
|
256
|
+
* Flags: wizard-use-pi-harness (bool) + wizard-pi-model + wizard-pi-effort
|
|
257
|
+
* Routes: ONLY `posthog-integration` — harness, model, and effort axes.
|
|
253
258
|
*/
|
|
254
|
-
const
|
|
255
|
-
|
|
256
|
-
|
|
259
|
+
const BASIC_INTEGRATION_EXPERIMENT = {
|
|
260
|
+
program: "posthog-integration",
|
|
261
|
+
flags: {
|
|
262
|
+
useFlag: WIZARD_USE_PI_HARNESS_FLAG_KEY,
|
|
263
|
+
modelFlag: WIZARD_PI_MODEL_FLAG_KEY,
|
|
264
|
+
effortFlag: WIZARD_PI_EFFORT_FLAG_KEY,
|
|
265
|
+
fallbackModel: GPT5_4_MODEL
|
|
266
|
+
}
|
|
257
267
|
};
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
268
|
+
//#endregion
|
|
269
|
+
//#region src/lib/agent/runner/switchboard/flags/orchestrator.ts
|
|
270
|
+
/**
|
|
271
|
+
* Orchestrator experiment.
|
|
272
|
+
*
|
|
273
|
+
* Flag: wizard-orchestrator (bool)
|
|
274
|
+
* Routes: ONLY the programs listed below — sequence axis. context-mill
|
|
275
|
+
* publishes orchestrator agent prompts (seed + per-task) per flow, so
|
|
276
|
+
* a program joins the experiment by shipping prompts AND being added
|
|
277
|
+
* here. Other programs can still pin `sequence` via their own flag
|
|
278
|
+
* route's payload.
|
|
279
|
+
*/
|
|
280
|
+
const ORCHESTRATOR_EXPERIMENT = {
|
|
281
|
+
programs: ["posthog-integration"],
|
|
282
|
+
flag: WIZARD_ORCHESTRATOR_FLAG_KEY,
|
|
283
|
+
sequence: "orchestrator"
|
|
284
|
+
};
|
|
285
|
+
/** Raw flag read — for telemetry/log lines only, never for routing. */
|
|
286
|
+
function isOrchestratorEnabled(flags = {}) {
|
|
287
|
+
return flags[ORCHESTRATOR_EXPERIMENT.flag] === "true";
|
|
262
288
|
}
|
|
263
|
-
|
|
264
|
-
|
|
289
|
+
//#endregion
|
|
290
|
+
//#region src/lib/agent/runner/switchboard/flags/self-driving.ts
|
|
291
|
+
/**
|
|
292
|
+
* Self-driving pi experiment.
|
|
293
|
+
*
|
|
294
|
+
* Flag: wizard-self-driving-use-pi-harness (bool; payload `{model, effort?,
|
|
295
|
+
* harness?, sequence?}`)
|
|
296
|
+
* Routes: ONLY `self-driving` — any axis the payload pins. A missing or
|
|
297
|
+
* invalid payload keeps the non-flagged binding default.
|
|
298
|
+
*/
|
|
299
|
+
const SELF_DRIVING_EXPERIMENT = {
|
|
300
|
+
program: "self-driving",
|
|
301
|
+
flags: { useFlag: WIZARD_SELF_DRIVING_USE_PI_HARNESS_FLAG_KEY }
|
|
302
|
+
};
|
|
303
|
+
//#endregion
|
|
304
|
+
//#region src/lib/agent/runner/switchboard/flags/schemes.ts
|
|
305
|
+
/**
|
|
306
|
+
* Flag config schemes — the shapes a PostHog flag set can take to route a
|
|
307
|
+
* program to the pi harness, plus the shared vocabulary and the per-config
|
|
308
|
+
* resolution. Experiment modules in this folder declare *which* flags they
|
|
309
|
+
* use; this module owns *how* a config resolves to a route.
|
|
310
|
+
*/
|
|
311
|
+
/** Model variant key → gateway id (variant keys can't carry `/` or `.`). */
|
|
312
|
+
const MODEL_FLAG_VARIANTS = {
|
|
265
313
|
"gpt-5": GPT5_MODEL,
|
|
266
314
|
"gpt-5-4": GPT5_4_MODEL,
|
|
267
315
|
"gpt-5-mini": GPT5_MINI_MODEL,
|
|
@@ -272,25 +320,107 @@ const PI_MODEL_FLAG_VARIANTS = {
|
|
|
272
320
|
"sonnet-4-6": DEFAULT_AGENT_MODEL,
|
|
273
321
|
"sonnet-5": SONNET_5_MODEL
|
|
274
322
|
};
|
|
275
|
-
/**
|
|
276
|
-
const
|
|
323
|
+
/** Valid effort variants; anything else leaves the model's table default. */
|
|
324
|
+
const EFFORT_FLAG_VARIANTS = [
|
|
325
|
+
"minimal",
|
|
326
|
+
"low",
|
|
327
|
+
"medium",
|
|
328
|
+
"high",
|
|
329
|
+
"xhigh"
|
|
330
|
+
];
|
|
331
|
+
/** `{model, effort?, harness?, sequence?}` payload shape; extra keys tolerated for forward compat. */
|
|
332
|
+
const payloadConfigFlagSchema = z.object({
|
|
333
|
+
model: z.string().refine((key) => key in MODEL_FLAG_VARIANTS),
|
|
334
|
+
effort: z.enum(EFFORT_FLAG_VARIANTS).optional(),
|
|
335
|
+
harness: z.nativeEnum(Harness).optional(),
|
|
336
|
+
sequence: z.nativeEnum(Sequence).optional()
|
|
337
|
+
});
|
|
338
|
+
/** Validate a payload (object or JSON string) into a route; undefined on any unexpected shape. */
|
|
339
|
+
function parseFlagPayload(raw) {
|
|
340
|
+
let value = raw;
|
|
341
|
+
if (typeof raw === "string") try {
|
|
342
|
+
value = JSON.parse(raw);
|
|
343
|
+
} catch {
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
const parsed = payloadConfigFlagSchema.safeParse(value);
|
|
347
|
+
if (!parsed.success) return void 0;
|
|
348
|
+
return {
|
|
349
|
+
model: MODEL_FLAG_VARIANTS[parsed.data.model],
|
|
350
|
+
thinkingLevel: parsed.data.effort,
|
|
351
|
+
harness: parsed.data.harness,
|
|
352
|
+
sequence: parsed.data.sequence
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Resolve one config against the flag snapshot, or undefined when it doesn't
|
|
357
|
+
* validly route: use flag off, or a payload that fails validation — the
|
|
358
|
+
* caller then keeps the non-flagged binding default.
|
|
359
|
+
*/
|
|
360
|
+
function routeFromConfigFlag(cfg, flags, flagPayloads) {
|
|
361
|
+
if (flags[cfg.useFlag] !== "true") return void 0;
|
|
362
|
+
if (cfg.modelFlag) {
|
|
363
|
+
const effort = flags[cfg.effortFlag];
|
|
364
|
+
return {
|
|
365
|
+
model: MODEL_FLAG_VARIANTS[flags[cfg.modelFlag] ?? ""] ?? cfg.fallbackModel,
|
|
366
|
+
thinkingLevel: EFFORT_FLAG_VARIANTS.includes(effort) ? effort : void 0
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
const route = parseFlagPayload(flagPayloads?.[cfg.useFlag]);
|
|
370
|
+
if (!route) logToFile(`[switchboard] ${cfg.useFlag} on but payload missing/invalid — keeping the non-flagged default`);
|
|
371
|
+
return route;
|
|
372
|
+
}
|
|
373
|
+
//#endregion
|
|
374
|
+
//#region src/lib/agent/runner/switchboard/flags/index.ts
|
|
375
|
+
/**
|
|
376
|
+
* Switchboard flags, one module per experiment. Every experiment declares its
|
|
377
|
+
* own scope — which program(s) its flags route — so the flag→program mapping
|
|
378
|
+
* is readable per file, never implied. `schemes.ts` owns the shared config
|
|
379
|
+
* shapes and resolution.
|
|
380
|
+
*/
|
|
381
|
+
/** Every experiment on each axis. An experiment routes ONLY by being listed here, and only for the programs it declares. */
|
|
382
|
+
const HARNESS_EXPERIMENTS = [BASIC_INTEGRATION_EXPERIMENT, SELF_DRIVING_EXPERIMENT];
|
|
383
|
+
const SEQUENCE_EXPERIMENTS = [ORCHESTRATOR_EXPERIMENT];
|
|
384
|
+
/** The flag-driven route for a program, or undefined when no experiment covers it or its flags don't validly route. */
|
|
385
|
+
function resolveFlagRoute(program, flags, flagPayloads) {
|
|
386
|
+
if (RUN_SURFACE === "cloud") return void 0;
|
|
387
|
+
const experiment = HARNESS_EXPERIMENTS.find((e) => e.program === program);
|
|
388
|
+
return experiment && routeFromConfigFlag(experiment.flags, flags, flagPayloads);
|
|
389
|
+
}
|
|
390
|
+
/** The flag-driven sequence for a program, or undefined when no sequence experiment covers it with its flag on. */
|
|
391
|
+
function resolveFlagSequence(program, flags) {
|
|
392
|
+
return SEQUENCE_EXPERIMENTS.find((e) => e.programs.includes(program) && flags[e.flag] === "true")?.sequence;
|
|
393
|
+
}
|
|
394
|
+
//#endregion
|
|
395
|
+
//#region src/lib/agent/runner/switchboard/harness.ts
|
|
396
|
+
/**
|
|
397
|
+
* Harness axis: registry, middleware, resolver. Mirrors `sequence.ts`.
|
|
398
|
+
*/
|
|
399
|
+
const HARNESS_OPTIONS = {
|
|
400
|
+
["anthropic"]: anthropicBackend,
|
|
401
|
+
["pi"]: piBackend
|
|
402
|
+
};
|
|
403
|
+
function getHarness(name) {
|
|
404
|
+
const harness = HARNESS_OPTIONS[name];
|
|
405
|
+
if (!harness) throw new Error(`No harness registered for '${name}'.`);
|
|
406
|
+
return harness;
|
|
407
|
+
}
|
|
277
408
|
/**
|
|
278
|
-
*
|
|
279
|
-
*
|
|
280
|
-
* ignored and the binding default stands.
|
|
409
|
+
* PostHog-flag routing to pi (see `./flags`). No valid route — flag off, no
|
|
410
|
+
* config, or an invalid payload — keeps the non-flagged binding default.
|
|
281
411
|
*/
|
|
282
412
|
const flagRunnerOverride = (ctx, next) => {
|
|
283
413
|
const pick = next();
|
|
284
|
-
|
|
285
|
-
if (
|
|
286
|
-
if (!PI_FLAG_PROGRAMS.has(ctx.program)) return pick;
|
|
414
|
+
const route = resolveFlagRoute(ctx.program, ctx.flags, ctx.flagPayloads);
|
|
415
|
+
if (!route) return pick;
|
|
287
416
|
if (ctx.trace) Object.assign(ctx.trace, {
|
|
288
417
|
harness: "flag",
|
|
289
418
|
model: "flag"
|
|
290
419
|
});
|
|
291
420
|
return {
|
|
292
|
-
harness: "pi",
|
|
293
|
-
model:
|
|
421
|
+
harness: route.harness ?? "pi",
|
|
422
|
+
model: route.model,
|
|
423
|
+
thinkingLevel: route.thinkingLevel
|
|
294
424
|
};
|
|
295
425
|
};
|
|
296
426
|
const HARNESS_MIDDLEWARE = [...[], flagRunnerOverride];
|
|
@@ -308,6 +438,7 @@ function resolveHarness(ctx, role = "default") {
|
|
|
308
438
|
return {
|
|
309
439
|
harness: binding.harness,
|
|
310
440
|
model: binding.model,
|
|
441
|
+
thinkingLevel: binding.thinkingLevel,
|
|
311
442
|
...binding.contextMillOverride?.[role]
|
|
312
443
|
};
|
|
313
444
|
});
|
|
@@ -1378,6 +1509,7 @@ async function runLinearProgram(session, config, programConfig, boot, composed =
|
|
|
1378
1509
|
const pick = resolveHarness({
|
|
1379
1510
|
program: programConfig.id,
|
|
1380
1511
|
flags: wizardFlags,
|
|
1512
|
+
flagPayloads: boot.wizardFlagPayloads,
|
|
1381
1513
|
cliHarness: session.harness,
|
|
1382
1514
|
cliModel: session.model
|
|
1383
1515
|
});
|
|
@@ -1391,7 +1523,8 @@ async function runLinearProgram(session, config, programConfig, boot, composed =
|
|
|
1391
1523
|
spinner,
|
|
1392
1524
|
askBridge,
|
|
1393
1525
|
middleware,
|
|
1394
|
-
model: pick.model
|
|
1526
|
+
model: pick.model,
|
|
1527
|
+
thinkingLevel: pick.thinkingLevel
|
|
1395
1528
|
});
|
|
1396
1529
|
if (agentResult.error === "WIZARD_ABORT") {
|
|
1397
1530
|
const reason = agentResult.message ?? "";
|
|
@@ -1910,6 +2043,7 @@ async function runOrchestrator(session, programConfig, boot) {
|
|
|
1910
2043
|
const switchboardCtx = {
|
|
1911
2044
|
program: programConfig.id,
|
|
1912
2045
|
flags: boot.wizardFlags,
|
|
2046
|
+
flagPayloads: boot.wizardFlagPayloads,
|
|
1913
2047
|
cliHarness: session.harness,
|
|
1914
2048
|
cliSequence: session.sequence,
|
|
1915
2049
|
cliModel: session.model
|
|
@@ -2161,15 +2295,29 @@ function getSequence(name) {
|
|
|
2161
2295
|
if (!sequence) throw new Error(`No sequence registered for '${name}'.`);
|
|
2162
2296
|
return sequence;
|
|
2163
2297
|
}
|
|
2164
|
-
/**
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
const
|
|
2170
|
-
if (!
|
|
2298
|
+
/**
|
|
2299
|
+
* A composed sub-run (integration inside self-driving) is structurally
|
|
2300
|
+
* linear: the orchestrator owns the full run lifecycle (queue, outro) and
|
|
2301
|
+
* cannot nest. Sits above every override, including CLI.
|
|
2302
|
+
*/
|
|
2303
|
+
const composedClampMw = (ctx, next) => {
|
|
2304
|
+
if (!ctx.composed) return next();
|
|
2305
|
+
if (ctx.trace) ctx.trace.sequence = "composed";
|
|
2306
|
+
return "linear";
|
|
2307
|
+
};
|
|
2308
|
+
/** A program's own flag route may pin the sequence; wins over the global orchestrator flag. Traced as 'payload' to stay distinguishable from sequence experiments ('flag'). */
|
|
2309
|
+
const flagRouteSequenceMw = (ctx, next) => {
|
|
2310
|
+
const route = resolveFlagRoute(ctx.program, ctx.flags, ctx.flagPayloads);
|
|
2311
|
+
if (!route?.sequence) return next();
|
|
2312
|
+
if (ctx.trace) ctx.trace.sequence = "payload";
|
|
2313
|
+
return route.sequence;
|
|
2314
|
+
};
|
|
2315
|
+
/** Sequence experiments (e.g. wizard-orchestrator), each inert outside its declared programs. */
|
|
2316
|
+
const sequenceExperimentMw = (ctx, next) => {
|
|
2317
|
+
const sequence = resolveFlagSequence(ctx.program, ctx.flags);
|
|
2318
|
+
if (!sequence) return next();
|
|
2171
2319
|
if (ctx.trace) ctx.trace.sequence = "flag";
|
|
2172
|
-
return
|
|
2320
|
+
return sequence;
|
|
2173
2321
|
};
|
|
2174
2322
|
/**
|
|
2175
2323
|
* The orchestrator drives harnesses through `runTask`; a harness that has not
|
|
@@ -2186,9 +2334,11 @@ const runTaskCapabilityClampMw = (ctx, next) => {
|
|
|
2186
2334
|
return "linear";
|
|
2187
2335
|
};
|
|
2188
2336
|
const SEQUENCE_MIDDLEWARE = [
|
|
2337
|
+
composedClampMw,
|
|
2189
2338
|
...[],
|
|
2190
2339
|
runTaskCapabilityClampMw,
|
|
2191
|
-
|
|
2340
|
+
flagRouteSequenceMw,
|
|
2341
|
+
sequenceExperimentMw
|
|
2192
2342
|
];
|
|
2193
2343
|
/** CLI wins over `wizard-orchestrator` flag wins over binding default. */
|
|
2194
2344
|
function resolveSequence(ctx) {
|
|
@@ -2264,11 +2414,12 @@ const PROGRAM_BINDINGS = {
|
|
|
2264
2414
|
function resolveBinding(ctx, role = "default") {
|
|
2265
2415
|
ctx.trace ??= {};
|
|
2266
2416
|
const sequence = resolveSequence(ctx);
|
|
2267
|
-
const { harness, model } = resolveHarness(ctx, role);
|
|
2417
|
+
const { harness, model, thinkingLevel } = resolveHarness(ctx, role);
|
|
2268
2418
|
return {
|
|
2269
2419
|
sequence,
|
|
2270
2420
|
harness,
|
|
2271
|
-
model
|
|
2421
|
+
model,
|
|
2422
|
+
thinkingLevel
|
|
2272
2423
|
};
|
|
2273
2424
|
}
|
|
2274
2425
|
//#endregion
|
|
@@ -2292,7 +2443,7 @@ async function runProgram(session, config, programConfig, options = {}) {
|
|
|
2292
2443
|
const boot = await bootstrapProgram(session, config, programConfig);
|
|
2293
2444
|
registerCleanup(() => flushScanReport(session));
|
|
2294
2445
|
try {
|
|
2295
|
-
const binding = resolveProgramRunner(session, programConfig, boot);
|
|
2446
|
+
const binding = resolveProgramRunner(session, programConfig, boot, options.composed ?? false);
|
|
2296
2447
|
if (binding.sequence === "orchestrator") getUI().log.info("Task-queue orchestrator enabled.");
|
|
2297
2448
|
return await getSequence(binding.sequence).run(session, config, programConfig, boot, options.composed ?? false);
|
|
2298
2449
|
} finally {
|
|
@@ -2308,10 +2459,12 @@ async function runProgram(session, config, programConfig, options = {}) {
|
|
|
2308
2459
|
* concern (bootstrap, cleanup, dispatch, per-task per-role harness picks) is
|
|
2309
2460
|
* either upstream or downstream of this call.
|
|
2310
2461
|
*/
|
|
2311
|
-
function resolveProgramRunner(session, programConfig, boot) {
|
|
2462
|
+
function resolveProgramRunner(session, programConfig, boot, composed) {
|
|
2312
2463
|
const ctx = {
|
|
2313
2464
|
program: programConfig.id,
|
|
2465
|
+
composed,
|
|
2314
2466
|
flags: boot.wizardFlags,
|
|
2467
|
+
flagPayloads: boot.wizardFlagPayloads,
|
|
2315
2468
|
cliHarness: session.harness,
|
|
2316
2469
|
cliSequence: session.sequence,
|
|
2317
2470
|
cliModel: session.model
|
|
@@ -2332,6 +2485,8 @@ function captureSwitchboardDecision(ctx, binding) {
|
|
|
2332
2485
|
flag_use_pi_harness: ctx.flags[WIZARD_USE_PI_HARNESS_FLAG_KEY],
|
|
2333
2486
|
flag_pi_model: ctx.flags[WIZARD_PI_MODEL_FLAG_KEY],
|
|
2334
2487
|
flag_pi_effort: ctx.flags[WIZARD_PI_EFFORT_FLAG_KEY],
|
|
2488
|
+
flag_self_driving_use_pi_harness: ctx.flags[WIZARD_SELF_DRIVING_USE_PI_HARNESS_FLAG_KEY],
|
|
2489
|
+
flag_self_driving_pi_payload: JSON.stringify(ctx.flagPayloads?.["wizard-self-driving-use-pi-harness"] ?? null),
|
|
2335
2490
|
flag_orchestrator: ctx.flags[WIZARD_ORCHESTRATOR_FLAG_KEY],
|
|
2336
2491
|
cli_harness: ctx.cliHarness,
|
|
2337
2492
|
cli_sequence: ctx.cliSequence,
|
|
@@ -2341,6 +2496,7 @@ function captureSwitchboardDecision(ctx, binding) {
|
|
|
2341
2496
|
sequence_source: trace.sequence,
|
|
2342
2497
|
harness: binding.harness,
|
|
2343
2498
|
model: binding.model,
|
|
2499
|
+
thinking_level: binding.thinkingLevel,
|
|
2344
2500
|
sequence: binding.sequence
|
|
2345
2501
|
});
|
|
2346
2502
|
logToFile(`[switchboard] decision: program=${ctx.program} in(use-pi-harness=${ctx.flags["wizard-use-pi-harness"] ?? "-"}, orchestrator=${ctx.flags["wizard-orchestrator"] ?? "-"}, cli=${ctx.cliHarness ?? "-"}/${ctx.cliSequence ?? "-"}/${ctx.cliModel ?? "-"}) → harness=${binding.harness} (${trace.harness ?? "?"}) model=${binding.model} (${trace.model ?? "?"}) sequence=${binding.sequence} (${trace.sequence ?? "?"})`);
|
|
@@ -2363,4 +2519,4 @@ var agent_runner_exports = /* @__PURE__ */ __exportAll({ runAgent: () => runAgen
|
|
|
2363
2519
|
//#endregion
|
|
2364
2520
|
export { formatTokenCount as a, formatCostUsd as i, runAgent as n, authenticate as o, computeTokenCostUsd as r, agent_runner_exports as t };
|
|
2365
2521
|
|
|
2366
|
-
//# sourceMappingURL=agent-runner-
|
|
2522
|
+
//# sourceMappingURL=agent-runner-CV3qh_2p.js.map
|