@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.
Files changed (119) hide show
  1. package/LICENSE +22 -0
  2. package/dist/cli/format-event.d.ts +2 -0
  3. package/dist/cli/format-event.d.ts.map +1 -0
  4. package/dist/cli/format-event.js +55 -0
  5. package/dist/cli/format-event.js.map +1 -0
  6. package/dist/cli/format-event.test.d.ts +2 -0
  7. package/dist/cli/format-event.test.d.ts.map +1 -0
  8. package/dist/cli/format-event.test.js +19 -0
  9. package/dist/cli/format-event.test.js.map +1 -0
  10. package/dist/cli/index.d.ts +2 -0
  11. package/dist/cli/index.d.ts.map +1 -0
  12. package/dist/cli/index.js +2 -0
  13. package/dist/cli/index.js.map +1 -0
  14. package/dist/index.d.ts +10 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +53 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/server/adapter-auth-promotion.d.ts +87 -0
  19. package/dist/server/adapter-auth-promotion.d.ts.map +1 -0
  20. package/dist/server/adapter-auth-promotion.js +294 -0
  21. package/dist/server/adapter-auth-promotion.js.map +1 -0
  22. package/dist/server/adapter-auth-promotion.test.d.ts +2 -0
  23. package/dist/server/adapter-auth-promotion.test.d.ts.map +1 -0
  24. package/dist/server/adapter-auth-promotion.test.js +563 -0
  25. package/dist/server/adapter-auth-promotion.test.js.map +1 -0
  26. package/dist/server/device-login-parse.d.ts +23 -0
  27. package/dist/server/device-login-parse.d.ts.map +1 -0
  28. package/dist/server/device-login-parse.js +148 -0
  29. package/dist/server/device-login-parse.js.map +1 -0
  30. package/dist/server/device-login-parse.test.d.ts +2 -0
  31. package/dist/server/device-login-parse.test.d.ts.map +1 -0
  32. package/dist/server/device-login-parse.test.js +146 -0
  33. package/dist/server/device-login-parse.test.js.map +1 -0
  34. package/dist/server/execute.d.ts +3 -0
  35. package/dist/server/execute.d.ts.map +1 -0
  36. package/dist/server/execute.js +572 -0
  37. package/dist/server/execute.js.map +1 -0
  38. package/dist/server/execute.test.d.ts +2 -0
  39. package/dist/server/execute.test.d.ts.map +1 -0
  40. package/dist/server/execute.test.js +731 -0
  41. package/dist/server/execute.test.js.map +1 -0
  42. package/dist/server/grok-auth-copyback.d.ts +48 -0
  43. package/dist/server/grok-auth-copyback.d.ts.map +1 -0
  44. package/dist/server/grok-auth-copyback.js +92 -0
  45. package/dist/server/grok-auth-copyback.js.map +1 -0
  46. package/dist/server/grok-auth-copyback.test.d.ts +2 -0
  47. package/dist/server/grok-auth-copyback.test.d.ts.map +1 -0
  48. package/dist/server/grok-auth-copyback.test.js +246 -0
  49. package/dist/server/grok-auth-copyback.test.js.map +1 -0
  50. package/dist/server/grok-auth-merge-decision.cjs +157 -0
  51. package/dist/server/grok-auth-merge-decision.d.ts +21 -0
  52. package/dist/server/grok-auth-merge-decision.d.ts.map +1 -0
  53. package/dist/server/grok-auth-merge-decision.js +58 -0
  54. package/dist/server/grok-auth-merge-decision.js.map +1 -0
  55. package/dist/server/grok-auth-merge-decision.test.d.ts +2 -0
  56. package/dist/server/grok-auth-merge-decision.test.d.ts.map +1 -0
  57. package/dist/server/grok-auth-merge-decision.test.js +189 -0
  58. package/dist/server/grok-auth-merge-decision.test.js.map +1 -0
  59. package/dist/server/grok-home.d.ts +57 -0
  60. package/dist/server/grok-home.d.ts.map +1 -0
  61. package/dist/server/grok-home.js +145 -0
  62. package/dist/server/grok-home.js.map +1 -0
  63. package/dist/server/grok-home.test.d.ts +2 -0
  64. package/dist/server/grok-home.test.d.ts.map +1 -0
  65. package/dist/server/grok-home.test.js +109 -0
  66. package/dist/server/grok-home.test.js.map +1 -0
  67. package/dist/server/index.d.ts +12 -0
  68. package/dist/server/index.d.ts.map +1 -0
  69. package/dist/server/index.js +67 -0
  70. package/dist/server/index.js.map +1 -0
  71. package/dist/server/parse.d.ts +15 -0
  72. package/dist/server/parse.d.ts.map +1 -0
  73. package/dist/server/parse.js +93 -0
  74. package/dist/server/parse.js.map +1 -0
  75. package/dist/server/parse.test.d.ts +2 -0
  76. package/dist/server/parse.test.d.ts.map +1 -0
  77. package/dist/server/parse.test.js +82 -0
  78. package/dist/server/parse.test.js.map +1 -0
  79. package/dist/server/skills.d.ts +4 -0
  80. package/dist/server/skills.d.ts.map +1 -0
  81. package/dist/server/skills.js +21 -0
  82. package/dist/server/skills.js.map +1 -0
  83. package/dist/server/test.d.ts +9 -0
  84. package/dist/server/test.d.ts.map +1 -0
  85. package/dist/server/test.js +362 -0
  86. package/dist/server/test.js.map +1 -0
  87. package/dist/server/test.test.d.ts +2 -0
  88. package/dist/server/test.test.d.ts.map +1 -0
  89. package/dist/server/test.test.js +293 -0
  90. package/dist/server/test.test.js.map +1 -0
  91. package/dist/shared/turn-boundary.d.ts +7 -0
  92. package/dist/shared/turn-boundary.d.ts.map +1 -0
  93. package/dist/shared/turn-boundary.js +44 -0
  94. package/dist/shared/turn-boundary.js.map +1 -0
  95. package/dist/shared/turn-boundary.test.d.ts +2 -0
  96. package/dist/shared/turn-boundary.test.d.ts.map +1 -0
  97. package/dist/shared/turn-boundary.test.js +43 -0
  98. package/dist/shared/turn-boundary.test.js.map +1 -0
  99. package/dist/ui/build-config.d.ts +3 -0
  100. package/dist/ui/build-config.d.ts.map +1 -0
  101. package/dist/ui/build-config.js +29 -0
  102. package/dist/ui/build-config.js.map +1 -0
  103. package/dist/ui/build-config.test.d.ts +2 -0
  104. package/dist/ui/build-config.test.d.ts.map +1 -0
  105. package/dist/ui/build-config.test.js +26 -0
  106. package/dist/ui/build-config.test.js.map +1 -0
  107. package/dist/ui/index.d.ts +3 -0
  108. package/dist/ui/index.d.ts.map +1 -0
  109. package/dist/ui/index.js +3 -0
  110. package/dist/ui/index.js.map +1 -0
  111. package/dist/ui/parse-stdout.d.ts +7 -0
  112. package/dist/ui/parse-stdout.d.ts.map +1 -0
  113. package/dist/ui/parse-stdout.js +76 -0
  114. package/dist/ui/parse-stdout.js.map +1 -0
  115. package/dist/ui/parse-stdout.test.d.ts +2 -0
  116. package/dist/ui/parse-stdout.test.d.ts.map +1 -0
  117. package/dist/ui/parse-stdout.test.js +62 -0
  118. package/dist/ui/parse-stdout.test.js.map +1 -0
  119. package/package.json +58 -0
