agent-composer 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +495 -180
- package/composer.config.schema.json +206 -2
- package/dist/cli/cleanup.d.ts +24 -0
- package/dist/cli/cleanup.js +151 -0
- package/dist/cli/cleanup.js.map +1 -0
- package/dist/cli/doctor.d.ts +12 -0
- package/dist/cli/doctor.js +244 -4
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/goal.d.ts +28 -0
- package/dist/cli/goal.js +251 -0
- package/dist/cli/goal.js.map +1 -0
- package/dist/cli/help.d.ts +3 -0
- package/dist/cli/help.js +31 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/init.d.ts +5 -0
- package/dist/cli/init.js +116 -21
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/initArgs.d.ts +16 -0
- package/dist/cli/initArgs.js +19 -0
- package/dist/cli/initArgs.js.map +1 -0
- package/dist/cli/installGitHook.d.ts +7 -0
- package/dist/cli/installGitHook.js +61 -0
- package/dist/cli/installGitHook.js.map +1 -0
- package/dist/cli/mode.d.ts +6 -0
- package/dist/cli/mode.js +25 -0
- package/dist/cli/mode.js.map +1 -0
- package/dist/cli/status.d.ts +105 -0
- package/dist/cli/status.js +400 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/config/env.d.ts +1 -1
- package/dist/config/modes.d.ts +10 -0
- package/dist/config/modes.js +26 -0
- package/dist/config/modes.js.map +1 -0
- package/dist/config/oracleRole.d.ts +10 -0
- package/dist/config/oracleRole.js +11 -0
- package/dist/config/oracleRole.js.map +1 -0
- package/dist/config/schema.d.ts +246 -0
- package/dist/config/schema.js +127 -2
- package/dist/config/schema.js.map +1 -1
- package/dist/evolve/reflection.d.ts +9 -0
- package/dist/evolve/reflection.js +14 -0
- package/dist/evolve/reflection.js.map +1 -1
- package/dist/evolve/runner.d.ts +2 -1
- package/dist/evolve/runner.js +2 -1
- package/dist/evolve/runner.js.map +1 -1
- package/dist/index.js +115 -6
- package/dist/index.js.map +1 -1
- package/dist/providers/AnthropicCompatibleProvider.d.ts +13 -1
- package/dist/providers/AnthropicCompatibleProvider.js +115 -9
- package/dist/providers/AnthropicCompatibleProvider.js.map +1 -1
- package/dist/providers/CLIProvider.d.ts +23 -1
- package/dist/providers/CLIProvider.js +283 -65
- package/dist/providers/CLIProvider.js.map +1 -1
- package/dist/providers/IProvider.d.ts +13 -0
- package/dist/providers/SpendGuardProvider.d.ts +32 -0
- package/dist/providers/SpendGuardProvider.js +98 -0
- package/dist/providers/SpendGuardProvider.js.map +1 -0
- package/dist/registry.d.ts +5 -2
- package/dist/registry.js +17 -2
- package/dist/registry.js.map +1 -1
- package/dist/server/activeRuns.d.ts +17 -0
- package/dist/server/activeRuns.js +114 -0
- package/dist/server/activeRuns.js.map +1 -0
- package/dist/server/codexLifecycleRunner.d.ts +29 -0
- package/dist/server/codexLifecycleRunner.js +188 -0
- package/dist/server/codexLifecycleRunner.js.map +1 -0
- package/dist/server/configMutation.d.ts +22 -0
- package/dist/server/configMutation.js +121 -0
- package/dist/server/configMutation.js.map +1 -0
- package/dist/server/handoffContext.d.ts +1 -0
- package/dist/server/handoffContext.js +12 -0
- package/dist/server/handoffContext.js.map +1 -0
- package/dist/server/progress.d.ts +24 -0
- package/dist/server/progress.js +109 -0
- package/dist/server/progress.js.map +1 -0
- package/dist/server/toolDescriptions.d.ts +60 -0
- package/dist/server/toolDescriptions.js +134 -0
- package/dist/server/toolDescriptions.js.map +1 -0
- package/dist/server.d.ts +19 -21
- package/dist/server.js +90 -330
- package/dist/server.js.map +1 -1
- package/dist/tools/audit.d.ts +2 -0
- package/dist/tools/audit.js +66 -0
- package/dist/tools/audit.js.map +1 -0
- package/dist/tools/code.d.ts +2 -0
- package/dist/tools/code.js +160 -0
- package/dist/tools/code.js.map +1 -0
- package/dist/tools/codexLifecycle.d.ts +2 -0
- package/dist/tools/codexLifecycle.js +206 -0
- package/dist/tools/codexLifecycle.js.map +1 -0
- package/dist/tools/config.d.ts +2 -0
- package/dist/tools/config.js +183 -0
- package/dist/tools/config.js.map +1 -0
- package/dist/tools/context.d.ts +31 -0
- package/dist/tools/context.js +2 -0
- package/dist/tools/context.js.map +1 -0
- package/dist/tools/goal.d.ts +2 -0
- package/dist/tools/goal.js +159 -0
- package/dist/tools/goal.js.map +1 -0
- package/dist/tools/handoff.d.ts +2 -0
- package/dist/tools/handoff.js +57 -0
- package/dist/tools/handoff.js.map +1 -0
- package/dist/tools/oracle.d.ts +2 -0
- package/dist/tools/oracle.js +248 -0
- package/dist/tools/oracle.js.map +1 -0
- package/dist/tools/research.d.ts +2 -0
- package/dist/tools/research.js +51 -0
- package/dist/tools/research.js.map +1 -0
- package/dist/tools/review.d.ts +2 -0
- package/dist/tools/review.js +233 -0
- package/dist/tools/review.js.map +1 -0
- package/dist/tools/route.d.ts +2 -0
- package/dist/tools/route.js +69 -0
- package/dist/tools/route.js.map +1 -0
- package/dist/tools/session.d.ts +2 -0
- package/dist/tools/session.js +37 -0
- package/dist/tools/session.js.map +1 -0
- package/dist/tools/status.d.ts +2 -0
- package/dist/tools/status.js +34 -0
- package/dist/tools/status.js.map +1 -0
- package/dist/tools/workflow.d.ts +2 -0
- package/dist/tools/workflow.js +27 -0
- package/dist/tools/workflow.js.map +1 -0
- package/dist/util/applyFileBlocks.d.ts +18 -0
- package/dist/util/applyFileBlocks.js +163 -0
- package/dist/util/applyFileBlocks.js.map +1 -0
- package/dist/util/asyncControl.d.ts +14 -0
- package/dist/util/asyncControl.js +106 -0
- package/dist/util/asyncControl.js.map +1 -0
- package/dist/util/auditLog.d.ts +56 -0
- package/dist/util/auditLog.js +232 -0
- package/dist/util/auditLog.js.map +1 -0
- package/dist/util/codexLifecycle.d.ts +55 -0
- package/dist/util/codexLifecycle.js +102 -0
- package/dist/util/codexLifecycle.js.map +1 -0
- package/dist/util/codexLifecycleJob.d.ts +209 -0
- package/dist/util/codexLifecycleJob.js +360 -0
- package/dist/util/codexLifecycleJob.js.map +1 -0
- package/dist/util/composerDisabled.d.ts +6 -0
- package/dist/util/composerDisabled.js +27 -0
- package/dist/util/composerDisabled.js.map +1 -0
- package/dist/util/dispatchHint.d.ts +5 -3
- package/dist/util/dispatchHint.js +62 -2
- package/dist/util/dispatchHint.js.map +1 -1
- package/dist/util/goal.d.ts +132 -0
- package/dist/util/goal.js +616 -0
- package/dist/util/goal.js.map +1 -0
- package/dist/util/goalReport.d.ts +51 -0
- package/dist/util/goalReport.js +164 -0
- package/dist/util/goalReport.js.map +1 -0
- package/dist/util/jobPolling.d.ts +9 -0
- package/dist/util/jobPolling.js +17 -0
- package/dist/util/jobPolling.js.map +1 -0
- package/dist/util/oracleJob.d.ts +66 -0
- package/dist/util/oracleJob.js +295 -0
- package/dist/util/oracleJob.js.map +1 -0
- package/dist/util/oracleLock.d.ts +38 -0
- package/dist/util/oracleLock.js +182 -0
- package/dist/util/oracleLock.js.map +1 -0
- package/dist/util/reviewDiff.d.ts +8 -0
- package/dist/util/reviewDiff.js +29 -0
- package/dist/util/reviewDiff.js.map +1 -0
- package/dist/util/reviewJob.d.ts +57 -0
- package/dist/util/reviewJob.js +207 -0
- package/dist/util/reviewJob.js.map +1 -0
- package/dist/util/workflowPlan.d.ts +24 -0
- package/dist/util/workflowPlan.js +49 -0
- package/dist/util/workflowPlan.js.map +1 -0
- package/package.json +8 -1
- package/plugin/composer-mastermind/commands/evolve.md +4 -0
- package/plugin/composer-mastermind/hooks/boundary_guard.sh +43 -2
- package/plugin/composer-mastermind/hooks/codex_warm_review.sh +161 -9
- package/plugin/composer-mastermind/hooks/learn.sh +172 -32
- package/plugin/composer-mastermind/hooks/precommit_codex_review.sh +430 -62
- package/plugin/composer-mastermind/plugin.json +1 -1
- package/plugin/composer-mastermind/skills/composer-mastermind/SKILL.md +190 -4
- package/scripts/composer-oracle-router-safe.sh +47 -0
- package/scripts/composer-statusline-segment.mjs +40 -0
- package/scripts/oracle-codex-handoff-safe.sh +49 -0
- package/scripts/oracle-plan-mcp.sh +66 -0
- package/scripts/oracle-pro-safe.sh +471 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/evolve/runner.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,EAAE;AACF,iEAAiE;AACjE,gCAAgC;AAChC,mEAAmE;AACnE,gDAAgD;AAChD,sFAAsF;AACtF,0CAA0C;AAC1C,gFAAgF;AAChF,mDAAmD;AACnD,4DAA4D;AAC5D,0DAA0D;AAC1D,uDAAuD;AACvD,EAAE;AACF,uEAAuE;AACvE,uEAAuE;AAEvE,OAAO,EAAE,YAAY,EAA2C,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,GAEtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAA0B,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAgB,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/evolve/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -11,6 +11,17 @@ import { ProviderRegistry } from "./registry.js";
|
|
|
11
11
|
import { createComposerServer } from "./server.js";
|
|
12
12
|
import { runInit, runGlobalInit } from "./cli/init.js";
|
|
13
13
|
import { runDoctor } from "./cli/doctor.js";
|
|
14
|
+
import { resolveInitInvocation } from "./cli/initArgs.js";
|
|
15
|
+
import { formatHelp } from "./cli/help.js";
|
|
16
|
+
import { parseCleanupArgs, runCleanup } from "./cli/cleanup.js";
|
|
17
|
+
import { applyMode } from "./cli/mode.js";
|
|
18
|
+
import { isModeName, MODE_NAMES } from "./config/modes.js";
|
|
19
|
+
import { runStatus } from "./cli/status.js";
|
|
20
|
+
import { runInstallGitHook } from "./cli/installGitHook.js";
|
|
21
|
+
import { runGoal } from "./cli/goal.js";
|
|
22
|
+
import { failInFlightCodexLifecycleJobs } from "./util/codexLifecycleJob.js";
|
|
23
|
+
import { failInFlightOracleJobs } from "./util/oracleJob.js";
|
|
24
|
+
import { failInFlightReviewJobs } from "./util/reviewJob.js";
|
|
14
25
|
const CONFIG_PATH = process.env["COMPOSER_CONFIG"] ?? "composer.config.json";
|
|
15
26
|
// Pass undefined when COMPOSER_ENV is unset so loadEnvJson uses the lookup
|
|
16
27
|
// chain (cwd → ~/.config/composer/). Passing ".env.json" as a literal explicit
|
|
@@ -18,36 +29,134 @@ const CONFIG_PATH = process.env["COMPOSER_CONFIG"] ?? "composer.config.json";
|
|
|
18
29
|
// agent-composer from any cwd that lacks a local .env.json (manifested as
|
|
19
30
|
// "missing ANTHROPIC_AUTH_TOKEN" from composer_code).
|
|
20
31
|
const ENV_PATH = process.env["COMPOSER_ENV"];
|
|
32
|
+
const CLI_SUBCOMMANDS = new Set([
|
|
33
|
+
"help",
|
|
34
|
+
"--help",
|
|
35
|
+
"-h",
|
|
36
|
+
"init",
|
|
37
|
+
"doctor",
|
|
38
|
+
"cleanup",
|
|
39
|
+
"status",
|
|
40
|
+
"install-git-hook",
|
|
41
|
+
"goal",
|
|
42
|
+
"mode",
|
|
43
|
+
]);
|
|
44
|
+
const DEFAULT_SIGTERM_JOB_FLUSH_MS = 1_000;
|
|
21
45
|
async function main() {
|
|
22
46
|
const subcommand = process.argv[2];
|
|
23
|
-
|
|
47
|
+
if (subcommand === "help" || subcommand === "--help" || subcommand === "-h") {
|
|
48
|
+
process.stdout.write(`${formatHelp()}\n`);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
24
51
|
if (subcommand === "init") {
|
|
25
|
-
|
|
52
|
+
const invocation = resolveInitInvocation(process.argv.slice(3));
|
|
53
|
+
if (invocation.kind === "error") {
|
|
54
|
+
process.stderr.write(`${invocation.message}\n`);
|
|
55
|
+
process.exit(2);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (invocation.kind === "global") {
|
|
26
59
|
runGlobalInit({});
|
|
27
60
|
}
|
|
28
61
|
else {
|
|
29
|
-
runInit({ cwd: process.cwd() });
|
|
62
|
+
runInit({ cwd: process.cwd(), installOracle: invocation.installOracle });
|
|
30
63
|
}
|
|
31
64
|
return;
|
|
32
65
|
}
|
|
33
66
|
if (subcommand === "doctor") {
|
|
34
|
-
const
|
|
67
|
+
const flags = process.argv.slice(3);
|
|
68
|
+
const json = flags.includes("--json");
|
|
69
|
+
const report = await runDoctor({ cwd: process.cwd(), verbose: !json });
|
|
70
|
+
if (json) {
|
|
71
|
+
process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
|
|
72
|
+
}
|
|
35
73
|
process.exit(report.healthy ? 0 : 1);
|
|
36
74
|
return;
|
|
37
75
|
}
|
|
76
|
+
if (subcommand === "cleanup") {
|
|
77
|
+
const parsed = parseCleanupArgs(process.argv.slice(3));
|
|
78
|
+
if ("error" in parsed) {
|
|
79
|
+
process.stderr.write(`${parsed.error}\n`);
|
|
80
|
+
process.exit(2);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
runCleanup(parsed);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (subcommand === "status") {
|
|
87
|
+
const flags = process.argv.slice(3);
|
|
88
|
+
runStatus(process.cwd(), {
|
|
89
|
+
json: flags.includes("--json"),
|
|
90
|
+
line: flags.includes("--line"),
|
|
91
|
+
watch: flags.includes("--watch"),
|
|
92
|
+
replace: flags.includes("--replace"),
|
|
93
|
+
fast: flags.includes("--fast"),
|
|
94
|
+
});
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
if (subcommand === "install-git-hook") {
|
|
98
|
+
runInstallGitHook(process.cwd());
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
if (subcommand === "goal") {
|
|
102
|
+
runGoal(process.cwd(), {
|
|
103
|
+
action: process.argv[3],
|
|
104
|
+
flags: process.argv.slice(4),
|
|
105
|
+
});
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (subcommand === "mode") {
|
|
109
|
+
const name = process.argv[3];
|
|
110
|
+
if (!name || !isModeName(name)) {
|
|
111
|
+
process.stderr.write(`composer mode: expected one of ${MODE_NAMES.join("|")} (got ${name ?? "nothing"})\n`);
|
|
112
|
+
process.exit(2);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const result = applyMode(process.cwd(), name);
|
|
116
|
+
process.stdout.write(`composer mode: ${name} ${result.changed ? "applied to" : "already set in"} ${result.path}\n`);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
38
119
|
applyEnvJson(ENV_PATH);
|
|
39
120
|
const config = loadConfig(CONFIG_PATH);
|
|
40
121
|
const registry = new ProviderRegistry(config);
|
|
41
|
-
const server = createComposerServer(registry);
|
|
122
|
+
const server = createComposerServer(registry, { config, configPath: CONFIG_PATH });
|
|
42
123
|
const transport = new StdioServerTransport();
|
|
43
124
|
await server.connect(transport);
|
|
125
|
+
installSigtermJobCleanup(process.cwd());
|
|
44
126
|
// Connection success message goes to stderr — stdio MCP requires stdout
|
|
45
127
|
// for the protocol itself.
|
|
46
128
|
process.stderr.write(`composer MCP server connected (stdio) — config: ${CONFIG_PATH}\n`);
|
|
47
129
|
}
|
|
130
|
+
function installSigtermJobCleanup(root) {
|
|
131
|
+
let shuttingDown = false;
|
|
132
|
+
process.on("SIGTERM", () => {
|
|
133
|
+
if (shuttingDown)
|
|
134
|
+
return;
|
|
135
|
+
shuttingDown = true;
|
|
136
|
+
const timeout = new Promise((resolve) => {
|
|
137
|
+
const timer = setTimeout(resolve, DEFAULT_SIGTERM_JOB_FLUSH_MS);
|
|
138
|
+
timer.unref?.();
|
|
139
|
+
});
|
|
140
|
+
const flush = Promise.resolve().then(() => {
|
|
141
|
+
const error = "Composer MCP server received SIGTERM before the background job completed.";
|
|
142
|
+
failInFlightOracleJobs(root, error);
|
|
143
|
+
failInFlightReviewJobs(root, error);
|
|
144
|
+
failInFlightCodexLifecycleJobs(root, error);
|
|
145
|
+
});
|
|
146
|
+
void Promise.race([flush, timeout]).finally(() => {
|
|
147
|
+
process.exit(143);
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
}
|
|
48
151
|
main().catch((err) => {
|
|
49
152
|
const msg = err instanceof Error ? err.message : String(err);
|
|
50
|
-
|
|
153
|
+
const subcommand = process.argv[2];
|
|
154
|
+
if (subcommand && CLI_SUBCOMMANDS.has(subcommand)) {
|
|
155
|
+
process.stderr.write(`agent-composer failed: ${msg}\n`);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
process.stderr.write(`composer MCP server startup failed: ${msg}\n`);
|
|
159
|
+
}
|
|
51
160
|
process.exit(1);
|
|
52
161
|
});
|
|
53
162
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,2EAA2E;AAC3E,4DAA4D;AAC5D,EAAE;AACF,oDAAoD;AACpD,2EAA2E;AAE3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import type { IProvider, IProviderExecuteInput, IProviderExecuteOutput, ProviderId } from "./IProvider.js";
|
|
2
2
|
/** Minimal shape we need from the Anthropic client — eases DI in tests. */
|
|
3
|
+
export interface AnthropicMessageStream {
|
|
4
|
+
finalMessage: () => Promise<AnthropicCreateResult>;
|
|
5
|
+
abort?: () => void;
|
|
6
|
+
cancel?: () => void | Promise<void>;
|
|
7
|
+
destroy?: () => void;
|
|
8
|
+
}
|
|
3
9
|
export interface AnthropicLike {
|
|
4
10
|
messages: {
|
|
5
|
-
|
|
11
|
+
stream: (params: AnthropicCreateParams, options?: {
|
|
12
|
+
signal?: AbortSignal;
|
|
13
|
+
}) => AnthropicMessageStream;
|
|
6
14
|
};
|
|
7
15
|
}
|
|
8
16
|
export type ThinkingParam = {
|
|
@@ -40,6 +48,8 @@ export interface AnthropicCompatibleProviderOptions {
|
|
|
40
48
|
apiKey: string;
|
|
41
49
|
model: string;
|
|
42
50
|
defaultMaxTokens?: number;
|
|
51
|
+
/** Hard per-request deadline. Defaults to 180s so compatible streaming calls are always bounded. */
|
|
52
|
+
timeoutMs?: number;
|
|
43
53
|
/** Extended-thinking knob; omit to disable. When type=enabled, budgetTokens is required. */
|
|
44
54
|
thinking?: {
|
|
45
55
|
type: "enabled";
|
|
@@ -53,11 +63,13 @@ export interface AnthropicCompatibleProviderOptions {
|
|
|
53
63
|
apiKey: string;
|
|
54
64
|
}) => AnthropicLike;
|
|
55
65
|
}
|
|
66
|
+
export declare const DEFAULT_ANTHROPIC_TIMEOUT_MS = 180000;
|
|
56
67
|
export declare class AnthropicCompatibleProvider implements IProvider {
|
|
57
68
|
readonly id: ProviderId;
|
|
58
69
|
readonly modelLabel: string;
|
|
59
70
|
private readonly client;
|
|
60
71
|
private readonly defaultMaxTokens;
|
|
72
|
+
private readonly timeoutMs;
|
|
61
73
|
private readonly thinking?;
|
|
62
74
|
constructor(opts: AnthropicCompatibleProviderOptions);
|
|
63
75
|
healthCheck(): Promise<boolean>;
|
|
@@ -2,21 +2,18 @@
|
|
|
2
2
|
// Anthropic-compatible endpoint and any future compatible host.
|
|
3
3
|
// Real network calls happen here; tests inject a fake via clientFactory.
|
|
4
4
|
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
// duration ("Streaming is required for operations that may take longer than
|
|
8
|
-
// 10 minutes"). Workaround: keep role.maxTokens ≲ 16k and
|
|
9
|
-
// role.thinking.budgetTokens ≲ 8k. Proper fix: switch to .stream()
|
|
10
|
-
// (or .create({stream:true})) and aggregate events — requires updating
|
|
11
|
-
// AnthropicLike interface + test mocks.
|
|
5
|
+
// Uses messages.stream().finalMessage() so long/extended-thinking operations
|
|
6
|
+
// are not refused by the SDK's 10-minute non-streaming guard.
|
|
12
7
|
import Anthropic from "@anthropic-ai/sdk";
|
|
13
8
|
const DEFAULT_FACTORY = ({ baseURL, apiKey }) => new Anthropic({ baseURL, apiKey });
|
|
14
9
|
const DEFAULT_MAX_TOKENS = 4096;
|
|
10
|
+
export const DEFAULT_ANTHROPIC_TIMEOUT_MS = 180_000;
|
|
15
11
|
export class AnthropicCompatibleProvider {
|
|
16
12
|
id = "anthropic";
|
|
17
13
|
modelLabel;
|
|
18
14
|
client;
|
|
19
15
|
defaultMaxTokens;
|
|
16
|
+
timeoutMs;
|
|
20
17
|
thinking;
|
|
21
18
|
constructor(opts) {
|
|
22
19
|
if (!opts.baseUrl)
|
|
@@ -27,6 +24,10 @@ export class AnthropicCompatibleProvider {
|
|
|
27
24
|
throw new Error("AnthropicCompatibleProvider: model required");
|
|
28
25
|
this.modelLabel = opts.model;
|
|
29
26
|
this.defaultMaxTokens = opts.defaultMaxTokens ?? DEFAULT_MAX_TOKENS;
|
|
27
|
+
this.timeoutMs = opts.timeoutMs ?? DEFAULT_ANTHROPIC_TIMEOUT_MS;
|
|
28
|
+
if (!Number.isFinite(this.timeoutMs) || this.timeoutMs <= 0) {
|
|
29
|
+
throw new Error("AnthropicCompatibleProvider: timeoutMs must be a positive finite number");
|
|
30
|
+
}
|
|
30
31
|
if (opts.thinking) {
|
|
31
32
|
if (opts.thinking.type === "enabled") {
|
|
32
33
|
if (typeof opts.thinking.budgetTokens !== "number" || opts.thinking.budgetTokens < 1024) {
|
|
@@ -63,8 +64,21 @@ export class AnthropicCompatibleProvider {
|
|
|
63
64
|
if (this.thinking)
|
|
64
65
|
params.thinking = this.thinking;
|
|
65
66
|
const startedAt = Date.now();
|
|
66
|
-
const
|
|
67
|
-
|
|
67
|
+
const executionSignal = createTimeoutBoundSignal({
|
|
68
|
+
callerSignal: input.signal,
|
|
69
|
+
timeoutMs: this.timeoutMs,
|
|
70
|
+
timeoutMessage: `AnthropicCompatibleProvider: request timed out after ${this.timeoutMs}ms`,
|
|
71
|
+
});
|
|
72
|
+
let durationMs = 0;
|
|
73
|
+
let msg;
|
|
74
|
+
try {
|
|
75
|
+
const stream = this.client.messages.stream(params, { signal: executionSignal.signal });
|
|
76
|
+
msg = await finalMessageWithAbort(stream, executionSignal.signal);
|
|
77
|
+
durationMs = Date.now() - startedAt;
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
executionSignal.cleanup();
|
|
81
|
+
}
|
|
68
82
|
// Best-effort GLM cache-hit telemetry
|
|
69
83
|
if (!process.env["VITEST"]) {
|
|
70
84
|
try {
|
|
@@ -94,4 +108,96 @@ export class AnthropicCompatibleProvider {
|
|
|
94
108
|
};
|
|
95
109
|
}
|
|
96
110
|
}
|
|
111
|
+
function createTimeoutBoundSignal(input) {
|
|
112
|
+
const timeoutController = new AbortController();
|
|
113
|
+
const combinedController = new AbortController();
|
|
114
|
+
const timeoutError = new Error(input.timeoutMessage);
|
|
115
|
+
timeoutError.name = "TimeoutError";
|
|
116
|
+
const timer = setTimeout(() => {
|
|
117
|
+
timeoutController.abort(timeoutError);
|
|
118
|
+
}, input.timeoutMs);
|
|
119
|
+
timer.unref?.();
|
|
120
|
+
const abortFrom = (source) => {
|
|
121
|
+
if (combinedController.signal.aborted)
|
|
122
|
+
return;
|
|
123
|
+
combinedController.abort(abortReason(source));
|
|
124
|
+
};
|
|
125
|
+
const onCallerAbort = () => {
|
|
126
|
+
if (input.callerSignal)
|
|
127
|
+
abortFrom(input.callerSignal);
|
|
128
|
+
};
|
|
129
|
+
const onTimeoutAbort = () => abortFrom(timeoutController.signal);
|
|
130
|
+
if (input.callerSignal?.aborted) {
|
|
131
|
+
abortFrom(input.callerSignal);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
input.callerSignal?.addEventListener("abort", onCallerAbort, { once: true });
|
|
135
|
+
}
|
|
136
|
+
timeoutController.signal.addEventListener("abort", onTimeoutAbort, { once: true });
|
|
137
|
+
return {
|
|
138
|
+
signal: combinedController.signal,
|
|
139
|
+
cleanup: () => {
|
|
140
|
+
clearTimeout(timer);
|
|
141
|
+
input.callerSignal?.removeEventListener("abort", onCallerAbort);
|
|
142
|
+
timeoutController.signal.removeEventListener("abort", onTimeoutAbort);
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
async function finalMessageWithAbort(stream, signal) {
|
|
147
|
+
const cleanupStream = () => {
|
|
148
|
+
try {
|
|
149
|
+
stream.abort?.();
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
// best-effort cancellation; the abort promise below still rejects the call
|
|
153
|
+
}
|
|
154
|
+
try {
|
|
155
|
+
const cancelResult = stream.cancel?.();
|
|
156
|
+
if (cancelResult && typeof cancelResult.catch === "function") {
|
|
157
|
+
void cancelResult.catch(() => {
|
|
158
|
+
// best-effort cancellation; the abort promise below still rejects the call
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
// best-effort cancellation; the abort promise below still rejects the call
|
|
164
|
+
}
|
|
165
|
+
try {
|
|
166
|
+
stream.destroy?.();
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
// best-effort cancellation; the abort promise below still rejects the call
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
if (signal.aborted) {
|
|
173
|
+
cleanupStream();
|
|
174
|
+
throw abortReason(signal);
|
|
175
|
+
}
|
|
176
|
+
let onAbort;
|
|
177
|
+
const abortPromise = new Promise((_, reject) => {
|
|
178
|
+
onAbort = () => {
|
|
179
|
+
cleanupStream();
|
|
180
|
+
reject(abortReason(signal));
|
|
181
|
+
};
|
|
182
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
183
|
+
});
|
|
184
|
+
try {
|
|
185
|
+
return await Promise.race([stream.finalMessage(), abortPromise]);
|
|
186
|
+
}
|
|
187
|
+
finally {
|
|
188
|
+
if (onAbort)
|
|
189
|
+
signal.removeEventListener("abort", onAbort);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
function abortReason(signal) {
|
|
193
|
+
const reason = signal.reason;
|
|
194
|
+
if (reason instanceof Error)
|
|
195
|
+
return reason;
|
|
196
|
+
const message = typeof reason === "string" && reason.length > 0
|
|
197
|
+
? reason
|
|
198
|
+
: "AnthropicCompatibleProvider: request aborted";
|
|
199
|
+
const error = new Error(message);
|
|
200
|
+
error.name = "AbortError";
|
|
201
|
+
return error;
|
|
202
|
+
}
|
|
97
203
|
//# sourceMappingURL=AnthropicCompatibleProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnthropicCompatibleProvider.js","sourceRoot":"","sources":["../../src/providers/AnthropicCompatibleProvider.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,gEAAgE;AAChE,yEAAyE;AACzE,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"AnthropicCompatibleProvider.js","sourceRoot":"","sources":["../../src/providers/AnthropicCompatibleProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export type ExecFileFn = (file: string, args: ReadonlyArray<string>, options: {
|
|
|
8
8
|
maxBuffer?: number;
|
|
9
9
|
timeout?: number;
|
|
10
10
|
signal?: AbortSignal;
|
|
11
|
+
onStdout?: (stdout: string) => void;
|
|
11
12
|
}) => Promise<ExecFileResult>;
|
|
12
13
|
export interface CLIProviderOptions {
|
|
13
14
|
/** argv array: [binary, ...staticArgs]. Prompt is appended at runtime. */
|
|
@@ -16,6 +17,8 @@ export interface CLIProviderOptions {
|
|
|
16
17
|
model?: string;
|
|
17
18
|
cwd?: string;
|
|
18
19
|
timeoutMs?: number;
|
|
20
|
+
/** Hard wall-clock cap across all retry attempts. Default = timeoutMs. */
|
|
21
|
+
totalWallClockMs?: number;
|
|
19
22
|
maxBuffer?: number;
|
|
20
23
|
/** Retry attempts on transient failure (timeout / empty / rate-limit). Default 2. */
|
|
21
24
|
retries?: number;
|
|
@@ -31,6 +34,7 @@ export declare class CLIProvider implements IProvider {
|
|
|
31
34
|
private readonly exec;
|
|
32
35
|
private readonly cwd?;
|
|
33
36
|
private readonly timeoutMs;
|
|
37
|
+
private readonly totalWallClockMs;
|
|
34
38
|
private readonly maxBuffer;
|
|
35
39
|
private readonly retries;
|
|
36
40
|
private readonly maxResultChars;
|
|
@@ -39,8 +43,15 @@ export declare class CLIProvider implements IProvider {
|
|
|
39
43
|
execute(input: IProviderExecuteInput): Promise<IProviderExecuteOutput>;
|
|
40
44
|
/** Output signalling a retryable transient failure (timeout / rate-limit / empty). */
|
|
41
45
|
static isTransientFailure(stdout: string): boolean;
|
|
42
|
-
static prepareArgs(bin: string, staticArgs: ReadonlyArray<string>, prompt: string
|
|
46
|
+
static prepareArgs(bin: string, staticArgs: ReadonlyArray<string>, prompt: string, options?: {
|
|
47
|
+
projectDir?: string;
|
|
48
|
+
readOnly?: boolean;
|
|
49
|
+
model?: string;
|
|
50
|
+
reasoningEffort?: "low" | "medium" | "high";
|
|
51
|
+
sandbox?: "read-only" | "workspace-write";
|
|
52
|
+
}): {
|
|
43
53
|
args: string[];
|
|
54
|
+
cwd?: string;
|
|
44
55
|
finalMessagePath?: string;
|
|
45
56
|
cleanup: () => void;
|
|
46
57
|
};
|
|
@@ -48,6 +59,17 @@ export declare class CLIProvider implements IProvider {
|
|
|
48
59
|
private static assertSafeCli;
|
|
49
60
|
private static logUsage;
|
|
50
61
|
private static codexExecIndex;
|
|
62
|
+
private static hasCodexCd;
|
|
63
|
+
private static hasCodexModel;
|
|
64
|
+
private static hasCodexReasoningEffort;
|
|
51
65
|
private static findFlagValue;
|
|
66
|
+
private static forceCodexReadOnlySandbox;
|
|
67
|
+
private static findSandboxValue;
|
|
68
|
+
private static codexExecCommandIndex;
|
|
69
|
+
private static isCodexWrapper;
|
|
70
|
+
private static isCodexPackageToken;
|
|
52
71
|
private static readFinalMessage;
|
|
72
|
+
private static createStdoutProgressReporter;
|
|
73
|
+
private static lastProgressLine;
|
|
74
|
+
private static sanitizeProgressLine;
|
|
53
75
|
}
|