@kenkaiiii/gg-boss 4.3.161 → 4.3.163
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.
|
@@ -7348,21 +7348,21 @@ var require_cross_spawn = __commonJS({
|
|
|
7348
7348
|
var cp = __require("child_process");
|
|
7349
7349
|
var parse3 = require_parse();
|
|
7350
7350
|
var enoent = require_enoent();
|
|
7351
|
-
function
|
|
7351
|
+
function spawn10(command, args, options2) {
|
|
7352
7352
|
const parsed = parse3(command, args, options2);
|
|
7353
7353
|
const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);
|
|
7354
7354
|
enoent.hookChildProcess(spawned, parsed);
|
|
7355
7355
|
return spawned;
|
|
7356
7356
|
}
|
|
7357
|
-
function
|
|
7357
|
+
function spawnSync3(command, args, options2) {
|
|
7358
7358
|
const parsed = parse3(command, args, options2);
|
|
7359
7359
|
const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);
|
|
7360
7360
|
result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);
|
|
7361
7361
|
return result;
|
|
7362
7362
|
}
|
|
7363
|
-
module.exports =
|
|
7364
|
-
module.exports.spawn =
|
|
7365
|
-
module.exports.sync =
|
|
7363
|
+
module.exports = spawn10;
|
|
7364
|
+
module.exports.spawn = spawn10;
|
|
7365
|
+
module.exports.sync = spawnSync3;
|
|
7366
7366
|
module.exports._parse = parse3;
|
|
7367
7367
|
module.exports._enoent = enoent;
|
|
7368
7368
|
}
|
|
@@ -65162,7 +65162,7 @@ init_esm_shims();
|
|
|
65162
65162
|
|
|
65163
65163
|
// ../ggcoder/dist/core/process-manager.js
|
|
65164
65164
|
init_esm_shims();
|
|
65165
|
-
import { spawn } from "child_process";
|
|
65165
|
+
import { spawn, spawnSync } from "child_process";
|
|
65166
65166
|
import fs from "fs";
|
|
65167
65167
|
import fsp from "fs/promises";
|
|
65168
65168
|
import path3 from "path";
|
|
@@ -65182,11 +65182,77 @@ function killProcessTree(pid) {
|
|
|
65182
65182
|
}
|
|
65183
65183
|
}
|
|
65184
65184
|
|
|
65185
|
+
// ../ggcoder/dist/tools/safe-env.js
|
|
65186
|
+
init_esm_shims();
|
|
65187
|
+
var ENV_ALLOWLIST = /* @__PURE__ */ new Set([
|
|
65188
|
+
"PATH",
|
|
65189
|
+
"HOME",
|
|
65190
|
+
"USER",
|
|
65191
|
+
"LOGNAME",
|
|
65192
|
+
"SHELL",
|
|
65193
|
+
"LANG",
|
|
65194
|
+
"LC_ALL",
|
|
65195
|
+
"LC_CTYPE",
|
|
65196
|
+
"TMPDIR",
|
|
65197
|
+
"XDG_CONFIG_HOME",
|
|
65198
|
+
"XDG_DATA_HOME",
|
|
65199
|
+
"XDG_CACHE_HOME",
|
|
65200
|
+
"XDG_RUNTIME_DIR",
|
|
65201
|
+
"EDITOR",
|
|
65202
|
+
"VISUAL",
|
|
65203
|
+
"PAGER",
|
|
65204
|
+
"CLICOLOR",
|
|
65205
|
+
"CLICOLOR_FORCE",
|
|
65206
|
+
"NO_COLOR",
|
|
65207
|
+
"FORCE_COLOR",
|
|
65208
|
+
// Development toolchains
|
|
65209
|
+
"NODE_PATH",
|
|
65210
|
+
"NVM_DIR",
|
|
65211
|
+
"NPM_CONFIG_PREFIX",
|
|
65212
|
+
"PNPM_HOME",
|
|
65213
|
+
"GOPATH",
|
|
65214
|
+
"GOROOT",
|
|
65215
|
+
"CARGO_HOME",
|
|
65216
|
+
"RUSTUP_HOME",
|
|
65217
|
+
"PYENV_ROOT",
|
|
65218
|
+
"VIRTUAL_ENV",
|
|
65219
|
+
"CONDA_DEFAULT_ENV",
|
|
65220
|
+
"CONDA_PREFIX",
|
|
65221
|
+
"JAVA_HOME",
|
|
65222
|
+
"ANDROID_HOME",
|
|
65223
|
+
"ANDROID_SDK_ROOT",
|
|
65224
|
+
"RUBY_VERSION",
|
|
65225
|
+
"GEM_HOME",
|
|
65226
|
+
"RBENV_ROOT"
|
|
65227
|
+
]);
|
|
65228
|
+
function getSafeToolEnv(sourceEnv = process.env) {
|
|
65229
|
+
const env2 = { TERM: "dumb", GG_CODER: "true" };
|
|
65230
|
+
for (const key of ENV_ALLOWLIST) {
|
|
65231
|
+
const value = sourceEnv[key];
|
|
65232
|
+
if (value)
|
|
65233
|
+
env2[key] = value;
|
|
65234
|
+
}
|
|
65235
|
+
return env2;
|
|
65236
|
+
}
|
|
65237
|
+
|
|
65185
65238
|
// ../ggcoder/dist/core/process-manager.js
|
|
65186
65239
|
var BG_DIR = path3.join(os2.homedir(), ".gg", "bg");
|
|
65240
|
+
function stopProcessTree(pid, ops = {}) {
|
|
65241
|
+
if ((ops.platform ?? process.platform) === "win32") {
|
|
65242
|
+
(ops.spawnSync ?? spawnSync)("taskkill", ["/pid", String(pid), "/T", "/F"], {
|
|
65243
|
+
stdio: "ignore"
|
|
65244
|
+
});
|
|
65245
|
+
return;
|
|
65246
|
+
}
|
|
65247
|
+
(ops.killProcessTree ?? killProcessTree)(pid);
|
|
65248
|
+
}
|
|
65187
65249
|
var ProcessManager = class {
|
|
65250
|
+
ops;
|
|
65188
65251
|
processes = /* @__PURE__ */ new Map();
|
|
65189
65252
|
children = /* @__PURE__ */ new Map();
|
|
65253
|
+
constructor(ops = {}) {
|
|
65254
|
+
this.ops = ops;
|
|
65255
|
+
}
|
|
65190
65256
|
async start(command, cwd2) {
|
|
65191
65257
|
await fsp.mkdir(BG_DIR, { recursive: true });
|
|
65192
65258
|
const id2 = crypto2.randomUUID().slice(0, 8);
|
|
@@ -65196,7 +65262,7 @@ var ProcessManager = class {
|
|
|
65196
65262
|
cwd: cwd2,
|
|
65197
65263
|
detached: true,
|
|
65198
65264
|
stdio: ["ignore", fd3, fd3],
|
|
65199
|
-
env:
|
|
65265
|
+
env: getSafeToolEnv()
|
|
65200
65266
|
});
|
|
65201
65267
|
fs.closeSync(fd3);
|
|
65202
65268
|
const pid = child.pid;
|
|
@@ -65255,10 +65321,10 @@ var ProcessManager = class {
|
|
|
65255
65321
|
return `Process ${id2} already exited (code ${proc.exitCode})`;
|
|
65256
65322
|
}
|
|
65257
65323
|
try {
|
|
65258
|
-
process.kill(-proc.pid, "SIGTERM");
|
|
65324
|
+
(this.ops.kill ?? process.kill)(-proc.pid, "SIGTERM");
|
|
65259
65325
|
} catch {
|
|
65260
65326
|
try {
|
|
65261
|
-
process.kill(proc.pid, "SIGTERM");
|
|
65327
|
+
(this.ops.kill ?? process.kill)(proc.pid, "SIGTERM");
|
|
65262
65328
|
} catch {
|
|
65263
65329
|
return `Process ${id2} already exited`;
|
|
65264
65330
|
}
|
|
@@ -65271,7 +65337,7 @@ var ProcessManager = class {
|
|
|
65271
65337
|
});
|
|
65272
65338
|
});
|
|
65273
65339
|
if (!exited) {
|
|
65274
|
-
|
|
65340
|
+
stopProcessTree(proc.pid, this.ops);
|
|
65275
65341
|
}
|
|
65276
65342
|
return `Process ${id2} stopped`;
|
|
65277
65343
|
}
|
|
@@ -65287,7 +65353,7 @@ var ProcessManager = class {
|
|
|
65287
65353
|
shutdownAll() {
|
|
65288
65354
|
for (const [id2, proc] of this.processes) {
|
|
65289
65355
|
if (this.children.has(id2)) {
|
|
65290
|
-
|
|
65356
|
+
stopProcessTree(proc.pid, this.ops);
|
|
65291
65357
|
proc.exitCode = proc.exitCode ?? 1;
|
|
65292
65358
|
this.children.delete(id2);
|
|
65293
65359
|
}
|
|
@@ -66826,55 +66892,6 @@ ${failures.length} ${noun} skipped \u2014 re-issue ONLY these (the rest are alre
|
|
|
66826
66892
|
init_esm_shims();
|
|
66827
66893
|
var DEFAULT_TIMEOUT = 12e4;
|
|
66828
66894
|
var MAX_OUTPUT_BYTES = 10 * 1024 * 1024;
|
|
66829
|
-
var ENV_ALLOWLIST = /* @__PURE__ */ new Set([
|
|
66830
|
-
"PATH",
|
|
66831
|
-
"HOME",
|
|
66832
|
-
"USER",
|
|
66833
|
-
"LOGNAME",
|
|
66834
|
-
"SHELL",
|
|
66835
|
-
"LANG",
|
|
66836
|
-
"LC_ALL",
|
|
66837
|
-
"LC_CTYPE",
|
|
66838
|
-
"TMPDIR",
|
|
66839
|
-
"XDG_CONFIG_HOME",
|
|
66840
|
-
"XDG_DATA_HOME",
|
|
66841
|
-
"XDG_CACHE_HOME",
|
|
66842
|
-
"XDG_RUNTIME_DIR",
|
|
66843
|
-
"EDITOR",
|
|
66844
|
-
"VISUAL",
|
|
66845
|
-
"PAGER",
|
|
66846
|
-
"CLICOLOR",
|
|
66847
|
-
"CLICOLOR_FORCE",
|
|
66848
|
-
"NO_COLOR",
|
|
66849
|
-
"FORCE_COLOR",
|
|
66850
|
-
// Development toolchains
|
|
66851
|
-
"NODE_PATH",
|
|
66852
|
-
"NVM_DIR",
|
|
66853
|
-
"NPM_CONFIG_PREFIX",
|
|
66854
|
-
"PNPM_HOME",
|
|
66855
|
-
"GOPATH",
|
|
66856
|
-
"GOROOT",
|
|
66857
|
-
"CARGO_HOME",
|
|
66858
|
-
"RUSTUP_HOME",
|
|
66859
|
-
"PYENV_ROOT",
|
|
66860
|
-
"VIRTUAL_ENV",
|
|
66861
|
-
"CONDA_DEFAULT_ENV",
|
|
66862
|
-
"CONDA_PREFIX",
|
|
66863
|
-
"JAVA_HOME",
|
|
66864
|
-
"ANDROID_HOME",
|
|
66865
|
-
"ANDROID_SDK_ROOT",
|
|
66866
|
-
"RUBY_VERSION",
|
|
66867
|
-
"GEM_HOME",
|
|
66868
|
-
"RBENV_ROOT"
|
|
66869
|
-
]);
|
|
66870
|
-
function getSafeEnv() {
|
|
66871
|
-
const env2 = { TERM: "dumb", GG_CODER: "true" };
|
|
66872
|
-
for (const key of ENV_ALLOWLIST) {
|
|
66873
|
-
if (process.env[key])
|
|
66874
|
-
env2[key] = process.env[key];
|
|
66875
|
-
}
|
|
66876
|
-
return env2;
|
|
66877
|
-
}
|
|
66878
66895
|
var BashParams = external_exports.object({
|
|
66879
66896
|
command: external_exports.string().describe("The bash command to execute"),
|
|
66880
66897
|
timeout: external_exports.number().int().min(1e3).optional().describe("Timeout in milliseconds (default: 120000)"),
|
|
@@ -66904,7 +66921,7 @@ Use task_output with id="${result.id}" to read output.`;
|
|
|
66904
66921
|
cwd: cwd2,
|
|
66905
66922
|
detached: true,
|
|
66906
66923
|
stdio: ["ignore", "pipe", "pipe"],
|
|
66907
|
-
env:
|
|
66924
|
+
env: getSafeToolEnv()
|
|
66908
66925
|
});
|
|
66909
66926
|
const chunks = [];
|
|
66910
66927
|
let totalBytes = 0;
|
|
@@ -67043,6 +67060,7 @@ var GrepParams = external_exports.object({
|
|
|
67043
67060
|
var DEFAULT_MAX_RESULTS = 50;
|
|
67044
67061
|
var MAX_LINE_LENGTH = 500;
|
|
67045
67062
|
var MAX_FILE_SIZE = 10 * 1024 * 1024;
|
|
67063
|
+
var MAX_CANDIDATE_FILES = 1e4;
|
|
67046
67064
|
function createGrepTool(cwd2, ops = localOperations) {
|
|
67047
67065
|
return {
|
|
67048
67066
|
name: "grep",
|
|
@@ -67071,12 +67089,22 @@ function createGrepTool(cwd2, ops = localOperations) {
|
|
|
67071
67089
|
onlyFiles: true,
|
|
67072
67090
|
ignore: ["**/node_modules/**", "**/.git/**"],
|
|
67073
67091
|
suppressErrors: true,
|
|
67074
|
-
followSymbolicLinks: false
|
|
67092
|
+
followSymbolicLinks: false,
|
|
67093
|
+
objectMode: true,
|
|
67094
|
+
stats: false
|
|
67075
67095
|
});
|
|
67076
67096
|
const results = [];
|
|
67077
|
-
|
|
67097
|
+
let scannedCandidates = 0;
|
|
67098
|
+
let candidateLimitHit = false;
|
|
67099
|
+
for (const item of entries) {
|
|
67078
67100
|
if (results.length >= maxResults)
|
|
67079
67101
|
break;
|
|
67102
|
+
if (scannedCandidates >= MAX_CANDIDATE_FILES) {
|
|
67103
|
+
candidateLimitHit = true;
|
|
67104
|
+
break;
|
|
67105
|
+
}
|
|
67106
|
+
scannedCandidates += 1;
|
|
67107
|
+
const entry = typeof item === "string" ? item : item.path;
|
|
67080
67108
|
const ext = path11.extname(entry).toLowerCase();
|
|
67081
67109
|
if (BINARY_EXTENSIONS.has(ext))
|
|
67082
67110
|
continue;
|
|
@@ -67084,7 +67112,7 @@ function createGrepTool(cwd2, ops = localOperations) {
|
|
|
67084
67112
|
const fileResults = await searchFile(filePath, regex2, cwd2, maxResults - results.length, ops);
|
|
67085
67113
|
results.push(...fileResults);
|
|
67086
67114
|
}
|
|
67087
|
-
return formatResults(results, maxResults);
|
|
67115
|
+
return formatResults(results, maxResults, candidateLimitHit);
|
|
67088
67116
|
}
|
|
67089
67117
|
};
|
|
67090
67118
|
}
|
|
@@ -67129,9 +67157,10 @@ async function searchFile(filePath, regex2, cwd2, maxResults, ops) {
|
|
|
67129
67157
|
}
|
|
67130
67158
|
return results;
|
|
67131
67159
|
}
|
|
67132
|
-
function formatResults(results, maxResults) {
|
|
67133
|
-
if (results.length === 0)
|
|
67134
|
-
return "No matches found.";
|
|
67160
|
+
function formatResults(results, maxResults, candidateLimitHit = false) {
|
|
67161
|
+
if (results.length === 0) {
|
|
67162
|
+
return candidateLimitHit ? `No matches found. [Stopped after scanning ${MAX_CANDIDATE_FILES} candidate files]` : "No matches found.";
|
|
67163
|
+
}
|
|
67135
67164
|
let output = results.join("\n");
|
|
67136
67165
|
if (results.length >= maxResults) {
|
|
67137
67166
|
output += `
|
|
@@ -67141,6 +67170,10 @@ function formatResults(results, maxResults) {
|
|
|
67141
67170
|
output += `
|
|
67142
67171
|
|
|
67143
67172
|
${results.length} match(es) found`;
|
|
67173
|
+
}
|
|
67174
|
+
if (candidateLimitHit) {
|
|
67175
|
+
output += `
|
|
67176
|
+
[Stopped after scanning ${MAX_CANDIDATE_FILES} candidate files]`;
|
|
67144
67177
|
}
|
|
67145
67178
|
return output;
|
|
67146
67179
|
}
|
|
@@ -67606,8 +67639,19 @@ function createWebFetchTool() {
|
|
|
67606
67639
|
"User-Agent": "Mozilla/5.0 (compatible; GGCoder/1.0)",
|
|
67607
67640
|
Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
|
|
67608
67641
|
},
|
|
67642
|
+
redirect: "manual",
|
|
67609
67643
|
signal: AbortSignal.timeout(3e4)
|
|
67610
67644
|
});
|
|
67645
|
+
if (response.status >= 300 && response.status < 400) {
|
|
67646
|
+
const location = response.headers.get("location");
|
|
67647
|
+
if (!location)
|
|
67648
|
+
return `Error: HTTP ${response.status} redirect without Location header`;
|
|
67649
|
+
const redirectUrl = new URL(location, args.url).toString();
|
|
67650
|
+
if (isBlockedUrl(redirectUrl)) {
|
|
67651
|
+
return "Error: Redirect blocked \u2014 target URL is private/internal or unsupported.";
|
|
67652
|
+
}
|
|
67653
|
+
return `Error: Redirects are not followed automatically. Safe redirect target: ${redirectUrl}`;
|
|
67654
|
+
}
|
|
67611
67655
|
if (!response.ok) {
|
|
67612
67656
|
return `Error: HTTP ${response.status} ${response.statusText}`;
|
|
67613
67657
|
}
|
|
@@ -68292,6 +68336,41 @@ function normalizeProjectPath(cwd2) {
|
|
|
68292
68336
|
function nowIso() {
|
|
68293
68337
|
return (/* @__PURE__ */ new Date()).toISOString();
|
|
68294
68338
|
}
|
|
68339
|
+
function mergeGoalTasks(existing, input) {
|
|
68340
|
+
if (!input)
|
|
68341
|
+
return existing;
|
|
68342
|
+
const byId = new Map(input.map((task) => [task.id, task]));
|
|
68343
|
+
const merged = existing.map((task) => {
|
|
68344
|
+
const next = byId.get(task.id);
|
|
68345
|
+
if (!next)
|
|
68346
|
+
return task;
|
|
68347
|
+
return {
|
|
68348
|
+
...task,
|
|
68349
|
+
...next,
|
|
68350
|
+
status: task.status !== next.status || task.attempts > next.attempts ? task.status : next.status,
|
|
68351
|
+
attempts: Math.max(task.attempts, next.attempts),
|
|
68352
|
+
workerId: task.workerId ?? next.workerId,
|
|
68353
|
+
verification: task.verification ?? next.verification,
|
|
68354
|
+
lastSummary: task.lastSummary ?? next.lastSummary
|
|
68355
|
+
};
|
|
68356
|
+
});
|
|
68357
|
+
for (const task of input) {
|
|
68358
|
+
if (!existing.some((item) => item.id === task.id))
|
|
68359
|
+
merged.push(task);
|
|
68360
|
+
}
|
|
68361
|
+
return merged;
|
|
68362
|
+
}
|
|
68363
|
+
function mergeGoalEvidence(existing, input) {
|
|
68364
|
+
if (!input)
|
|
68365
|
+
return existing;
|
|
68366
|
+
const byId = new Map(existing.map((item) => [item.id, item]));
|
|
68367
|
+
const merged = [...existing];
|
|
68368
|
+
for (const item of input) {
|
|
68369
|
+
if (!byId.has(item.id))
|
|
68370
|
+
merged.push(item);
|
|
68371
|
+
}
|
|
68372
|
+
return merged;
|
|
68373
|
+
}
|
|
68295
68374
|
function isObject2(value) {
|
|
68296
68375
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
68297
68376
|
}
|
|
@@ -68314,7 +68393,7 @@ function isEvidenceKind(value) {
|
|
|
68314
68393
|
return value === "log" || value === "command" || value === "screenshot" || value === "file" || value === "summary";
|
|
68315
68394
|
}
|
|
68316
68395
|
function isEvidenceMechanism(value) {
|
|
68317
|
-
return value === "command" || value === "test" || value === "script" || value === "fixture" || value === "log" || value === "screenshot" || value === "video" || value === "browser" || value === "device" || value === "source" || value === "manual";
|
|
68396
|
+
return value === "command" || value === "test" || value === "script" || value === "fixture" || value === "log" || value === "screenshot" || value === "video" || value === "browser" || value === "device" || value === "source" || value === "file" || value === "manual";
|
|
68318
68397
|
}
|
|
68319
68398
|
function isEvidencePlanStatus(value) {
|
|
68320
68399
|
return value === "planned" || value === "ready" || value === "blocked";
|
|
@@ -68630,8 +68709,8 @@ async function upsertGoalRun(cwd2, input) {
|
|
|
68630
68709
|
prerequisites: input.prerequisites ?? existing.prerequisites,
|
|
68631
68710
|
harness: input.harness ?? existing.harness,
|
|
68632
68711
|
evidencePlan: input.evidencePlan ?? existing.evidencePlan,
|
|
68633
|
-
tasks:
|
|
68634
|
-
evidence:
|
|
68712
|
+
tasks: mergeGoalTasks(existing.tasks, input.tasks),
|
|
68713
|
+
evidence: mergeGoalEvidence(existing.evidence, input.evidence),
|
|
68635
68714
|
blockers: input.blockers ?? existing.blockers,
|
|
68636
68715
|
status: deriveRunnableStatus(input.status ?? existing.status, input.prerequisites ?? existing.prerequisites)
|
|
68637
68716
|
} : createGoalRun(cwd2, input);
|
|
@@ -68799,10 +68878,10 @@ function buildHarnessTaskPrompt(run) {
|
|
|
68799
68878
|
const harnessItems = run.harness.filter((item) => !item.command && !item.path).map((item) => `- ${item.label}: ${item.description ?? "Create local instrumentation."}`).join("\n");
|
|
68800
68879
|
return `Goal: ${run.goal}
|
|
68801
68880
|
|
|
68802
|
-
Build the missing local/free harness instrumentation needed before verification.
|
|
68881
|
+
Build only the missing local/free harness instrumentation needed before verification. Start by restating the intended experience, the relevant failure modes, and the senses/signals this harness must observe; do not default to generic tests, scripts, screenshots, benchmarks, or simulations unless that signal is required for this specific goal.
|
|
68803
68882
|
${harnessItems}
|
|
68804
68883
|
|
|
68805
|
-
Inventory
|
|
68884
|
+
Inventory available local capabilities just deeply enough to choose a proportional instrument, then build it. Update the Goal harness/verifier metadata with the goals tool and record durable evidence showing the instrument exists and works. Do not require paid services or signups; block only with exact user instructions if a true external prerequisite is missing.`;
|
|
68806
68885
|
}
|
|
68807
68886
|
function blockedEvidencePlanReason(run) {
|
|
68808
68887
|
const blocked = run.evidencePlan.find((item) => item.status === "blocked");
|
|
@@ -68857,15 +68936,15 @@ function buildEvidencePlanTaskPrompt(run) {
|
|
|
68857
68936
|
const plannedItems = run.evidencePlan.filter((item) => item.status === "planned").map((item) => `- ${item.label} (${item.mechanism}): ${item.description}${item.command ? `; candidate command: ${item.command}` : ""}${item.path ? `; artifact: ${item.path}` : ""}`).join("\n");
|
|
68858
68937
|
return `Goal: ${run.goal}
|
|
68859
68938
|
|
|
68860
|
-
Turn the planned proof paths below into real local/free verification capability before the Goal verifier runs.
|
|
68939
|
+
Turn the planned proof paths below into real local/free verification capability before the Goal verifier runs. For each path, preserve the orchestrator's goal-specific sensory intent: what experience is being observed, what failure it catches, and what signal proves it.
|
|
68861
68940
|
${plannedItems}
|
|
68862
68941
|
|
|
68863
|
-
Inventory
|
|
68942
|
+
Inventory available local capabilities without anchoring on any fixed tool category. Build only the proportional instrument needed for this proof path, update the Goal evidence_plan/harness/verifier metadata with the goals tool, and persist concrete command/file/artifact/log evidence that the instrument works. Do not use narrative-only verification or human visual inspection as completion evidence. Only block with exact user instructions for inputs that cannot be generated or checked locally.`;
|
|
68864
68943
|
}
|
|
68865
68944
|
function buildVerifierTaskPrompt(run) {
|
|
68866
68945
|
return `Goal: ${run.goal}
|
|
68867
68946
|
|
|
68868
|
-
Define and build a real end-to-end verifier for this Goal.
|
|
68947
|
+
Define and build a real end-to-end verifier for this Goal. Begin from the intended experience and required senses/signals already implied by the success criteria and evidence plan. Choose a proportional local/free verifier that observes those signals and catches the important goal-specific failures; do not add generic simulations, screenshots, benchmarks, or scripts unless they directly support that proof. Update the Goal with a verifier_command and verifier_description using the goals tool. The verifier must be runnable locally/free and produce durable command or file evidence, not narrative or human visual inspection. If an external prerequisite is missing, mark it missing with exact user instructions.`;
|
|
68869
68948
|
}
|
|
68870
68949
|
function incompleteTasks(run) {
|
|
68871
68950
|
return run.tasks.filter((task) => task.status !== "done");
|
|
@@ -68932,6 +69011,10 @@ ${priorSummaries}
|
|
|
68932
69011
|
Run targeted diagnostics, fix the root cause, update durable Goal evidence with the goals tool, and rerun the exact verifier command. Do not mark the Goal complete.`;
|
|
68933
69012
|
}
|
|
68934
69013
|
function decideGoalNextAction(run, options2 = {}) {
|
|
69014
|
+
const completion = canCompleteGoalRun(run);
|
|
69015
|
+
if (completion.ok) {
|
|
69016
|
+
return { kind: "complete", reason: completion.reason };
|
|
69017
|
+
}
|
|
68935
69018
|
if (run.status === "blocked" || run.status === "failed" || run.status === "passed" || run.status === "paused" && !run.continueRequestedAt) {
|
|
68936
69019
|
return { kind: "terminal", status: run.status, reason: `Goal is ${run.status}.` };
|
|
68937
69020
|
}
|
|
@@ -68972,10 +69055,6 @@ function decideGoalNextAction(run, options2 = {}) {
|
|
|
68972
69055
|
reason: `Goal task "${task.title}" is ready for worker attempt ${attempts}.`
|
|
68973
69056
|
};
|
|
68974
69057
|
}
|
|
68975
|
-
const completion = canCompleteGoalRun(run);
|
|
68976
|
-
if (completion.ok) {
|
|
68977
|
-
return { kind: "complete", reason: completion.reason };
|
|
68978
|
-
}
|
|
68979
69058
|
const blockedEvidence = blockedEvidencePlanReason(run);
|
|
68980
69059
|
if (blockedEvidence) {
|
|
68981
69060
|
return { kind: "blocked", reason: blockedEvidence };
|
|
@@ -69076,6 +69155,7 @@ var EvidencePlanInput = external_exports.object({
|
|
|
69076
69155
|
"browser",
|
|
69077
69156
|
"device",
|
|
69078
69157
|
"source",
|
|
69158
|
+
"file",
|
|
69079
69159
|
"manual"
|
|
69080
69160
|
]).describe("How this proof will be gathered"),
|
|
69081
69161
|
description: external_exports.string().describe("What this evidence proves"),
|
|
@@ -69144,7 +69224,7 @@ function asEvidenceKind(value) {
|
|
|
69144
69224
|
return "summary";
|
|
69145
69225
|
}
|
|
69146
69226
|
function asEvidenceMechanism(value) {
|
|
69147
|
-
if (value === "command" || value === "test" || value === "script" || value === "fixture" || value === "log" || value === "screenshot" || value === "video" || value === "browser" || value === "device" || value === "source" || value === "manual") {
|
|
69227
|
+
if (value === "command" || value === "test" || value === "script" || value === "fixture" || value === "log" || value === "screenshot" || value === "video" || value === "browser" || value === "device" || value === "source" || value === "file" || value === "manual") {
|
|
69148
69228
|
return value;
|
|
69149
69229
|
}
|
|
69150
69230
|
return "command";
|
|
@@ -69371,7 +69451,9 @@ function createGoalsTool(cwd2) {
|
|
|
69371
69451
|
const completion = canCompleteGoalRun(runWithVerifier);
|
|
69372
69452
|
const updated = await upsertGoalRun(cwd2, {
|
|
69373
69453
|
...runWithVerifier,
|
|
69374
|
-
status: result.status === "pass" && completion.ok ? "passed" : result.status === "pass" ? "ready" : result.status === "fail" ? "ready" : "verifying"
|
|
69454
|
+
status: result.status === "pass" && completion.ok ? "passed" : result.status === "pass" ? goalHasBlockingPrerequisites(runWithVerifier) ? "blocked" : "ready" : result.status === "fail" ? goalHasBlockingPrerequisites(runWithVerifier) ? "blocked" : "ready" : "verifying",
|
|
69455
|
+
blockers: result.status === "pass" ? [] : run.blockers,
|
|
69456
|
+
activeWorkerId: void 0
|
|
69375
69457
|
});
|
|
69376
69458
|
return `Verifier recorded for "${updated.title}": ${result.status}.`;
|
|
69377
69459
|
}
|
|
@@ -70291,7 +70373,7 @@ ${planContent.trim()}
|
|
|
70291
70373
|
function renderResearchSection() {
|
|
70292
70374
|
return `## Research & Verification
|
|
70293
70375
|
|
|
70294
|
-
Do not assume APIs, CLI flags, config schema, internals, or error wording. Use \`source_path\` for installed deps and inspect with read/grep/find/ls; use \`web_search\` then \`web_fetch\` for authoritative docs. For public code, use ReferenceSources for curated repos or DiscoverRepos for current/top repos, then verify exact snippets with SearchCode literal text/RE2 (not semantic); \`path\` is a literal path substring and \`repo\` only after broad/peek proof. When driving a programmatic Goal run,
|
|
70376
|
+
Do not assume APIs, CLI flags, config schema, internals, or error wording. Use \`source_path\` for installed deps and inspect with read/grep/find/ls; use \`web_search\` then \`web_fetch\` for authoritative docs. For public code, use ReferenceSources for curated repos or DiscoverRepos for current/top repos, then verify exact snippets with SearchCode literal text/RE2 (not semantic); \`path\` is a literal path substring and \`repo\` only after broad/peek proof. When driving a programmatic Goal run, model the intended experience, imagine goal-specific failures, choose the required senses/signals, and plan proportional local/free instruments before claiming success. Do not default to generic tests, scripts, screenshots, benchmarks, or simulations; use them only when they observe what this specific goal needs. Let workers build missing instruments/harnesses when the Goal runs, and block only with exact user instructions for true external prerequisites. Run relevant checks after edits; read/fix failures; never report unrun or failing checks as passing.`;
|
|
70295
70377
|
}
|
|
70296
70378
|
function renderCodeQualitySection() {
|
|
70297
70379
|
return `## Code Quality
|
|
@@ -72027,51 +72109,71 @@ var PROMPT_COMMANDS = [
|
|
|
72027
72109
|
description: "Create a programmatic goal loop",
|
|
72028
72110
|
prompt: `# Goal: Programmatic Goal Loop
|
|
72029
72111
|
|
|
72030
|
-
You are creating a durable Goal run: a programmatic control loop that should keep the main orchestrator focused on the
|
|
72112
|
+
You are creating a durable Goal run: a programmatic control loop that lets the user rely on the agent while they are not watching. The run should keep the main orchestrator focused on the objective while workers build, instrument, diagnose, and gather evidence.
|
|
72031
72113
|
|
|
72032
72114
|
## User objective
|
|
72033
72115
|
|
|
72034
72116
|
The user's objective is in the command arguments. If the arguments are absent or too vague to identify an actionable objective, ask exactly one concise clarifying question and do not create a Goal run yet.
|
|
72035
72117
|
|
|
72036
|
-
##
|
|
72118
|
+
## Non-negotiable boundary: /goal creates a run, it does not do the work
|
|
72119
|
+
|
|
72120
|
+
The initial /goal invocation is setup/orchestration only. During this turn:
|
|
72121
|
+
|
|
72122
|
+
- Create or update the durable run and Goal tasks, then stop.
|
|
72123
|
+
- Do not implement, fix, refactor, edit, or generate project artifacts for the objective yourself.
|
|
72124
|
+
- Do not call subagent, the normal tasks tool, goals resume, or any action that starts workers, verifiers, or auto-continuation.
|
|
72125
|
+
- Do not run the verifier or "just start" any task. Worker agents do implementation after the user explicitly starts the Goal from the Goal pane with (R).
|
|
72126
|
+
- The only non-goals tools allowed before stopping are cheap local prerequisite checks needed to know whether the run is blocked. If a check would mutate files, start a service, run a long process, launch a worker, or begin implementation, make it a Goal task instead.
|
|
72127
|
+
|
|
72128
|
+
## Core mindset: goal-specific sensory proof
|
|
72129
|
+
|
|
72130
|
+
Do not default to ordinary tests, generic scripts, or broad simulations. First model what must be experienced for this specific goal to be trusted without the human present.
|
|
72131
|
+
|
|
72132
|
+
For each Goal, identify:
|
|
72133
|
+
|
|
72134
|
+
1. Intended experience \u2014 who or what must experience the result: user, customer, operator, developer, attacker, browser, device, API client, database, model, downstream system, or another relevant perspective.
|
|
72135
|
+
2. Failure imagination \u2014 the goal-specific ways the result could appear done while still failing in reality.
|
|
72136
|
+
3. Required senses/signals \u2014 the observations needed to detect those failures. Think in capabilities, not fixed tools: perception of rendered output, interaction, timing, persistence/state, external boundaries, adversarial/social pressure, generated artifacts, traces, comparisons, or other signals relevant to this objective.
|
|
72137
|
+
4. Proportional instruments \u2014 local/free ways workers can capture those signals. The evidence portfolio should be as small as possible while still removing the important assumptions; do not simulate, script, screenshot, benchmark, or red-team anything unless that signal is relevant to this goal.
|
|
72138
|
+
5. Completion rule \u2014 why the planned evidence would be enough to claim success, and what remains unproven or blocked.
|
|
72139
|
+
|
|
72140
|
+
Any examples you consider are inspiration, not a checklist. Borrow verification ideas from any domain when useful, but choose only the senses/signals that fit the user's actual objective.
|
|
72141
|
+
|
|
72142
|
+
## Orchestrator responsibilities
|
|
72037
72143
|
|
|
72038
72144
|
1. Translate the user's objective into:
|
|
72039
72145
|
- a short title,
|
|
72040
72146
|
- the original goal text,
|
|
72041
72147
|
- concrete success criteria that can be verified,
|
|
72042
72148
|
- prerequisite checks,
|
|
72043
|
-
- an evidence plan
|
|
72044
|
-
-
|
|
72045
|
-
- a verifier command
|
|
72046
|
-
2.
|
|
72047
|
-
3. Before
|
|
72048
|
-
|
|
72049
|
-
|
|
72050
|
-
- required app/dev server can start or is already running,
|
|
72051
|
-
- required fixture files, assets, devices, emulators, or test data exist or can be generated locally.
|
|
72052
|
-
4. Prefer local/free tools: scripts, shell commands, existing CLIs, test runners, logs, screenshots/images, existing dependencies, source_path, web docs, kencode search, and disposable workers/subagents. Do not require paid services, signups, or new external accounts unless unavoidable.
|
|
72053
|
-
5. Only ask the user for true external blockers after checking what you can do yourself. If a missing input cannot be generated or verified locally (credentials, paid services, physical devices, private assets, permissions), record the exact minimal prerequisite and ask once in chat; do not ask for broad lists of things you could inspect or create yourself.
|
|
72149
|
+
- an evidence plan describing the goal-specific sensory proof required,
|
|
72150
|
+
- harness or observability items that workers may need to build,
|
|
72151
|
+
- a verifier command when already obvious, otherwise a verifier description or task to define one.
|
|
72152
|
+
2. Plan first; do not build during initial Goal creation. The orchestrator may do cheap local prerequisite checks needed to determine whether the Goal is blocked, but worker agents should build instruments, implementation changes, harnesses, diagnostics, and verifier commands after the user starts the Goal. If implementation work is needed, capture it as a Goal task instead of doing it yourself.
|
|
72153
|
+
3. Before launching workers, identify prerequisites and check the ones you can check locally. Examples are non-exhaustive and should not anchor the plan: required credentials or permissions, local capabilities, app/runtime availability, fixture/assets/test data, devices/emulators, network or service access, or domain-specific inputs.
|
|
72154
|
+
4. Prefer local/free capabilities already available in the project or environment. Do not require paid services, signups, new external accounts, private assets, or physical access unless unavoidable for this specific objective.
|
|
72155
|
+
5. Only ask the user for true external blockers after checking what you can do yourself. If a missing input cannot be generated or verified locally, record the exact minimal prerequisite and ask once in chat; do not ask for broad lists of things you could inspect or create yourself.
|
|
72054
72156
|
6. Treat user-provided prerequisites as the first Goal item, named "User prerequisites" in the pane. The user may provide the missing value or instructions in chat. After they do, verify it locally without revealing secrets, then update the matching prerequisite to \`met\` with short evidence before any worker task runs.
|
|
72055
72157
|
7. Persist the run with the goals tool:
|
|
72056
72158
|
- call \`goals({ action: "create", ... })\` once the objective is understood,
|
|
72057
72159
|
- include success criteria, prerequisites, evidence_plan items, harness items, and verifier info,
|
|
72058
72160
|
- if any prerequisite is missing or unknown and cannot be automatically checked, persist the run as blocked and ask the user for the exact missing thing once.
|
|
72059
|
-
8. Add Goal tasks with \`goals({ action: "task", ... })\`. Do not use the normal tasks tool for this workflow. Each Goal task prompt must be standalone, mention the same project cwd, the specific
|
|
72060
|
-
9. Persist evidence with \`goals({ action: "evidence", ... })\` whenever
|
|
72061
|
-
10. Completion means verifier evidence satisfies the original success criteria. Do not call \`goals({ action: "complete" })\` merely because tasks are done; only complete after verification passes.
|
|
72062
|
-
11. When the Goal reaches a terminal state, give the user a
|
|
72161
|
+
8. Add Goal tasks with \`goals({ action: "task", ... })\`. Do not use the normal tasks tool for this workflow. Each Goal task prompt must be standalone, mention the same project cwd, the specific goal slice, the sensory signals or evidence it must produce, any existing instruments it should reuse, and verification expectations. Avoid pure "investigate and report" tasks unless their prompt explicitly requires persisting concrete findings with \`goals({ action: "evidence", ... })\` and creating or updating the next implementation task from those findings.
|
|
72162
|
+
9. Persist evidence with \`goals({ action: "evidence", ... })\` whenever workers create diagnostics, build or run instruments, capture artifacts, record controller decisions, attach verifier output, or learn a blocker.
|
|
72163
|
+
10. Completion means verifier evidence satisfies the original success criteria and the required sensory proof. Do not call \`goals({ action: "complete" })\` merely because tasks are done; only complete after verification passes.
|
|
72164
|
+
11. When the Goal reaches a terminal state, give the user a specific final summary in chat. Do not collapse the outcome into one generic row or say only that it "verified." Use a compact 3\u20134 column table with one row per substantive Goal task, evidence path, success criterion, verifier result, blocker, or decision. For bug/fix/audit goals, include the problem, how it was proven real or wrong, what fixed it, and the exact verification. For creation/improvement/non-problem goals, substitute the requested outcome or gap, what was delivered or decided, and the exact proof that the intended experience now exists. Include small snippets when useful: file:line references, command names and exit codes, short before/after text, log excerpts, artifact paths, or verifier output summaries. Do not dump worker logs; quote only the few details needed to make the conclusion auditable.
|
|
72063
72165
|
|
|
72064
72166
|
## Loop semantics
|
|
72065
72167
|
|
|
72066
|
-
|
|
72168
|
+
Initial /goal turn order: understand intended experience \u2192 imagine relevant failures \u2192 choose required senses/signals \u2192 plan proportional instruments \u2192 persist the run/tasks/evidence plan \u2192 stop.
|
|
72067
72169
|
|
|
72068
|
-
After the user starts a Goal from the Goal pane with (R), worker and verifier completions are sent back to you as hidden synthetic events. On each event, call \`goals({ action: "status", run_id })\`, inspect current state, briefly say what the orchestrator is doing so the chat shows progress, and take the next durable control-loop action rather than merely narrating. The UI keeps auto-continuing until the run is passed, blocked, paused, or failed.
|
|
72170
|
+
After the user starts a Goal from the Goal pane with (R), worker and verifier completions are sent back to you as hidden synthetic events. On each event, call \`goals({ action: "status", run_id })\`, inspect current state, briefly say what the orchestrator is doing so the chat shows progress, and take the next durable control-loop action rather than merely narrating. The UI keeps auto-continuing until the run is passed, blocked, paused, or failed. Even during auto-continuation, do not switch into hands-on implementation; if work is needed, create or update Goal tasks and let workers/verifiers do it.
|
|
72069
72171
|
|
|
72070
|
-
If no verifier command exists yet, create a task to define one. If the verifier fails, persist the failure evidence and add the next Goal task that addresses the failure. Cap runaway loops by pausing and recording evidence when repeated attempts stop making progress.
|
|
72172
|
+
If no verifier command exists yet, create a task to define one. If an evidence path or harness is only planned, create a worker task to build the missing instrument, then later workers can reuse that instrument for subsequent slices. If the verifier fails, persist the failure evidence and add the next Goal task that addresses the failure. Cap runaway loops by pausing and recording evidence when repeated attempts stop making progress.
|
|
72071
72173
|
|
|
72072
72174
|
## Final response
|
|
72073
72175
|
|
|
72074
|
-
When initially creating the Goal, keep the response short: say whether the Goal was created, ready, or blocked; mention the exact missing prerequisite if blocked; and tell the user they can press Ctrl+G to view it. If they ask how to start it, tell them the Goal pane keybind is (
|
|
72176
|
+
When initially creating the Goal, keep the response short: say whether the Goal was created, ready, or blocked; mention the exact missing prerequisite if blocked; and tell the user they can press Ctrl+G to view it. Then stop. Do not continue into implementation, worker startup, verifier execution, or Goal resume. If they ask how to start it, tell them the Goal pane keybind is (r) to run it. When auto-continuation eventually passes, fails, blocks, or pauses the Goal, provide the specific multi-row final summary table described above, with concrete proof snippets instead of a generic "verified" claim.`
|
|
72075
72177
|
},
|
|
72076
72178
|
{
|
|
72077
72179
|
name: "scan",
|
|
@@ -73627,6 +73729,33 @@ function estimateConversationTokens(messages) {
|
|
|
73627
73729
|
var TOOL_RESULT_MAX_CHARS = 2e3;
|
|
73628
73730
|
var MAX_SUMMARY_RETRIES = 2;
|
|
73629
73731
|
var MAX_SUMMARY_OUTPUT_TOKENS = 4096;
|
|
73732
|
+
var SUMMARY_ATTEMPT_TIMEOUT_MS = 3e4;
|
|
73733
|
+
var SummaryTimeoutError = class extends Error {
|
|
73734
|
+
constructor(timeoutMs) {
|
|
73735
|
+
super(`Summary LLM response timed out after ${timeoutMs}ms`);
|
|
73736
|
+
this.name = "SummaryTimeoutError";
|
|
73737
|
+
}
|
|
73738
|
+
};
|
|
73739
|
+
async function awaitSummaryResponseWithTimeout(response, timeoutMs, signal) {
|
|
73740
|
+
signal?.throwIfAborted();
|
|
73741
|
+
let timeout;
|
|
73742
|
+
let abortListener;
|
|
73743
|
+
try {
|
|
73744
|
+
return await new Promise((resolve4, reject) => {
|
|
73745
|
+
timeout = setTimeout(() => reject(new SummaryTimeoutError(timeoutMs)), timeoutMs);
|
|
73746
|
+
if (typeof timeout.unref === "function")
|
|
73747
|
+
timeout.unref();
|
|
73748
|
+
abortListener = () => reject(new DOMException("Aborted", "AbortError"));
|
|
73749
|
+
signal?.addEventListener("abort", abortListener, { once: true });
|
|
73750
|
+
response.then(resolve4, reject);
|
|
73751
|
+
});
|
|
73752
|
+
} finally {
|
|
73753
|
+
if (timeout)
|
|
73754
|
+
clearTimeout(timeout);
|
|
73755
|
+
if (abortListener)
|
|
73756
|
+
signal?.removeEventListener("abort", abortListener);
|
|
73757
|
+
}
|
|
73758
|
+
}
|
|
73630
73759
|
var COMPACTION_SYSTEM_PROMPT = "You are a conversation compaction assistant. Your job is to create a concise summary of a conversation between a user and an AI coding assistant.\n\nThis summary will replace older messages to keep the conversation within context limits while preserving all important information needed to continue the work seamlessly.\n\nAlways output the summary \u2014 never refuse, never ask questions, never output empty responses.\n\n## What to Include\n- **User intent and goals** \u2014 what the user is trying to accomplish\n- **What was done** \u2014 what was implemented, modified, or debugged, including technical approaches and outcomes\n- **File operations** \u2014 all files created, modified, or referenced, with key changes\n- **Tool call outcomes** \u2014 which tools were called and their key results\n- **Key decisions** \u2014 important choices made and why\n- **Solutions & troubleshooting** \u2014 problems encountered and how they were resolved\n\n## What to Exclude\n- Redundant or superseded information\n- Full file contents (reference by path instead)\n- Verbose tool output (summarize key results)\n- Plans, next steps, or implementation instructions \u2014 do NOT carry forward action items or plans from old conversation summaries. Summarize what HAPPENED, not what SHOULD happen next. The recent messages (preserved separately) already contain the current context.\n\nFocus on technical precision. Include specific identifiers (file paths, function names, etc.) that would be essential for continuation. Write in third person and maintain an objective, technical tone.";
|
|
73631
73760
|
var COMPACTION_USER_PROMPT = "Summarize the conversation above into a concise summary following the instructions. Output only the summary, nothing else.";
|
|
73632
73761
|
var COMPACTION_RESERVE_TOKENS = 16384;
|
|
@@ -73988,7 +74117,7 @@ You MUST preserve all references to this plan and its approval status in the sum
|
|
|
73988
74117
|
baseUrl: options2.baseUrl,
|
|
73989
74118
|
signal: options2.signal
|
|
73990
74119
|
});
|
|
73991
|
-
const response = await result.response;
|
|
74120
|
+
const response = await awaitSummaryResponseWithTimeout(result.response, SUMMARY_ATTEMPT_TIMEOUT_MS, options2.signal);
|
|
73992
74121
|
options2.signal?.throwIfAborted();
|
|
73993
74122
|
log("INFO", "compaction", `Summary LLM response received`, {
|
|
73994
74123
|
attempt: String(attempt),
|
|
@@ -74017,7 +74146,7 @@ You MUST preserve all references to this plan and its approval status in the sum
|
|
|
74017
74146
|
if (options2.signal?.aborted || err instanceof Error && err.name === "AbortError") {
|
|
74018
74147
|
throw err;
|
|
74019
74148
|
}
|
|
74020
|
-
log("WARN", "compaction", `Summary LLM call failed: ${err instanceof Error ? err.message : String(err)}`, { attempt: String(attempt) });
|
|
74149
|
+
log("WARN", "compaction", err instanceof SummaryTimeoutError ? `Summary LLM call timed out after ${SUMMARY_ATTEMPT_TIMEOUT_MS}ms \u2014 using fallback if no later attempt succeeds` : `Summary LLM call failed: ${err instanceof Error ? err.message : String(err)}`, { attempt: String(attempt), timeoutMs: String(SUMMARY_ATTEMPT_TIMEOUT_MS) });
|
|
74021
74150
|
}
|
|
74022
74151
|
}
|
|
74023
74152
|
if (summaryText.length === 0) {
|
|
@@ -90546,7 +90675,7 @@ var taskBarStore = createStore({
|
|
|
90546
90675
|
import { createHash as createHash4 } from "crypto";
|
|
90547
90676
|
import { readFileSync as readFileSync6, writeFileSync as writeFileSync3 } from "fs";
|
|
90548
90677
|
import { homedir as homedir6 } from "os";
|
|
90549
|
-
import { join as
|
|
90678
|
+
import { join as join9 } from "path";
|
|
90550
90679
|
|
|
90551
90680
|
// ../ggcoder/dist/utils/sound.js
|
|
90552
90681
|
init_esm_shims();
|
|
@@ -96566,7 +96695,7 @@ var SIDE_BY_SIDE_MIN5 = LOGO_WIDTH4 + GAP5.length + 20;
|
|
|
96566
96695
|
init_esm_shims();
|
|
96567
96696
|
var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1);
|
|
96568
96697
|
var import_react70 = __toESM(require_react(), 1);
|
|
96569
|
-
import { spawnSync } from "child_process";
|
|
96698
|
+
import { spawnSync as spawnSync2 } from "child_process";
|
|
96570
96699
|
import { createRequire } from "module";
|
|
96571
96700
|
var GAP6 = " ";
|
|
96572
96701
|
var LOGO_WIDTH5 = 11;
|
|
@@ -96625,13 +96754,20 @@ var HISTORY_PATH = path31.join(os10.homedir(), ".gg", "setup-history.json");
|
|
|
96625
96754
|
// ../ggcoder/dist/ui/live-item-flush.js
|
|
96626
96755
|
init_esm_shims();
|
|
96627
96756
|
|
|
96628
|
-
// ../ggcoder/dist/core/goal-
|
|
96757
|
+
// ../ggcoder/dist/core/goal-verifier.js
|
|
96629
96758
|
init_esm_shims();
|
|
96630
96759
|
import { spawn as spawn7 } from "child_process";
|
|
96760
|
+
import { mkdir as mkdir4, writeFile as writeFile4 } from "fs/promises";
|
|
96761
|
+
import { join as join7 } from "path";
|
|
96762
|
+
var DEFAULT_GOAL_VERIFIER_TIMEOUT_MS = 10 * 60 * 1e3;
|
|
96763
|
+
|
|
96764
|
+
// ../ggcoder/dist/core/goal-worker.js
|
|
96765
|
+
init_esm_shims();
|
|
96766
|
+
import { spawn as spawn8 } from "child_process";
|
|
96631
96767
|
import { createInterface as createInterface3 } from "readline";
|
|
96632
96768
|
import { createWriteStream, existsSync as existsSync6 } from "fs";
|
|
96633
|
-
import { mkdir as
|
|
96634
|
-
import { join as
|
|
96769
|
+
import { mkdir as mkdir5 } from "fs/promises";
|
|
96770
|
+
import { join as join8 } from "path";
|
|
96635
96771
|
import { randomUUID as randomUUID5 } from "crypto";
|
|
96636
96772
|
|
|
96637
96773
|
// ../ggcoder/dist/ui/goal-events.js
|
|
@@ -98529,7 +98665,7 @@ function createTaskTools(deps) {
|
|
|
98529
98665
|
|
|
98530
98666
|
// src/audio.ts
|
|
98531
98667
|
init_esm_shims();
|
|
98532
|
-
import { spawn as
|
|
98668
|
+
import { spawn as spawn9, execFileSync as execFileSync3 } from "child_process";
|
|
98533
98669
|
import { fileURLToPath as fileURLToPath3 } from "url";
|
|
98534
98670
|
import path35 from "path";
|
|
98535
98671
|
import fs35 from "fs";
|
|
@@ -98604,7 +98740,7 @@ function trySpawn(cmd, args) {
|
|
|
98604
98740
|
return new Promise((resolve4) => {
|
|
98605
98741
|
let resolved = false;
|
|
98606
98742
|
try {
|
|
98607
|
-
const child =
|
|
98743
|
+
const child = spawn9(cmd, args, {
|
|
98608
98744
|
detached: true,
|
|
98609
98745
|
stdio: "ignore"
|
|
98610
98746
|
});
|
|
@@ -98663,7 +98799,7 @@ async function tryPlayOnWindowsHost(file2) {
|
|
|
98663
98799
|
return new Promise((resolve4) => {
|
|
98664
98800
|
let resolved2 = false;
|
|
98665
98801
|
try {
|
|
98666
|
-
const child =
|
|
98802
|
+
const child = spawn9(
|
|
98667
98803
|
"powershell.exe",
|
|
98668
98804
|
["-NoProfile", "-WindowStyle", "Hidden", "-Command", script],
|
|
98669
98805
|
{
|
|
@@ -99808,4 +99944,4 @@ react/cjs/react-jsx-runtime.development.js:
|
|
|
99808
99944
|
* LICENSE file in the root directory of this source tree.
|
|
99809
99945
|
*)
|
|
99810
99946
|
*/
|
|
99811
|
-
//# sourceMappingURL=chunk-
|
|
99947
|
+
//# sourceMappingURL=chunk-JBKZOBJ7.js.map
|