nexus-agents 8.67.0 → 8.69.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/dist/{chunk-Z3D2LFRH.js → chunk-AMZEALD7.js} +3 -3
- package/dist/{chunk-2BAFNUJO.js → chunk-BO6BL2H7.js} +61 -22
- package/dist/chunk-BO6BL2H7.js.map +1 -0
- package/dist/{chunk-Y73X72N4.js → chunk-HLOBTLXA.js} +2 -2
- package/dist/{chunk-5CCKE7VV.js → chunk-J3KPS6LF.js} +2 -2
- package/dist/{chunk-Z2572SMU.js → chunk-OQYN33KF.js} +3 -3
- package/dist/{chunk-H5WLZNF5.js → chunk-YDBWWICY.js} +2 -2
- package/dist/cli.js +7 -7
- package/dist/{consensus-vote-32WOIXIO.js → consensus-vote-IZRLUOXF.js} +4 -4
- package/dist/{improvement-review-VR4WCVME.js → improvement-review-ZAUBIVBS.js} +4 -4
- package/dist/index.d.ts +16 -11
- package/dist/index.js +6 -6
- package/dist/{setup-data-dir-ZU3MRHWV.js → setup-data-dir-E372AVMR.js} +3 -3
- package/package.json +1 -1
- package/dist/chunk-2BAFNUJO.js.map +0 -1
- /package/dist/{chunk-Z3D2LFRH.js.map → chunk-AMZEALD7.js.map} +0 -0
- /package/dist/{chunk-Y73X72N4.js.map → chunk-HLOBTLXA.js.map} +0 -0
- /package/dist/{chunk-5CCKE7VV.js.map → chunk-J3KPS6LF.js.map} +0 -0
- /package/dist/{chunk-Z2572SMU.js.map → chunk-OQYN33KF.js.map} +0 -0
- /package/dist/{chunk-H5WLZNF5.js.map → chunk-YDBWWICY.js.map} +0 -0
- /package/dist/{consensus-vote-32WOIXIO.js.map → consensus-vote-IZRLUOXF.js.map} +0 -0
- /package/dist/{improvement-review-VR4WCVME.js.map → improvement-review-ZAUBIVBS.js.map} +0 -0
- /package/dist/{setup-data-dir-ZU3MRHWV.js.map → setup-data-dir-E372AVMR.js.map} +0 -0
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
NODE_ENGINE_RANGE,
|
|
12
12
|
VERSION,
|
|
13
13
|
isNodeVersionSupported
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-YDBWWICY.js";
|
|
15
15
|
import {
|
|
16
16
|
claimGlobalRegistry
|
|
17
17
|
} from "./chunk-WQWC52E7.js";
|
|
@@ -1314,7 +1314,7 @@ async function runDoctorFix(result) {
|
|
|
1314
1314
|
writeLine2("\u2500".repeat(40));
|
|
1315
1315
|
let fixCount = 0;
|
|
1316
1316
|
if (!result.dataDirectory.rootExists || result.dataDirectory.subdirectories.some((d) => !d.exists || !d.writable)) {
|
|
1317
|
-
const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-
|
|
1317
|
+
const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-E372AVMR.js");
|
|
1318
1318
|
const outcome = describeDataDirFix2(initDataDirectories2());
|
|
1319
1319
|
writeLine2(outcome.line);
|
|
1320
1320
|
if (outcome.counted) fixCount++;
|
|
@@ -1416,4 +1416,4 @@ export {
|
|
|
1416
1416
|
startStdioServer,
|
|
1417
1417
|
closeServer
|
|
1418
1418
|
};
|
|
1419
|
-
//# sourceMappingURL=chunk-
|
|
1419
|
+
//# sourceMappingURL=chunk-AMZEALD7.js.map
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
import {
|
|
22
22
|
DEFAULT_TASK_TTL_MS,
|
|
23
23
|
clampTaskTtl
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-AMZEALD7.js";
|
|
25
25
|
import {
|
|
26
26
|
executeExpert
|
|
27
27
|
} from "./chunk-QO6S3VMQ.js";
|
|
@@ -71,7 +71,7 @@ import {
|
|
|
71
71
|
updateStage,
|
|
72
72
|
withWarnings,
|
|
73
73
|
writeJobCancelled
|
|
74
|
-
} from "./chunk-
|
|
74
|
+
} from "./chunk-OQYN33KF.js";
|
|
75
75
|
import {
|
|
76
76
|
allOf,
|
|
77
77
|
anyOf
|
|
@@ -93,7 +93,7 @@ import {
|
|
|
93
93
|
} from "./chunk-CNOQ7NRP.js";
|
|
94
94
|
import {
|
|
95
95
|
withPrerequisite
|
|
96
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-J3KPS6LF.js";
|
|
97
97
|
import {
|
|
98
98
|
NOOP_NOTIFIER,
|
|
99
99
|
RateLimiter,
|
|
@@ -116,7 +116,7 @@ import {
|
|
|
116
116
|
toolSuccessStructured,
|
|
117
117
|
withProgressHeartbeat,
|
|
118
118
|
wrapToolWithTimeout
|
|
119
|
-
} from "./chunk-
|
|
119
|
+
} from "./chunk-HLOBTLXA.js";
|
|
120
120
|
import {
|
|
121
121
|
EventTopics,
|
|
122
122
|
UNRESOLVED_MODEL_ID,
|
|
@@ -1113,7 +1113,8 @@ var NexusEnvSchema = z11.object({
|
|
|
1113
1113
|
NEXUS_VOTE_RECORDS_PATH: z11.string().optional(),
|
|
1114
1114
|
// #3927 item 4: the SSH key `scripts/append-ratification-record.ts` signs a
|
|
1115
1115
|
// committed vote record's hash with (`--signing-key` overrides it). A path;
|
|
1116
|
-
// unset ⇒ the
|
|
1116
|
+
// unset ⇒ the agent key at `<dataDir>/auth/vote-record-signing.key` when it
|
|
1117
|
+
// exists (#6257), else the record is appended unsigned and the script says so.
|
|
1117
1118
|
NEXUS_VOTE_SIGNING_KEY: z11.string().optional(),
|
|
1118
1119
|
// parseIntEnv / parseInt consumers: a non-integer is discarded in favour of
|
|
1119
1120
|
// the default, so reporting it as invalid tells the user their setting was
|
|
@@ -45844,7 +45845,7 @@ function buildVotingInput(plan, config) {
|
|
|
45844
45845
|
}
|
|
45845
45846
|
async function executeSingleVote(plan, config, log) {
|
|
45846
45847
|
try {
|
|
45847
|
-
const { executeVoting } = await import("./consensus-vote-
|
|
45848
|
+
const { executeVoting } = await import("./consensus-vote-IZRLUOXF.js");
|
|
45848
45849
|
const input = buildVotingInput(plan, config);
|
|
45849
45850
|
const result = await executeVoting(input, log);
|
|
45850
45851
|
return parseVotingResult(result);
|
|
@@ -47555,9 +47556,15 @@ function getTrendContext() {
|
|
|
47555
47556
|
}
|
|
47556
47557
|
function createAgentStages(config = {}) {
|
|
47557
47558
|
const guard = createBudgetGuard(config.budget);
|
|
47558
|
-
const
|
|
47559
|
+
const callerTrustTier = config.callerTrustTier ?? config.trustTier ?? UNMEASURED_TRUST_TIER;
|
|
47560
|
+
const inputSanitization = config.inputSanitization ?? "unmeasured";
|
|
47559
47561
|
const startStage = (stage) => {
|
|
47560
|
-
emitStageEvent2(stage, "started", {
|
|
47562
|
+
emitStageEvent2(stage, "started", {
|
|
47563
|
+
callerTrustTier,
|
|
47564
|
+
trustTier: callerTrustTier,
|
|
47565
|
+
inputSanitization,
|
|
47566
|
+
...inputSanitization === "modified" && config.inputSanitizationCounts !== void 0 ? { inputSanitizationCounts: config.inputSanitizationCounts } : {}
|
|
47567
|
+
});
|
|
47561
47568
|
};
|
|
47562
47569
|
return {
|
|
47563
47570
|
research: async (task) => {
|
|
@@ -47642,7 +47649,7 @@ ${contextBlock}`;
|
|
|
47642
47649
|
const strategy = config.votingStrategy ?? "higher_order";
|
|
47643
47650
|
await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
|
|
47644
47651
|
try {
|
|
47645
|
-
const { executeVoting } = await import("./consensus-vote-
|
|
47652
|
+
const { executeVoting } = await import("./consensus-vote-IZRLUOXF.js");
|
|
47646
47653
|
const votingResult = await executeVoting(
|
|
47647
47654
|
{
|
|
47648
47655
|
proposal: buildVoteProposal(plan, research),
|
|
@@ -51962,6 +51969,20 @@ function createTaskTracker(config) {
|
|
|
51962
51969
|
}
|
|
51963
51970
|
}
|
|
51964
51971
|
|
|
51972
|
+
// src/mcp/tools/pipeline-input-sanitization.ts
|
|
51973
|
+
function measureInputSanitization(ctx) {
|
|
51974
|
+
const observation = ctx?.sanitization;
|
|
51975
|
+
if (observation === void 0) return { inputSanitization: "unmeasured" };
|
|
51976
|
+
const { wasModified, tagsRemoved, commentsRemoved, fieldsModified } = observation;
|
|
51977
|
+
if (!wasModified && tagsRemoved === 0 && commentsRemoved === 0) {
|
|
51978
|
+
return { inputSanitization: "unmodified" };
|
|
51979
|
+
}
|
|
51980
|
+
return {
|
|
51981
|
+
inputSanitization: "modified",
|
|
51982
|
+
inputSanitizationCounts: { tagsRemoved, commentsRemoved, fieldsModified }
|
|
51983
|
+
};
|
|
51984
|
+
}
|
|
51985
|
+
|
|
51965
51986
|
// src/mcp/tools/dev-pipeline-tool.ts
|
|
51966
51987
|
var DEV_PIPELINE_ASYNC_HINT = "A full run_dev_pipeline run can exceed the 900s synchronous MCP timeout. Retry with `dispatch: 'async'` to get a jobId immediately, then poll get_job_result({ jobId }) for the result.";
|
|
51967
51988
|
var DEV_PIPELINE_DRY_RUN_NOTE = "This was a dry run (plan+vote), which always runs synchronously; async dispatch is ignored for dry runs, so retrying with it changes nothing.";
|
|
@@ -52057,12 +52078,13 @@ async function resolveTaskInput(input) {
|
|
|
52057
52078
|
}
|
|
52058
52079
|
throw new Error("Either task or planFile must be provided");
|
|
52059
52080
|
}
|
|
52060
|
-
async function createStages(input, trustTier) {
|
|
52081
|
+
async function createStages(input, trustTier, inputSanitization) {
|
|
52061
52082
|
const backendChoice = input.trackerBackend;
|
|
52062
52083
|
const backend = backendChoice === "json" && input.repo !== void 0 ? await detectBackend() : backendChoice;
|
|
52063
52084
|
const tracker = input.repo !== void 0 ? createTaskTracker({ backend, repo: input.repo, labels: input.labels }) : void 0;
|
|
52064
52085
|
return createAgentStages({
|
|
52065
|
-
...trustTier !== void 0 ? { trustTier } : {},
|
|
52086
|
+
...trustTier !== void 0 ? { callerTrustTier: trustTier, trustTier } : {},
|
|
52087
|
+
...inputSanitization,
|
|
52066
52088
|
scanTarget: input.workingDir,
|
|
52067
52089
|
simulateVotes: input.simulateVotes,
|
|
52068
52090
|
votingStrategy: input.votingStrategy,
|
|
@@ -52081,7 +52103,7 @@ async function runDevPipelineForGoal(goal, trustTier, dryRun) {
|
|
|
52081
52103
|
task: goal,
|
|
52082
52104
|
...dryRun !== void 0 ? { dryRun } : {}
|
|
52083
52105
|
});
|
|
52084
|
-
const stages = await createStages(input, trustTier);
|
|
52106
|
+
const stages = await createStages(input, trustTier, { inputSanitization: "unmeasured" });
|
|
52085
52107
|
return runDevPipeline(goal, stages, {
|
|
52086
52108
|
...trustTier !== void 0 ? { trustTier } : {},
|
|
52087
52109
|
// #4806 said `dryRun` is the one pipeline option `run` forwards. It parsed
|
|
@@ -52170,7 +52192,9 @@ function describeIncompleteRun(result) {
|
|
|
52170
52192
|
}
|
|
52171
52193
|
return "Pipeline did not complete";
|
|
52172
52194
|
}
|
|
52173
|
-
async function runDevPipelineHandler(args, logger57, trustTier, auditLogger
|
|
52195
|
+
async function runDevPipelineHandler(args, logger57, trustTier, auditLogger, inputSanitization = {
|
|
52196
|
+
inputSanitization: "unmeasured"
|
|
52197
|
+
}) {
|
|
52174
52198
|
const parsed = DevPipelineInputSchema.safeParse(args);
|
|
52175
52199
|
if (!parsed.success) {
|
|
52176
52200
|
return toolStructuredError({
|
|
@@ -52187,7 +52211,7 @@ async function runDevPipelineHandler(args, logger57, trustTier, auditLogger) {
|
|
|
52187
52211
|
}
|
|
52188
52212
|
try {
|
|
52189
52213
|
const taskText = await resolveTaskInput(input);
|
|
52190
|
-
const stages = await createStages(input, trustTier);
|
|
52214
|
+
const stages = await createStages(input, trustTier, inputSanitization);
|
|
52191
52215
|
const pipelineOptions = buildPipelineOptions(input, trustTier, auditLogger);
|
|
52192
52216
|
const hasOptions = Object.keys(pipelineOptions).length > 0;
|
|
52193
52217
|
const resolvedOptions = hasOptions ? pipelineOptions : void 0;
|
|
@@ -52242,7 +52266,13 @@ function dispatchAsyncDevPipeline(input, run, logger57) {
|
|
|
52242
52266
|
function registerDevPipelineTool(server, deps) {
|
|
52243
52267
|
const logger57 = deps.logger ?? createLogger({ tool: "run_dev_pipeline" });
|
|
52244
52268
|
const secureHandler = createSecureHandler(
|
|
52245
|
-
(args, ctx) => runDevPipelineHandler(
|
|
52269
|
+
(args, ctx) => runDevPipelineHandler(
|
|
52270
|
+
args,
|
|
52271
|
+
logger57,
|
|
52272
|
+
ctx && measuredTrustTier(ctx.requestContext),
|
|
52273
|
+
deps.auditLogger,
|
|
52274
|
+
measureInputSanitization(ctx)
|
|
52275
|
+
),
|
|
52246
52276
|
{ toolName: "run_dev_pipeline", rateLimiter: deps.rateLimiter, logger: logger57 }
|
|
52247
52277
|
);
|
|
52248
52278
|
const timeoutMs = getToolTimeout("run_dev_pipeline", deps.security);
|
|
@@ -52382,7 +52412,11 @@ function selectStageRegistry(template, task, agentStages) {
|
|
|
52382
52412
|
var RUN_PIPELINE_DESCRIPTION = `Single unified entry point for all pipeline templates (${listTemplateIds().join("/")}). Auto-detects template from task content or accepts an explicit override. Supports dispatch: 'async' (non-dryRun runs) \u2014 returns a jobId immediately; poll get_job_result.`;
|
|
52383
52413
|
async function runPipelineForGoal(goal, logger57 = createLogger({ tool: "run_pipeline" })) {
|
|
52384
52414
|
const budget = resolveRunBudget(goal, void 0, logger57);
|
|
52385
|
-
const agentStages = createAgentStages(
|
|
52415
|
+
const agentStages = createAgentStages({
|
|
52416
|
+
budget,
|
|
52417
|
+
// Plain-goal pipeline/research strategies have no HandlerContext.
|
|
52418
|
+
inputSanitization: "unmeasured"
|
|
52419
|
+
});
|
|
52386
52420
|
const stages = selectStageRegistry(void 0, goal, agentStages);
|
|
52387
52421
|
return runAdaptiveOrchestrator(goal, { stages });
|
|
52388
52422
|
}
|
|
@@ -52402,7 +52436,7 @@ async function executePipelineBody(task, stages, templateId, dryRun, simulated)
|
|
|
52402
52436
|
}
|
|
52403
52437
|
return toolSuccessStructured(output2);
|
|
52404
52438
|
}
|
|
52405
|
-
async function runPipelineHandler(args, logger57,
|
|
52439
|
+
async function runPipelineHandler(args, logger57, callerTrustTier, sanitization) {
|
|
52406
52440
|
const parsed = PipelineInputSchema.safeParse(args);
|
|
52407
52441
|
if (!parsed.success) {
|
|
52408
52442
|
return toolStructuredError({
|
|
@@ -52423,9 +52457,9 @@ async function runPipelineHandler(args, logger57, trustTier) {
|
|
|
52423
52457
|
simulateVotes: input.simulateVotes,
|
|
52424
52458
|
votingStrategy: input.votingStrategy,
|
|
52425
52459
|
quickMode: input.quickMode,
|
|
52426
|
-
|
|
52427
|
-
|
|
52428
|
-
...
|
|
52460
|
+
callerTrustTier,
|
|
52461
|
+
trustTier: callerTrustTier,
|
|
52462
|
+
...sanitization,
|
|
52429
52463
|
budget: resolveRunBudget(task, input.template, logger57)
|
|
52430
52464
|
});
|
|
52431
52465
|
const stages = selectStageRegistry(input.template, task, agentStages);
|
|
@@ -52455,7 +52489,12 @@ function registerPipelineTool(server, deps) {
|
|
|
52455
52489
|
// Optional chaining is deliberate, not defensive noise: a handler invoked
|
|
52456
52490
|
// without a context has genuinely NOT measured a tier, and that flows to
|
|
52457
52491
|
// UNMEASURED_TRUST_TIER rather than to a default. Absence stays absence.
|
|
52458
|
-
(args, ctx) => runPipelineHandler(
|
|
52492
|
+
(args, ctx) => runPipelineHandler(
|
|
52493
|
+
args,
|
|
52494
|
+
logger57,
|
|
52495
|
+
ctx && measuredTrustTier(ctx.requestContext),
|
|
52496
|
+
measureInputSanitization(ctx)
|
|
52497
|
+
),
|
|
52459
52498
|
{ toolName: "run_pipeline", rateLimiter: deps.rateLimiter, logger: logger57 }
|
|
52460
52499
|
);
|
|
52461
52500
|
const timeoutMs = getToolTimeout("run_pipeline", deps.security);
|
|
@@ -56855,4 +56894,4 @@ export {
|
|
|
56855
56894
|
startPipelineEventBridge,
|
|
56856
56895
|
shutdownPipelineEventBridge
|
|
56857
56896
|
};
|
|
56858
|
-
//# sourceMappingURL=chunk-
|
|
56897
|
+
//# sourceMappingURL=chunk-BO6BL2H7.js.map
|