@tickernelz/paperclip-pro-adapter-grok-local 2026.925.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/LICENSE +22 -0
- package/dist/cli/format-event.d.ts +2 -0
- package/dist/cli/format-event.d.ts.map +1 -0
- package/dist/cli/format-event.js +55 -0
- package/dist/cli/format-event.js.map +1 -0
- package/dist/cli/format-event.test.d.ts +2 -0
- package/dist/cli/format-event.test.d.ts.map +1 -0
- package/dist/cli/format-event.test.js +19 -0
- package/dist/cli/format-event.test.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/server/adapter-auth-promotion.d.ts +87 -0
- package/dist/server/adapter-auth-promotion.d.ts.map +1 -0
- package/dist/server/adapter-auth-promotion.js +294 -0
- package/dist/server/adapter-auth-promotion.js.map +1 -0
- package/dist/server/adapter-auth-promotion.test.d.ts +2 -0
- package/dist/server/adapter-auth-promotion.test.d.ts.map +1 -0
- package/dist/server/adapter-auth-promotion.test.js +563 -0
- package/dist/server/adapter-auth-promotion.test.js.map +1 -0
- package/dist/server/device-login-parse.d.ts +23 -0
- package/dist/server/device-login-parse.d.ts.map +1 -0
- package/dist/server/device-login-parse.js +148 -0
- package/dist/server/device-login-parse.js.map +1 -0
- package/dist/server/device-login-parse.test.d.ts +2 -0
- package/dist/server/device-login-parse.test.d.ts.map +1 -0
- package/dist/server/device-login-parse.test.js +146 -0
- package/dist/server/device-login-parse.test.js.map +1 -0
- package/dist/server/execute.d.ts +3 -0
- package/dist/server/execute.d.ts.map +1 -0
- package/dist/server/execute.js +572 -0
- package/dist/server/execute.js.map +1 -0
- package/dist/server/execute.test.d.ts +2 -0
- package/dist/server/execute.test.d.ts.map +1 -0
- package/dist/server/execute.test.js +731 -0
- package/dist/server/execute.test.js.map +1 -0
- package/dist/server/grok-auth-copyback.d.ts +48 -0
- package/dist/server/grok-auth-copyback.d.ts.map +1 -0
- package/dist/server/grok-auth-copyback.js +92 -0
- package/dist/server/grok-auth-copyback.js.map +1 -0
- package/dist/server/grok-auth-copyback.test.d.ts +2 -0
- package/dist/server/grok-auth-copyback.test.d.ts.map +1 -0
- package/dist/server/grok-auth-copyback.test.js +246 -0
- package/dist/server/grok-auth-copyback.test.js.map +1 -0
- package/dist/server/grok-auth-merge-decision.cjs +157 -0
- package/dist/server/grok-auth-merge-decision.d.ts +21 -0
- package/dist/server/grok-auth-merge-decision.d.ts.map +1 -0
- package/dist/server/grok-auth-merge-decision.js +58 -0
- package/dist/server/grok-auth-merge-decision.js.map +1 -0
- package/dist/server/grok-auth-merge-decision.test.d.ts +2 -0
- package/dist/server/grok-auth-merge-decision.test.d.ts.map +1 -0
- package/dist/server/grok-auth-merge-decision.test.js +189 -0
- package/dist/server/grok-auth-merge-decision.test.js.map +1 -0
- package/dist/server/grok-home.d.ts +57 -0
- package/dist/server/grok-home.d.ts.map +1 -0
- package/dist/server/grok-home.js +145 -0
- package/dist/server/grok-home.js.map +1 -0
- package/dist/server/grok-home.test.d.ts +2 -0
- package/dist/server/grok-home.test.d.ts.map +1 -0
- package/dist/server/grok-home.test.js +109 -0
- package/dist/server/grok-home.test.js.map +1 -0
- package/dist/server/index.d.ts +12 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +67 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/parse.d.ts +15 -0
- package/dist/server/parse.d.ts.map +1 -0
- package/dist/server/parse.js +93 -0
- package/dist/server/parse.js.map +1 -0
- package/dist/server/parse.test.d.ts +2 -0
- package/dist/server/parse.test.d.ts.map +1 -0
- package/dist/server/parse.test.js +82 -0
- package/dist/server/parse.test.js.map +1 -0
- package/dist/server/skills.d.ts +4 -0
- package/dist/server/skills.d.ts.map +1 -0
- package/dist/server/skills.js +21 -0
- package/dist/server/skills.js.map +1 -0
- package/dist/server/test.d.ts +9 -0
- package/dist/server/test.d.ts.map +1 -0
- package/dist/server/test.js +362 -0
- package/dist/server/test.js.map +1 -0
- package/dist/server/test.test.d.ts +2 -0
- package/dist/server/test.test.d.ts.map +1 -0
- package/dist/server/test.test.js +293 -0
- package/dist/server/test.test.js.map +1 -0
- package/dist/shared/turn-boundary.d.ts +7 -0
- package/dist/shared/turn-boundary.d.ts.map +1 -0
- package/dist/shared/turn-boundary.js +44 -0
- package/dist/shared/turn-boundary.js.map +1 -0
- package/dist/shared/turn-boundary.test.d.ts +2 -0
- package/dist/shared/turn-boundary.test.d.ts.map +1 -0
- package/dist/shared/turn-boundary.test.js +43 -0
- package/dist/shared/turn-boundary.test.js.map +1 -0
- package/dist/ui/build-config.d.ts +3 -0
- package/dist/ui/build-config.d.ts.map +1 -0
- package/dist/ui/build-config.js +29 -0
- package/dist/ui/build-config.js.map +1 -0
- package/dist/ui/build-config.test.d.ts +2 -0
- package/dist/ui/build-config.test.d.ts.map +1 -0
- package/dist/ui/build-config.test.js +26 -0
- package/dist/ui/build-config.test.js.map +1 -0
- package/dist/ui/index.d.ts +3 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +3 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/parse-stdout.d.ts +7 -0
- package/dist/ui/parse-stdout.d.ts.map +1 -0
- package/dist/ui/parse-stdout.js +76 -0
- package/dist/ui/parse-stdout.js.map +1 -0
- package/dist/ui/parse-stdout.test.d.ts +2 -0
- package/dist/ui/parse-stdout.test.d.ts.map +1 -0
- package/dist/ui/parse-stdout.test.js +62 -0
- package/dist/ui/parse-stdout.test.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/server/skills.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKzC,OAAO,EACL,gCAAgC,EAChC,gCAAgC,EAChC,uCAAuC,GACxC,MAAM,sDAAsD,CAAC;AAE9D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEjE,KAAK,UAAU,sBAAsB,CACnC,MAA+B;IAE/B,MAAM,gBAAgB,GAAG,MAAM,gCAAgC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrF,MAAM,aAAa,GAAG,uCAAuC,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACxF,OAAO,gCAAgC,CAAC;QACtC,WAAW,EAAE,YAAY;QACzB,gBAAgB;QAChB,aAAa;QACb,gBAAgB,EAAE,kFAAkF;KACrG,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAwB;IAC3D,OAAO,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAwB,EACxB,cAAwB;IAExB,OAAO,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AdapterEnvironmentTestContext, AdapterEnvironmentTestResult } from "@tickernelz/paperclip-pro-adapter-utils";
|
|
2
|
+
export interface GrokModelsProbe {
|
|
3
|
+
authenticated: boolean;
|
|
4
|
+
defaultModel: string | null;
|
|
5
|
+
models: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare function parseGrokModelsOutput(stdout: string): GrokModelsProbe;
|
|
8
|
+
export declare function testEnvironment(ctx: AdapterEnvironmentTestContext): Promise<AdapterEnvironmentTestResult>;
|
|
9
|
+
//# sourceMappingURL=test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/server/test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,6BAA6B,EAC7B,4BAA4B,EAC7B,MAAM,yCAAyC,CAAC;AAyBjD,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAqCD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAqCrE;AAED,wBAAsB,eAAe,CACnC,GAAG,EAAE,6BAA6B,GACjC,OAAO,CAAC,4BAA4B,CAAC,CAsSvC"}
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
import { asNumber, asString, ensurePathInEnv, parseObject, } from "@tickernelz/paperclip-pro-adapter-utils/server-utils";
|
|
2
|
+
import { describeAdapterExecutionTarget, prepareAdapterExecutionTargetRuntime, ensureAdapterExecutionTargetCommandResolvable, ensureAdapterExecutionTargetDirectory, resolveAdapterExecutionTargetCwd, runAdapterExecutionTargetProcess, } from "@tickernelz/paperclip-pro-adapter-utils/execution-target";
|
|
3
|
+
import { mkdtemp, rm } from "node:fs/promises";
|
|
4
|
+
import os from "node:os";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import { stageGrokHomeForSync } from "./grok-home.js";
|
|
7
|
+
import { copyBackGrokAuth } from "./grok-auth-copyback.js";
|
|
8
|
+
import { DEFAULT_GROK_LOCAL_MODEL } from "../index.js";
|
|
9
|
+
import { parseGrokJsonl } from "./parse.js";
|
|
10
|
+
import { ADAPTER_AUTH_MISSING_CHECK_CODE } from "@tickernelz/paperclip-pro-shared";
|
|
11
|
+
function summarizeStatus(checks) {
|
|
12
|
+
if (checks.some((check) => check.level === "error"))
|
|
13
|
+
return "fail";
|
|
14
|
+
if (checks.some((check) => check.level === "warn"))
|
|
15
|
+
return "warn";
|
|
16
|
+
return "pass";
|
|
17
|
+
}
|
|
18
|
+
function firstNonEmptyLine(text) {
|
|
19
|
+
return (text
|
|
20
|
+
.split(/\r?\n/)
|
|
21
|
+
.map((line) => line.trim())
|
|
22
|
+
.find(Boolean) ?? "");
|
|
23
|
+
}
|
|
24
|
+
function summarizeProbeDetail(stdout, stderr, parsedError) {
|
|
25
|
+
const raw = parsedError?.trim() || firstNonEmptyLine(stderr) || firstNonEmptyLine(stdout);
|
|
26
|
+
if (!raw)
|
|
27
|
+
return null;
|
|
28
|
+
const clean = raw.replace(/\s+/g, " ").trim();
|
|
29
|
+
const max = 240;
|
|
30
|
+
return clean.length > max ? `${clean.slice(0, max - 3)}...` : clean;
|
|
31
|
+
}
|
|
32
|
+
function normalizeEnv(input) {
|
|
33
|
+
if (typeof input !== "object" || input === null || Array.isArray(input))
|
|
34
|
+
return {};
|
|
35
|
+
const env = {};
|
|
36
|
+
for (const [key, value] of Object.entries(input)) {
|
|
37
|
+
if (typeof value === "string")
|
|
38
|
+
env[key] = value;
|
|
39
|
+
}
|
|
40
|
+
return env;
|
|
41
|
+
}
|
|
42
|
+
const GROK_AUTH_REQUIRED_RE = /(?:not\s+logged\s+in|login\s+required|run\s+`?grok\s+login`?|authentication\s+required|unauthorized|invalid\s+credentials)/i;
|
|
43
|
+
export function parseGrokModelsOutput(stdout) {
|
|
44
|
+
const trimmedLines = stdout
|
|
45
|
+
.split(/\r?\n/)
|
|
46
|
+
.map((line) => line.trim())
|
|
47
|
+
.filter(Boolean);
|
|
48
|
+
const models = [];
|
|
49
|
+
let defaultModel = null;
|
|
50
|
+
let authenticated = false;
|
|
51
|
+
let inModelsBlock = false;
|
|
52
|
+
for (const line of trimmedLines) {
|
|
53
|
+
if (/logged in/i.test(line))
|
|
54
|
+
authenticated = true;
|
|
55
|
+
const defaultMatch = /^Default model:\s*(.+)$/i.exec(line);
|
|
56
|
+
if (defaultMatch?.[1]) {
|
|
57
|
+
defaultModel = defaultMatch[1].trim();
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
if (/^Available models:/i.test(line)) {
|
|
61
|
+
inModelsBlock = true;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (!inModelsBlock)
|
|
65
|
+
continue;
|
|
66
|
+
const bulletMatch = /^[*-]\s*(.+?)(?:\s+\(default\))?$/.exec(line);
|
|
67
|
+
if (bulletMatch?.[1]) {
|
|
68
|
+
models.push(bulletMatch[1].trim());
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (line.length > 0) {
|
|
72
|
+
models.push(line.replace(/\s+\(default\)$/, "").trim());
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
authenticated,
|
|
77
|
+
defaultModel,
|
|
78
|
+
models: Array.from(new Set(models.filter(Boolean))),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export async function testEnvironment(ctx) {
|
|
82
|
+
const checks = [];
|
|
83
|
+
const config = parseObject(ctx.config);
|
|
84
|
+
const command = asString(config.command, "grok");
|
|
85
|
+
const target = ctx.executionTarget ?? null;
|
|
86
|
+
const targetIsRemote = target?.kind === "remote";
|
|
87
|
+
const targetIsSandbox = target?.kind === "remote" && target.transport === "sandbox";
|
|
88
|
+
const cwd = resolveAdapterExecutionTargetCwd(target, asString(config.cwd, ""), process.cwd());
|
|
89
|
+
const targetLabel = targetIsRemote
|
|
90
|
+
? ctx.environmentName ?? describeAdapterExecutionTarget(target)
|
|
91
|
+
: null;
|
|
92
|
+
const runId = `grok-envtest-${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
93
|
+
if (targetLabel) {
|
|
94
|
+
checks.push({
|
|
95
|
+
code: "grok_environment_target",
|
|
96
|
+
level: "info",
|
|
97
|
+
message: `Probing inside environment: ${targetLabel}`,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
await ensureAdapterExecutionTargetDirectory(runId, target, cwd, {
|
|
102
|
+
cwd,
|
|
103
|
+
env: {},
|
|
104
|
+
createIfMissing: true,
|
|
105
|
+
});
|
|
106
|
+
checks.push({
|
|
107
|
+
code: "grok_cwd_valid",
|
|
108
|
+
level: "info",
|
|
109
|
+
message: `Working directory is valid: ${cwd}`,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
checks.push({
|
|
114
|
+
code: "grok_cwd_invalid",
|
|
115
|
+
level: "error",
|
|
116
|
+
message: err instanceof Error ? err.message : "Invalid working directory",
|
|
117
|
+
detail: cwd,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
const env = normalizeEnv(config.env);
|
|
121
|
+
let stagedHome;
|
|
122
|
+
let runtimeWorkspaceLocalDir;
|
|
123
|
+
let restore;
|
|
124
|
+
try {
|
|
125
|
+
if (config.managedAiConnection && targetIsRemote) {
|
|
126
|
+
try {
|
|
127
|
+
const hostHome = env.GROK_HOME;
|
|
128
|
+
stagedHome = await stageGrokHomeForSync(hostHome, { runId });
|
|
129
|
+
// `cwd` is the remote target path here, never a host directory, so the
|
|
130
|
+
// runtime gets an empty host workspace to stage from and the remote
|
|
131
|
+
// path separately — the same split codex-local and opencode-local
|
|
132
|
+
// draw. Handing it the remote path as `workspaceLocalDir` made the
|
|
133
|
+
// host-side ignore scan fail on a directory that does not exist.
|
|
134
|
+
runtimeWorkspaceLocalDir = await mkdtemp(path.join(os.tmpdir(), `paperclip-grok-envtest-${runId}-`));
|
|
135
|
+
const prepared = await prepareAdapterExecutionTargetRuntime({
|
|
136
|
+
runId, target, adapterKey: "grok",
|
|
137
|
+
workspaceLocalDir: runtimeWorkspaceLocalDir,
|
|
138
|
+
workspaceRemoteDir: cwd,
|
|
139
|
+
assets: [{ key: "home", localDir: stagedHome, followSymlinks: true,
|
|
140
|
+
restore: async ({ assetDir, readFile }) => {
|
|
141
|
+
await copyBackGrokAuth({
|
|
142
|
+
readSandboxAuth: () => readFile(path.posix.join(assetDir, "auth.json")),
|
|
143
|
+
hostHomeDir: hostHome, log: () => { },
|
|
144
|
+
});
|
|
145
|
+
},
|
|
146
|
+
}],
|
|
147
|
+
});
|
|
148
|
+
env.GROK_HOME = prepared.assetDirs.home;
|
|
149
|
+
restore = () => prepared.restoreWorkspace(() => { });
|
|
150
|
+
}
|
|
151
|
+
catch (err) {
|
|
152
|
+
// The environment test reports what is wrong with the environment; a
|
|
153
|
+
// credential-staging failure is a finding, not a crash.
|
|
154
|
+
checks.push({
|
|
155
|
+
code: "grok_environment_unprepared",
|
|
156
|
+
level: "error",
|
|
157
|
+
message: err instanceof Error ? err.message : "Could not stage the managed account into the environment",
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
const runtimeEnv = ensurePathInEnv({ ...process.env, ...env });
|
|
162
|
+
try {
|
|
163
|
+
await ensureAdapterExecutionTargetCommandResolvable(command, target, cwd, runtimeEnv);
|
|
164
|
+
checks.push({
|
|
165
|
+
code: "grok_command_resolvable",
|
|
166
|
+
level: "info",
|
|
167
|
+
message: `Command is executable: ${command}`,
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
checks.push({
|
|
172
|
+
code: "grok_command_unresolvable",
|
|
173
|
+
level: "error",
|
|
174
|
+
message: err instanceof Error ? err.message : "Command is not executable",
|
|
175
|
+
detail: command,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
const canRunProbe = checks.every((check) => check.code !== "grok_cwd_invalid" &&
|
|
179
|
+
check.code !== "grok_command_unresolvable" &&
|
|
180
|
+
check.code !== "grok_environment_unprepared");
|
|
181
|
+
const configuredModel = asString(config.model, DEFAULT_GROK_LOCAL_MODEL).trim();
|
|
182
|
+
if (canRunProbe) {
|
|
183
|
+
const modelsProbe = await runAdapterExecutionTargetProcess(runId, target, command, ["models"], {
|
|
184
|
+
cwd,
|
|
185
|
+
env,
|
|
186
|
+
timeoutSec: Math.max(1, asNumber(config.helloProbeTimeoutSec, 45)),
|
|
187
|
+
graceSec: 5,
|
|
188
|
+
onLog: async () => { },
|
|
189
|
+
});
|
|
190
|
+
const probeOutput = `${modelsProbe.stdout}\n${modelsProbe.stderr}`;
|
|
191
|
+
const parsedModels = parseGrokModelsOutput(modelsProbe.stdout);
|
|
192
|
+
const authRequired = GROK_AUTH_REQUIRED_RE.test(probeOutput);
|
|
193
|
+
if (modelsProbe.timedOut) {
|
|
194
|
+
checks.push({
|
|
195
|
+
code: "grok_models_probe_timed_out",
|
|
196
|
+
level: "warn",
|
|
197
|
+
message: "`grok models` timed out.",
|
|
198
|
+
hint: "Retry the probe. If this persists, run `grok models` manually from the target environment.",
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
else if ((modelsProbe.exitCode ?? 1) !== 0) {
|
|
202
|
+
checks.push({
|
|
203
|
+
code: authRequired ? "grok_auth_required" : "grok_models_probe_failed",
|
|
204
|
+
level: authRequired ? "warn" : "error",
|
|
205
|
+
message: authRequired
|
|
206
|
+
? "Grok CLI is not authenticated."
|
|
207
|
+
: "`grok models` failed.",
|
|
208
|
+
detail: summarizeProbeDetail(modelsProbe.stdout, modelsProbe.stderr, null),
|
|
209
|
+
hint: authRequired ? "Run `grok login` on the target host, then retry." : undefined,
|
|
210
|
+
});
|
|
211
|
+
if (authRequired && targetIsSandbox) {
|
|
212
|
+
// Emit the neutral canonical check so the user interface can decide
|
|
213
|
+
// login eligibility from a stable code. The user interface does not
|
|
214
|
+
// read the message text or the top-level status.
|
|
215
|
+
checks.push({
|
|
216
|
+
code: ADAPTER_AUTH_MISSING_CHECK_CODE,
|
|
217
|
+
level: "warn",
|
|
218
|
+
message: "This environment has no ready authentication for this adapter.",
|
|
219
|
+
detail: summarizeProbeDetail(modelsProbe.stdout, modelsProbe.stderr, null),
|
|
220
|
+
hint: "Provide credentials for this adapter, or start login in the environment.",
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
checks.push({
|
|
226
|
+
code: "grok_models_probe_passed",
|
|
227
|
+
level: "info",
|
|
228
|
+
message: parsedModels.authenticated
|
|
229
|
+
? "Grok CLI authentication is configured."
|
|
230
|
+
: "`grok models` completed.",
|
|
231
|
+
detail: parsedModels.defaultModel ? `Default model: ${parsedModels.defaultModel}` : undefined,
|
|
232
|
+
});
|
|
233
|
+
if (parsedModels.models.length > 0) {
|
|
234
|
+
checks.push({
|
|
235
|
+
code: "grok_models_discovered",
|
|
236
|
+
level: "info",
|
|
237
|
+
message: `Discovered ${parsedModels.models.length} Grok model(s).`,
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
checks.push({
|
|
242
|
+
code: "grok_models_empty",
|
|
243
|
+
level: "warn",
|
|
244
|
+
message: "Grok returned no available models.",
|
|
245
|
+
hint: "Run `grok models` manually and verify the account has access to a model.",
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
if (configuredModel) {
|
|
249
|
+
// The default model id is a sentinel meaning "let the Grok CLI pick its
|
|
250
|
+
// own default" — execute.ts only passes `--model` when the value differs
|
|
251
|
+
// from it, so the sentinel is never sent to grok and must not be checked
|
|
252
|
+
// against the discovered list (real grok never lists "grok-build", which
|
|
253
|
+
// otherwise produced a spurious "not found" warning on every probe).
|
|
254
|
+
const usesCliDefault = configuredModel === DEFAULT_GROK_LOCAL_MODEL;
|
|
255
|
+
const available = usesCliDefault || parsedModels.models.includes(configuredModel);
|
|
256
|
+
checks.push({
|
|
257
|
+
code: available ? "grok_model_configured" : "grok_model_not_found",
|
|
258
|
+
level: available ? "info" : "warn",
|
|
259
|
+
message: usesCliDefault
|
|
260
|
+
? `Using the Grok CLI's default model${parsedModels.defaultModel ? ` (${parsedModels.defaultModel})` : ""}.`
|
|
261
|
+
: available
|
|
262
|
+
? `Configured model: ${configuredModel}`
|
|
263
|
+
: `Configured model "${configuredModel}" not found in available models.`,
|
|
264
|
+
hint: available ? undefined : "Run `grok models` and choose an available model id.",
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
if (canRunProbe) {
|
|
270
|
+
const probeArgs = [
|
|
271
|
+
"--output-format",
|
|
272
|
+
"streaming-json",
|
|
273
|
+
"--always-approve",
|
|
274
|
+
"--permission-mode",
|
|
275
|
+
"dontAsk",
|
|
276
|
+
"--disable-web-search",
|
|
277
|
+
];
|
|
278
|
+
if (configuredModel && configuredModel !== DEFAULT_GROK_LOCAL_MODEL) {
|
|
279
|
+
probeArgs.push("--model", configuredModel);
|
|
280
|
+
}
|
|
281
|
+
probeArgs.push("--single", "Respond with exactly hello.");
|
|
282
|
+
const helloProbe = await runAdapterExecutionTargetProcess(runId, target, command, probeArgs, {
|
|
283
|
+
cwd,
|
|
284
|
+
env,
|
|
285
|
+
timeoutSec: Math.max(1, asNumber(config.helloProbeTimeoutSec, 45)),
|
|
286
|
+
graceSec: 5,
|
|
287
|
+
onLog: async () => { },
|
|
288
|
+
});
|
|
289
|
+
const parsed = parseGrokJsonl(helloProbe.stdout);
|
|
290
|
+
const detail = summarizeProbeDetail(helloProbe.stdout, helloProbe.stderr, parsed.errorMessage);
|
|
291
|
+
const authRequired = GROK_AUTH_REQUIRED_RE.test(`${helloProbe.stdout}\n${helloProbe.stderr}`);
|
|
292
|
+
if (helloProbe.timedOut) {
|
|
293
|
+
checks.push({
|
|
294
|
+
code: "grok_hello_probe_timed_out",
|
|
295
|
+
level: "warn",
|
|
296
|
+
message: "Grok hello probe timed out.",
|
|
297
|
+
hint: "Retry the probe. If this persists, verify Grok can run a simple `--single` prompt manually.",
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
else if ((helloProbe.exitCode ?? 1) !== 0) {
|
|
301
|
+
checks.push({
|
|
302
|
+
code: authRequired ? "grok_hello_probe_auth_required" : "grok_hello_probe_failed",
|
|
303
|
+
level: authRequired ? "warn" : "error",
|
|
304
|
+
message: authRequired
|
|
305
|
+
? "Grok CLI could not answer the hello probe because authentication is missing."
|
|
306
|
+
: "Grok hello probe failed.",
|
|
307
|
+
...(detail ? { detail } : {}),
|
|
308
|
+
hint: authRequired ? "Run `grok login` on the target host, then retry." : undefined,
|
|
309
|
+
});
|
|
310
|
+
if (authRequired && targetIsSandbox) {
|
|
311
|
+
// Emit the neutral canonical check so the user interface can decide
|
|
312
|
+
// login eligibility from a stable code. The user interface does not
|
|
313
|
+
// read the message text or the top-level status.
|
|
314
|
+
checks.push({
|
|
315
|
+
code: ADAPTER_AUTH_MISSING_CHECK_CODE,
|
|
316
|
+
level: "warn",
|
|
317
|
+
message: "This environment has no ready authentication for this adapter.",
|
|
318
|
+
...(detail ? { detail } : {}),
|
|
319
|
+
hint: "Provide credentials for this adapter, or start login in the environment.",
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
else if (/\bhello\b/i.test(parsed.summary)) {
|
|
324
|
+
checks.push({
|
|
325
|
+
code: "grok_hello_probe_passed",
|
|
326
|
+
level: "info",
|
|
327
|
+
message: "Grok hello probe succeeded.",
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
checks.push({
|
|
332
|
+
code: "grok_hello_probe_unexpected_output",
|
|
333
|
+
level: "warn",
|
|
334
|
+
message: "Grok hello probe succeeded but returned unexpected output.",
|
|
335
|
+
...(detail ? { detail } : {}),
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return {
|
|
340
|
+
adapterType: "grok_local",
|
|
341
|
+
status: summarizeStatus(checks),
|
|
342
|
+
checks,
|
|
343
|
+
testedAt: new Date().toISOString(),
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
finally {
|
|
347
|
+
try {
|
|
348
|
+
await restore?.();
|
|
349
|
+
}
|
|
350
|
+
finally {
|
|
351
|
+
// Both temporary directories are removed even when one removal fails,
|
|
352
|
+
// and neither failure turns an answered environment test into a thrown
|
|
353
|
+
// error: these are best-effort temp directories, and the caller asked
|
|
354
|
+
// for checks.
|
|
355
|
+
await Promise.allSettled([
|
|
356
|
+
stagedHome ? rm(stagedHome, { recursive: true, force: true }) : undefined,
|
|
357
|
+
runtimeWorkspaceLocalDir ? rm(runtimeWorkspaceLocalDir, { recursive: true, force: true }) : undefined,
|
|
358
|
+
]);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/server/test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.test.d.ts","sourceRoot":"","sources":["../../src/server/test.test.ts"],"names":[],"mappings":""}
|