orquesta-agent 0.2.239 → 0.2.240
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/dist/executor.d.ts +42 -1
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +89 -14
- package/dist/executor.js.map +1 -1
- package/dist/index.js +81 -6
- package/dist/index.js.map +1 -1
- package/dist/supabase.d.ts +12 -0
- package/dist/supabase.d.ts.map +1 -1
- package/dist/supabase.js.map +1 -1
- package/package.json +1 -1
package/dist/executor.d.ts
CHANGED
|
@@ -35,6 +35,16 @@ export interface ExecuteOptions {
|
|
|
35
35
|
* also prevents the orquesta retry from recursing again.
|
|
36
36
|
*/
|
|
37
37
|
_forceCli?: 'orquesta' | 'claude';
|
|
38
|
+
/**
|
|
39
|
+
* Set when this prompt is one item of an assisted QA run. Suppresses every
|
|
40
|
+
* deploy instruction in the settings header; the caller (index.ts) also
|
|
41
|
+
* commits the branch and reports the diff back afterwards.
|
|
42
|
+
*/
|
|
43
|
+
assisted?: {
|
|
44
|
+
runId: string;
|
|
45
|
+
itemId: string;
|
|
46
|
+
branch: string;
|
|
47
|
+
};
|
|
38
48
|
}
|
|
39
49
|
export interface AuthConfig {
|
|
40
50
|
anthropicApiKey?: string;
|
|
@@ -96,7 +106,38 @@ export declare function checkClaudeAuth(): {
|
|
|
96
106
|
};
|
|
97
107
|
export declare function gitClone(repoUrl: string, targetDir: string, githubToken?: string): Promise<void>;
|
|
98
108
|
export declare function gitPull(targetDir: string): Promise<void>;
|
|
99
|
-
|
|
109
|
+
/**
|
|
110
|
+
* Commit everything in `targetDir` and push the CURRENT branch.
|
|
111
|
+
*
|
|
112
|
+
* Two things here are load-bearing and were wrong while this function had no
|
|
113
|
+
* callers:
|
|
114
|
+
*
|
|
115
|
+
* - The message goes through `execFileSync` argv, never a shell string. The
|
|
116
|
+
* old `git commit -m "${message}"` broke on any message containing a double
|
|
117
|
+
* quote and executed on a backtick — and the messages are now built from
|
|
118
|
+
* QA-supplied item titles, i.e. untrusted text.
|
|
119
|
+
* - The push names its remote and branch explicitly. A bare `git push` obeys
|
|
120
|
+
* `push.default`, which on a fresh assisted branch with no upstream fails
|
|
121
|
+
* outright; `-u origin <branch>` both creates the branch remotely and sets
|
|
122
|
+
* the upstream for later pushes.
|
|
123
|
+
*
|
|
124
|
+
* Returns the commit sha it created, or null when there was nothing to commit.
|
|
125
|
+
* Never throws — the caller reports what happened either way.
|
|
126
|
+
*/
|
|
127
|
+
export declare function gitCommitAndPush(targetDir: string, message: string, opts?: {
|
|
128
|
+
push?: boolean;
|
|
129
|
+
}): Promise<{
|
|
130
|
+
sha: string | null;
|
|
131
|
+
pushed: boolean;
|
|
132
|
+
}>;
|
|
133
|
+
/**
|
|
134
|
+
* `git diff --numstat` between `baseRef` and the working tree's last commit.
|
|
135
|
+
*
|
|
136
|
+
* Raw text, sent verbatim to the server: the agent never decides whether a diff
|
|
137
|
+
* is too big. Capped so a generated-file explosion cannot become a multi-MB
|
|
138
|
+
* request body.
|
|
139
|
+
*/
|
|
140
|
+
export declare function gitNumstatSince(targetDir: string, baseRef: string): string;
|
|
100
141
|
export declare function getActivePromptId(): string | null;
|
|
101
142
|
/**
|
|
102
143
|
* Current git branch of `cwd` (the branch a prompt runs on / an interactive
|
package/dist/executor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAkItD,OAAO,EAAgG,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAgP7I,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAOhF;AAGD,wBAAgB,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE/D;AAGD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,YAAY,CAAA;AAOlD,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAID,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAMtE;AAGD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAIlE;
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
|
package/dist/executor.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { spawn, execSync } from 'child_process';
|
|
1
|
+
import { spawn, execSync, execFileSync } from 'child_process';
|
|
2
2
|
// PTY binding for interactive sessions. We use @homebridge/node-pty-prebuilt-multiarch
|
|
3
3
|
// (a maintained fork that ships N-API prebuilds for linux-x64/arm64, darwin-x64/arm64,
|
|
4
4
|
// win32-x64) so customers never need a build toolchain on their VM. The try/catch
|
|
@@ -357,9 +357,19 @@ export function setProjectSettings(settings) {
|
|
|
357
357
|
logger.debug(`Settings: autoDeploy=${settings.autoDeploy}, autoMigrate=${settings.autoMigrate}`);
|
|
358
358
|
}
|
|
359
359
|
// Generate settings header for Claude prompt
|
|
360
|
-
|
|
360
|
+
//
|
|
361
|
+
// `assisted` suppresses every deploy instruction: an assisted run's whole point
|
|
362
|
+
// is that a human reads the diff before it ships, and a deploy fired from
|
|
363
|
+
// inside the run would ship exactly the change the review exists to hold back.
|
|
364
|
+
// The server refuses the deploy call as well (assistedDeployBlock) — this half
|
|
365
|
+
// only stops the agent from trying, because an old agent build on a customer
|
|
366
|
+
// machine will keep emitting the curl for months.
|
|
367
|
+
function generateSettingsHeader(opts = {}) {
|
|
361
368
|
const lines = ['## Active Orquesta Settings\n'];
|
|
362
|
-
if (
|
|
369
|
+
if (opts.assisted) {
|
|
370
|
+
lines.push(`- **Assisted run: deployment is DISABLED for this task.** Do NOT deploy, do NOT call the Orquesta Deploy API, and do NOT push to the main branch. Your changes stay on the QA branch and a reviewer decides whether they ship.`);
|
|
371
|
+
}
|
|
372
|
+
else if (projectSettings.autoDeploy && projectSettings.projectId) {
|
|
363
373
|
lines.push(`- **Auto-Deploy: ENABLED**
|
|
364
374
|
|
|
365
375
|
⚠️ CRITICAL DEPLOYMENT RULES:
|
|
@@ -1120,27 +1130,92 @@ export async function gitPull(targetDir) {
|
|
|
1120
1130
|
logger.warn(`Git pull failed (continuing without it): ${error}`);
|
|
1121
1131
|
}
|
|
1122
1132
|
}
|
|
1123
|
-
|
|
1133
|
+
/**
|
|
1134
|
+
* Commit everything in `targetDir` and push the CURRENT branch.
|
|
1135
|
+
*
|
|
1136
|
+
* Two things here are load-bearing and were wrong while this function had no
|
|
1137
|
+
* callers:
|
|
1138
|
+
*
|
|
1139
|
+
* - The message goes through `execFileSync` argv, never a shell string. The
|
|
1140
|
+
* old `git commit -m "${message}"` broke on any message containing a double
|
|
1141
|
+
* quote and executed on a backtick — and the messages are now built from
|
|
1142
|
+
* QA-supplied item titles, i.e. untrusted text.
|
|
1143
|
+
* - The push names its remote and branch explicitly. A bare `git push` obeys
|
|
1144
|
+
* `push.default`, which on a fresh assisted branch with no upstream fails
|
|
1145
|
+
* outright; `-u origin <branch>` both creates the branch remotely and sets
|
|
1146
|
+
* the upstream for later pushes.
|
|
1147
|
+
*
|
|
1148
|
+
* Returns the commit sha it created, or null when there was nothing to commit.
|
|
1149
|
+
* Never throws — the caller reports what happened either way.
|
|
1150
|
+
*/
|
|
1151
|
+
export async function gitCommitAndPush(targetDir, message, opts = {}) {
|
|
1124
1152
|
try {
|
|
1125
1153
|
// Check if there are changes
|
|
1126
1154
|
const status = execSync('git status --porcelain', { cwd: targetDir, timeout: 30_000 }).toString();
|
|
1127
1155
|
if (!status.trim()) {
|
|
1128
1156
|
logger.info('No changes to commit');
|
|
1129
|
-
return;
|
|
1157
|
+
return { sha: null, pushed: false };
|
|
1130
1158
|
}
|
|
1131
1159
|
logger.info('Committing changes...');
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
execSync('git
|
|
1160
|
+
execFileSync('git', ['add', '-A'], { cwd: targetDir, stdio: 'pipe', timeout: 30_000 });
|
|
1161
|
+
execFileSync('git', ['commit', '-m', message], { cwd: targetDir, stdio: 'pipe', timeout: 30_000 });
|
|
1162
|
+
const sha = execSync('git rev-parse HEAD', {
|
|
1135
1163
|
cwd: targetDir,
|
|
1136
|
-
|
|
1137
|
-
timeout:
|
|
1138
|
-
|
|
1139
|
-
});
|
|
1140
|
-
|
|
1164
|
+
encoding: 'utf-8',
|
|
1165
|
+
timeout: 10_000,
|
|
1166
|
+
stdio: ['pipe', 'pipe', 'ignore'],
|
|
1167
|
+
}).trim();
|
|
1168
|
+
let pushed = false;
|
|
1169
|
+
if (opts.push !== false) {
|
|
1170
|
+
const branch = getCurrentGitBranch(targetDir);
|
|
1171
|
+
if (!branch) {
|
|
1172
|
+
logger.warn('Detached HEAD — committed but not pushed');
|
|
1173
|
+
}
|
|
1174
|
+
else {
|
|
1175
|
+
try {
|
|
1176
|
+
execFileSync('git', ['push', '-u', 'origin', branch], {
|
|
1177
|
+
cwd: targetDir,
|
|
1178
|
+
stdio: 'pipe',
|
|
1179
|
+
timeout: GIT_NET_TIMEOUT_MS,
|
|
1180
|
+
env: GIT_NONINTERACTIVE_ENV,
|
|
1181
|
+
});
|
|
1182
|
+
pushed = true;
|
|
1183
|
+
logger.success(`Changes pushed to origin/${branch}`);
|
|
1184
|
+
}
|
|
1185
|
+
catch (pushError) {
|
|
1186
|
+
// A commit that exists locally is still a reviewable result — the
|
|
1187
|
+
// reviewer just reads the diff stat instead of the remote branch.
|
|
1188
|
+
logger.warn(`Git push failed (commit kept locally): ${pushError}`);
|
|
1189
|
+
}
|
|
1190
|
+
}
|
|
1191
|
+
}
|
|
1192
|
+
return { sha, pushed };
|
|
1141
1193
|
}
|
|
1142
1194
|
catch (error) {
|
|
1143
1195
|
logger.warn(`Git commit/push failed: ${error}`);
|
|
1196
|
+
return { sha: null, pushed: false };
|
|
1197
|
+
}
|
|
1198
|
+
}
|
|
1199
|
+
/**
|
|
1200
|
+
* `git diff --numstat` between `baseRef` and the working tree's last commit.
|
|
1201
|
+
*
|
|
1202
|
+
* Raw text, sent verbatim to the server: the agent never decides whether a diff
|
|
1203
|
+
* is too big. Capped so a generated-file explosion cannot become a multi-MB
|
|
1204
|
+
* request body.
|
|
1205
|
+
*/
|
|
1206
|
+
export function gitNumstatSince(targetDir, baseRef) {
|
|
1207
|
+
try {
|
|
1208
|
+
const out = execFileSync('git', ['diff', '--numstat', `${baseRef}...HEAD`], {
|
|
1209
|
+
cwd: targetDir,
|
|
1210
|
+
encoding: 'utf-8',
|
|
1211
|
+
timeout: 30_000,
|
|
1212
|
+
stdio: ['pipe', 'pipe', 'ignore'],
|
|
1213
|
+
maxBuffer: 8 * 1024 * 1024,
|
|
1214
|
+
});
|
|
1215
|
+
return out.slice(0, 180_000);
|
|
1216
|
+
}
|
|
1217
|
+
catch {
|
|
1218
|
+
return '';
|
|
1144
1219
|
}
|
|
1145
1220
|
}
|
|
1146
1221
|
// ============================================
|
|
@@ -1997,7 +2072,7 @@ export async function execute(options) {
|
|
|
1997
2072
|
}
|
|
1998
2073
|
// Build full prompt with settings, agent instructions, and attachments
|
|
1999
2074
|
let fullContent = content + attachmentContext;
|
|
2000
|
-
const settingsHeader = generateSettingsHeader();
|
|
2075
|
+
const settingsHeader = generateSettingsHeader({ assisted: !!options.assisted });
|
|
2001
2076
|
const browserBlock = globalBrowserEnabled ? BROWSER_TOOLS_PROMPT_BLOCK : '';
|
|
2002
2077
|
const coordinationBlock = await fetchCoordinationContextBlock();
|
|
2003
2078
|
const capabilitiesBlock = `${ORQUESTA_CAPABILITIES_PROMPT_BLOCK}${coordinationBlock}`;
|