poly-weaver 0.12.4 → 0.12.5
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/agents/runner.d.ts +2 -0
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +10 -0
- package/dist/agents/runner.js.map +1 -1
- package/dist/agents/session-resume.d.ts +3 -2
- package/dist/agents/session-resume.d.ts.map +1 -1
- package/dist/agents/session-resume.js +10 -3
- package/dist/agents/session-resume.js.map +1 -1
- package/dist/agents/simplifiers/index.d.ts.map +1 -1
- package/dist/agents/simplifiers/index.js +1 -5
- package/dist/agents/simplifiers/index.js.map +1 -1
- package/dist/auto-update/check-agent-updates.d.ts +1 -0
- package/dist/auto-update/check-agent-updates.d.ts.map +1 -1
- package/dist/auto-update/check-agent-updates.js +80 -8
- package/dist/auto-update/check-agent-updates.js.map +1 -1
- package/dist/auto-update/detect-agents.d.ts +1 -0
- package/dist/auto-update/detect-agents.d.ts.map +1 -1
- package/dist/auto-update/detect-agents.js +1 -1
- package/dist/auto-update/detect-agents.js.map +1 -1
- package/dist/auto-update/install-agents.js +4 -1
- package/dist/auto-update/install-agents.js.map +1 -1
- package/dist/offscreen/controller.d.ts.map +1 -1
- package/dist/offscreen/controller.js +8 -5
- package/dist/offscreen/controller.js.map +1 -1
- package/dist/offscreen/fork-busy.d.ts +3 -20
- package/dist/offscreen/fork-busy.d.ts.map +1 -1
- package/dist/offscreen/fork-busy.js +7 -76
- package/dist/offscreen/fork-busy.js.map +1 -1
- package/dist/offscreen/fork-launch.d.ts +3 -34
- package/dist/offscreen/fork-launch.d.ts.map +1 -1
- package/dist/offscreen/fork-launch.js +4 -102
- package/dist/offscreen/fork-launch.js.map +1 -1
- package/dist/providers/claude/strategy.d.ts +10 -1
- package/dist/providers/claude/strategy.d.ts.map +1 -1
- package/dist/providers/claude/strategy.js +128 -2
- package/dist/providers/claude/strategy.js.map +1 -1
- package/dist/providers/claude/trust.d.ts +2 -0
- package/dist/providers/claude/trust.d.ts.map +1 -0
- package/dist/providers/claude/trust.js +22 -0
- package/dist/providers/claude/trust.js.map +1 -0
- package/dist/providers/codex/config.js +1 -1
- package/dist/providers/codex/config.js.map +1 -1
- package/dist/providers/codex/strategy.d.ts +7 -1
- package/dist/providers/codex/strategy.d.ts.map +1 -1
- package/dist/providers/codex/strategy.js +83 -2
- package/dist/providers/codex/strategy.js.map +1 -1
- package/dist/providers/codex/trust.d.ts +2 -0
- package/dist/providers/codex/trust.d.ts.map +1 -0
- package/dist/providers/codex/trust.js +92 -0
- package/dist/providers/codex/trust.js.map +1 -0
- package/dist/providers/copilot/completion.d.ts +5 -3
- package/dist/providers/copilot/completion.d.ts.map +1 -1
- package/dist/providers/copilot/completion.js +188 -16
- package/dist/providers/copilot/completion.js.map +1 -1
- package/dist/providers/copilot/strategy.d.ts +9 -1
- package/dist/providers/copilot/strategy.d.ts.map +1 -1
- package/dist/providers/copilot/strategy.js +138 -2
- package/dist/providers/copilot/strategy.js.map +1 -1
- package/dist/providers/copilot/trust.d.ts +2 -0
- package/dist/providers/copilot/trust.d.ts.map +1 -0
- package/dist/providers/copilot/trust.js +45 -0
- package/dist/providers/copilot/trust.js.map +1 -0
- package/dist/providers/fork.d.ts +64 -0
- package/dist/providers/fork.d.ts.map +1 -0
- package/dist/providers/fork.js +2 -0
- package/dist/providers/fork.js.map +1 -0
- package/dist/providers/index.d.ts +2 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/option-catalog.d.ts.map +1 -1
- package/dist/providers/option-catalog.js +14 -129
- package/dist/providers/option-catalog.js.map +1 -1
- package/dist/providers/trust-utils.d.ts +7 -0
- package/dist/providers/trust-utils.d.ts.map +1 -0
- package/dist/providers/trust-utils.js +49 -0
- package/dist/providers/trust-utils.js.map +1 -0
- package/dist/providers/trust.d.ts +1 -4
- package/dist/providers/trust.d.ts.map +1 -1
- package/dist/providers/trust.js +3 -204
- package/dist/providers/trust.js.map +1 -1
- package/dist/providers/types.d.ts +25 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js.map +1 -1
- package/package.json +1 -1
- package/dist/agents/simplifiers/prompts.d.ts +0 -11
- package/dist/agents/simplifiers/prompts.d.ts.map +0 -1
- package/dist/agents/simplifiers/prompts.js +0 -24
- package/dist/agents/simplifiers/prompts.js.map +0 -1
|
@@ -1,10 +1,35 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { SESSION_FILE_WAIT_DEFAULT_MS, snapshotSessionFiles, } from "../../session/locator.js";
|
|
3
|
+
import { INQUIRY_ONLY_INSTRUCTION } from "../fork.js";
|
|
1
4
|
import { flagIf } from "../types.js";
|
|
2
5
|
import { versionGte } from "../version.js";
|
|
3
|
-
import { ClaudePrimaryDetector } from "./completion.js";
|
|
6
|
+
import { countClaudeSubmits, isClaudeTurnComplete, latestClaudeSubmitIndex, ClaudePrimaryDetector, } from "./completion.js";
|
|
4
7
|
import { ClaudePlanModeDetector } from "./completion-plan-mode.js";
|
|
5
8
|
import { ClaudePlanModePtyMonitor, getPlanModePtyPattern, } from "./plan-mode-pty-monitor.js";
|
|
6
|
-
import { ClaudeSessionHandler } from "./session.js";
|
|
9
|
+
import { ClaudeSessionHandler, encodeClaudeProjectDir, extractRecentClaudeMessageUuids, findClaudeForkSessionFile, getClaudeSessionDir, } from "./session.js";
|
|
10
|
+
import { ensureClaudeTrust } from "./trust.js";
|
|
7
11
|
export const CLAUDE_CHILD_ENV = { CLAUDE_CODE_NO_FLICKER: "1" };
|
|
12
|
+
const DEFAULT_FORK_LOCATE_POLL_MS = 500;
|
|
13
|
+
const CLAUDE_OPUS_4_8_MIN_CLI_VERSION = "2.1.152";
|
|
14
|
+
const CLAUDE_SONNET_5_MIN_CLI_VERSION = "2.1.197";
|
|
15
|
+
const CLAUDE_MODELS_LEGACY = [
|
|
16
|
+
"claude-opus-4-7",
|
|
17
|
+
"claude-opus-4-7[1m]",
|
|
18
|
+
];
|
|
19
|
+
const CLAUDE_MODELS_OPUS_4_8 = [
|
|
20
|
+
"claude-opus-4-8",
|
|
21
|
+
"claude-opus-4-8[1m]",
|
|
22
|
+
"claude-opus-4-7",
|
|
23
|
+
"claude-opus-4-7[1m]",
|
|
24
|
+
];
|
|
25
|
+
const CLAUDE_MODELS_SONNET_5 = [
|
|
26
|
+
"claude-sonnet-5",
|
|
27
|
+
"claude-sonnet-5[1m]",
|
|
28
|
+
...CLAUDE_MODELS_OPUS_4_8,
|
|
29
|
+
];
|
|
30
|
+
const CLAUDE_DEFAULT_MODEL_LEGACY = "claude-opus-4-7[1m]";
|
|
31
|
+
const CLAUDE_DEFAULT_MODEL_OPUS_4_8 = "claude-opus-4-8[1m]";
|
|
32
|
+
const CLAUDE_EFFORTS = ["medium", "high", "xhigh", "max"];
|
|
8
33
|
export class ClaudeStrategy {
|
|
9
34
|
name = "claude";
|
|
10
35
|
displayName = "Claude Code";
|
|
@@ -12,7 +37,21 @@ export class ClaudeStrategy {
|
|
|
12
37
|
exitSignal = "/exit\n";
|
|
13
38
|
childEnv = CLAUDE_CHILD_ENV;
|
|
14
39
|
session = new ClaudeSessionHandler();
|
|
40
|
+
fork = new ClaudeForkHandler();
|
|
41
|
+
forkSubmitFloor = { from: "fork-file", offset: -1 };
|
|
15
42
|
version = undefined;
|
|
43
|
+
options = {
|
|
44
|
+
models: () => this.claudeModels(),
|
|
45
|
+
defaultModel: () => this.claudeSupportsOpus48()
|
|
46
|
+
? CLAUDE_DEFAULT_MODEL_OPUS_4_8
|
|
47
|
+
: CLAUDE_DEFAULT_MODEL_LEGACY,
|
|
48
|
+
efforts: (model) => isClaudeFamilyModel(model)
|
|
49
|
+
? CLAUDE_EFFORTS
|
|
50
|
+
: CLAUDE_EFFORTS.filter((effort) => effort !== "max"),
|
|
51
|
+
defaultEffort: () => "high",
|
|
52
|
+
isKnownModel: (model) => this.claudeModels().includes(model),
|
|
53
|
+
isKnownEffort: (effort, model) => this.options.efforts(model).includes(effort),
|
|
54
|
+
};
|
|
16
55
|
get planMode() {
|
|
17
56
|
const native = versionGte(this.version, "2.1.74");
|
|
18
57
|
return {
|
|
@@ -39,6 +78,16 @@ export class ClaudeStrategy {
|
|
|
39
78
|
args.push(prompt);
|
|
40
79
|
return args;
|
|
41
80
|
}
|
|
81
|
+
async ensureTrust(workdir) {
|
|
82
|
+
await ensureClaudeTrust(workdir);
|
|
83
|
+
}
|
|
84
|
+
simplifierPrompt(outputPlanFile) {
|
|
85
|
+
return [
|
|
86
|
+
"/simplify",
|
|
87
|
+
"",
|
|
88
|
+
`Write the simplification plan as markdown to: ${outputPlanFile}`,
|
|
89
|
+
].join("\n");
|
|
90
|
+
}
|
|
42
91
|
createDetector(opts) {
|
|
43
92
|
const useNativePlanMode = opts?.planMode === true && this.planMode.nativePlanFile === true;
|
|
44
93
|
if (useNativePlanMode) {
|
|
@@ -50,5 +99,82 @@ export class ClaudeStrategy {
|
|
|
50
99
|
}
|
|
51
100
|
return new ClaudePrimaryDetector(200, 500, opts?.completionMarkerFile, opts?.onActivation);
|
|
52
101
|
}
|
|
102
|
+
claudeSupportsOpus48() {
|
|
103
|
+
return versionGte(this.version, CLAUDE_OPUS_4_8_MIN_CLI_VERSION);
|
|
104
|
+
}
|
|
105
|
+
claudeSupportsSonnet5() {
|
|
106
|
+
return versionGte(this.version, CLAUDE_SONNET_5_MIN_CLI_VERSION);
|
|
107
|
+
}
|
|
108
|
+
claudeModels() {
|
|
109
|
+
if (this.claudeSupportsSonnet5())
|
|
110
|
+
return CLAUDE_MODELS_SONNET_5;
|
|
111
|
+
return this.claudeSupportsOpus48()
|
|
112
|
+
? CLAUDE_MODELS_OPUS_4_8
|
|
113
|
+
: CLAUDE_MODELS_LEGACY;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
class ClaudeForkHandler {
|
|
117
|
+
async buildLaunch(slot) {
|
|
118
|
+
return {
|
|
119
|
+
command: "claude",
|
|
120
|
+
args: [
|
|
121
|
+
"--resume",
|
|
122
|
+
slot.sourceSessionId,
|
|
123
|
+
"--fork-session",
|
|
124
|
+
"--append-system-prompt",
|
|
125
|
+
INQUIRY_ONLY_INSTRUCTION,
|
|
126
|
+
...claudeFlags(slot),
|
|
127
|
+
],
|
|
128
|
+
env: CLAUDE_CHILD_ENV,
|
|
129
|
+
cleanup: () => { },
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
async captureLineage(slot, workdir, _launch) {
|
|
133
|
+
const projectDir = join(getClaudeSessionDir(), encodeClaudeProjectDir(workdir));
|
|
134
|
+
const [preSnapshot, sourceUuids] = await Promise.all([
|
|
135
|
+
snapshotSessionFiles(projectDir),
|
|
136
|
+
extractRecentClaudeMessageUuids(slot.sourceSessionPath).catch(() => new Set()),
|
|
137
|
+
]);
|
|
138
|
+
return {
|
|
139
|
+
kind: "claude",
|
|
140
|
+
projectDir,
|
|
141
|
+
preSnapshot,
|
|
142
|
+
sourceUuids,
|
|
143
|
+
sourceFile: slot.sourceSessionPath,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
async locateSessionFile(lineage, opts = {}) {
|
|
147
|
+
if (lineage.kind !== "claude")
|
|
148
|
+
return undefined;
|
|
149
|
+
try {
|
|
150
|
+
return await findClaudeForkSessionFile(lineage.projectDir, lineage.preSnapshot, lineage.sourceUuids, lineage.sourceFile, {
|
|
151
|
+
signal: opts.signal,
|
|
152
|
+
timeoutMs: opts.timeoutMs ?? SESSION_FILE_WAIT_DEFAULT_MS,
|
|
153
|
+
pollMs: opts.pollMs ?? DEFAULT_FORK_LOCATE_POLL_MS,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
return undefined;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
turnComplete(lines) {
|
|
161
|
+
return isClaudeTurnComplete(lines);
|
|
162
|
+
}
|
|
163
|
+
latestSubmitIndex(lines) {
|
|
164
|
+
return latestClaudeSubmitIndex(lines);
|
|
165
|
+
}
|
|
166
|
+
submitCount(lines) {
|
|
167
|
+
return countClaudeSubmits(lines);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function claudeFlags(slot) {
|
|
171
|
+
return [
|
|
172
|
+
...(slot.yolo ? ["--dangerously-skip-permissions"] : []),
|
|
173
|
+
...(slot.model ? ["--model", slot.model] : []),
|
|
174
|
+
...(slot.effort ? ["--effort", slot.effort] : []),
|
|
175
|
+
];
|
|
176
|
+
}
|
|
177
|
+
function isClaudeFamilyModel(model) {
|
|
178
|
+
return model?.startsWith("claude-") ?? false;
|
|
53
179
|
}
|
|
54
180
|
//# sourceMappingURL=strategy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/providers/claude/strategy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/providers/claude/strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust.d.ts","sourceRoot":"","sources":["../../../src/providers/claude/trust.ts"],"names":[],"mappings":"AASA,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBtE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { isRecord, parseJsonObject, readTextIfExists, } from "../trust-utils.js";
|
|
5
|
+
export async function ensureClaudeTrust(workdir) {
|
|
6
|
+
const configPath = join(homedir(), ".claude.json");
|
|
7
|
+
const key = workdir.replace(/\\/g, "/");
|
|
8
|
+
const content = await readTextIfExists(configPath);
|
|
9
|
+
const config = content === undefined
|
|
10
|
+
? {}
|
|
11
|
+
: parseJsonObject(content, configPath);
|
|
12
|
+
const projects = isRecord(config.projects) ? config.projects : {};
|
|
13
|
+
config.projects = projects;
|
|
14
|
+
const project = isRecord(projects[key]) ? projects[key] : {};
|
|
15
|
+
if (project.hasTrustDialogAccepted === true)
|
|
16
|
+
return;
|
|
17
|
+
project.hasTrustDialogAccepted = true;
|
|
18
|
+
projects[key] = project;
|
|
19
|
+
await mkdir(dirname(configPath), { recursive: true });
|
|
20
|
+
await writeFile(configPath, `${JSON.stringify(config, null, 2)}\n`, "utf8");
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=trust.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust.js","sourceRoot":"","sources":["../../../src/providers/claude/trust.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,QAAQ,EACR,eAAe,EACf,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAe;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,OAAO,KAAK,SAAS;QAClC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAE3B,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,IAAI,OAAO,CAAC,sBAAsB,KAAK,IAAI;QAAE,OAAO;IAEpD,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;IAExB,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,SAAS,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { readFile } from "node:fs/promises";
|
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { parse as parseToml } from "smol-toml";
|
|
5
|
-
import { isRecord, tomlBasicString } from "../trust.js";
|
|
5
|
+
import { isRecord, tomlBasicString } from "../trust-utils.js";
|
|
6
6
|
export async function readCodexDeveloperInstructions() {
|
|
7
7
|
try {
|
|
8
8
|
const configPath = join(homedir(), ".codex", "config.toml");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/providers/codex/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/providers/codex/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,8BAA8B;IAClD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,SAAS,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,sBAAsB,CAAC;QAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,WAAmB;IAEnB,MAAM,QAAQ,GAAG,MAAM,8BAA8B,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,OAAO,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;IACxE,OAAO,CAAC,IAAI,EAAE,0BAA0B,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { PlanModeConfig, PlanModeActivator, ProviderStrategy, SessionHandler, BuildArgsOpts, CompletionDetectorOptions } from "../types.js";
|
|
1
|
+
import type { PlanModeConfig, PlanModeActivator, ProviderStrategy, SessionHandler, BuildArgsOpts, CompletionDetectorOptions, ForkSubmitFloorPolicy, OptionCatalog } from "../types.js";
|
|
2
|
+
import type { ForkHandler } from "../fork.js";
|
|
2
3
|
import { CodexCompletionStrategy } from "./completion.js";
|
|
3
4
|
export declare const CODEX_ALTERNATE_SCREEN_ARGS: readonly ["-c", "tui.alternate_screen=always"];
|
|
4
5
|
export declare const CODEX_NO_AUTO_UPDATE_ARGS: readonly ["-c", "check_for_update_on_startup=false"];
|
|
@@ -8,10 +9,15 @@ export declare class CodexStrategy implements ProviderStrategy {
|
|
|
8
9
|
readonly command = "codex";
|
|
9
10
|
readonly exitSignal = "\u0003";
|
|
10
11
|
readonly session: SessionHandler;
|
|
12
|
+
readonly fork: ForkHandler;
|
|
13
|
+
readonly forkSubmitFloor: ForkSubmitFloorPolicy;
|
|
11
14
|
version: string | undefined;
|
|
12
15
|
readonly planMode: PlanModeConfig;
|
|
13
16
|
readonly planModeActivator: PlanModeActivator;
|
|
17
|
+
readonly options: OptionCatalog;
|
|
14
18
|
buildArgs(prompt: string, opts: BuildArgsOpts): Promise<string[]>;
|
|
19
|
+
ensureTrust(workdir: string): Promise<void>;
|
|
20
|
+
simplifierPrompt(outputPlanFile: string): string;
|
|
15
21
|
createDetector(opts?: CompletionDetectorOptions): CodexCompletionStrategy;
|
|
16
22
|
}
|
|
17
23
|
//# sourceMappingURL=strategy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../../src/providers/codex/strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,yBAAyB,
|
|
1
|
+
{"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../../src/providers/codex/strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,yBAAyB,EACzB,qBAAqB,EACrB,aAAa,EACd,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EACV,WAAW,EAKZ,MAAM,YAAY,CAAC;AAIpB,OAAO,EAIL,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAUzB,eAAO,MAAM,2BAA2B,gDAAiD,CAAC;AAC1F,eAAO,MAAM,yBAAyB,sDAAuD,CAAC;AAK9F,qBAAa,aAAc,YAAW,gBAAgB;IACpD,QAAQ,CAAC,IAAI,WAAW;IACxB,QAAQ,CAAC,WAAW,eAAe;IACnC,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,UAAU,YAAU;IAC7B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAA6B;IAC7D,QAAQ,CAAC,IAAI,EAAE,WAAW,CAA0B;IACpD,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAsB;IACrE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAa;IACxC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAG/B;IACF,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAgC;IAC7E,QAAQ,CAAC,OAAO,EAAE,aAAa,CAO7B;IAEI,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkCjE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM;IAShD,cAAc,CAAC,IAAI,CAAC,EAAE,yBAAyB,GAAG,uBAAuB;CAS1E"}
|
|
@@ -1,21 +1,38 @@
|
|
|
1
|
+
import { INQUIRY_ONLY_INSTRUCTION } from "../fork.js";
|
|
2
|
+
import { SESSION_FILE_WAIT_DEFAULT_MS } from "../../session/locator.js";
|
|
1
3
|
import { flagIf } from "../types.js";
|
|
2
|
-
import { CodexCompletionStrategy } from "./completion.js";
|
|
3
|
-
import { CodexSessionHandler } from "./session.js";
|
|
4
|
+
import { countCodexSubmits, isCodexTurnComplete, latestCodexSubmitIndex, CodexCompletionStrategy, } from "./completion.js";
|
|
5
|
+
import { CodexSessionHandler, findCodexForkSessionFile, snapshotCodexSessionFiles, } from "./session.js";
|
|
4
6
|
import { CodexPlanModeActivator } from "./plan-mode-activator.js";
|
|
7
|
+
import { buildCodexDeveloperInstructionsArgs } from "./config.js";
|
|
8
|
+
import { ensureCodexTrust } from "./trust.js";
|
|
5
9
|
export const CODEX_ALTERNATE_SCREEN_ARGS = ["-c", "tui.alternate_screen=always"];
|
|
6
10
|
export const CODEX_NO_AUTO_UPDATE_ARGS = ["-c", "check_for_update_on_startup=false"];
|
|
11
|
+
const DEFAULT_FORK_LOCATE_POLL_MS = 500;
|
|
12
|
+
const CODEX_MODELS = ["gpt-5.5"];
|
|
13
|
+
const CODEX_EFFORTS = ["medium", "high", "xhigh"];
|
|
7
14
|
export class CodexStrategy {
|
|
8
15
|
name = "codex";
|
|
9
16
|
displayName = "Codex CLI";
|
|
10
17
|
command = "codex";
|
|
11
18
|
exitSignal = "\x03";
|
|
12
19
|
session = new CodexSessionHandler();
|
|
20
|
+
fork = new CodexForkHandler();
|
|
21
|
+
forkSubmitFloor = { from: "source" };
|
|
13
22
|
version = undefined;
|
|
14
23
|
planMode = {
|
|
15
24
|
exitToolName: "ExitPlanMode",
|
|
16
25
|
nativePlanFile: true,
|
|
17
26
|
};
|
|
18
27
|
planModeActivator = new CodexPlanModeActivator();
|
|
28
|
+
options = {
|
|
29
|
+
models: () => CODEX_MODELS,
|
|
30
|
+
defaultModel: () => CODEX_MODELS[0] ?? "",
|
|
31
|
+
efforts: () => CODEX_EFFORTS,
|
|
32
|
+
defaultEffort: () => "high",
|
|
33
|
+
isKnownModel: (model) => CODEX_MODELS.includes(model),
|
|
34
|
+
isKnownEffort: (effort) => CODEX_EFFORTS.includes(effort),
|
|
35
|
+
};
|
|
19
36
|
async buildArgs(prompt, opts) {
|
|
20
37
|
const yoloFlag = flagIf(opts.yolo, "--dangerously-bypass-approvals-and-sandbox");
|
|
21
38
|
const modelFlag = opts.model ? ["-m", opts.model] : [];
|
|
@@ -46,8 +63,72 @@ export class CodexStrategy {
|
|
|
46
63
|
const prefix = opts.promptPrefix ?? "";
|
|
47
64
|
return [...optionFlags, `${prefix}${prompt}`];
|
|
48
65
|
}
|
|
66
|
+
async ensureTrust(workdir) {
|
|
67
|
+
await ensureCodexTrust(workdir);
|
|
68
|
+
}
|
|
69
|
+
simplifierPrompt(outputPlanFile) {
|
|
70
|
+
return [
|
|
71
|
+
"Review the changed code for reuse, quality, and efficiency.",
|
|
72
|
+
"Identify issues and propose fixes.",
|
|
73
|
+
"",
|
|
74
|
+
`Write the simplification plan as markdown to: ${outputPlanFile}`,
|
|
75
|
+
].join("\n");
|
|
76
|
+
}
|
|
49
77
|
createDetector(opts) {
|
|
50
78
|
return new CodexCompletionStrategy(100, 200, this.planMode.exitToolName, opts?.completionMarkerFile, opts?.onActivation);
|
|
51
79
|
}
|
|
52
80
|
}
|
|
81
|
+
class CodexForkHandler {
|
|
82
|
+
async buildLaunch(slot) {
|
|
83
|
+
const devArgs = await buildCodexDeveloperInstructionsArgs(INQUIRY_ONLY_INSTRUCTION);
|
|
84
|
+
return {
|
|
85
|
+
command: "codex",
|
|
86
|
+
args: [
|
|
87
|
+
"fork",
|
|
88
|
+
slot.sourceSessionId,
|
|
89
|
+
...codexFlags(slot),
|
|
90
|
+
...devArgs,
|
|
91
|
+
],
|
|
92
|
+
cleanup: () => { },
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
async captureLineage(slot) {
|
|
96
|
+
const preForkFiles = await snapshotCodexSessionFiles().catch(() => new Set());
|
|
97
|
+
return { kind: "codex", sourceSessionId: slot.sourceSessionId, preForkFiles };
|
|
98
|
+
}
|
|
99
|
+
async locateSessionFile(lineage, opts = {}) {
|
|
100
|
+
if (lineage.kind !== "codex")
|
|
101
|
+
return undefined;
|
|
102
|
+
try {
|
|
103
|
+
return await findCodexForkSessionFile(lineage.sourceSessionId, {
|
|
104
|
+
signal: opts.signal,
|
|
105
|
+
timeoutMs: opts.timeoutMs ?? SESSION_FILE_WAIT_DEFAULT_MS,
|
|
106
|
+
pollMs: opts.pollMs ?? DEFAULT_FORK_LOCATE_POLL_MS,
|
|
107
|
+
sessionsRoot: lineage.sessionsRoot,
|
|
108
|
+
exclude: lineage.preForkFiles,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
turnComplete(lines) {
|
|
116
|
+
return isCodexTurnComplete(lines);
|
|
117
|
+
}
|
|
118
|
+
latestSubmitIndex(lines) {
|
|
119
|
+
return latestCodexSubmitIndex(lines);
|
|
120
|
+
}
|
|
121
|
+
submitCount(lines) {
|
|
122
|
+
return countCodexSubmits(lines);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function codexFlags(slot) {
|
|
126
|
+
return [
|
|
127
|
+
...(slot.yolo ? ["--dangerously-bypass-approvals-and-sandbox"] : []),
|
|
128
|
+
...CODEX_ALTERNATE_SCREEN_ARGS,
|
|
129
|
+
...CODEX_NO_AUTO_UPDATE_ARGS,
|
|
130
|
+
...(slot.model ? ["-m", slot.model] : []),
|
|
131
|
+
...(slot.effort ? ["-c", `model_reasoning_effort="${slot.effort}"`] : []),
|
|
132
|
+
];
|
|
133
|
+
}
|
|
53
134
|
//# sourceMappingURL=strategy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/providers/codex/strategy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/providers/codex/strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust.d.ts","sourceRoot":"","sources":["../../../src/providers/codex/trust.ts"],"names":[],"mappings":"AAUA,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBrE"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { parse as parseToml } from "smol-toml";
|
|
5
|
+
import { isRecord, readTextIfExists, tomlBasicString, } from "../trust-utils.js";
|
|
6
|
+
export async function ensureCodexTrust(workdir) {
|
|
7
|
+
const configDir = join(homedir(), ".codex");
|
|
8
|
+
const configPath = join(configDir, "config.toml");
|
|
9
|
+
const projectPath = normalizeCodexProjectPath(workdir);
|
|
10
|
+
await mkdir(configDir, { recursive: true });
|
|
11
|
+
const content = await readTextIfExists(configPath) ?? "";
|
|
12
|
+
if (content.length > 0) {
|
|
13
|
+
const parsed = parseToml(content);
|
|
14
|
+
if (codexProjectIsTrusted(parsed, projectPath))
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const updated = updateCodexTrust(content, projectPath);
|
|
18
|
+
const updatedParsed = parseToml(updated);
|
|
19
|
+
if (!codexProjectIsTrusted(updatedParsed, projectPath)) {
|
|
20
|
+
throw new Error(`Codex trust entry was not written for ${projectPath}`);
|
|
21
|
+
}
|
|
22
|
+
if (updated !== content) {
|
|
23
|
+
await writeFile(configPath, updated, "utf8");
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function updateCodexTrust(content, projectPath) {
|
|
27
|
+
const eol = content.includes("\r\n") ? "\r\n" : "\n";
|
|
28
|
+
const lines = content === "" ? [] : content.split(/\r?\n/);
|
|
29
|
+
const start = lines.findIndex((line) => isTargetCodexProjectHeader(line, projectPath));
|
|
30
|
+
if (start === -1) {
|
|
31
|
+
const header = codexProjectHeaders(projectPath)[0];
|
|
32
|
+
const prefix = content === "" ? "" : content.endsWith("\n") ? content : `${content}${eol}`;
|
|
33
|
+
const separator = prefix === "" || prefix.endsWith(`${eol}${eol}`) ? "" : eol;
|
|
34
|
+
return `${prefix}${separator}${header}${eol}trust_level = "trusted"${eol}`;
|
|
35
|
+
}
|
|
36
|
+
let end = lines.length;
|
|
37
|
+
for (let index = start + 1; index < lines.length; index++) {
|
|
38
|
+
if (/^\s*\[[^\]]+\]\s*(?:#.*)?$/.test(lines[index])) {
|
|
39
|
+
end = index;
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
for (let index = start + 1; index < end; index++) {
|
|
44
|
+
if (/^\s*trust_level\s*=/.test(lines[index])) {
|
|
45
|
+
if (lines[index].trim() === 'trust_level = "trusted"')
|
|
46
|
+
return content;
|
|
47
|
+
lines[index] = 'trust_level = "trusted"';
|
|
48
|
+
return lines.join(eol);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
lines.splice(start + 1, 0, 'trust_level = "trusted"');
|
|
52
|
+
return lines.join(eol);
|
|
53
|
+
}
|
|
54
|
+
function isTargetCodexProjectHeader(line, projectPath) {
|
|
55
|
+
if (!/^\s*\[/.test(line))
|
|
56
|
+
return false;
|
|
57
|
+
try {
|
|
58
|
+
const parsed = parseToml(`${line}\n__poly_weaver_marker = true\n`);
|
|
59
|
+
const projects = isRecord(parsed.projects) ? parsed.projects : undefined;
|
|
60
|
+
const project = projects && isRecord(projects[projectPath])
|
|
61
|
+
? projects[projectPath]
|
|
62
|
+
: undefined;
|
|
63
|
+
return project?.__poly_weaver_marker === true;
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function codexProjectHeaders(projectPath) {
|
|
70
|
+
const literal = tomlLiteralString(projectPath);
|
|
71
|
+
const headers = literal ? [`[projects.${literal}]`] : [];
|
|
72
|
+
headers.push(`[projects.${tomlBasicString(projectPath)}]`);
|
|
73
|
+
return headers;
|
|
74
|
+
}
|
|
75
|
+
function tomlLiteralString(value) {
|
|
76
|
+
if (value.includes("'") || /[\u0000-\u001f\u007f]/.test(value))
|
|
77
|
+
return undefined;
|
|
78
|
+
return `'${value}'`;
|
|
79
|
+
}
|
|
80
|
+
function normalizeCodexProjectPath(value) {
|
|
81
|
+
return value.replace(/\//g, "\\").replace(/\\+$/g, "").toLowerCase();
|
|
82
|
+
}
|
|
83
|
+
function codexProjectIsTrusted(parsed, projectPath) {
|
|
84
|
+
if (!isRecord(parsed))
|
|
85
|
+
return false;
|
|
86
|
+
const projects = parsed.projects;
|
|
87
|
+
if (!isRecord(projects))
|
|
88
|
+
return false;
|
|
89
|
+
const project = projects[projectPath];
|
|
90
|
+
return isRecord(project) && project.trust_level === "trusted";
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=trust.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust.js","sourceRoot":"","sources":["../../../src/providers/codex/trust.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { type SessionLine } from "../../session/reader.js";
|
|
2
2
|
import { AbstractCompletionDetector } from "../base-completion.js";
|
|
3
3
|
export declare function isCopilotTurnComplete(lines: SessionLine[]): boolean;
|
|
4
|
+
export declare function isCopilotTurnSettled(lines: SessionLine[]): boolean;
|
|
5
|
+
export declare function outstandingBackgroundWork(lines: SessionLine[], endIdx?: number): Set<string>;
|
|
4
6
|
export declare function latestCopilotSubmitIndex(lines: SessionLine[]): number;
|
|
5
7
|
export declare function countCopilotSubmits(lines: SessionLine[]): number;
|
|
6
8
|
/**
|
|
7
9
|
* Copilot completion detection.
|
|
8
10
|
*
|
|
9
|
-
* Primary signal: latest assistant turn has ended
|
|
10
|
-
*
|
|
11
|
+
* Primary signal: latest assistant turn has ended and every background item
|
|
12
|
+
* launched at or before that `turn_end` has completed by then.
|
|
11
13
|
* Secondary signal: quiet debounce (no new data for `quietMs`).
|
|
12
14
|
*/
|
|
13
15
|
export declare class CopilotCompletionDetector extends AbstractCompletionDetector {
|
|
14
16
|
private readonly exitToolName?;
|
|
15
|
-
private
|
|
17
|
+
private primaryFired;
|
|
16
18
|
private exitToolCalled;
|
|
17
19
|
constructor(pollMs?: number, quietMs?: number, exitToolName?: string | undefined, markerFile?: string, onActivation?: () => void);
|
|
18
20
|
protected analyzeLines(lines: SessionLine[]): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../../src/providers/copilot/completion.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAExF,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../../src/providers/copilot/completion.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAExF,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAYnE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAGnE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAOlE;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,WAAW,EAAE,EACpB,MAAM,SAAe,GACpB,GAAG,CAAC,MAAM,CAAC,CAuBb;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAErE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAEhE;AAED;;;;;;GAMG;AACH,qBAAa,yBAA0B,SAAQ,0BAA0B;IAOrE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IANhC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAS;gBAG7B,MAAM,SAAM,EACZ,OAAO,SAAM,EACI,YAAY,CAAC,EAAE,MAAM,YAAA,EACtC,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,IAAI;IAK3B,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI;IAwBlD,SAAS,CAAC,oBAAoB,IAAI,OAAO;IAIzC,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM;cAIpC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO;cAIlD,2BAA2B,IAAI,OAAO;CAG1D"}
|