@@ -0,0 +1,572 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { adapterExecutionTargetIsRemote, adapterExecutionTargetRemoteCwd, adapterExecutionTargetSessionIdentity, adapterExecutionTargetSessionMatches, describeAdapterExecutionTarget, ensureAdapterExecutionTargetCommandResolvable, ensureAdapterExecutionTargetRuntimeCommandInstalled, overrideAdapterExecutionTargetRemoteCwd, prepareAdapterExecutionTargetRuntime, readAdapterExecutionTarget, resolveAdapterExecutionTargetCommandForLogs, resolveAdapterExecutionTargetTimeoutSec, runAdapterExecutionTargetProcess, } from "@tickernelz/paperclip-pro-adapter-utils/execution-target";
5
+ import { asBoolean, asNumber, asString, asStringArray, buildInvocationEnvForLogs, buildPaperclipEnv, buildRuntimeToolsEnv, ensureAbsoluteDirectory, ensurePathInEnv, joinPromptSections, materializePaperclipSkillCopy, parseObject, readPaperclipIssueWorkModeFromContext, readPaperclipRuntimeSkillEntries, renderTemplate, renderPaperclipWakePrompt, selectPaperclipTaskMarkdown, selectInitialCommunicationGuidance, isPaperclipRecoveryWakePayload, resolveLegacyPaperclipDesiredSkillNames, refreshPaperclipWorkspaceEnvForExecution, DEFAULT_PAPERCLIP_AGENT_PROMPT_TEMPLATE, DEFAULT_PAPERCLIP_CONVERSATION_PROMPT_TEMPLATE, } from "@tickernelz/paperclip-pro-adapter-utils/server-utils";
6
+ import { DEFAULT_GROK_LOCAL_MODEL } from "../index.js";
7
+ import { copyBackGrokAuth } from "./grok-auth-copyback.js";
8
+ import { grokHomeHasUsableAuth, resolveManagedGrokHomeDir, stageGrokHomeForSync } from "./grok-home.js";
9
+ import { isGrokUnknownSessionError, parseGrokJsonl } from "./parse.js";
10
+ const __moduleDir = path.dirname(fileURLToPath(import.meta.url));
11
+ function firstNonEmptyLine(text) {
12
+ return (text
13
+ .split(/\r?\n/)
14
+ .map((line) => line.trim())
15
+ .find(Boolean) ?? "");
16
+ }
17
+ function hasNonEmptyEnvValue(env, key) {
18
+ const raw = env[key];
19
+ return typeof raw === "string" && raw.trim().length > 0;
20
+ }
21
+ function renderPaperclipEnvNote(env) {
22
+ const paperclipKeys = Object.keys(env)
23
+ .filter((key) => key.startsWith("PAPERCLIP_"))
24
+ .sort();
25
+ if (paperclipKeys.length === 0)
26
+ return "";
27
+ return [
28
+ "Paperclip runtime note:",
29
+ `The following PAPERCLIP_* environment variables are available in this run: ${paperclipKeys.join(", ")}`,
30
+ "Do not assume these variables are missing without checking your shell environment.",
31
+ "",
32
+ "",
33
+ ].join("\n");
34
+ }
35
+ function renderApiAccessNote(env) {
36
+ if (!hasNonEmptyEnvValue(env, "PAPERCLIP_API_URL") || !hasNonEmptyEnvValue(env, "PAPERCLIP_API_KEY"))
37
+ return "";
38
+ return [
39
+ "Paperclip API access note:",
40
+ "Use shell commands with curl to make Paperclip API requests when needed.",
41
+ "Include X-Paperclip-Run-Id on mutating requests.",
42
+ "",
43
+ "",
44
+ ].join("\n");
45
+ }
46
+ async function pathExists(candidate) {
47
+ return fs.access(candidate).then(() => true).catch(() => false);
48
+ }
49
+ async function stageGrokProjectAssets(input) {
50
+ const cleanup = [];
51
+ const ensureCleanupDir = (candidate) => {
52
+ cleanup.push({ kind: "dir", path: candidate });
53
+ };
54
+ const ensureCleanupFile = (candidate) => {
55
+ cleanup.push({ kind: "file", path: candidate });
56
+ };
57
+ let stagedInstructionsPath = null;
58
+ let rulesFilePath = null;
59
+ let stagedSkillsCount = 0;
60
+ const instructionsTarget = path.join(input.cwd, "Agents.md");
61
+ if (input.instructionsFilePath) {
62
+ if (!await pathExists(instructionsTarget)) {
63
+ await fs.copyFile(input.instructionsFilePath, instructionsTarget);
64
+ ensureCleanupFile(instructionsTarget);
65
+ stagedInstructionsPath = instructionsTarget;
66
+ }
67
+ else if (path.resolve(instructionsTarget) !== path.resolve(input.instructionsFilePath)) {
68
+ rulesFilePath = input.instructionsFilePath;
69
+ await input.onLog("stdout", `[paperclip] Grok workspace already contains ${instructionsTarget}; using --rules @${input.instructionsFilePath} instead of overwriting it.\n`);
70
+ }
71
+ }
72
+ else {
73
+ const canonicalAgents = path.join(input.cwd, "AGENTS.md");
74
+ if (!await pathExists(instructionsTarget) && await pathExists(canonicalAgents)) {
75
+ await fs.copyFile(canonicalAgents, instructionsTarget);
76
+ ensureCleanupFile(instructionsTarget);
77
+ stagedInstructionsPath = instructionsTarget;
78
+ }
79
+ }
80
+ const desiredSet = new Set(input.desiredSkillNames);
81
+ const selectedSkills = input.skillEntries.filter((entry) => desiredSet.has(entry.key));
82
+ if (selectedSkills.length > 0) {
83
+ const claudeDir = path.join(input.cwd, ".claude");
84
+ const skillsRoot = path.join(claudeDir, "skills");
85
+ if (!await pathExists(claudeDir)) {
86
+ await fs.mkdir(claudeDir, { recursive: true });
87
+ ensureCleanupDir(claudeDir);
88
+ }
89
+ if (!await pathExists(skillsRoot)) {
90
+ await fs.mkdir(skillsRoot, { recursive: true });
91
+ ensureCleanupDir(skillsRoot);
92
+ }
93
+ for (const skill of selectedSkills) {
94
+ const target = path.join(skillsRoot, skill.runtimeName);
95
+ if (await pathExists(target)) {
96
+ await input.onLog("stdout", `[paperclip] Grok skill target already exists at ${target}; leaving it unchanged.\n`);
97
+ continue;
98
+ }
99
+ await materializePaperclipSkillCopy(skill.source, target);
100
+ ensureCleanupDir(target);
101
+ stagedSkillsCount += 1;
102
+ }
103
+ }
104
+ return {
105
+ stagedSkillsCount,
106
+ stagedInstructionsPath,
107
+ rulesFilePath,
108
+ cleanup: async () => {
109
+ for (const entry of [...cleanup].reverse()) {
110
+ if (entry.kind === "file") {
111
+ await fs.rm(entry.path, { force: true }).catch(() => undefined);
112
+ continue;
113
+ }
114
+ await fs.rm(entry.path, { recursive: true, force: true }).catch(() => undefined);
115
+ }
116
+ },
117
+ };
118
+ }
119
+ function resolveBillingType(env) {
120
+ return hasNonEmptyEnvValue(env, "XAI_API_KEY") ? "api" : "subscription";
121
+ }
122
+ export async function execute(ctx) {
123
+ const { runId, agent, runtime, config, context, onLog, onMeta, onSpawn, authToken } = ctx;
124
+ const executionTarget = readAdapterExecutionTarget({
125
+ executionTarget: ctx.executionTarget,
126
+ legacyRemoteExecution: ctx.executionTransport?.remoteExecution,
127
+ });
128
+ const executionTargetIsRemote = adapterExecutionTargetIsRemote(executionTarget);
129
+ const promptTemplate = asString(config.promptTemplate, context.conversationMode === true
130
+ ? DEFAULT_PAPERCLIP_CONVERSATION_PROMPT_TEMPLATE
131
+ : DEFAULT_PAPERCLIP_AGENT_PROMPT_TEMPLATE);
132
+ const command = asString(config.command, "grok");
133
+ const model = asString(config.model, DEFAULT_GROK_LOCAL_MODEL).trim();
134
+ // No default permission mode: Grok >= 1.0 enforces `dontAsk` as
135
+ // deny-by-default and it overrides --always-approve, so passing it broke
136
+ // every unattended run (the first tool call died with "User cancelled the
137
+ // execution for tool ..."). --always-approve alone is the unattended policy.
138
+ const permissionMode = asString(config.permissionMode, "").trim();
139
+ const reasoningEffort = asString(config.reasoningEffort, "").trim();
140
+ const maxTurns = asNumber(config.maxTurns, 0);
141
+ const alwaysApprove = asBoolean(config.alwaysApprove, true);
142
+ const disableWebSearch = asBoolean(config.disableWebSearch, true);
143
+ const workspaceContext = parseObject(context.paperclipWorkspace);
144
+ const workspaceCwd = asString(workspaceContext.cwd, "");
145
+ const workspaceSource = asString(workspaceContext.source, "");
146
+ const workspaceId = asString(workspaceContext.workspaceId, "");
147
+ const workspaceRepoUrl = asString(workspaceContext.repoUrl, "");
148
+ const workspaceRepoRef = asString(workspaceContext.repoRef, "");
149
+ const agentHome = asString(workspaceContext.agentHome, "");
150
+ const workspaceHints = Array.isArray(context.paperclipWorkspaces)
151
+ ? context.paperclipWorkspaces.filter((value) => typeof value === "object" && value !== null)
152
+ : [];
153
+ const configuredCwd = asString(config.cwd, "");
154
+ const useConfiguredInsteadOfAgentHome = workspaceSource === "agent_home" && configuredCwd.length > 0;
155
+ const effectiveWorkspaceCwd = useConfiguredInsteadOfAgentHome ? "" : workspaceCwd;
156
+ const cwd = effectiveWorkspaceCwd || configuredCwd || process.cwd();
157
+ let effectiveExecutionCwd = adapterExecutionTargetRemoteCwd(executionTarget, cwd);
158
+ await ensureAbsoluteDirectory(cwd, { createIfMissing: true });
159
+ const grokSkillEntries = await readPaperclipRuntimeSkillEntries(config, __moduleDir);
160
+ const desiredGrokSkillNames = resolveLegacyPaperclipDesiredSkillNames(config, grokSkillEntries);
161
+ const instructionsFilePath = asString(config.instructionsFilePath, "").trim();
162
+ const stagedAssets = await stageGrokProjectAssets({
163
+ cwd,
164
+ instructionsFilePath,
165
+ skillEntries: grokSkillEntries,
166
+ desiredSkillNames: desiredGrokSkillNames,
167
+ onLog,
168
+ });
169
+ let restoreRemoteWorkspace = null;
170
+ // Declared here (not inside the try) so the outer `finally` can remove it on
171
+ // every exit path (teardown and setup failure alike), mirroring the Codex
172
+ // adapter's `stagedCodexHomeDir` handling.
173
+ let stagedGrokHomeDir = null;
174
+ try {
175
+ const envConfig = parseObject(config.env);
176
+ const env = {
177
+ ...buildPaperclipEnv(agent),
178
+ ...buildRuntimeToolsEnv(ctx.runtimeTools),
179
+ };
180
+ env.PAPERCLIP_RUN_ID = runId;
181
+ const wakeTaskId = (typeof context.taskId === "string" && context.taskId.trim().length > 0 && context.taskId.trim()) ||
182
+ (typeof context.issueId === "string" && context.issueId.trim().length > 0 && context.issueId.trim()) ||
183
+ null;
184
+ const wakeReason = typeof context.wakeReason === "string" && context.wakeReason.trim().length > 0
185
+ ? context.wakeReason.trim()
186
+ : null;
187
+ const wakeCommentId = (typeof context.wakeCommentId === "string" && context.wakeCommentId.trim().length > 0 && context.wakeCommentId.trim()) ||
188
+ (typeof context.commentId === "string" && context.commentId.trim().length > 0 && context.commentId.trim()) ||
189
+ null;
190
+ const approvalId = typeof context.approvalId === "string" && context.approvalId.trim().length > 0
191
+ ? context.approvalId.trim()
192
+ : null;
193
+ const approvalStatus = typeof context.approvalStatus === "string" && context.approvalStatus.trim().length > 0
194
+ ? context.approvalStatus.trim()
195
+ : null;
196
+ const linkedIssueIds = Array.isArray(context.issueIds)
197
+ ? context.issueIds.filter((value) => typeof value === "string" && value.trim().length > 0)
198
+ : [];
199
+ const issueWorkMode = readPaperclipIssueWorkModeFromContext(context);
200
+ if (wakeTaskId)
201
+ env.PAPERCLIP_TASK_ID = wakeTaskId;
202
+ if (issueWorkMode)
203
+ env.PAPERCLIP_ISSUE_WORK_MODE = issueWorkMode;
204
+ if (wakeReason)
205
+ env.PAPERCLIP_WAKE_REASON = wakeReason;
206
+ if (wakeCommentId)
207
+ env.PAPERCLIP_WAKE_COMMENT_ID = wakeCommentId;
208
+ if (approvalId)
209
+ env.PAPERCLIP_APPROVAL_ID = approvalId;
210
+ if (approvalStatus)
211
+ env.PAPERCLIP_APPROVAL_STATUS = approvalStatus;
212
+ if (linkedIssueIds.length > 0)
213
+ env.PAPERCLIP_LINKED_ISSUE_IDS = linkedIssueIds.join(",");
214
+ refreshPaperclipWorkspaceEnvForExecution({
215
+ env,
216
+ envConfig,
217
+ workspaceCwd: effectiveWorkspaceCwd,
218
+ workspaceSource,
219
+ workspaceId,
220
+ workspaceRepoUrl,
221
+ workspaceRepoRef,
222
+ workspaceHints,
223
+ agentHome,
224
+ executionTargetIsRemote,
225
+ executionCwd: effectiveExecutionCwd,
226
+ });
227
+ if (authToken) {
228
+ env.PAPERCLIP_API_KEY = authToken;
229
+ }
230
+ // Held before the remote block below, so the remote lane can stage this
231
+ // same host home into the sandbox without re-resolving it.
232
+ const hostGrokHome = config.managedAiConnection ? asString(env.GROK_HOME, "") : resolveManagedGrokHomeDir(process.env, agent.companyId);
233
+ // Subscription mode (no XAI_API_KEY): pin GROK_HOME to the company-scoped
234
+ // home a completed device login wrote. Do not pin an empty local home —
235
+ // that shadows the host `~/.grok` login and fails with "Not signed in"
236
+ // (#13568). Remote/sandbox runs and managed AI connections still pin so
237
+ // they cannot fall through to the host credential. The API-key path below
238
+ // (`resolveBillingType`) stays unchanged when the key exists.
239
+ // Explicit empty overrides clear inherited API keys in the child process.
240
+ // Use the same precedence here when selecting its credential home.
241
+ const isGrokSubscriptionMode = !hasNonEmptyEnvValue(config.managedAiConnection ? env : { ...process.env, ...env }, "XAI_API_KEY");
242
+ if (isGrokSubscriptionMode) {
243
+ const pinManagedHome = executionTargetIsRemote ||
244
+ Boolean(config.managedAiConnection) ||
245
+ (hostGrokHome.length > 0 && await grokHomeHasUsableAuth(hostGrokHome));
246
+ if (pinManagedHome) {
247
+ env.GROK_HOME = hostGrokHome;
248
+ }
249
+ }
250
+ const timeoutSec = resolveAdapterExecutionTargetTimeoutSec(executionTarget, asNumber(config.timeoutSec, 0));
251
+ const graceSec = asNumber(config.graceSec, 20);
252
+ await ensureAdapterExecutionTargetRuntimeCommandInstalled({
253
+ runId,
254
+ target: executionTarget,
255
+ installCommand: ctx.runtimeCommandSpec?.installCommand,
256
+ detectCommand: ctx.runtimeCommandSpec?.detectCommand,
257
+ cwd,
258
+ env,
259
+ timeoutSec,
260
+ graceSec,
261
+ onLog,
262
+ });
263
+ if (executionTargetIsRemote) {
264
+ await onLog("stdout", `[paperclip] Syncing Grok workspace to ${describeAdapterExecutionTarget(executionTarget)}.\n`);
265
+ // Stage only the credential file the remote lane needs into a curated
266
+ // temp dir and ship THAT as the `home` asset, the same curated-snapshot
267
+ // approach the Codex adapter uses. Subscription mode only: an API-key
268
+ // run authenticates from the environment variable and needs no home.
269
+ if (isGrokSubscriptionMode) {
270
+ stagedGrokHomeDir = await stageGrokHomeForSync(hostGrokHome, { runId });
271
+ }
272
+ const preparedExecutionTargetRuntime = await prepareAdapterExecutionTargetRuntime({
273
+ runId,
274
+ target: executionTarget,
275
+ adapterKey: "grok",
276
+ workspaceLocalDir: cwd,
277
+ timeoutSec,
278
+ installCommand: ctx.runtimeCommandSpec?.installCommand ?? null,
279
+ detectCommand: ctx.runtimeCommandSpec?.detectCommand ?? command,
280
+ onProgress: (line) => onLog("stdout", line),
281
+ onRuntimeProgress: ctx.onRuntimeProgress,
282
+ assets: stagedGrokHomeDir
283
+ ? [
284
+ {
285
+ key: "home",
286
+ localDir: stagedGrokHomeDir,
287
+ followSymlinks: true,
288
+ // Outbound (sandbox to host) copy-out: at teardown, read the
289
+ // sandbox's `auth.json` and — guarded by the direction-
290
+ // agnostic decision predicate under a directory lock —
291
+ // atomically install it onto the shared host credential when
292
+ // it is a strictly-later same-identity copy. The destination
293
+ // is always the server-derived managed Grok home, never a
294
+ // value read from `env.GROK_HOME`. A copy-out failure never
295
+ // fails the run: `copyBackGrokAuth` logs the errno code and
296
+ // rethrows, and this callback swallows that rejection.
297
+ restore: async ({ assetDir, readFile }) => void (await copyBackGrokAuth({
298
+ readSandboxAuth: () => readFile(path.posix.join(assetDir, "auth.json")),
299
+ hostHomeDir: hostGrokHome,
300
+ log: (line) => onLog("stdout", `${line}\n`),
301
+ env: process.env,
302
+ }).catch(() => undefined)),
303
+ },
304
+ ]
305
+ : undefined,
306
+ });
307
+ restoreRemoteWorkspace = () => preparedExecutionTargetRuntime.restoreWorkspace((line) => onLog("stdout", line));
308
+ effectiveExecutionCwd = preparedExecutionTargetRuntime.workspaceRemoteDir ?? effectiveExecutionCwd;
309
+ refreshPaperclipWorkspaceEnvForExecution({
310
+ env,
311
+ envConfig,
312
+ workspaceCwd: effectiveWorkspaceCwd,
313
+ workspaceSource,
314
+ workspaceId,
315
+ workspaceRepoUrl,
316
+ workspaceRepoRef,
317
+ workspaceHints,
318
+ agentHome,
319
+ executionTargetIsRemote,
320
+ executionCwd: effectiveExecutionCwd,
321
+ });
322
+ // Set GROK_HOME after the refresh above, so the refresh cannot overwrite
323
+ // it. The fixed fallback path mirrors `prepareAdapterExecutionTargetRuntime`'s
324
+ // own `home` asset layout, in case `assetDirs.home` is absent.
325
+ if (isGrokSubscriptionMode) {
326
+ env.GROK_HOME =
327
+ preparedExecutionTargetRuntime.assetDirs.home ??
328
+ path.posix.join(effectiveExecutionCwd, ".paperclip-runtime", "grok", "home");
329
+ }
330
+ }
331
+ const runtimeExecutionTarget = overrideAdapterExecutionTargetRemoteCwd(executionTarget, effectiveExecutionCwd);
332
+ const effectiveEnv = Object.fromEntries(Object.entries({ ...process.env, ...env }).filter((entry) => typeof entry[1] === "string"));
333
+ const runtimeEnv = ensurePathInEnv(effectiveEnv);
334
+ await ensureAdapterExecutionTargetCommandResolvable(command, executionTarget, cwd, runtimeEnv, {
335
+ installCommand: ctx.runtimeCommandSpec?.installCommand ?? null,
336
+ timeoutSec,
337
+ });
338
+ const resolvedCommand = await resolveAdapterExecutionTargetCommandForLogs(command, executionTarget, cwd, runtimeEnv);
339
+ const loggedEnv = buildInvocationEnvForLogs(env, {
340
+ runtimeEnv,
341
+ includeRuntimeKeys: ["HOME"],
342
+ resolvedCommand,
343
+ });
344
+ const billingType = resolveBillingType(effectiveEnv);
345
+ const runtimeSessionParams = parseObject(runtime.sessionParams);
346
+ const runtimeSessionId = asString(runtimeSessionParams.sessionId, runtime.sessionId ?? "");
347
+ const runtimeSessionCwd = asString(runtimeSessionParams.cwd, "");
348
+ const runtimeRemoteExecution = parseObject(runtimeSessionParams.remoteExecution);
349
+ const canResumeSession = runtimeSessionId.length > 0 &&
350
+ (runtimeSessionCwd.length === 0 || path.resolve(runtimeSessionCwd) === path.resolve(effectiveExecutionCwd)) &&
351
+ adapterExecutionTargetSessionMatches(runtimeRemoteExecution, runtimeExecutionTarget);
352
+ const sessionId = canResumeSession ? runtimeSessionId : null;
353
+ if (executionTargetIsRemote && runtimeSessionId && !canResumeSession) {
354
+ await onLog("stdout", `[paperclip] Grok session "${runtimeSessionId}" does not match the current remote execution identity and will not be resumed in "${effectiveExecutionCwd}". Starting a fresh remote session.\n`);
355
+ }
356
+ else if (runtimeSessionId && !canResumeSession) {
357
+ await onLog("stdout", `[paperclip] Grok session "${runtimeSessionId}" was saved for cwd "${runtimeSessionCwd}" and will not be resumed in "${effectiveExecutionCwd}".\n`);
358
+ }
359
+ const commandNotes = (() => {
360
+ const notes = ["Prompt is passed to Grok via --single in headless mode."];
361
+ if (alwaysApprove)
362
+ notes.push("Added --always-approve for unattended execution.");
363
+ if (stagedAssets.stagedInstructionsPath) {
364
+ notes.push(`Staged project instructions at ${stagedAssets.stagedInstructionsPath} for native Grok discovery.`);
365
+ }
366
+ if (stagedAssets.rulesFilePath) {
367
+ notes.push(`Applied fallback instructions via --rules @${stagedAssets.rulesFilePath}.`);
368
+ }
369
+ if (stagedAssets.stagedSkillsCount > 0) {
370
+ notes.push(`Staged ${stagedAssets.stagedSkillsCount} Paperclip skill(s) into .claude/skills for native Grok discovery.`);
371
+ }
372
+ return notes;
373
+ })();
374
+ const templateData = {
375
+ agentId: agent.id,
376
+ companyId: agent.companyId,
377
+ runId,
378
+ company: { id: agent.companyId },
379
+ agent,
380
+ run: { id: runId, source: "on_demand" },
381
+ context,
382
+ };
383
+ const taskContextNote = context.conversationMode === true
384
+ ? selectPaperclipTaskMarkdown(context, { resumedSession: Boolean(sessionId), includeCommunicationGuidance: false })
385
+ : "";
386
+ const wakePrompt = renderPaperclipWakePrompt(context.paperclipWake, {
387
+ conversationMode: context.conversationMode === true,
388
+ resumedSession: Boolean(sessionId),
389
+ suppressIssueDescription: taskContextNote.length > 0,
390
+ });
391
+ const shouldUseResumeDeltaPrompt = Boolean(sessionId) && wakePrompt.length > 0;
392
+ const renderedPrompt = shouldUseResumeDeltaPrompt || isPaperclipRecoveryWakePayload(context.paperclipWake)
393
+ ? ""
394
+ : renderTemplate(promptTemplate, templateData);
395
+ const sessionHandoffNote = asString(context.paperclipSessionHandoffMarkdown, "").trim();
396
+ const paperclipEnvNote = renderPaperclipEnvNote(env);
397
+ const apiAccessNote = renderApiAccessNote(env);
398
+ const basePrompt = joinPromptSections([
399
+ wakePrompt,
400
+ taskContextNote,
401
+ sessionHandoffNote,
402
+ paperclipEnvNote,
403
+ apiAccessNote,
404
+ renderedPrompt,
405
+ ]);
406
+ const promptMetrics = {
407
+ promptChars: basePrompt.length,
408
+ wakePromptChars: wakePrompt.length,
409
+ taskContextChars: taskContextNote.length,
410
+ sessionHandoffChars: sessionHandoffNote.length,
411
+ runtimeNoteChars: paperclipEnvNote.length + apiAccessNote.length,
412
+ heartbeatPromptChars: renderedPrompt.length,
413
+ };
414
+ const buildArgs = (resumeSessionId, prompt) => {
415
+ const args = ["--cwd", effectiveExecutionCwd, "--output-format", "streaming-json"];
416
+ if (resumeSessionId)
417
+ args.push("--resume", resumeSessionId);
418
+ if (model && model !== DEFAULT_GROK_LOCAL_MODEL)
419
+ args.push("--model", model);
420
+ if (reasoningEffort)
421
+ args.push("--reasoning-effort", reasoningEffort);
422
+ if (maxTurns > 0)
423
+ args.push("--max-turns", String(maxTurns));
424
+ if (permissionMode)
425
+ args.push("--permission-mode", permissionMode);
426
+ if (alwaysApprove)
427
+ args.push("--always-approve");
428
+ if (disableWebSearch)
429
+ args.push("--disable-web-search");
430
+ if (stagedAssets.rulesFilePath)
431
+ args.push("--rules", `@${stagedAssets.rulesFilePath}`);
432
+ const extraArgs = (() => {
433
+ const fromExtraArgs = asStringArray(config.extraArgs);
434
+ if (fromExtraArgs.length > 0)
435
+ return fromExtraArgs;
436
+ return asStringArray(config.args);
437
+ })();
438
+ if (extraArgs.length > 0)
439
+ args.push(...extraArgs);
440
+ args.push("--single", prompt);
441
+ return args;
442
+ };
443
+ const runAttempt = async (resumeSessionId) => {
444
+ const prompt = joinPromptSections([
445
+ selectInitialCommunicationGuidance(context, { resumedSession: Boolean(resumeSessionId) }),
446
+ basePrompt,
447
+ ]);
448
+ const args = buildArgs(resumeSessionId, prompt);
449
+ if (onMeta) {
450
+ await onMeta({
451
+ adapterType: "grok_local",
452
+ command: resolvedCommand,
453
+ cwd: effectiveExecutionCwd,
454
+ commandNotes,
455
+ commandArgs: args.map((value, index) => (index === args.length - 1 ? `<prompt ${prompt.length} chars>` : value)),
456
+ env: loggedEnv,
457
+ prompt,
458
+ promptMetrics: { ...promptMetrics, promptChars: prompt.length },
459
+ context,
460
+ });
461
+ }
462
+ const proc = await runAdapterExecutionTargetProcess(runId, runtimeExecutionTarget, command, args, {
463
+ cwd,
464
+ env,
465
+ timeoutSec,
466
+ graceSec,
467
+ onSpawn,
468
+ onRuntimeProgress: ctx.onRuntimeProgress,
469
+ onLog,
470
+ });
471
+ return {
472
+ proc,
473
+ parsed: parseGrokJsonl(proc.stdout),
474
+ };
475
+ };
476
+ const toResult = (attempt, clearSessionOnMissingSession = false, isRetry = false) => {
477
+ if (attempt.proc.timedOut) {
478
+ return {
479
+ exitCode: attempt.proc.exitCode,
480
+ signal: attempt.proc.signal,
481
+ timedOut: true,
482
+ errorMessage: `Timed out after ${timeoutSec}s`,
483
+ clearSession: clearSessionOnMissingSession,
484
+ };
485
+ }
486
+ const failed = (attempt.proc.exitCode ?? 0) !== 0;
487
+ const parsedError = typeof attempt.parsed.errorMessage === "string" ? attempt.parsed.errorMessage.trim() : "";
488
+ const stderrLine = firstNonEmptyLine(attempt.proc.stderr);
489
+ const fallbackErrorMessage = parsedError ||
490
+ stderrLine ||
491
+ `Grok exited with code ${attempt.proc.exitCode ?? -1}`;
492
+ const canFallbackToRuntimeSession = !isRetry;
493
+ const resolvedSessionId = attempt.parsed.sessionId
494
+ ?? (canFallbackToRuntimeSession ? (runtimeSessionId ?? runtime.sessionId ?? null) : null);
495
+ const resolvedSessionParams = resolvedSessionId
496
+ ? {
497
+ sessionId: resolvedSessionId,
498
+ cwd: effectiveExecutionCwd,
499
+ ...(workspaceId ? { workspaceId } : {}),
500
+ ...(workspaceRepoUrl ? { repoUrl: workspaceRepoUrl } : {}),
501
+ ...(workspaceRepoRef ? { repoRef: workspaceRepoRef } : {}),
502
+ ...(executionTargetIsRemote
503
+ ? {
504
+ remoteExecution: adapterExecutionTargetSessionIdentity(runtimeExecutionTarget),
505
+ }
506
+ : {}),
507
+ }
508
+ : null;
509
+ return {
510
+ exitCode: attempt.proc.exitCode,
511
+ signal: attempt.proc.signal,
512
+ timedOut: false,
513
+ errorMessage: failed ? fallbackErrorMessage : null,
514
+ usage: {
515
+ inputTokens: attempt.parsed.inputTokens,
516
+ outputTokens: attempt.parsed.outputTokens,
517
+ cachedInputTokens: attempt.parsed.cachedInputTokens,
518
+ },
519
+ // Each `--single` invocation reports usage for just that process, not
520
+ // a running total for the resumed session, so the server must not
521
+ // delta it against the previous run's usage.
522
+ usageBasis: "per_run",
523
+ sessionId: resolvedSessionId,
524
+ sessionParams: resolvedSessionParams,
525
+ sessionDisplayId: resolvedSessionId,
526
+ provider: "xai",
527
+ biller: billingType === "api" ? "xai" : "grok",
528
+ model,
529
+ billingType,
530
+ // Subscription billing (OAuth/SuperGrok) has no marginal dollar cost per run,
531
+ // so we only surface costUsd for metered API-key billing.
532
+ costUsd: billingType === "api" ? attempt.parsed.costUsd : null,
533
+ resultJson: {
534
+ stopReason: attempt.parsed.stopReason,
535
+ requestId: attempt.parsed.requestId,
536
+ ...(failed ? { stderr: attempt.proc.stderr } : {}),
537
+ },
538
+ summary: attempt.parsed.summary,
539
+ clearSession: Boolean(clearSessionOnMissingSession && !resolvedSessionId),
540
+ };
541
+ };
542
+ const initial = await runAttempt(sessionId);
543
+ if (sessionId &&
544
+ !initial.proc.timedOut &&
545
+ (initial.proc.exitCode ?? 0) !== 0 &&
546
+ isGrokUnknownSessionError(initial.proc.stdout, initial.proc.stderr)) {
547
+ await onLog("stdout", `[paperclip] Grok resume session "${sessionId}" is unavailable; retrying with a fresh session.\n`);
548
+ const retry = await runAttempt(null);
549
+ return toResult(retry, true, true);
550
+ }
551
+ return toResult(initial);
552
+ }
553
+ finally {
554
+ // Remove the staged GROK_HOME allowlist temp dir first, before the
555
+ // `Promise.all` below. A rejecting member of that `Promise.all` (for
556
+ // example a failed workspace restore) throws out of this `finally` and
557
+ // skips every statement after it, so the removal must run before that
558
+ // await to hold on every exit path (teardown AND error), never only the
559
+ // happy path. Cleanup failure is logged, not fatal — a leaked temp dir
560
+ // must not crash the run.
561
+ if (stagedGrokHomeDir) {
562
+ await fs.rm(stagedGrokHomeDir, { recursive: true, force: true }).catch(async (error) => {
563
+ await onLog("stderr", `[paperclip] Failed to remove staged Grok home "${stagedGrokHomeDir}": ${error instanceof Error ? error.message : String(error)}\n`);
564
+ });
565
+ }
566
+ await Promise.all([
567
+ restoreRemoteWorkspace?.(),
568
+ stagedAssets.cleanup(),
569
+ ]);
570
+ }
571
+ }
572
+ //# sourceMappingURL=execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/server/execute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=execute.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.test.d.ts","sourceRoot":"","sources":["../../src/server/execute.test.ts"],"names":[],"mappings":""}