@overlordai/worker 1.0.178 → 1.0.179
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/capability-detector.d.ts.map +1 -1
- package/dist/capability-detector.js +1 -0
- package/dist/capability-detector.js.map +1 -1
- package/dist/executor/executor.factory.d.ts.map +1 -1
- package/dist/executor/executor.factory.js +3 -0
- package/dist/executor/executor.factory.js.map +1 -1
- package/dist/executor/qoder.executor.d.ts +21 -0
- package/dist/executor/qoder.executor.d.ts.map +1 -0
- package/dist/executor/qoder.executor.js +134 -0
- package/dist/executor/qoder.executor.js.map +1 -0
- package/dist/pty-stdin-writer.js +1 -1
- package/dist/pty-stdin-writer.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability-detector.d.ts","sourceRoot":"","sources":["../src/capability-detector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"capability-detector.d.ts","sourceRoot":"","sources":["../src/capability-detector.ts"],"names":[],"mappings":"AAgBA,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,MAAM,IAAI,MAAM,EAAE;IAuBzB,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAUtC,OAAO,CAAC,MAAM,CAAC,WAAW;CAY3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability-detector.js","sourceRoot":"","sources":["../src/capability-detector.ts"],"names":[],"mappings":";;;;;;AAAA,2DAAkD;AAClD,gDAAwB;AACxB,+CAAsE;AAEtE,MAAM,GAAG,GAAG,IAAA,cAAI,EAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;AAElD,MAAM,YAAY,GAA4C;IAC5D,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;IACpC,oFAAoF;IACpF,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IACnC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;IAClC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAC5B,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;CACnC,CAAC;AAEF,MAAa,kBAAkB;IAC7B,MAAM,CAAC,MAAM;QACX,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,uBAAuB,EAAE,CAAC;QAE1E,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,IAAI,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,sCAAsC,CAAC,CAAC;gBAC7E,SAAS;YACX,CAAC;YAED,IAAI,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjD,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9B,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,MAAM,CAAC,uBAAuB;QACpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,IAAI,EAAE,CAAC;QAChE,OAAO,IAAI,GAAG,CACZ,GAAG;aACA,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;aAC1C,MAAM,CAAC,OAAO,CAAC,CACnB,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,MAAc;QACvC,MAAM,GAAG,GAAG,IAAA,0BAAY,GAAE,CAAC;QAC3B,GAAG,CAAC,MAAM,CAAC,GAAG,IAAA,qCAAuB,EAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAEzD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YAC7D,IAAA,iCAAY,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF;AA9CD,gDA8CC"}
|
|
1
|
+
{"version":3,"file":"capability-detector.js","sourceRoot":"","sources":["../src/capability-detector.ts"],"names":[],"mappings":";;;;;;AAAA,2DAAkD;AAClD,gDAAwB;AACxB,+CAAsE;AAEtE,MAAM,GAAG,GAAG,IAAA,cAAI,EAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;AAElD,MAAM,YAAY,GAA4C;IAC5D,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;IACpC,oFAAoF;IACpF,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IACnC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;IAClC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAC5B,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE;IACrC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;CACnC,CAAC;AAEF,MAAa,kBAAkB;IAC7B,MAAM,CAAC,MAAM;QACX,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,uBAAuB,EAAE,CAAC;QAE1E,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,IAAI,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,sCAAsC,CAAC,CAAC;gBAC7E,SAAS;YACX,CAAC;YAED,IAAI,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjD,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9B,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,MAAM,CAAC,uBAAuB;QACpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,IAAI,EAAE,CAAC;QAChE,OAAO,IAAI,GAAG,CACZ,GAAG;aACA,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;aAC1C,MAAM,CAAC,OAAO,CAAC,CACnB,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,MAAc;QACvC,MAAM,GAAG,GAAG,IAAA,0BAAY,GAAE,CAAC;QAC3B,GAAG,CAAC,MAAM,CAAC,GAAG,IAAA,qCAAuB,EAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAEzD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YAC7D,IAAA,iCAAY,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF;AA9CD,gDA8CC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.factory.d.ts","sourceRoot":"","sources":["../../src/executor/executor.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"executor.factory.d.ts","sourceRoot":"","sources":["../../src/executor/executor.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOxD;;GAEG;AACH,qBAAa,eAAe;IAC1B,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,aAAa;CAgBnD"}
|
|
@@ -6,6 +6,7 @@ const claude_executor_js_1 = require("./claude.executor.js");
|
|
|
6
6
|
const cursor_executor_js_1 = require("./cursor.executor.js");
|
|
7
7
|
const codex_executor_js_1 = require("./codex.executor.js");
|
|
8
8
|
const pi_executor_js_1 = require("./pi.executor.js");
|
|
9
|
+
const qoder_executor_js_1 = require("./qoder.executor.js");
|
|
9
10
|
/**
|
|
10
11
|
* Factory to create the appropriate AgentExecutor based on AgentType.
|
|
11
12
|
*/
|
|
@@ -20,6 +21,8 @@ class ExecutorFactory {
|
|
|
20
21
|
return new codex_executor_js_1.CodexExecutor();
|
|
21
22
|
case protocol_1.AgentType.PI:
|
|
22
23
|
return new pi_executor_js_1.PiExecutor();
|
|
24
|
+
case protocol_1.AgentType.QODER:
|
|
25
|
+
return new qoder_executor_js_1.QoderExecutor();
|
|
23
26
|
default:
|
|
24
27
|
throw new Error(`Unsupported agent type: ${String(agentType)}. Supported types: ${Object.values(protocol_1.AgentType).join(', ')}`);
|
|
25
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.factory.js","sourceRoot":"","sources":["../../src/executor/executor.factory.ts"],"names":[],"mappings":";;;AAAA,mDAAiD;AAEjD,6DAAsD;AACtD,6DAAsD;AACtD,2DAAoD;AACpD,qDAA8C;
|
|
1
|
+
{"version":3,"file":"executor.factory.js","sourceRoot":"","sources":["../../src/executor/executor.factory.ts"],"names":[],"mappings":";;;AAAA,mDAAiD;AAEjD,6DAAsD;AACtD,6DAAsD;AACtD,2DAAoD;AACpD,qDAA8C;AAC9C,2DAAoD;AAEpD;;GAEG;AACH,MAAa,eAAe;IAC1B,MAAM,CAAC,MAAM,CAAC,SAAoB;QAChC,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,oBAAS,CAAC,MAAM;gBACnB,OAAO,IAAI,mCAAc,EAAE,CAAC;YAC9B,KAAK,oBAAS,CAAC,MAAM;gBACnB,OAAO,IAAI,mCAAc,EAAE,CAAC;YAC9B,KAAK,oBAAS,CAAC,KAAK;gBAClB,OAAO,IAAI,iCAAa,EAAE,CAAC;YAC7B,KAAK,oBAAS,CAAC,EAAE;gBACf,OAAO,IAAI,2BAAU,EAAE,CAAC;YAC1B,KAAK,oBAAS,CAAC,KAAK;gBAClB,OAAO,IAAI,iCAAa,EAAE,CAAC;YAC7B;gBACE,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,CAAC,SAAS,CAAC,sBAAsB,MAAM,CAAC,MAAM,CAAC,oBAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7H,CAAC;IACH,CAAC;CACF;AAjBD,0CAiBC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ConfigSnapshot } from '@overlordai/protocol';
|
|
2
|
+
import { AgentExecutor } from './base.executor.js';
|
|
3
|
+
import type { AuthErrorPattern } from './base.executor.js';
|
|
4
|
+
/**
|
|
5
|
+
* Executor for Qoder CLI (qodercli).
|
|
6
|
+
*
|
|
7
|
+
* Qoder runs in interactive PTY mode (same as Claude/Codex/Cursor/Pi).
|
|
8
|
+
* Auth state lives in ~/.qoder — symlinked into the isolated worktree HOME.
|
|
9
|
+
* ~/.qoder.json is NOT inherited (model defaults to Auto in isolation).
|
|
10
|
+
* --with-claude-config is always enabled to load repo-local .claude/ config.
|
|
11
|
+
*/
|
|
12
|
+
export declare class QoderExecutor extends AgentExecutor {
|
|
13
|
+
readonly agentType: "qoder";
|
|
14
|
+
protected readonly authErrorPatterns: AuthErrorPattern[];
|
|
15
|
+
getStartCommand(): string;
|
|
16
|
+
buildArgs(config: ConfigSnapshot, workspacePath: string): string[];
|
|
17
|
+
prepareEnvironment(worktreePath: string, realHome: string): void;
|
|
18
|
+
buildEnvVars(_realHome: string, _worktreePath: string): Record<string, string>;
|
|
19
|
+
detectPrompt(cleanOutput: string): boolean;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=qoder.executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qoder.executor.d.ts","sourceRoot":"","sources":["../../src/executor/qoder.executor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAM3D;;;;;;;GAOG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAC9C,QAAQ,CAAC,SAAS,UAAmB;IAErC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,CAItD;IAEF,eAAe,IAAI,MAAM;IAIzB,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE;IAelE,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IA4BhE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAI9E,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;CAuB3C"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.QoderExecutor = void 0;
|
|
40
|
+
const node_child_process_1 = require("node:child_process");
|
|
41
|
+
const fs = __importStar(require("node:fs"));
|
|
42
|
+
const path = __importStar(require("node:path"));
|
|
43
|
+
const protocol_1 = require("@overlordai/protocol");
|
|
44
|
+
const base_executor_js_1 = require("./base.executor.js");
|
|
45
|
+
const symlink_helper_js_1 = require("./symlink-helper.js");
|
|
46
|
+
const pino_1 = __importDefault(require("pino"));
|
|
47
|
+
const log = (0, pino_1.default)({ name: 'qoder-executor' });
|
|
48
|
+
/**
|
|
49
|
+
* Executor for Qoder CLI (qodercli).
|
|
50
|
+
*
|
|
51
|
+
* Qoder runs in interactive PTY mode (same as Claude/Codex/Cursor/Pi).
|
|
52
|
+
* Auth state lives in ~/.qoder — symlinked into the isolated worktree HOME.
|
|
53
|
+
* ~/.qoder.json is NOT inherited (model defaults to Auto in isolation).
|
|
54
|
+
* --with-claude-config is always enabled to load repo-local .claude/ config.
|
|
55
|
+
*/
|
|
56
|
+
class QoderExecutor extends base_executor_js_1.AgentExecutor {
|
|
57
|
+
agentType = protocol_1.AgentType.QODER;
|
|
58
|
+
authErrorPatterns = [
|
|
59
|
+
{ pattern: /command not found|ENOENT/i, failureType: 'binary_missing' },
|
|
60
|
+
{ pattern: /User not logged in|Please login|QODER_PERSONAL_ACCESS_TOKEN/i, failureType: 'auth_failure' },
|
|
61
|
+
{ pattern: /rate limit|too many requests|quota exceeded|credit balance|insufficient balance|insufficient credits/i, failureType: 'rate_limit' },
|
|
62
|
+
];
|
|
63
|
+
getStartCommand() {
|
|
64
|
+
return 'qodercli';
|
|
65
|
+
}
|
|
66
|
+
buildArgs(config, workspacePath) {
|
|
67
|
+
const args = [
|
|
68
|
+
'-w', workspacePath,
|
|
69
|
+
'--with-claude-config',
|
|
70
|
+
];
|
|
71
|
+
if (config.allowedTools && config.allowedTools !== 'DANGEROUSLY_SKIP') {
|
|
72
|
+
args.push('--allowed-tools', config.allowedTools);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
args.push('--dangerously-skip-permissions');
|
|
76
|
+
}
|
|
77
|
+
return args;
|
|
78
|
+
}
|
|
79
|
+
prepareEnvironment(worktreePath, realHome) {
|
|
80
|
+
try {
|
|
81
|
+
(0, symlink_helper_js_1.createSymlinks)([
|
|
82
|
+
[path.join(realHome, '.qoder'), path.join(worktreePath, '.qoder')],
|
|
83
|
+
]);
|
|
84
|
+
// Prevent the .qoder symlink from dirtying git status.
|
|
85
|
+
// In a git worktree, .git is a file (not a directory), so the real
|
|
86
|
+
// exclude path must be resolved via `git rev-parse --git-path`.
|
|
87
|
+
try {
|
|
88
|
+
const excludePath = (0, node_child_process_1.execFileSync)('git', ['rev-parse', '--git-path', 'info/exclude'], {
|
|
89
|
+
cwd: worktreePath,
|
|
90
|
+
encoding: 'utf8',
|
|
91
|
+
timeout: 5000,
|
|
92
|
+
}).trim();
|
|
93
|
+
const absExclude = path.isAbsolute(excludePath) ? excludePath : path.join(worktreePath, excludePath);
|
|
94
|
+
fs.mkdirSync(path.dirname(absExclude), { recursive: true });
|
|
95
|
+
const existing = fs.existsSync(absExclude) ? fs.readFileSync(absExclude, 'utf8') : '';
|
|
96
|
+
if (!existing.includes('.qoder')) {
|
|
97
|
+
fs.appendFileSync(absExclude, '\n.qoder\n');
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// Non-fatal — worst case .qoder shows as untracked
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
log.warn({ worktreePath, err }, 'Qoder environment setup failed (non-fatal)');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
buildEnvVars(_realHome, _worktreePath) {
|
|
109
|
+
return {};
|
|
110
|
+
}
|
|
111
|
+
detectPrompt(cleanOutput) {
|
|
112
|
+
const tail = cleanOutput.slice(-1000);
|
|
113
|
+
// Exclude active generation/thinking states — Qoder keeps the prompt box
|
|
114
|
+
// visible during generation, so we must check for activity indicators first.
|
|
115
|
+
if (/(Generating|Thinking|Working|Compacting context|Auto-compacting|Reloading|Retrying)\.\.\./i.test(tail)) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
// Braille spinner characters followed by activity text
|
|
119
|
+
if (/^[\u2800-\u28ff]\s*(Generating|Thinking)/m.test(tail)) {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
// Qoder sometimes prefixes internal reasoning with a leading bullet line
|
|
123
|
+
// like "● The user is asking me to ...". Restrict the guard to that
|
|
124
|
+
// pattern so ordinary bullet-list answers do not block idle detection.
|
|
125
|
+
if (/^\s*●\s+The user\b/m.test(tail)) {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
// Idle prompt: box-drawn input area + Model footer
|
|
129
|
+
// Accept both Unicode box drawing (│) and ASCII fallback (|)
|
|
130
|
+
return /(?:│|\|)\s*>\s*(?:│|\|)/m.test(tail) && /Model:\s+.+?\s+\S\s+.+/i.test(tail);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
exports.QoderExecutor = QoderExecutor;
|
|
134
|
+
//# sourceMappingURL=qoder.executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qoder.executor.js","sourceRoot":"","sources":["../../src/executor/qoder.executor.ts"],"names":[],"mappings":"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"}
|
package/dist/pty-stdin-writer.js
CHANGED
|
@@ -17,7 +17,7 @@ const BRACKET_PASTE_END = '\x1b[201~';
|
|
|
17
17
|
* paste (prompt gets swallowed), so it uses plain writes.
|
|
18
18
|
*/
|
|
19
19
|
async function writePromptToStdin(pty, prompt, agentType) {
|
|
20
|
-
const useBracketPaste = agentType === protocol_1.AgentType.CURSOR || agentType === protocol_1.AgentType.CODEX || agentType === protocol_1.AgentType.PI;
|
|
20
|
+
const useBracketPaste = agentType === protocol_1.AgentType.CURSOR || agentType === protocol_1.AgentType.CODEX || agentType === protocol_1.AgentType.PI || agentType === protocol_1.AgentType.QODER;
|
|
21
21
|
if (prompt.length > 0) {
|
|
22
22
|
if (useBracketPaste)
|
|
23
23
|
pty.write(BRACKET_PASTE_START);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-stdin-writer.js","sourceRoot":"","sources":["../src/pty-stdin-writer.ts"],"names":[],"mappings":";;AAsBA,gDAoBC;AA1CD,mDAAiG;AAEjG,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAMD,MAAM,mBAAmB,GAAG,WAAW,CAAC;AACxC,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAEtC;;;;;;;;GAQG;AACI,KAAK,UAAU,kBAAkB,CACtC,GAAgB,EAChB,MAAc,EACd,SAAkB;IAElB,MAAM,eAAe,GAAG,SAAS,KAAK,oBAAS,CAAC,MAAM,IAAI,SAAS,KAAK,oBAAS,CAAC,KAAK,IAAI,SAAS,KAAK,oBAAS,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"pty-stdin-writer.js","sourceRoot":"","sources":["../src/pty-stdin-writer.ts"],"names":[],"mappings":";;AAsBA,gDAoBC;AA1CD,mDAAiG;AAEjG,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAMD,MAAM,mBAAmB,GAAG,WAAW,CAAC;AACxC,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAEtC;;;;;;;;GAQG;AACI,KAAK,UAAU,kBAAkB,CACtC,GAAgB,EAChB,MAAc,EACd,SAAkB;IAElB,MAAM,eAAe,GAAG,SAAS,KAAK,oBAAS,CAAC,MAAM,IAAI,SAAS,KAAK,oBAAS,CAAC,KAAK,IAAI,SAAS,KAAK,oBAAS,CAAC,EAAE,IAAI,SAAS,KAAK,oBAAS,CAAC,KAAK,CAAC;IAEvJ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,eAAe;YAAE,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,+BAAoB,EAAE,CAAC;YAC7D,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,+BAAoB,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,GAAG,+BAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC7C,MAAM,KAAK,CAAC,mCAAwB,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QACD,IAAI,eAAe;YAAE,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACpD,CAAC;IACD,mEAAmE;IACnE,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@overlordai/worker",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.179",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"lint": "tsc --noEmit"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@overlordai/protocol": "1.0.
|
|
19
|
+
"@overlordai/protocol": "1.0.179",
|
|
20
20
|
"async-mutex": "^0.5.0",
|
|
21
21
|
"node-pty": "^1.0.0",
|
|
22
22
|
"pino": "^9.0.0",
|