pi-ui-extend 1.0.41 → 1.0.45
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 +50 -13
- package/dist/app/app.d.ts +13 -0
- package/dist/app/app.js +158 -8
- package/dist/app/cli/install.js +2 -2
- package/dist/app/commands/command-controller.d.ts +4 -0
- package/dist/app/commands/command-controller.js +11 -0
- package/dist/app/commands/command-git-actions.d.ts +25 -0
- package/dist/app/commands/command-git-actions.js +381 -0
- package/dist/app/commands/command-host.d.ts +4 -0
- package/dist/app/commands/command-host.js +5 -2
- package/dist/app/commands/command-model-actions.d.ts +1 -0
- package/dist/app/commands/command-model-actions.js +57 -35
- package/dist/app/commands/command-navigation-actions.d.ts +1 -0
- package/dist/app/commands/command-navigation-actions.js +16 -3
- package/dist/app/commands/command-registry.d.ts +2 -0
- package/dist/app/commands/command-registry.js +15 -1
- package/dist/app/commands/command-session-actions.js +9 -3
- package/dist/app/commands/reload-context-inventory.d.ts +11 -0
- package/dist/app/commands/reload-context-inventory.js +70 -0
- package/dist/app/extensions/extension-actions-controller.d.ts +1 -0
- package/dist/app/extensions/extension-actions-controller.js +6 -0
- package/dist/app/extensions/subagent-catalog-state.d.ts +9 -0
- package/dist/app/extensions/subagent-catalog-state.js +23 -0
- package/dist/app/input/autocomplete-controller.js +61 -34
- package/dist/app/input/input-action-controller.d.ts +2 -0
- package/dist/app/input/input-action-controller.js +8 -1
- package/dist/app/input/input-controller.d.ts +2 -1
- package/dist/app/input/input-controller.js +7 -2
- package/dist/app/input/prompt-enhancer-controller.js +53 -35
- package/dist/app/input/voice-controller.d.ts +41 -45
- package/dist/app/input/voice-controller.js +351 -419
- package/dist/app/model/model-usage-controller.js +17 -7
- package/dist/app/model/model-usage-status.d.ts +4 -1
- package/dist/app/model/model-usage-status.js +270 -46
- package/dist/app/popup/menu-items-controller.d.ts +13 -3
- package/dist/app/popup/menu-items-controller.js +37 -21
- package/dist/app/popup/popup-action-controller.d.ts +12 -2
- package/dist/app/popup/popup-action-controller.js +77 -24
- package/dist/app/popup/popup-menu-controller.d.ts +36 -14
- package/dist/app/popup/popup-menu-controller.js +239 -69
- package/dist/app/rendering/dcp-stats.d.ts +9 -4
- package/dist/app/rendering/dcp-stats.js +40 -425
- package/dist/app/rendering/editor-panels.js +10 -4
- package/dist/app/rendering/popup-menu-renderer.d.ts +3 -5
- package/dist/app/rendering/popup-menu-renderer.js +42 -37
- package/dist/app/rendering/render-controller.js +23 -2
- package/dist/app/rendering/status-line-renderer.d.ts +5 -0
- package/dist/app/rendering/status-line-renderer.js +41 -5
- package/dist/app/rendering/tab-line-renderer.js +26 -20
- package/dist/app/runtime.d.ts +12 -1
- package/dist/app/runtime.js +120 -12
- package/dist/app/screen/mouse-controller.d.ts +2 -0
- package/dist/app/screen/mouse-controller.js +17 -7
- package/dist/app/screen/status-controller.d.ts +4 -0
- package/dist/app/screen/status-controller.js +5 -0
- package/dist/app/session/lazy-session-manager.js +34 -0
- package/dist/app/session/session-event-controller.d.ts +1 -0
- package/dist/app/session/session-event-controller.js +10 -1
- package/dist/app/session/session-history.d.ts +1 -0
- package/dist/app/session/session-history.js +12 -1
- package/dist/app/session/session-lifecycle-controller.d.ts +7 -1
- package/dist/app/session/session-lifecycle-controller.js +16 -1
- package/dist/app/session/tabs-controller.d.ts +26 -1
- package/dist/app/session/tabs-controller.js +454 -147
- package/dist/app/subagents/subagents-files.js +60 -1
- package/dist/app/subagents/subagents-model.d.ts +1 -0
- package/dist/app/subagents/subagents-model.js +18 -2
- package/dist/app/subagents/subagents-widget-controller.d.ts +1 -0
- package/dist/app/subagents/subagents-widget-controller.js +6 -0
- package/dist/app/types.d.ts +16 -1
- package/dist/app/workspace/workspace-actions-controller.js +10 -2
- package/dist/app/workspace/workspace-undo.d.ts +1 -0
- package/dist/app/workspace/workspace-undo.js +1 -0
- package/dist/bundled-extensions/question/index.js +9 -1
- package/dist/bundled-extensions/question/remote.d.ts +4 -0
- package/dist/bundled-extensions/question/remote.js +33 -0
- package/dist/bundled-extensions/telegram-connector/bot.d.ts +43 -0
- package/dist/bundled-extensions/telegram-connector/bot.js +166 -0
- package/dist/bundled-extensions/telegram-connector/config.d.ts +8 -0
- package/dist/bundled-extensions/telegram-connector/config.js +87 -0
- package/dist/bundled-extensions/telegram-connector/coordinator.d.ts +66 -0
- package/dist/bundled-extensions/telegram-connector/coordinator.js +413 -0
- package/dist/bundled-extensions/telegram-connector/index.d.ts +3 -0
- package/dist/bundled-extensions/telegram-connector/index.js +195 -0
- package/dist/bundled-extensions/terminal-bell/index.d.ts +0 -8
- package/dist/bundled-extensions/terminal-bell/index.js +0 -76
- package/dist/bundled-extensions/workspace-undo/index.d.ts +26 -0
- package/dist/bundled-extensions/workspace-undo/index.js +191 -0
- package/dist/config.d.ts +21 -2
- package/dist/config.js +159 -32
- package/dist/default-pix-config.js +25 -5
- package/dist/schemas/index.d.ts +1 -0
- package/dist/schemas/index.js +1 -0
- package/dist/schemas/pi-tools-suite-schema.d.ts +88 -62
- package/dist/schemas/pi-tools-suite-schema.js +54 -83
- package/dist/schemas/pix-schema.d.ts +19 -2
- package/dist/schemas/pix-schema.js +47 -5
- package/dist/schemas/tasks-schema.d.ts +18 -0
- package/dist/schemas/tasks-schema.js +41 -0
- package/docs/concurrency.md +9 -1
- package/docs/desktop-mvp.md +22 -6
- package/docs/desktop-task-manager.md +148 -84
- package/docs/release.md +30 -6
- package/external/pi-tools-suite/README.md +197 -84
- package/external/pi-tools-suite/docs/evals.md +1 -1
- package/external/pi-tools-suite/docs/session-recovery.md +47 -14
- package/external/pi-tools-suite/docs/subagent-model-pools.md +48 -30
- package/external/pi-tools-suite/docs/ui-qa-subagent.md +440 -0
- package/external/pi-tools-suite/package.json +6 -1
- package/external/pi-tools-suite/src/antigravity-auth/auth-store.ts +2 -1
- package/external/pi-tools-suite/src/antigravity-auth/constants.ts +9 -3
- package/external/pi-tools-suite/src/antigravity-auth/headers.ts +41 -3
- package/external/pi-tools-suite/src/antigravity-auth/models.ts +94 -21
- package/external/pi-tools-suite/src/antigravity-auth/oauth.ts +5 -17
- package/external/pi-tools-suite/src/antigravity-auth/payload.ts +72 -7
- package/external/pi-tools-suite/src/antigravity-auth/stream.ts +13 -1
- package/external/pi-tools-suite/src/async-subagents/agents/frontier-review.md +23 -0
- package/external/pi-tools-suite/src/async-subagents/agents/implement.md +1 -1
- package/external/pi-tools-suite/src/async-subagents/agents/presets.jsonc +16 -0
- package/external/pi-tools-suite/src/async-subagents/agents/research.md +5 -3
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/backends/browser.mjs +346 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/backends/desktop.mjs +1038 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/backends/tui.mjs +759 -0
- package/external/pi-tools-suite/src/async-subagents/agents/{browser-qa → ui-qa/browser}/scripts/browser-qa-runner.mjs +32 -23
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/drivers/chrome-devtools/chrome-devtools-provider.mjs +895 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/drivers/linux/linux-atspi.py +494 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/drivers/macos/macos-accessibility.swift +1085 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/drivers/native-terminal/bridge-client.mjs +50 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/drivers/native-terminal/native-terminal-host.mjs +501 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/drivers/windows/windows-uia.ps1 +454 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/guides/browser-auth.md +114 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/guides/browser-chrome-devtools.md +91 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/guides/browser-playwright.md +145 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/guides/browser.md +82 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/guides/desktop-linux.md +26 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/guides/desktop-macos.md +29 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/guides/desktop-windows.md +23 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/guides/desktop.md +54 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/guides/tui-native-terminal.md +59 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/guides/tui-pty.md +37 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/guides/tui.md +60 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa/scripts/ui-qa-runner.mjs +535 -0
- package/external/pi-tools-suite/src/async-subagents/agents/ui-qa.md +75 -0
- package/external/pi-tools-suite/src/async-subagents/commands.ts +15 -71
- package/external/pi-tools-suite/src/async-subagents/core/activity.ts +33 -0
- package/external/pi-tools-suite/src/async-subagents/core/agent-catalog.ts +5 -4
- package/external/pi-tools-suite/src/async-subagents/core/agent-strategy.ts +1 -1
- package/external/pi-tools-suite/src/async-subagents/core/agents-dir.ts +8 -5
- package/external/pi-tools-suite/src/async-subagents/core/browser-qa.ts +16 -2
- package/external/pi-tools-suite/src/async-subagents/core/config.ts +160 -327
- package/external/pi-tools-suite/src/async-subagents/core/model-selection.ts +2 -1
- package/external/pi-tools-suite/src/async-subagents/core/registry.ts +158 -33
- package/external/pi-tools-suite/src/async-subagents/core/routing.ts +21 -5
- package/external/pi-tools-suite/src/async-subagents/core/spawn.ts +40 -26
- package/external/pi-tools-suite/src/async-subagents/core/state.ts +40 -0
- package/external/pi-tools-suite/src/async-subagents/core/types.ts +7 -0
- package/external/pi-tools-suite/src/async-subagents/core/ultrawork-auto.ts +51 -45
- package/external/pi-tools-suite/src/async-subagents/index.ts +69 -5
- package/external/pi-tools-suite/src/async-subagents/lib.ts +16 -9
- package/external/pi-tools-suite/src/async-subagents/tools/spawn.ts +8 -5
- package/external/pi-tools-suite/src/async-subagents/tools/subagents.ts +5 -4
- package/external/pi-tools-suite/src/async-subagents/types.ts +1 -0
- package/external/pi-tools-suite/src/coding-discipline/index.ts +90 -59
- package/external/pi-tools-suite/src/config.ts +55 -1
- package/external/pi-tools-suite/src/context-gateway/accounting-log.ts +282 -0
- package/external/pi-tools-suite/src/context-gateway/config.ts +77 -3
- package/external/pi-tools-suite/src/context-gateway/efficiency.ts +414 -0
- package/external/pi-tools-suite/src/context-gateway/enforcement.ts +222 -0
- package/external/pi-tools-suite/src/context-gateway/index.ts +206 -19
- package/external/pi-tools-suite/src/context-gateway/storeless-capabilities.ts +7 -7
- package/external/pi-tools-suite/src/context-gateway/telemetry.ts +101 -28
- package/external/pi-tools-suite/src/context-gateway/types.ts +16 -3
- package/external/pi-tools-suite/src/context-inventory.ts +99 -0
- package/external/pi-tools-suite/src/dcp/auto-compress-budget.ts +39 -4
- package/external/pi-tools-suite/src/dcp/auto-compress.ts +128 -49
- package/external/pi-tools-suite/src/dcp/commands.ts +32 -156
- package/external/pi-tools-suite/src/dcp/compress-tool.ts +177 -46
- package/external/pi-tools-suite/src/dcp/compression-blocks.ts +6 -58
- package/external/pi-tools-suite/src/dcp/compression-preview.ts +9 -0
- package/external/pi-tools-suite/src/dcp/compression-progress.ts +22 -0
- package/external/pi-tools-suite/src/dcp/config.ts +114 -17
- package/external/pi-tools-suite/src/dcp/conversation-index.ts +36 -9
- package/external/pi-tools-suite/src/dcp/diagnostics.ts +41 -0
- package/external/pi-tools-suite/src/dcp/fresh-tool-results.ts +38 -0
- package/external/pi-tools-suite/src/dcp/index.ts +338 -66
- package/external/pi-tools-suite/src/dcp/journal.ts +126 -4
- package/external/pi-tools-suite/src/dcp/progress-controller.ts +2 -1
- package/external/pi-tools-suite/src/dcp/prompts.ts +83 -192
- package/external/pi-tools-suite/src/dcp/protected-continuity.ts +175 -0
- package/external/pi-tools-suite/src/dcp/pruner-candidates.ts +93 -3
- package/external/pi-tools-suite/src/dcp/pruner-message-ids.ts +6 -10
- package/external/pi-tools-suite/src/dcp/pruner-nudge.ts +36 -33
- package/external/pi-tools-suite/src/dcp/pruner-tools.ts +6 -3
- package/external/pi-tools-suite/src/dcp/pruner.ts +1 -0
- package/external/pi-tools-suite/src/dcp/routine-pressure.ts +86 -0
- package/external/pi-tools-suite/src/dcp/state.ts +9 -0
- package/external/pi-tools-suite/src/dcp/statistics.d.ts +8 -0
- package/external/pi-tools-suite/src/dcp/statistics.js +156 -0
- package/external/pi-tools-suite/src/default-pi-tools-suite-config.ts +78 -22
- package/external/pi-tools-suite/src/index.ts +7 -1
- package/external/pi-tools-suite/src/lib/project.ts +36 -1
- package/external/pi-tools-suite/src/model-tools/index.ts +10 -7
- package/external/pi-tools-suite/src/repo-discovery/index.ts +304 -4
- package/external/pi-tools-suite/src/resource-registry/index.ts +2551 -0
- package/external/pi-tools-suite/src/session-recovery/index.ts +17 -0
- package/external/pi-tools-suite/src/shell-command-policy.ts +219 -0
- package/external/pi-tools-suite/src/todo/index.ts +21 -0
- package/external/pi-tools-suite/src/todo/todo.ts +19 -1
- package/external/pi-tools-suite/src/tool-descriptions.ts +47 -19
- package/package.json +10 -9
- package/schemas/pi-tools-suite.json +466 -287
- package/schemas/pix.json +129 -11
- package/schemas/tasks.json +131 -0
- package/skills/simplify/SKILL.md +33 -5
- package/docs/desktop-markdown-media.md +0 -77
- package/external/pi-tools-suite/docs/browser-qa-subagent.md +0 -177
- package/external/pi-tools-suite/docs/dcp-emergency-current-turn.md +0 -102
- package/external/pi-tools-suite/src/async-subagents/agents/browser-qa.md +0 -598
- package/external/pi-tools-suite/src/async-subagents/async-subagents.sample.jsonc +0 -54
- package/external/pi-tools-suite/src/skill-installer/index.ts +0 -333
- package/skills/playwright-cli/SKILL.md +0 -420
- package/skills/playwright-cli/references/element-attributes.md +0 -23
- package/skills/playwright-cli/references/playwright-tests.md +0 -50
- package/skills/playwright-cli/references/request-mocking.md +0 -87
- package/skills/playwright-cli/references/running-code.md +0 -241
- package/skills/playwright-cli/references/session-management.md +0 -273
- package/skills/playwright-cli/references/spec-driven-testing.md +0 -311
- package/skills/playwright-cli/references/storage-state.md +0 -290
- package/skills/playwright-cli/references/test-generation.md +0 -142
- package/skills/playwright-cli/references/tracing.md +0 -154
- package/skills/playwright-cli/references/video-recording.md +0 -147
- package/skills/spec-lite/SKILL.md +0 -140
- /package/external/pi-tools-suite/src/async-subagents/agents/{browser-qa → ui-qa/browser}/examples/qa-auth.example.jsonc +0 -0
- /package/external/pi-tools-suite/src/async-subagents/agents/{browser-qa → ui-qa/browser}/examples/qa-flow.example.jsonc +0 -0
- /package/external/pi-tools-suite/src/async-subagents/agents/{browser-qa → ui-qa/browser}/vendor/fflate.LICENSE +0 -0
- /package/external/pi-tools-suite/src/async-subagents/agents/{browser-qa → ui-qa/browser}/vendor/fflate.mjs +0 -0
|
@@ -1,4 +1,44 @@
|
|
|
1
1
|
import type { AntigravityModel, HeaderStyle } from "./types";
|
|
2
|
+
import { AGY_CLI_CHANGE_LIST, AGY_CLI_VERSION } from "./constants";
|
|
3
|
+
|
|
4
|
+
function normalizePlatform(platform = process.platform): string {
|
|
5
|
+
return platform === "win32" ? "windows" : platform || "unknown";
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
function normalizeArch(arch = process.arch): string {
|
|
9
|
+
switch (arch) {
|
|
10
|
+
case "x64":
|
|
11
|
+
return "amd64";
|
|
12
|
+
case "ia32":
|
|
13
|
+
return "386";
|
|
14
|
+
default:
|
|
15
|
+
return arch || "unknown";
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** Native agy CLI 1.1.24 content-request identity captured by cortexkit 2.2.1. */
|
|
20
|
+
export function buildAntigravityHarnessUserAgent(
|
|
21
|
+
version = AGY_CLI_VERSION,
|
|
22
|
+
platform = process.platform,
|
|
23
|
+
arch = process.arch,
|
|
24
|
+
authMethod = "consumer",
|
|
25
|
+
): string {
|
|
26
|
+
const changeList = version === AGY_CLI_VERSION ? `; cl=${AGY_CLI_CHANGE_LIST}` : "";
|
|
27
|
+
return `antigravity/cli/${version} (aidev_client; os_type=${normalizePlatform(platform)}; arch=${normalizeArch(arch)}${changeList}; auth_method=${authMethod})`;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function getAntigravityBootstrapHeaders(accessToken: string): Record<string, string> {
|
|
31
|
+
return {
|
|
32
|
+
"User-Agent": buildAntigravityHarnessUserAgent(),
|
|
33
|
+
Authorization: `Bearer ${accessToken}`,
|
|
34
|
+
"Content-Type": "application/json",
|
|
35
|
+
"Accept-Encoding": "gzip",
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function getAntigravityLoadCodeAssistMetadata(): Record<string, string> {
|
|
40
|
+
return { ideType: "ANTIGRAVITY" };
|
|
41
|
+
}
|
|
2
42
|
|
|
3
43
|
export function getAntigravityHeaders(style: "antigravity" | "gemini-cli" = "antigravity"): Record<string, string> {
|
|
4
44
|
if (style === "gemini-cli") {
|
|
@@ -9,9 +49,7 @@ export function getAntigravityHeaders(style: "antigravity" | "gemini-cli" = "ant
|
|
|
9
49
|
};
|
|
10
50
|
}
|
|
11
51
|
return {
|
|
12
|
-
"User-Agent":
|
|
13
|
-
"X-Goog-Api-Client": "google-cloud-sdk vscode_cloudshelleditor/0.1",
|
|
14
|
-
"Client-Metadata": `{"ideType":"ANTIGRAVITY","platform":"${process.platform === "win32" ? "WINDOWS" : "MACOS"}","pluginType":"GEMINI"}`,
|
|
52
|
+
"User-Agent": buildAntigravityHarnessUserAgent(),
|
|
15
53
|
};
|
|
16
54
|
}
|
|
17
55
|
|
|
@@ -1,4 +1,52 @@
|
|
|
1
|
+
// Antigravity model catalog, synced with the upstream cortexkit registry
|
|
2
|
+
// (packages/core/src/model-registry.ts + transform/model-resolver.ts at
|
|
3
|
+
// commit fa48c66f2d931a9182d9c2fa38cdb1d9c4d61f10).
|
|
4
|
+
//
|
|
5
|
+
// Only models the Pi protocol can represent are advertised: the upstream
|
|
6
|
+
// image-output model is intentionally NOT registered because Pi has no way to
|
|
7
|
+
// express image-only output. Live route resolution for these public IDs lives
|
|
8
|
+
// in payload.ts (resolveActualModel).
|
|
1
9
|
export const modelDefinitions = [
|
|
10
|
+
{
|
|
11
|
+
id: "antigravity-gemini-3.8-flash",
|
|
12
|
+
name: "Gemini 3.8 Flash (Antigravity)",
|
|
13
|
+
reasoning: true,
|
|
14
|
+
input: ["text", "image"],
|
|
15
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
16
|
+
contextWindow: 1_048_576,
|
|
17
|
+
maxTokens: 65_536,
|
|
18
|
+
thinkingLevelMap: { minimal: "low", low: "low", medium: "medium", high: "high", xhigh: "high" },
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: "antigravity-gemini-3.7-flash",
|
|
22
|
+
name: "Gemini 3.7 Flash (Antigravity)",
|
|
23
|
+
reasoning: true,
|
|
24
|
+
input: ["text", "image"],
|
|
25
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
26
|
+
contextWindow: 1_048_576,
|
|
27
|
+
maxTokens: 65_536,
|
|
28
|
+
thinkingLevelMap: { minimal: "low", low: "low", medium: "medium", high: "high", xhigh: "high" },
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
id: "antigravity-gemini-3.6-flash",
|
|
32
|
+
name: "Gemini 3.6 Flash (Antigravity)",
|
|
33
|
+
reasoning: true,
|
|
34
|
+
input: ["text", "image"],
|
|
35
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
36
|
+
contextWindow: 1_048_576,
|
|
37
|
+
maxTokens: 65_536,
|
|
38
|
+
thinkingLevelMap: { minimal: "low", low: "low", medium: "medium", high: "high", xhigh: "high" },
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: "antigravity-gemini-3.5-flash",
|
|
42
|
+
name: "Gemini 3.5 Flash (Antigravity)",
|
|
43
|
+
reasoning: true,
|
|
44
|
+
input: ["text", "image"],
|
|
45
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
46
|
+
contextWindow: 1_048_576,
|
|
47
|
+
maxTokens: 65_536,
|
|
48
|
+
thinkingLevelMap: { minimal: "low", low: "low", medium: "medium", high: "high", xhigh: "high" },
|
|
49
|
+
},
|
|
2
50
|
{
|
|
3
51
|
id: "antigravity-gemini-3.1-pro",
|
|
4
52
|
name: "Gemini 3.1 Pro (Antigravity)",
|
|
@@ -7,11 +55,46 @@ export const modelDefinitions = [
|
|
|
7
55
|
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
8
56
|
contextWindow: 1_048_576,
|
|
9
57
|
maxTokens: 65_535,
|
|
10
|
-
thinkingLevelMap: { minimal: null, low: "low", medium: null, high:
|
|
58
|
+
thinkingLevelMap: { minimal: null, low: "low", medium: null, high: "high", xhigh: "high" },
|
|
11
59
|
},
|
|
60
|
+
{
|
|
61
|
+
id: "antigravity-claude-sonnet-4-6-thinking",
|
|
62
|
+
name: "Claude Sonnet 4.6 Thinking (Antigravity)",
|
|
63
|
+
reasoning: true,
|
|
64
|
+
input: ["text", "image"],
|
|
65
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
66
|
+
contextWindow: 200_000,
|
|
67
|
+
maxTokens: 64_000,
|
|
68
|
+
thinkingLevelMap: { minimal: null, low: "low", medium: "medium", high: "high", xhigh: "high" },
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
id: "antigravity-claude-opus-4-6-thinking",
|
|
72
|
+
name: "Claude Opus 4.6 Thinking (Antigravity)",
|
|
73
|
+
reasoning: true,
|
|
74
|
+
input: ["text", "image"],
|
|
75
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
76
|
+
contextWindow: 200_000,
|
|
77
|
+
maxTokens: 64_000,
|
|
78
|
+
thinkingLevelMap: { minimal: null, low: "low", medium: "medium", high: "high", xhigh: "high" },
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
// GPT-OSS 120B with reasoning effort "medium" baked into the live route.
|
|
82
|
+
// Pi gets no thinkingConfig for it; the map pins every level to medium
|
|
83
|
+
// so the UI stays honest without changing routing.
|
|
84
|
+
id: "antigravity-gpt-oss-120b-medium",
|
|
85
|
+
name: "GPT-OSS 120B Medium (Antigravity)",
|
|
86
|
+
reasoning: true,
|
|
87
|
+
input: ["text"],
|
|
88
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
89
|
+
contextWindow: 131_072,
|
|
90
|
+
maxTokens: 32_768,
|
|
91
|
+
thinkingLevelMap: { minimal: "medium", low: "medium", medium: "medium", high: "medium", xhigh: "medium" },
|
|
92
|
+
},
|
|
93
|
+
// Legacy Antigravity entries kept as aliases; both live routes still exist
|
|
94
|
+
// upstream (gemini-3-flash is also the target of the 3.5-flash high tier).
|
|
12
95
|
{
|
|
13
96
|
id: "antigravity-gemini-3-flash",
|
|
14
|
-
name: "Gemini 3 Flash (Antigravity)",
|
|
97
|
+
name: "Gemini 3 Flash (Antigravity, legacy)",
|
|
15
98
|
reasoning: true,
|
|
16
99
|
input: ["text", "image"],
|
|
17
100
|
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
@@ -19,6 +102,15 @@ export const modelDefinitions = [
|
|
|
19
102
|
maxTokens: 65_536,
|
|
20
103
|
thinkingLevelMap: { minimal: "minimal", low: "low", medium: "medium", high: "high", xhigh: null },
|
|
21
104
|
},
|
|
105
|
+
{
|
|
106
|
+
id: "antigravity-claude-sonnet-4-6",
|
|
107
|
+
name: "Claude Sonnet 4.6 (Antigravity, legacy)",
|
|
108
|
+
reasoning: false,
|
|
109
|
+
input: ["text", "image"],
|
|
110
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
111
|
+
contextWindow: 200_000,
|
|
112
|
+
maxTokens: 64_000,
|
|
113
|
+
},
|
|
22
114
|
// These Gemini CLI-named models mirror opencode's provider surface, but opencode
|
|
23
115
|
// routes them Antigravity-first unless cli_first is enabled.
|
|
24
116
|
{
|
|
@@ -64,23 +156,4 @@ export const modelDefinitions = [
|
|
|
64
156
|
thinkingLevelMap: { minimal: null, low: "low", medium: null, high: null, xhigh: null },
|
|
65
157
|
antigravityHeaderStyle: "antigravity",
|
|
66
158
|
},
|
|
67
|
-
{
|
|
68
|
-
id: "antigravity-claude-sonnet-4-6",
|
|
69
|
-
name: "Claude Sonnet 4.6 (Antigravity)",
|
|
70
|
-
reasoning: false,
|
|
71
|
-
input: ["text", "image"],
|
|
72
|
-
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
73
|
-
contextWindow: 200_000,
|
|
74
|
-
maxTokens: 64_000,
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
id: "antigravity-claude-opus-4-6-thinking",
|
|
78
|
-
name: "Claude Opus 4.6 Thinking (Antigravity)",
|
|
79
|
-
reasoning: true,
|
|
80
|
-
input: ["text", "image"],
|
|
81
|
-
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
82
|
-
contextWindow: 200_000,
|
|
83
|
-
maxTokens: 64_000,
|
|
84
|
-
thinkingLevelMap: { minimal: null, low: "low", medium: "medium", high: "high", xhigh: "high" },
|
|
85
|
-
},
|
|
86
159
|
];
|
|
@@ -2,7 +2,7 @@ import { createHash, randomBytes } from "node:crypto";
|
|
|
2
2
|
import type { OAuthCredentials } from "@earendil-works/pi-ai";
|
|
3
3
|
import { DEFAULT_PROJECT_ID, LOAD_ENDPOINTS, REDIRECT_URI, SCOPES, TOKEN_EXPIRY_SKEW_MS, PROVIDER_ID } from "./constants";
|
|
4
4
|
import { accountFromCredential, clampAccountIndex, encodeApiKey, findMatchingAccountIndex, getAccountProjectId, getAccountRefreshToken, getGoogleOAuthClientCredentials, getPiAuthPath, getStoredAccounts, joinRefresh, readJsonFile, splitRefresh, writeJsonFileSecure } from "./auth-store";
|
|
5
|
-
import { getAntigravityHeaders } from "./headers";
|
|
5
|
+
import { getAntigravityBootstrapHeaders, getAntigravityHeaders, getAntigravityLoadCodeAssistMetadata } from "./headers";
|
|
6
6
|
import { notifyAntigravityLoginFailure } from "./status";
|
|
7
7
|
import type { AntigravityAddAccountResult, AntigravityFailoverCredential, AntigravityLoginCallbacks, GoogleOAuthClientCredentials, OpencodeAntigravityAccount, PiAuthCredential, PiAuthData, RefreshedAntigravityAccount } from "./types";
|
|
8
8
|
|
|
@@ -33,12 +33,7 @@ function assertGoogleOAuthCredentialsConfigured(credentials?: GoogleOAuthClientC
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
async function fetchProjectId(accessToken: string): Promise<string | undefined> {
|
|
36
|
-
const headers =
|
|
37
|
-
Authorization: `Bearer ${accessToken}`,
|
|
38
|
-
"Content-Type": "application/json",
|
|
39
|
-
...getAntigravityHeaders("gemini-cli"),
|
|
40
|
-
"Client-Metadata": getAntigravityHeaders()["Client-Metadata"],
|
|
41
|
-
};
|
|
36
|
+
const headers = getAntigravityBootstrapHeaders(accessToken);
|
|
42
37
|
|
|
43
38
|
for (const endpoint of LOAD_ENDPOINTS) {
|
|
44
39
|
try {
|
|
@@ -46,11 +41,7 @@ async function fetchProjectId(accessToken: string): Promise<string | undefined>
|
|
|
46
41
|
method: "POST",
|
|
47
42
|
headers,
|
|
48
43
|
body: JSON.stringify({
|
|
49
|
-
metadata:
|
|
50
|
-
ideType: "ANTIGRAVITY",
|
|
51
|
-
platform: process.platform === "win32" ? "WINDOWS" : "MACOS",
|
|
52
|
-
pluginType: "GEMINI",
|
|
53
|
-
},
|
|
44
|
+
metadata: getAntigravityLoadCodeAssistMetadata(),
|
|
54
45
|
}),
|
|
55
46
|
});
|
|
56
47
|
if (!response.ok) continue;
|
|
@@ -130,6 +121,7 @@ export async function loginAntigravity(callbacks: AntigravityLoginCallbacks, opt
|
|
|
130
121
|
headers: {
|
|
131
122
|
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
|
|
132
123
|
Accept: "*/*",
|
|
124
|
+
"Accept-Encoding": "gzip, deflate, br",
|
|
133
125
|
"User-Agent": getAntigravityHeaders("gemini-cli")["User-Agent"],
|
|
134
126
|
},
|
|
135
127
|
body: new URLSearchParams({
|
|
@@ -235,11 +227,7 @@ async function refreshAccountToken(
|
|
|
235
227
|
const response = await fetch("https://oauth2.googleapis.com/token", {
|
|
236
228
|
method: "POST",
|
|
237
229
|
signal,
|
|
238
|
-
headers: {
|
|
239
|
-
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
|
|
240
|
-
Accept: "*/*",
|
|
241
|
-
"User-Agent": getAntigravityHeaders("gemini-cli")["User-Agent"],
|
|
242
|
-
},
|
|
230
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
243
231
|
body: new URLSearchParams({
|
|
244
232
|
client_id: clientCredentials.clientId,
|
|
245
233
|
...(clientCredentials.clientSecret ? { client_secret: clientCredentials.clientSecret } : {}),
|
|
@@ -22,7 +22,10 @@ function supportsMultimodalFunctionResponse(modelId: string): boolean {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
function isGemini3Model(modelId: string): boolean {
|
|
25
|
-
|
|
25
|
+
// "gemini-pro-agent" is the Antigravity agent-mode route for Gemini 3.1 Pro;
|
|
26
|
+
// it needs the same thought-signature sentinel as the versioned gemini-3
|
|
27
|
+
// routes.
|
|
28
|
+
return /^gemini(?:-live)?-3(?:[.-]|$)/i.test(modelId) || /^gemini-pro-agent$/i.test(modelId);
|
|
26
29
|
}
|
|
27
30
|
|
|
28
31
|
function isValidThoughtSignature(signature: unknown): signature is string {
|
|
@@ -333,13 +336,51 @@ function geminiProThinkingLevel(modelId: string, headerStyle: HeaderStyle, level
|
|
|
333
336
|
return "low";
|
|
334
337
|
}
|
|
335
338
|
|
|
339
|
+
type FlashTier = "low" | "medium" | "high";
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* Live Antigravity routes for the versioned flash generations, keyed by the
|
|
343
|
+
* public (prefix-stripped) model id. Mirrors the upstream cortexkit
|
|
344
|
+
* model-resolver: each thinking tier maps to a distinct live route plus a
|
|
345
|
+
* numeric thinking budget (-1 = dynamic for 3.7/3.8). 3.5-flash has no
|
|
346
|
+
* per-tier routes of its own and rides the older gemini-3 routes instead.
|
|
347
|
+
*/
|
|
348
|
+
const ANTIGRAVITY_FLASH_ROUTES: Record<string, {
|
|
349
|
+
routes: Record<FlashTier, string>;
|
|
350
|
+
budgets: Record<FlashTier, number>;
|
|
351
|
+
}> = {
|
|
352
|
+
"gemini-3.8-flash": {
|
|
353
|
+
routes: { low: "gemini-3.8-flash-low", medium: "gemini-3.8-flash-medium", high: "gemini-3.8-flash-high" },
|
|
354
|
+
budgets: { low: -1, medium: -1, high: -1 },
|
|
355
|
+
},
|
|
356
|
+
"gemini-3.7-flash": {
|
|
357
|
+
routes: { low: "gemini-3.7-flash-low", medium: "gemini-3.7-flash-medium", high: "gemini-3.7-flash-high" },
|
|
358
|
+
budgets: { low: -1, medium: -1, high: -1 },
|
|
359
|
+
},
|
|
360
|
+
"gemini-3.6-flash": {
|
|
361
|
+
routes: { low: "gemini-3.6-flash-low", medium: "gemini-3.6-flash-medium", high: "gemini-3.6-flash-high" },
|
|
362
|
+
budgets: { low: 1_000, medium: 4_000, high: 10_000 },
|
|
363
|
+
},
|
|
364
|
+
"gemini-3.5-flash": {
|
|
365
|
+
routes: { low: "gemini-3.5-flash-extra-low", medium: "gemini-3.5-flash-low", high: "gemini-3-flash-agent" },
|
|
366
|
+
budgets: { low: 1_000, medium: 4_000, high: 10_000 },
|
|
367
|
+
},
|
|
368
|
+
};
|
|
369
|
+
|
|
370
|
+
function flashTier(level: "minimal" | "low" | "medium" | "high" | undefined): FlashTier {
|
|
371
|
+
if (level === "high") return "high";
|
|
372
|
+
if (level === undefined || level === "medium") return "medium";
|
|
373
|
+
return "low";
|
|
374
|
+
}
|
|
375
|
+
|
|
336
376
|
function resolveActualModel(
|
|
337
377
|
model: AntigravityModel,
|
|
338
378
|
options?: SimpleStreamOptions,
|
|
339
379
|
): { actualModel: string; thinkingConfig?: Record<string, unknown> } {
|
|
340
380
|
const headerStyle = getModelHeaderStyle(model);
|
|
341
381
|
const requested = model.id.replace(/^antigravity-/i, "");
|
|
342
|
-
const
|
|
382
|
+
const requestedLevel = reasoningLevel(options);
|
|
383
|
+
const level = requestedLevel ?? "low";
|
|
343
384
|
let effective = requested;
|
|
344
385
|
const requestedLower = requested.toLowerCase();
|
|
345
386
|
|
|
@@ -354,6 +395,27 @@ function resolveActualModel(
|
|
|
354
395
|
|
|
355
396
|
const lower = effective.toLowerCase();
|
|
356
397
|
|
|
398
|
+
if (headerStyle === "antigravity") {
|
|
399
|
+
// Current Antigravity catalog: versioned flash generations and 3.1 Pro
|
|
400
|
+
// route to per-tier live models with numeric thinking budgets. Requests
|
|
401
|
+
// without an explicit level default to the medium tier for flash.
|
|
402
|
+
const flash = ANTIGRAVITY_FLASH_ROUTES[lower];
|
|
403
|
+
if (flash) {
|
|
404
|
+
const tier = flashTier(requestedLevel);
|
|
405
|
+
return {
|
|
406
|
+
actualModel: flash.routes[tier],
|
|
407
|
+
thinkingConfig: { thinkingBudget: flash.budgets[tier], includeThoughts: true },
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
if (/^gemini-3\.1-pro$/.test(lower)) {
|
|
411
|
+
const high = level === "high";
|
|
412
|
+
return {
|
|
413
|
+
actualModel: high ? "gemini-pro-agent" : "gemini-3.1-pro-low",
|
|
414
|
+
thinkingConfig: { thinkingBudget: high ? 10_001 : 1_001, includeThoughts: true },
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
|
|
357
419
|
if (/^gemini-3(?:\.\d+)?-pro/.test(lower)) {
|
|
358
420
|
// Live Antigravity currently rejects gemini-3.1-pro-high with a generic
|
|
359
421
|
// 400 INVALID_ARGUMENT, while gemini-3.1-pro-low works. Keep the public
|
|
@@ -370,7 +432,11 @@ function resolveActualModel(
|
|
|
370
432
|
if (lower.includes("claude") && lower.includes("thinking")) {
|
|
371
433
|
const budgets = options?.thinkingBudgets ?? {};
|
|
372
434
|
const budget = budgetForLevel(level, budgets);
|
|
373
|
-
|
|
435
|
+
// Sonnet 4.6 thinking is served by the base claude-sonnet-4-6 route with
|
|
436
|
+
// thinking enabled via the budget, while Opus keeps a dedicated
|
|
437
|
+
// -thinking route.
|
|
438
|
+
const actualModel = /^claude-sonnet/.test(lower) ? effective.replace(/-thinking$/i, "") : effective;
|
|
439
|
+
return { actualModel, thinkingConfig: { thinking_budget: budget, include_thoughts: true } };
|
|
374
440
|
}
|
|
375
441
|
if (lower.includes("gemini-2.5")) {
|
|
376
442
|
const budgets = options?.thinkingBudgets ?? {};
|
|
@@ -415,9 +481,8 @@ export function buildPayload(model: AntigravityModel, context: Context, options?
|
|
|
415
481
|
}
|
|
416
482
|
|
|
417
483
|
export function extraHeadersForPayload(payload: Record<string, unknown>): Record<string, string> {
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
}
|
|
484
|
+
void payload;
|
|
485
|
+
// Native agy CLI content requests do not send anthropic-beta or the old
|
|
486
|
+
// Cloud SDK metadata headers. Thinking is encoded in generationConfig only.
|
|
422
487
|
return {};
|
|
423
488
|
}
|
|
@@ -71,7 +71,7 @@ async function sendAntigravityRequest(
|
|
|
71
71
|
const headers = new Headers({
|
|
72
72
|
Authorization: `Bearer ${apiKey}`,
|
|
73
73
|
"Content-Type": "application/json",
|
|
74
|
-
Accept: "text/event-stream",
|
|
74
|
+
...(headerStyle === "antigravity" ? { "Accept-Encoding": "gzip" } : { Accept: "text/event-stream" }),
|
|
75
75
|
...getAntigravityHeaders(headerStyle),
|
|
76
76
|
...requestHeaders,
|
|
77
77
|
});
|
|
@@ -79,6 +79,18 @@ async function sendAntigravityRequest(
|
|
|
79
79
|
if (value === null) headers.delete(name);
|
|
80
80
|
else headers.set(name, value);
|
|
81
81
|
}
|
|
82
|
+
if (headerStyle === "antigravity") {
|
|
83
|
+
// Match native agy content traffic and prevent host/provider headers from
|
|
84
|
+
// leaking into the Cloud Code proxy. x-goog-user-project in particular is
|
|
85
|
+
// known to turn otherwise valid requests into 403 responses.
|
|
86
|
+
headers.set("User-Agent", getAntigravityHeaders("antigravity")["User-Agent"]);
|
|
87
|
+
headers.set("Accept-Encoding", "gzip");
|
|
88
|
+
headers.delete("X-Goog-Api-Client");
|
|
89
|
+
headers.delete("Client-Metadata");
|
|
90
|
+
headers.delete("X-Goog-User-Project");
|
|
91
|
+
headers.delete("anthropic-beta");
|
|
92
|
+
headers.delete("Accept");
|
|
93
|
+
}
|
|
82
94
|
response = await fetch(`${endpoint}/v1internal:streamGenerateContent?alt=sse`, {
|
|
83
95
|
method: "POST",
|
|
84
96
|
signal: options?.signal,
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Independent frontier-model code review gate for substantive code changes made by a non-frontier parent. Use after implementation and targeted checks, before finalizing. Read-only review of the actual diff and surrounding code; use research for ordinary evidence gathering and oracle for architecture or high-stakes second opinions.
|
|
3
|
+
icon: eye
|
|
4
|
+
models: [openai-codex/gpt-5.6-sol, zai/glm-5.3]
|
|
5
|
+
notForParentModels: [openai-codex/gpt-5.6-sol*, zai/glm-5.3]
|
|
6
|
+
thinking: high
|
|
7
|
+
tools: [read, grep, bash]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Frontier code review
|
|
11
|
+
|
|
12
|
+
Review the implementation independently. Inspect the actual diff and the
|
|
13
|
+
surrounding contracts; do not accept the implementer's summary as evidence.
|
|
14
|
+
|
|
15
|
+
Look for correctness bugs, regressions, broken invariants, unsafe edge cases,
|
|
16
|
+
missing error handling, concurrency/state mistakes, security issues, and tests
|
|
17
|
+
that fail to cover a material behavior change. Prefer a small number of
|
|
18
|
+
actionable findings over stylistic commentary or speculative rewrites.
|
|
19
|
+
|
|
20
|
+
Do not edit source or tests. Run narrow read-only checks when they materially
|
|
21
|
+
increase confidence. For each finding, give severity, rationale, and precise
|
|
22
|
+
file/line evidence. If there are no findings, say so explicitly and name any
|
|
23
|
+
important residual risk or verification gap.
|
|
@@ -13,7 +13,7 @@ not broaden scope or make product/architecture decisions for the parent.
|
|
|
13
13
|
|
|
14
14
|
For UI work, preserve the existing design language and inspect supplied visual
|
|
15
15
|
references with an image-capable model. Report unavailable capabilities instead
|
|
16
|
-
of claiming visual verification. Actual
|
|
16
|
+
of claiming visual verification. Actual user-interface QA belongs to ui-qa.
|
|
17
17
|
|
|
18
18
|
Run relevant targeted checks and report changed paths plus their results. If
|
|
19
19
|
requirements conflict or the task exceeds your capabilities, stop with a
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
// Presets are available-model pools. Agent candidate order still comes from
|
|
3
|
+
// each agent's Markdown frontmatter; pool order never reorders candidates.
|
|
4
|
+
"cheap": {
|
|
5
|
+
"description": "GLM pool: economical workers plus GLM-5.3 for frontier-review/oracle.",
|
|
6
|
+
"models": ["zai/glm-5-turbo", "zai/glm-5.3-flash", "zai/glm-5.3"]
|
|
7
|
+
},
|
|
8
|
+
"gpt": {
|
|
9
|
+
"description": "GPT pool: Luna/Terra workers; Sol is available to frontier-review/oracle.",
|
|
10
|
+
"models": ["openai-codex/gpt-5.6-luna", "openai-codex/gpt-5.6-terra", "openai-codex/gpt-5.6-sol"]
|
|
11
|
+
},
|
|
12
|
+
"deep": {
|
|
13
|
+
"description": "Mixed pool; workers retain economical candidate order and frontier-review/oracle use strong models.",
|
|
14
|
+
"models": ["zai/glm-5-turbo", "zai/glm-5.3-flash", "openai-codex/gpt-5.6-luna", "openai-codex/gpt-5.6-terra", "openai-codex/gpt-5.6-sol", "zai/glm-5.3"]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Read-only evidence gathering - search files, trace behavior, investigate hypotheses, or
|
|
2
|
+
description: Read-only evidence gathering - search files, trace behavior, investigate hypotheses, or analyze a focused review question. Return findings with paths, not raw source. Use frontier-review for the post-implementation code-review gate when available, verify for running checks, and implement for changes.
|
|
3
3
|
icon: search
|
|
4
4
|
models: [zai/glm-5-turbo, openai-codex/gpt-5.6-luna]
|
|
5
5
|
thinking: low
|
|
@@ -9,8 +9,10 @@ tools: [read, grep]
|
|
|
9
9
|
# Research
|
|
10
10
|
|
|
11
11
|
Investigate the assigned question within scope. Read and compare evidence; do
|
|
12
|
-
not edit files or invent missing facts.
|
|
13
|
-
the
|
|
12
|
+
not edit files or invent missing facts. When assigned a review question, make
|
|
13
|
+
it a fresh investigation of the relevant code, not approval based on another
|
|
14
|
+
agent's summary. The broad post-implementation review gate belongs to
|
|
15
|
+
frontier-review when that role is available.
|
|
14
16
|
|
|
15
17
|
Return the answer and supporting file:line references, distinguishing confirmed
|
|
16
18
|
findings from hypotheses. Report gaps or a concrete blocker when the available
|