@zhixuan92/multi-model-agent-core 4.7.11 → 4.7.13
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 +4 -5
- package/dist/bounded-execution/progress-watchdog.js +1 -1
- package/dist/bounded-execution/progress-watchdog.js.map +1 -1
- package/dist/config/schema.d.ts +49 -2
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/events/wire-schema.d.ts +17 -17
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lifecycle/auto-commit.js +3 -3
- package/dist/lifecycle/auto-commit.js.map +1 -1
- package/dist/lifecycle/diff-tracker.js +4 -4
- package/dist/lifecycle/diff-tracker.js.map +1 -1
- package/dist/lifecycle/git-toplevel.d.ts.map +1 -1
- package/dist/lifecycle/git-toplevel.js +3 -0
- package/dist/lifecycle/git-toplevel.js.map +1 -1
- package/dist/lifecycle/handlers/commit-stage.js +5 -5
- package/dist/lifecycle/handlers/commit-stage.js.map +1 -1
- package/dist/lifecycle/handlers/git-commit-handler.js +1 -1
- package/dist/lifecycle/handlers/git-commit-handler.js.map +1 -1
- package/dist/lifecycle/handlers/implement-stage.js +2 -2
- package/dist/lifecycle/handlers/implement-stage.js.map +1 -1
- package/dist/lifecycle/merge-stage-stats.d.ts +1 -2
- package/dist/lifecycle/merge-stage-stats.d.ts.map +1 -1
- package/dist/lifecycle/merge-stage-stats.js.map +1 -1
- package/dist/lifecycle/perform-implementation.d.ts.map +1 -1
- package/dist/lifecycle/perform-implementation.js +13 -10
- package/dist/lifecycle/perform-implementation.js.map +1 -1
- package/dist/lifecycle/read-only-subtype-spec.d.ts +1 -1
- package/dist/lifecycle/read-only-subtype-spec.d.ts.map +1 -1
- package/dist/lifecycle/{parallel-criteria-routes.d.ts → read-route-criteria.d.ts} +2 -2
- package/dist/lifecycle/read-route-criteria.d.ts.map +1 -0
- package/dist/lifecycle/{parallel-criteria-routes.js → read-route-criteria.js} +2 -2
- package/dist/lifecycle/read-route-criteria.js.map +1 -0
- package/dist/lifecycle/real-diff.d.ts.map +1 -1
- package/dist/lifecycle/real-diff.js +2 -0
- package/dist/lifecycle/real-diff.js.map +1 -1
- package/dist/lifecycle/repo-hygiene.d.ts.map +1 -1
- package/dist/lifecycle/repo-hygiene.js +3 -0
- package/dist/lifecycle/repo-hygiene.js.map +1 -1
- package/dist/lifecycle/research-pre-loop.d.ts.map +1 -1
- package/dist/lifecycle/research-pre-loop.js +0 -1
- package/dist/lifecycle/research-pre-loop.js.map +1 -1
- package/dist/lifecycle/task-runner.d.ts +0 -1
- package/dist/lifecycle/task-runner.d.ts.map +1 -1
- package/dist/lifecycle/task-runner.js +0 -1
- package/dist/lifecycle/task-runner.js.map +1 -1
- package/dist/reporting/commit-stage-runner.js +4 -4
- package/dist/reporting/commit-stage-runner.js.map +1 -1
- package/dist/reporting/findings-headline.d.ts +12 -0
- package/dist/reporting/findings-headline.d.ts.map +1 -0
- package/dist/reporting/findings-headline.js +40 -0
- package/dist/reporting/findings-headline.js.map +1 -0
- package/dist/reporting/report-parser-slots/no-structured-report.d.ts +10 -0
- package/dist/reporting/report-parser-slots/no-structured-report.d.ts.map +1 -0
- package/dist/reporting/report-parser-slots/no-structured-report.js +13 -0
- package/dist/reporting/report-parser-slots/no-structured-report.js.map +1 -0
- package/dist/tools/audit/implementer-criteria.d.ts +0 -11
- package/dist/tools/audit/implementer-criteria.d.ts.map +1 -1
- package/dist/tools/audit/implementer-criteria.js +0 -22
- package/dist/tools/audit/implementer-criteria.js.map +1 -1
- package/dist/tools/audit/schema.d.ts +2 -2
- package/dist/tools/audit/skill-audit-criteria.d.ts +1 -1
- package/dist/tools/audit/skill-audit-criteria.d.ts.map +1 -1
- package/dist/tools/audit/spec-audit-criteria.d.ts +1 -1
- package/dist/tools/audit/spec-audit-criteria.d.ts.map +1 -1
- package/dist/tools/audit/subtypes.js +1 -1
- package/dist/tools/audit/subtypes.js.map +1 -1
- package/dist/tools/audit/tool-config.d.ts +1 -2
- package/dist/tools/audit/tool-config.d.ts.map +1 -1
- package/dist/tools/audit/tool-config.js +11 -87
- package/dist/tools/audit/tool-config.js.map +1 -1
- package/dist/tools/debug/implementer-criteria.d.ts +0 -10
- package/dist/tools/debug/implementer-criteria.d.ts.map +1 -1
- package/dist/tools/debug/implementer-criteria.js +0 -23
- package/dist/tools/debug/implementer-criteria.js.map +1 -1
- package/dist/tools/debug/schema.d.ts +2 -2
- package/dist/tools/debug/tool-config.d.ts.map +1 -1
- package/dist/tools/debug/tool-config.js +10 -71
- package/dist/tools/debug/tool-config.js.map +1 -1
- package/dist/tools/delegate/brief-slot.d.ts +1 -0
- package/dist/tools/delegate/brief-slot.d.ts.map +1 -1
- package/dist/tools/delegate/brief-slot.js +5 -2
- package/dist/tools/delegate/brief-slot.js.map +1 -1
- package/dist/tools/delegate/schema.d.ts +4 -4
- package/dist/tools/delegate/schema.js +1 -1
- package/dist/tools/delegate/schema.js.map +1 -1
- package/dist/tools/delegate/tool-config.d.ts.map +1 -1
- package/dist/tools/delegate/tool-config.js +1 -0
- package/dist/tools/delegate/tool-config.js.map +1 -1
- package/dist/tools/execute-plan/barrel.d.ts +2 -0
- package/dist/tools/execute-plan/barrel.d.ts.map +1 -0
- package/dist/tools/execute-plan/barrel.js +7 -0
- package/dist/tools/execute-plan/barrel.js.map +1 -0
- package/dist/tools/execute-plan/tool-config.d.ts +48 -0
- package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
- package/dist/tools/execute-plan/tool-config.js +4 -0
- package/dist/tools/execute-plan/tool-config.js.map +1 -1
- package/dist/tools/index.d.ts +1 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +7 -7
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/investigate/brief-slot.d.ts +3 -19
- package/dist/tools/investigate/brief-slot.d.ts.map +1 -1
- package/dist/tools/investigate/brief-slot.js +0 -60
- package/dist/tools/investigate/brief-slot.js.map +1 -1
- package/dist/tools/investigate/implementer-criteria.d.ts +0 -11
- package/dist/tools/investigate/implementer-criteria.d.ts.map +1 -1
- package/dist/tools/investigate/implementer-criteria.js +0 -23
- package/dist/tools/investigate/implementer-criteria.js.map +1 -1
- package/dist/tools/investigate/schema.d.ts +3 -3
- package/dist/tools/investigate/tool-config.d.ts.map +1 -1
- package/dist/tools/investigate/tool-config.js +2 -6
- package/dist/tools/investigate/tool-config.js.map +1 -1
- package/dist/tools/{parallel-criteria-prompt.d.ts → read-route-prompt.d.ts} +1 -1
- package/dist/tools/read-route-prompt.d.ts.map +1 -0
- package/dist/tools/{parallel-criteria-prompt.js → read-route-prompt.js} +1 -1
- package/dist/tools/read-route-prompt.js.map +1 -0
- package/dist/tools/research/brief-slot.d.ts +4 -1
- package/dist/tools/research/brief-slot.d.ts.map +1 -1
- package/dist/tools/research/brief-slot.js +1 -31
- package/dist/tools/research/brief-slot.js.map +1 -1
- package/dist/tools/research/tool-config.js +2 -2
- package/dist/tools/research/tool-config.js.map +1 -1
- package/dist/tools/research/two-turn-driver.d.ts +0 -4
- package/dist/tools/research/two-turn-driver.d.ts.map +1 -1
- package/dist/tools/research/two-turn-driver.js.map +1 -1
- package/dist/tools/retry/schema.d.ts +2 -2
- package/dist/tools/retry/tool-config.js +4 -4
- package/dist/tools/retry/tool-config.js.map +1 -1
- package/dist/tools/review/implementer-criteria.d.ts +0 -12
- package/dist/tools/review/implementer-criteria.d.ts.map +1 -1
- package/dist/tools/review/implementer-criteria.js +0 -23
- package/dist/tools/review/implementer-criteria.js.map +1 -1
- package/dist/tools/review/schema.d.ts +2 -2
- package/dist/tools/review/subtypes.js +1 -1
- package/dist/tools/review/subtypes.js.map +1 -1
- package/dist/tools/review/tool-config.d.ts.map +1 -1
- package/dist/tools/review/tool-config.js +11 -80
- package/dist/tools/review/tool-config.js.map +1 -1
- package/dist/tools/shared-output.d.ts +2 -2
- package/dist/transport/http-listener.d.ts +6 -15
- package/dist/transport/http-listener.d.ts.map +1 -1
- package/dist/transport/http-listener.js +11 -22
- package/dist/transport/http-listener.js.map +1 -1
- package/dist/transport/index.d.ts +1 -1
- package/dist/transport/index.d.ts.map +1 -1
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/route-dispatcher.d.ts +4 -17
- package/dist/transport/route-dispatcher.d.ts.map +1 -1
- package/dist/transport/route-dispatcher.js +8 -14
- package/dist/transport/route-dispatcher.js.map +1 -1
- package/dist/types/brief-quality-policy.d.ts +0 -1
- package/dist/types/brief-quality-policy.d.ts.map +1 -1
- package/dist/types/config.d.ts +2 -97
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/enums.d.ts +1 -108
- package/dist/types/enums.d.ts.map +1 -1
- package/dist/types/enums.js +9 -97
- package/dist/types/enums.js.map +1 -1
- package/dist/types/run-result.d.ts +2 -33
- package/dist/types/run-result.d.ts.map +1 -1
- package/dist/types/task-spec.d.ts +12 -10
- package/dist/types/task-spec.d.ts.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/lifecycle/parallel-criteria-routes.d.ts.map +0 -1
- package/dist/lifecycle/parallel-criteria-routes.js.map +0 -1
- package/dist/lifecycle/plan-extraction.d.ts +0 -2
- package/dist/lifecycle/plan-extraction.d.ts.map +0 -1
- package/dist/lifecycle/plan-extraction.js +0 -44
- package/dist/lifecycle/plan-extraction.js.map +0 -1
- package/dist/reporting/headline-templates/audit.d.ts +0 -3
- package/dist/reporting/headline-templates/audit.d.ts.map +0 -1
- package/dist/reporting/headline-templates/audit.js +0 -37
- package/dist/reporting/headline-templates/audit.js.map +0 -1
- package/dist/reporting/headline-templates/debug.d.ts +0 -25
- package/dist/reporting/headline-templates/debug.d.ts.map +0 -1
- package/dist/reporting/headline-templates/debug.js +0 -42
- package/dist/reporting/headline-templates/debug.js.map +0 -1
- package/dist/reporting/headline-templates/retry.d.ts +0 -3
- package/dist/reporting/headline-templates/retry.d.ts.map +0 -1
- package/dist/reporting/headline-templates/retry.js +0 -9
- package/dist/reporting/headline-templates/retry.js.map +0 -1
- package/dist/reporting/headline-templates/review.d.ts +0 -3
- package/dist/reporting/headline-templates/review.d.ts.map +0 -1
- package/dist/reporting/headline-templates/review.js +0 -38
- package/dist/reporting/headline-templates/review.js.map +0 -1
- package/dist/reporting/report-parser-slots/audit-report.d.ts +0 -13
- package/dist/reporting/report-parser-slots/audit-report.d.ts.map +0 -1
- package/dist/reporting/report-parser-slots/audit-report.js +0 -9
- package/dist/reporting/report-parser-slots/audit-report.js.map +0 -1
- package/dist/reporting/report-parser-slots/retry-report.d.ts +0 -8
- package/dist/reporting/report-parser-slots/retry-report.d.ts.map +0 -1
- package/dist/reporting/report-parser-slots/retry-report.js +0 -9
- package/dist/reporting/report-parser-slots/retry-report.js.map +0 -1
- package/dist/reporting/report-parser-slots/review-report.d.ts +0 -14
- package/dist/reporting/report-parser-slots/review-report.d.ts.map +0 -1
- package/dist/reporting/report-parser-slots/review-report.js +0 -9
- package/dist/reporting/report-parser-slots/review-report.js.map +0 -1
- package/dist/tools/audit/plan-audit-verdict.d.ts +0 -15
- package/dist/tools/audit/plan-audit-verdict.d.ts.map +0 -1
- package/dist/tools/audit/plan-audit-verdict.js +0 -44
- package/dist/tools/audit/plan-audit-verdict.js.map +0 -1
- package/dist/tools/execute-plan/draft-id.d.ts +0 -12
- package/dist/tools/execute-plan/draft-id.d.ts.map +0 -1
- package/dist/tools/execute-plan/draft-id.js +0 -46
- package/dist/tools/execute-plan/draft-id.js.map +0 -1
- package/dist/tools/execute-plan/schema.d.ts +0 -65
- package/dist/tools/execute-plan/schema.d.ts.map +0 -1
- package/dist/tools/execute-plan/schema.js +0 -32
- package/dist/tools/execute-plan/schema.js.map +0 -1
- package/dist/tools/parallel-criteria-prompt.d.ts.map +0 -1
- package/dist/tools/parallel-criteria-prompt.js.map +0 -1
- package/dist/tools/shared/severity-ladder.d.ts +0 -2
- package/dist/tools/shared/severity-ladder.d.ts.map +0 -1
- package/dist/tools/shared/severity-ladder.js +0 -9
- package/dist/tools/shared/severity-ladder.js.map +0 -1
- package/dist/types/draft-task.d.ts +0 -60
- package/dist/types/draft-task.d.ts.map +0 -1
- package/dist/types/draft-task.js +0 -2
- package/dist/types/draft-task.js.map +0 -1
|
@@ -12,7 +12,10 @@ export interface EnrichedResearchInput extends Input {
|
|
|
12
12
|
hasBrave: boolean;
|
|
13
13
|
}
|
|
14
14
|
export interface ResearchBrief {
|
|
15
|
-
|
|
15
|
+
/** Pure research question — becomes TaskSpec.prompt + readTarget. The actual
|
|
16
|
+
* worker input is the two-turn pre-loop prefix built in
|
|
17
|
+
* perform-implementation from TaskSpec.research, not this field. */
|
|
18
|
+
researchQuestion: string;
|
|
16
19
|
contextBlockIds: string[];
|
|
17
20
|
}
|
|
18
21
|
export declare const researchBriefSlot: (input: EnrichedResearchInput) => ResearchBrief[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brief-slot.d.ts","sourceRoot":"","sources":["../../../src/tools/research/brief-slot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"brief-slot.d.ts","sourceRoot":"","sources":["../../../src/tools/research/brief-slot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAKzC,MAAM,WAAW,oBAAoB;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE;AAEtE,MAAM,WAAW,qBAAsB,SAAQ,KAAK;IAClD,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;IAC9C,qEAAqE;IACrE,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B;+CAC2C;IAC3C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B;;yEAEqE;IACrE,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,iBAAiB,GAAI,OAAO,qBAAqB,KAAG,aAAa,EAK7E,CAAC;AAaF,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE3F,eAAO,MAAM,yBAAyB,QAAY,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAO,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAO,MAAM,CAAC;IACzB,IAAI,EAAc,YAAY,CAAC;IAC/B,aAAa,EAAK,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1D;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAI/D;AA6CD,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAU1E"}
|
|
@@ -1,36 +1,6 @@
|
|
|
1
|
-
import { EVIDENCE_RULE_RESEARCH, TRUST_BOUNDARY_USER_SOURCES_RESEARCH, TRUST_BOUNDARY_EXTERNAL_DATA_RESEARCH, QUERY_PHRASING_RESEARCH, strategyRuleResearch, } from './implementer-criteria.js';
|
|
2
|
-
function compileResearchPrompt(input, resolvedContextBlocks, extras) {
|
|
3
|
-
const priorContext = resolvedContextBlocks.length
|
|
4
|
-
? `## Prior context (read-only)\n\n${resolvedContextBlocks.map(b => b.content).join('\n\n---\n\n')}\n\n`
|
|
5
|
-
: '';
|
|
6
|
-
const userSourcesBlock = extras.userSources.length
|
|
7
|
-
? extras.userSources.map((s, i) => `${i}. ${s}`).join('\n')
|
|
8
|
-
: '(none configured)';
|
|
9
|
-
return `${priorContext}You are an external researcher. The caller wants to discover external ideas, sources, and practices relevant to their question; your job is to bring back substantive external material with citations.
|
|
10
|
-
|
|
11
|
-
**Background:** ${input.background}
|
|
12
|
-
**Research question:** ${input.researchQuestion}
|
|
13
|
-
|
|
14
|
-
**User-described sources (free text — interpret each one):**
|
|
15
|
-
${userSourcesBlock}
|
|
16
|
-
|
|
17
|
-
${TRUST_BOUNDARY_USER_SOURCES_RESEARCH}
|
|
18
|
-
|
|
19
|
-
${strategyRuleResearch(extras.hasBrave)}
|
|
20
|
-
|
|
21
|
-
${TRUST_BOUNDARY_EXTERNAL_DATA_RESEARCH}
|
|
22
|
-
|
|
23
|
-
${QUERY_PHRASING_RESEARCH}
|
|
24
|
-
|
|
25
|
-
${EVIDENCE_RULE_RESEARCH}`;
|
|
26
|
-
}
|
|
27
1
|
export const researchBriefSlot = (input) => {
|
|
28
|
-
const compiledPrompt = compileResearchPrompt(input, input.resolvedContextBlocks, {
|
|
29
|
-
userSources: input.userSources,
|
|
30
|
-
hasBrave: input.hasBrave,
|
|
31
|
-
});
|
|
32
2
|
return [{
|
|
33
|
-
|
|
3
|
+
researchQuestion: input.researchQuestion,
|
|
34
4
|
contextBlockIds: input.contextBlockIds ?? [],
|
|
35
5
|
}];
|
|
36
6
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brief-slot.js","sourceRoot":"","sources":["../../../src/tools/research/brief-slot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"brief-slot.js","sourceRoot":"","sources":["../../../src/tools/research/brief-slot.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,8 +22,8 @@ export const toolConfig = {
|
|
|
22
22
|
agentType: 'complex',
|
|
23
23
|
briefSlot: researchBriefSlot,
|
|
24
24
|
buildTaskSpec: (brief, ctx, enriched) => ({
|
|
25
|
-
prompt: brief.
|
|
26
|
-
|
|
25
|
+
prompt: `Research: ${brief.researchQuestion}`,
|
|
26
|
+
readTarget: `Research: ${brief.researchQuestion}`,
|
|
27
27
|
agentType: 'complex',
|
|
28
28
|
reviewPolicy: 'none',
|
|
29
29
|
cwd: ctx.projectContext?.cwd ?? ctx.cwd,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-config.js","sourceRoot":"","sources":["../../../src/tools/research/tool-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,oBAAoB,EAAuB,MAAM,wDAAwD,CAAC;AACnH,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAkD,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAIjE,MAAM,UAAU,gBAAgB,CAAC,QAA6B;IAC5D,QAAQ,CAAC,QAAQ,CAAC;QAChB,SAAS,EAAE,UAAU;QACrB,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,WAAW;QACnB,YAAY,EAAE,WAAW;QACzB,gBAAgB,EAAE,SAAS;QAC3B,oBAAoB,EAAE,KAAK;QAC3B,iBAAiB,EAAE,eAAe;KACnC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAqE;IAC1F,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,iBAAiB;IAC5B,aAAa,EAAE,CAAC,KAAoB,EAAE,GAAqB,EAAE,QAAgC,EAAE,EAAE,CAAC,CAAC;QACjG,MAAM,EAAE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"tool-config.js","sourceRoot":"","sources":["../../../src/tools/research/tool-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,oBAAoB,EAAuB,MAAM,wDAAwD,CAAC;AACnH,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAkD,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAIjE,MAAM,UAAU,gBAAgB,CAAC,QAA6B;IAC5D,QAAQ,CAAC,QAAQ,CAAC;QAChB,SAAS,EAAE,UAAU;QACrB,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,WAAW;QACnB,YAAY,EAAE,WAAW;QACzB,gBAAgB,EAAE,SAAS;QAC3B,oBAAoB,EAAE,KAAK;QAC3B,iBAAiB,EAAE,eAAe;KACnC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAqE;IAC1F,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,iBAAiB;IAC5B,aAAa,EAAE,CAAC,KAAoB,EAAE,GAAqB,EAAE,QAAgC,EAAE,EAAE,CAAC,CAAC;QACjG,MAAM,EAAE,aAAa,KAAK,CAAC,gBAAgB,EAAE;QAC7C,UAAU,EAAE,aAAa,KAAK,CAAC,gBAAgB,EAAE;QACjD,SAAS,EAAE,SAAkB;QAC7B,YAAY,EAAE,MAAe;QAC7B,GAAG,EAAE,GAAG,CAAC,cAAc,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG;QACvC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,KAAK,EAAE,MAAe;QACtB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,IAAI,uBAAuB;QACpE,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,IAAI,UAAU;QAC/D,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,SAAS;QACrC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YACb,QAAQ,EAAE;gBACR,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;gBAC3C,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,WAAW,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;gBAC9C,qBAAqB,EAAE,CAAC,QAAQ,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;aAC3G;SACF,CAAC,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,YAAY,EAAE,oBAAoB;IAClC,gBAAgB,EAAE,wBAAwB;CAC3C,CAAC"}
|
|
@@ -6,10 +6,6 @@ export interface TwoTurnDeps {
|
|
|
6
6
|
runOrchestrator: (plan: QueryPlan) => Promise<EvidencePack>;
|
|
7
7
|
researchQuestion: string;
|
|
8
8
|
background?: string;
|
|
9
|
-
contextBlocks: Array<{
|
|
10
|
-
id: string;
|
|
11
|
-
content: string;
|
|
12
|
-
}>;
|
|
13
9
|
}
|
|
14
10
|
export interface TwoTurnResult {
|
|
15
11
|
plan: QueryPlan;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"two-turn-driver.d.ts","sourceRoot":"","sources":["../../../src/tools/research/two-turn-driver.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAIpE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAY,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzC,eAAe,EAAI,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9D,gBAAgB,EAAG,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAQ,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"two-turn-driver.d.ts","sourceRoot":"","sources":["../../../src/tools/research/two-turn-driver.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAIpE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAY,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzC,eAAe,EAAI,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9D,gBAAgB,EAAG,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAQ,MAAM,CAAC;CAC3B;AAMD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAY,SAAS,CAAC;IAC1B,IAAI,EAAY,YAAY,CAAC;IAC7B,WAAW,EAAK,UAAU,CAAC;CAC5B;AAYD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAyBhF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"two-turn-driver.js","sourceRoot":"","sources":["../../../src/tools/research/two-turn-driver.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,uEAAuE;AACvE,2EAA2E;AAC3E,wEAAwE;AACxE,sBAAsB;AAGtB,OAAO,EAAE,cAAc,EAAkB,MAAM,8BAA8B,CAAC;AAG9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"two-turn-driver.js","sourceRoot":"","sources":["../../../src/tools/research/two-turn-driver.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,uEAAuE;AACvE,2EAA2E;AAC3E,wEAAwE;AACxE,sBAAsB;AAGtB,OAAO,EAAE,cAAc,EAAkB,MAAM,8BAA8B,CAAC;AAG9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAmBzD,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,CAAC;QACH,qEAAqE;QACrE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACxF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IACrD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC;IAClD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAiB;IACtD,UAAU;IACV,MAAM,WAAW,GAAG,sBAAsB,CAAC;QACzC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,UAAU,EAAQ,IAAI,CAAC,UAAU;KAClC,CAAC,CAAC;IACH,+DAA+D;IAC/D,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvD,IAAI,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAE1C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,6CAA6C;QAC7C,MAAM,WAAW,GAAG,mDAAmD,MAAM,CAAC,GAAG,OAAO,WAAW,EAAE,CAAC;QACtG,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAEzB,UAAU;IACV,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAE9C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -31,20 +31,20 @@ export declare const outputSchema: z.ZodObject<{
|
|
|
31
31
|
reason: z.ZodString;
|
|
32
32
|
}, z.core.$strip>]>;
|
|
33
33
|
specReviewVerdict: z.ZodOptional<z.ZodEnum<{
|
|
34
|
+
error: "error";
|
|
34
35
|
approved: "approved";
|
|
35
36
|
concerns: "concerns";
|
|
36
37
|
changes_required: "changes_required";
|
|
37
38
|
annotated: "annotated";
|
|
38
|
-
error: "error";
|
|
39
39
|
skipped: "skipped";
|
|
40
40
|
not_applicable: "not_applicable";
|
|
41
41
|
}>>;
|
|
42
42
|
qualityReviewVerdict: z.ZodOptional<z.ZodEnum<{
|
|
43
|
+
error: "error";
|
|
43
44
|
approved: "approved";
|
|
44
45
|
concerns: "concerns";
|
|
45
46
|
changes_required: "changes_required";
|
|
46
47
|
annotated: "annotated";
|
|
47
|
-
error: "error";
|
|
48
48
|
skipped: "skipped";
|
|
49
49
|
not_applicable: "not_applicable";
|
|
50
50
|
}>>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { inputSchema } from './schema.js';
|
|
2
2
|
import { retryBriefSlot } from './brief-slot.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { noStructuredReportSchema } from '../../reporting/report-parser-slots/no-structured-report.js';
|
|
4
|
+
import { makeFindingsHeadlineTemplate } from '../../reporting/findings-headline.js';
|
|
5
5
|
import { notApplicable } from '../../reporting/not-applicable.js';
|
|
6
6
|
export function registerRetry(registry) {
|
|
7
7
|
registry.register({
|
|
@@ -41,8 +41,8 @@ export const toolConfig = {
|
|
|
41
41
|
autoCommit: origTask?.autoCommit ?? false,
|
|
42
42
|
};
|
|
43
43
|
},
|
|
44
|
-
reportSchema:
|
|
45
|
-
headlineTemplate:
|
|
44
|
+
reportSchema: noStructuredReportSchema,
|
|
45
|
+
headlineTemplate: makeFindingsHeadlineTemplate('retry', 'high'),
|
|
46
46
|
postProcessEnvelope: (envelope, ctx) => {
|
|
47
47
|
const results = (Array.isArray(envelope.results) ? envelope.results : []);
|
|
48
48
|
const total = results.length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-config.js","sourceRoot":"","sources":["../../../src/tools/retry/tool-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAmB,MAAM,iBAAiB,CAAC;AAGlE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tool-config.js","sourceRoot":"","sources":["../../../src/tools/retry/tool-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,18 +41,6 @@ export declare const SCOPE_RULE_REVIEW: string;
|
|
|
41
41
|
* scan for before pressing merge.
|
|
42
42
|
*/
|
|
43
43
|
export declare const CODE_REVIEW_FAILURE_MODES: string;
|
|
44
|
-
/**
|
|
45
|
-
* Counter-balance to the SEVERITY_LADDER's anti-inflation hint.
|
|
46
|
-
*
|
|
47
|
-
* The shared severity ladder ends with "Workers commonly inflate —
|
|
48
|
-
* resist the urge." That bias is correct in the limit (no, the missing
|
|
49
|
-
* comma is not critical) but produces UNDER-finding when combined with
|
|
50
|
-
* a thin per-tool rubric. For code review specifically, the typical
|
|
51
|
-
* failure is missing the cross-file ripple or test gap because the
|
|
52
|
-
* worker only looked at the diff in the named file. This block tells
|
|
53
|
-
* the worker that under-finding is the more common review failure.
|
|
54
|
-
*/
|
|
55
|
-
export declare const THOROUGHNESS_REMINDER_REVIEW: string;
|
|
56
44
|
export declare const ANNOTATOR_AWARENESS_REVIEW: string;
|
|
57
45
|
import { type CriterionEntry } from '../criteria-types.js';
|
|
58
46
|
/** Structured per-criterion array for parallel-criteria fan-out. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"implementer-criteria.d.ts","sourceRoot":"","sources":["../../../src/tools/review/implementer-criteria.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,QAmB3B,CAAC;AAEb,eAAO,MAAM,oBAAoB,QAQrB,CAAC;AAEb,eAAO,MAAM,iBAAiB,QAOlB,CAAC;AAEb;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,QAmB1B,CAAC;AAEb
|
|
1
|
+
{"version":3,"file":"implementer-criteria.d.ts","sourceRoot":"","sources":["../../../src/tools/review/implementer-criteria.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,QAmB3B,CAAC;AAEb,eAAO,MAAM,oBAAoB,QAQrB,CAAC;AAEb,eAAO,MAAM,iBAAiB,QAOlB,CAAC;AAEb;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,QAmB1B,CAAC;AAEb,eAAO,MAAM,0BAA0B,QAO3B,CAAC;AAEb,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE1E,oEAAoE;AACpE,eAAO,MAAM,eAAe,EAAE,SAAS,cAAc,EAA6C,CAAC"}
|
|
@@ -94,29 +94,6 @@ export const CODE_REVIEW_FAILURE_MODES = [
|
|
|
94
94
|
'- medium: a real issue worth fixing soon: test gap on a non-trivial change, race condition with low contention, performance regression on a non-hot path, missing edge case on an unlikely input.',
|
|
95
95
|
'- low: stylistic / naming / dead-code / minor-refactor opportunity. Does not change merge safety.',
|
|
96
96
|
].join('\n');
|
|
97
|
-
/**
|
|
98
|
-
* Counter-balance to the SEVERITY_LADDER's anti-inflation hint.
|
|
99
|
-
*
|
|
100
|
-
* The shared severity ladder ends with "Workers commonly inflate —
|
|
101
|
-
* resist the urge." That bias is correct in the limit (no, the missing
|
|
102
|
-
* comma is not critical) but produces UNDER-finding when combined with
|
|
103
|
-
* a thin per-tool rubric. For code review specifically, the typical
|
|
104
|
-
* failure is missing the cross-file ripple or test gap because the
|
|
105
|
-
* worker only looked at the diff in the named file. This block tells
|
|
106
|
-
* the worker that under-finding is the more common review failure.
|
|
107
|
-
*/
|
|
108
|
-
export const THOROUGHNESS_REMINDER_REVIEW = [
|
|
109
|
-
'Thoroughness expectation for code reviews:',
|
|
110
|
-
'- For non-trivial diffs (>30 changed lines OR a public symbol changed), zero or 1-2 findings is unusual and usually indicates the rubric was applied too narrowly. Sweep the full failure-mode taxonomy above before declaring "no findings."',
|
|
111
|
-
'- The SEVERITY_LADDER warns against inflation. That warning is calibrated — but the typical UNDER-finding in code review is missing the cross-file ripple or test gap because the worker only looked at the diff in the named file. Apply the failure-mode taxonomy thoroughly first; THEN calibrate severity downward where the impact is small.',
|
|
112
|
-
'- Do not invent findings to hit a quota. But if you have applied all 10 failure modes and still have only stylistic nits, double-check categories 1, 2, 4, and 10 (test gap, cross-file ripple, missing edge case, implicit-contract assumption) — these are the ones reviewers most often miss on first pass and the ones most likely to ship a regression.',
|
|
113
|
-
'',
|
|
114
|
-
'Cross-file pass (REQUIRED when the named files change a public symbol — exported function, exported type, route handler, or wire-schema field):',
|
|
115
|
-
'- Make ONE explicit pass: identify the changed public symbols, grep for their call sites in the rest of the repo, and check whether each call site is consistent with the new signature/return-shape/contract.',
|
|
116
|
-
'- For each (changed symbol, call site) pair, ask: does the call site as currently written still work after this change?',
|
|
117
|
-
'- Worked example. A diff in `src/foo.ts` renames `getUserById(id)` to `getUserById(id, opts)` and makes `opts` required. The grep finds 3 call sites in `src/handlers/auth.ts`, `src/handlers/billing.ts`, `tests/integration/users.test.ts`. None pass `opts`. Flag this as HIGH (or CRITICAL if `auth.ts` would no-op silently rather than error). The fact that `src/foo.ts` looks clean in isolation is exactly the kind of false-clean that ships regressions.',
|
|
118
|
-
'- Most reviewers miss findings of this shape on first pass because they only read the named files. The cross-file pass forces the grep.',
|
|
119
|
-
].join('\n');
|
|
120
97
|
export const ANNOTATOR_AWARENESS_REVIEW = [
|
|
121
98
|
'After your output, an annotator validates each finding against this code-review rubric:',
|
|
122
99
|
'- Is the finding within the requested focus area (or universally applicable: security, performance, correctness apply to every review)?',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"implementer-criteria.js","sourceRoot":"","sources":["../../../src/tools/review/implementer-criteria.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,yBAAyB;IACzB,6LAA6L;IAC7L,EAAE;IACF,iIAAiI;IACjI,sFAAsF;IACtF,oHAAoH;IACpH,qGAAqG;IACrG,oHAAoH;IACpH,yGAAyG;IACzG,iEAAiE;IACjE,oGAAoG;IACpG,4GAA4G;IAC5G,+GAA+G;IAC/G,qGAAqG;IACrG,EAAE;IACF,mOAAmO;IACnO,EAAE;IACF,2OAA2O;CAC5O,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,kDAAkD;IAClD,4EAA4E;IAC5E,0GAA0G;IAC1G,0WAA0W;IAC1W,8MAA8M;IAC9M,iNAAiN;IACjN,sIAAsI;CACvI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ;IACR,sGAAsG;IACtG,0QAA0Q;IAC1Q,yLAAyL;IACzL,wMAAwM;IACxM,0OAA0O;CAC3O,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,oOAAoO;IACpO,EAAE;IACF,+PAA+P;IAC/P,+OAA+O;IAC/O,uSAAuS;IACvS,yMAAyM;IACzM,8NAA8N;IAC9N,+LAA+L;IAC/L,sMAAsM;IACtM,gRAAgR;IAChR,oQAAoQ;IACpQ,kQAAkQ;IAClQ,EAAE;IACF,wCAAwC;IACxC,oNAAoN;IACpN,2NAA2N;IAC3N,mMAAmM;IACnM,mGAAmG;CACpG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb
|
|
1
|
+
{"version":3,"file":"implementer-criteria.js","sourceRoot":"","sources":["../../../src/tools/review/implementer-criteria.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,yBAAyB;IACzB,6LAA6L;IAC7L,EAAE;IACF,iIAAiI;IACjI,sFAAsF;IACtF,oHAAoH;IACpH,qGAAqG;IACrG,oHAAoH;IACpH,yGAAyG;IACzG,iEAAiE;IACjE,oGAAoG;IACpG,4GAA4G;IAC5G,+GAA+G;IAC/G,qGAAqG;IACrG,EAAE;IACF,mOAAmO;IACnO,EAAE;IACF,2OAA2O;CAC5O,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,kDAAkD;IAClD,4EAA4E;IAC5E,0GAA0G;IAC1G,0WAA0W;IAC1W,8MAA8M;IAC9M,iNAAiN;IACjN,sIAAsI;CACvI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ;IACR,sGAAsG;IACtG,0QAA0Q;IAC1Q,yLAAyL;IACzL,wMAAwM;IACxM,0OAA0O;CAC3O,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,oOAAoO;IACpO,EAAE;IACF,+PAA+P;IAC/P,+OAA+O;IAC/O,uSAAuS;IACvS,yMAAyM;IACzM,8NAA8N;IAC9N,+LAA+L;IAC/L,sMAAsM;IACtM,gRAAgR;IAChR,oQAAoQ;IACpQ,kQAAkQ;IAClQ,EAAE;IACF,wCAAwC;IACxC,oNAAoN;IACpN,2NAA2N;IAC3N,mMAAmM;IACnM,mGAAmG;CACpG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,yFAAyF;IACzF,yIAAyI;IACzI,6HAA6H;IAC7H,gIAAgI;IAChI,sJAAsJ;IACtJ,gSAAgS;CACjS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,OAAO,EAAE,aAAa,EAAuB,MAAM,sBAAsB,CAAC;AAE1E,oEAAoE;AACpE,MAAM,CAAC,MAAM,eAAe,GAA8B,aAAa,CAAC,yBAAyB,CAAC,CAAC"}
|
|
@@ -41,20 +41,20 @@ export declare const outputSchema: z.ZodObject<{
|
|
|
41
41
|
reason: z.ZodString;
|
|
42
42
|
}, z.core.$strip>]>;
|
|
43
43
|
specReviewVerdict: z.ZodOptional<z.ZodEnum<{
|
|
44
|
+
error: "error";
|
|
44
45
|
approved: "approved";
|
|
45
46
|
concerns: "concerns";
|
|
46
47
|
changes_required: "changes_required";
|
|
47
48
|
annotated: "annotated";
|
|
48
|
-
error: "error";
|
|
49
49
|
skipped: "skipped";
|
|
50
50
|
not_applicable: "not_applicable";
|
|
51
51
|
}>>;
|
|
52
52
|
qualityReviewVerdict: z.ZodOptional<z.ZodEnum<{
|
|
53
|
+
error: "error";
|
|
53
54
|
approved: "approved";
|
|
54
55
|
concerns: "concerns";
|
|
55
56
|
changes_required: "changes_required";
|
|
56
57
|
annotated: "annotated";
|
|
57
|
-
error: "error";
|
|
58
58
|
skipped: "skipped";
|
|
59
59
|
not_applicable: "not_applicable";
|
|
60
60
|
}>>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { REVIEW_PURPOSE_ORIENTATION, EVIDENCE_RULE_REVIEW, SCOPE_RULE_REVIEW, ANNOTATOR_AWARENESS_REVIEW, REVIEW_CRITERIA, } from './implementer-criteria.js';
|
|
2
2
|
// Copied verbatim from ROUTE_SEMANTICS.review in
|
|
3
|
-
// packages/core/src/lifecycle/
|
|
3
|
+
// packages/core/src/lifecycle/read-route-criteria.ts (removed in Task 8).
|
|
4
4
|
const SEMANTICS_DEFAULT = {
|
|
5
5
|
goalLine: 'Find ALL issues of THIS specific kind in the diff / source above.',
|
|
6
6
|
emptyOutcomeLine: 'If none exist, respond with the literal text "No findings for this criterion." — that is a fully valid outcome. Do NOT pad to avoid returning empty.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subtypes.js","sourceRoot":"","sources":["../../../src/tools/review/subtypes.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,0BAA0B,EAAE,oBAAoB,EAAE,iBAAiB,EACnE,0BAA0B,EAAE,eAAe,GAC5C,MAAM,2BAA2B,CAAC;AAInC,iDAAiD;AACjD
|
|
1
|
+
{"version":3,"file":"subtypes.js","sourceRoot":"","sources":["../../../src/tools/review/subtypes.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,0BAA0B,EAAE,oBAAoB,EAAE,iBAAiB,EACnE,0BAA0B,EAAE,eAAe,GAC5C,MAAM,2BAA2B,CAAC;AAInC,iDAAiD;AACjD,0EAA0E;AAC1E,MAAM,iBAAiB,GAAmB;IACxC,QAAQ,EAAE,mEAAmE;IAC7E,gBAAgB,EAAE,sJAAsJ;IACxK,uBAAuB,EAAE,mOAAmO;IAC5P,gBAAgB,EAAE;QAChB,QAAQ,EAAE,8BAA8B;QACxC,IAAI,EAAE,yCAAyC;QAC/C,MAAM,EAAE,2BAA2B;QACnC,GAAG,EAAE,OAAO;KACb;IACD,kBAAkB,EAAE,KAAK;IACzB,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,CAAU;CAC3C,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAA+C;IACzE,OAAO,EAAE;QACP,QAAQ,EAAE,eAAe;QACzB,WAAW,EAAE,0BAA0B;QACvC,YAAY,EAAE,oBAAoB;QAClC,SAAS,EAAE,iBAAiB;QAC5B,kBAAkB,EAAE,0BAA0B;QAC9C,SAAS,EAAE,iBAAiB;KAC7B;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-config.d.ts","sourceRoot":"","sources":["../../../src/tools/review/tool-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAElF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAEvE,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-config.d.ts","sourceRoot":"","sources":["../../../src/tools/review/tool-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAElF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAEvE,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKpE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAYlE;AAsCD,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAyC9D,CAAC"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { inputSchema } from './schema.js';
|
|
2
2
|
import { reviewBriefSlot } from './brief-slot.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { noStructuredReportSchema } from '../../reporting/report-parser-slots/no-structured-report.js';
|
|
4
|
+
import { makeFindingsHeadlineTemplate } from '../../reporting/findings-headline.js';
|
|
5
5
|
import { DEFAULT_TASK_TIMEOUT_MS } from '../../config/schema.js';
|
|
6
|
-
import { SEVERITY_LADDER } from '../shared/severity-ladder.js';
|
|
7
|
-
import { REVIEW_PURPOSE_ORIENTATION, EVIDENCE_RULE_REVIEW, SCOPE_RULE_REVIEW, ANNOTATOR_AWARENESS_REVIEW, CODE_REVIEW_FAILURE_MODES, THOROUGHNESS_REMINDER_REVIEW, } from './implementer-criteria.js';
|
|
8
6
|
export function registerReview(registry) {
|
|
9
7
|
registry.register({
|
|
10
8
|
routeName: 'review',
|
|
@@ -48,84 +46,15 @@ function resolveReviewDoneCondition(focus, hasContextBlocks) {
|
|
|
48
46
|
}
|
|
49
47
|
return hasContextBlocks ? base + DELTA_REVIEW_SUFFIX : base;
|
|
50
48
|
}
|
|
51
|
-
function buildReviewPrompt(brief) {
|
|
52
|
-
const { code, filePaths, focus, hasContextBlocks, filePath } = brief;
|
|
53
|
-
const parts = ['Review this code:'];
|
|
54
|
-
if (filePath) {
|
|
55
|
-
parts.push(`Read and analyze this file:\n- ${filePath}`);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
if (code)
|
|
59
|
-
parts.push(`\`\`\`\n${code}\n\`\`\``);
|
|
60
|
-
if (filePaths && filePaths.length > 0) {
|
|
61
|
-
parts.push(`Read and analyze these files:\n${filePaths.map(p => `- ${p}`).join('\n')}`);
|
|
62
|
-
}
|
|
63
|
-
if (focus && focus.length > 0)
|
|
64
|
-
parts.push(`Focus areas: ${focus.join(', ')}.`);
|
|
65
|
-
}
|
|
66
|
-
// Tool sweep #11: emit format spec unconditionally (pre-fix the
|
|
67
|
-
// DELTA branch dropped it, breaking annotator parse on delta runs).
|
|
68
|
-
if (hasContextBlocks) {
|
|
69
|
-
parts.push('A prior review is in the context above. **Omit** addressed findings, **include** still-present ones (mark "unfixed from prior review"), **include** any new findings, and end with a **Fixed** summary.');
|
|
70
|
-
}
|
|
71
|
-
parts.push(FINDING_FORMAT_INSTRUCTIONS);
|
|
72
|
-
return parts.join('\n\n');
|
|
73
|
-
}
|
|
74
|
-
const FINDING_FORMAT_INSTRUCTIONS = [
|
|
75
|
-
// Orientation goes FIRST — the worker needs to know why this review
|
|
76
|
-
// exists (pre-merge gate, your verdict is authoritative, missing a
|
|
77
|
-
// regression here ships) before reading the format spec / taxonomy /
|
|
78
|
-
// evidence rules. Without it, workers do line-by-line proofreading and
|
|
79
|
-
// miss cross-file ripples and test gaps.
|
|
80
|
-
REVIEW_PURPOSE_ORIENTATION,
|
|
81
|
-
'',
|
|
82
|
-
'Produce a narrative code review. Use this EXACT per-finding format — both the structured reviewer and the deterministic fallback extract from this same format:',
|
|
83
|
-
'',
|
|
84
|
-
'## Finding 1: <one-line title>',
|
|
85
|
-
'- Severity: critical | high | medium | low',
|
|
86
|
-
'- Location: file:line',
|
|
87
|
-
'- Issue: one-paragraph explanation',
|
|
88
|
-
'- Suggestion: one-line fix recommendation',
|
|
89
|
-
'',
|
|
90
|
-
'## Finding 2: <one-line title>',
|
|
91
|
-
'- Severity: ...',
|
|
92
|
-
'- ...',
|
|
93
|
-
'',
|
|
94
|
-
'Rules:',
|
|
95
|
-
'- Each finding heading MUST start with "## Finding N: " (h2, "Finding ", number, colon, title) — number sequentially from 1.',
|
|
96
|
-
'- Severity / Location / Issue / Suggestion bullets are on their own lines with the labels exactly as shown.',
|
|
97
|
-
'- If you found no issues, say "No findings." in plain prose and emit zero `## Finding N:` blocks.',
|
|
98
|
-
'',
|
|
99
|
-
SEVERITY_LADDER,
|
|
100
|
-
'',
|
|
101
|
-
// Code-review failure-mode taxonomy. Without this block, workers
|
|
102
|
-
// calibrated on line-by-line proofreading miss the cross-file ripple,
|
|
103
|
-
// test gap, and implicit-contract findings that actually block merges.
|
|
104
|
-
CODE_REVIEW_FAILURE_MODES,
|
|
105
|
-
'',
|
|
106
|
-
// Counter-balances the SEVERITY_LADDER's anti-inflation hint and
|
|
107
|
-
// includes the cross-file pass with worked example.
|
|
108
|
-
THOROUGHNESS_REMINDER_REVIEW,
|
|
109
|
-
'',
|
|
110
|
-
EVIDENCE_RULE_REVIEW,
|
|
111
|
-
'',
|
|
112
|
-
SCOPE_RULE_REVIEW,
|
|
113
|
-
'',
|
|
114
|
-
ANNOTATOR_AWARENESS_REVIEW,
|
|
115
|
-
].join('\n');
|
|
116
49
|
export const toolConfig = {
|
|
117
50
|
name: 'review',
|
|
118
51
|
category: 'read_only',
|
|
119
52
|
agentType: 'complex',
|
|
120
53
|
briefSlot: reviewBriefSlot,
|
|
121
54
|
buildTaskSpec: (brief, ctx) => {
|
|
122
|
-
const prompt = buildReviewPrompt(brief);
|
|
123
55
|
// Propagate filePaths + mainModel onto the TaskSpec so the headline
|
|
124
56
|
// composer can name the file in clean-review headlines and so the
|
|
125
|
-
// wire telemetry carries main_model attribution.
|
|
126
|
-
// already; review missed it, producing "[ok] review completed"
|
|
127
|
-
// (no path) even when filePaths was provided. (Tool sweep #2 — gap surfaced
|
|
128
|
-
// by review batch c24353f6 on packages/core/src/reporting/severity.ts.)
|
|
57
|
+
// wire telemetry carries main_model attribution.
|
|
129
58
|
const filePaths = brief.filePath
|
|
130
59
|
? [brief.filePath]
|
|
131
60
|
: (brief.filePaths && brief.filePaths.length > 0 ? brief.filePaths : undefined);
|
|
@@ -137,11 +66,13 @@ export const toolConfig = {
|
|
|
137
66
|
}
|
|
138
67
|
if (brief.focus)
|
|
139
68
|
targetParts.push(`Focus: ${Array.isArray(brief.focus) ? brief.focus.join(', ') : brief.focus}`);
|
|
69
|
+
// The read-route dispatcher builds the worker prefix from this pure target
|
|
70
|
+
// + FINDING_FORMAT_SHARED + review RouteSemantics; `prompt` mirrors it
|
|
71
|
+
// (required field / telemetry, not the read-route worker input).
|
|
72
|
+
const target = targetParts.join('\n\n');
|
|
140
73
|
return {
|
|
141
|
-
prompt,
|
|
142
|
-
|
|
143
|
-
// prefix; bypasses the legacy ## Finding format spec embedded in `prompt`.
|
|
144
|
-
parallelTarget: targetParts.join('\n\n'),
|
|
74
|
+
prompt: target,
|
|
75
|
+
readTarget: target,
|
|
145
76
|
agentType: 'complex',
|
|
146
77
|
reviewPolicy: 'none',
|
|
147
78
|
briefQualityPolicy: 'off',
|
|
@@ -156,7 +87,7 @@ export const toolConfig = {
|
|
|
156
87
|
autoCommit: false,
|
|
157
88
|
};
|
|
158
89
|
},
|
|
159
|
-
reportSchema:
|
|
160
|
-
headlineTemplate:
|
|
90
|
+
reportSchema: noStructuredReportSchema,
|
|
91
|
+
headlineTemplate: makeFindingsHeadlineTemplate('review', 'blocking'),
|
|
161
92
|
};
|
|
162
93
|
//# sourceMappingURL=tool-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-config.js","sourceRoot":"","sources":["../../../src/tools/review/tool-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,OAAO,EAAE,eAAe,EAAoB,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tool-config.js","sourceRoot":"","sources":["../../../src/tools/review/tool-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,20 +34,20 @@ export declare function buildOutputEnvelopeSchema(resultItemSchema?: z.ZodTypeAn
|
|
|
34
34
|
reason: z.ZodString;
|
|
35
35
|
}, z.core.$strip>]>;
|
|
36
36
|
specReviewVerdict: z.ZodOptional<z.ZodEnum<{
|
|
37
|
+
error: "error";
|
|
37
38
|
approved: "approved";
|
|
38
39
|
concerns: "concerns";
|
|
39
40
|
changes_required: "changes_required";
|
|
40
41
|
annotated: "annotated";
|
|
41
|
-
error: "error";
|
|
42
42
|
skipped: "skipped";
|
|
43
43
|
not_applicable: "not_applicable";
|
|
44
44
|
}>>;
|
|
45
45
|
qualityReviewVerdict: z.ZodOptional<z.ZodEnum<{
|
|
46
|
+
error: "error";
|
|
46
47
|
approved: "approved";
|
|
47
48
|
concerns: "concerns";
|
|
48
49
|
changes_required: "changes_required";
|
|
49
50
|
annotated: "annotated";
|
|
50
|
-
error: "error";
|
|
51
51
|
skipped: "skipped";
|
|
52
52
|
not_applicable: "not_applicable";
|
|
53
53
|
}>>;
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { type IncomingMessage, type ServerResponse } from 'node:http';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* separate (RouteDispatcher + RequestPipeline). Wire them together in the
|
|
9
|
-
* server boot, not here.
|
|
3
|
+
* HTTPListener — owns the HTTP socket lifecycle: bind a loopback interface,
|
|
4
|
+
* accept connections, close on shutdown. Routing, draining policy, auth, and
|
|
5
|
+
* request parsing live elsewhere (RouteDispatcher + request-pipeline). The
|
|
6
|
+
* listener's only request-time responsibility is to convert a rejected handler
|
|
7
|
+
* promise into a 500 (when the response is still writable) or a log line.
|
|
10
8
|
*/
|
|
11
9
|
export type HTTPRequestHandler = (req: IncomingMessage, res: ServerResponse) => void | Promise<void>;
|
|
12
10
|
export interface HTTPListenerOptions {
|
|
@@ -14,24 +12,17 @@ export interface HTTPListenerOptions {
|
|
|
14
12
|
bind: string;
|
|
15
13
|
/** Listening port. Pass 0 for ephemeral allocation. */
|
|
16
14
|
port: number;
|
|
17
|
-
/** Application handler. Called for every accepted request
|
|
15
|
+
/** Application handler. Called for every accepted request. */
|
|
18
16
|
handler: HTTPRequestHandler;
|
|
19
17
|
}
|
|
20
18
|
export declare class HTTPListener {
|
|
21
19
|
private readonly options;
|
|
22
20
|
private server;
|
|
23
|
-
private draining;
|
|
24
|
-
private startedAt;
|
|
25
21
|
constructor(options: HTTPListenerOptions);
|
|
26
22
|
start(): Promise<{
|
|
27
23
|
port: number;
|
|
28
24
|
address: string | null;
|
|
29
25
|
}>;
|
|
30
|
-
/** Begin graceful shutdown — new requests get 503; existing ones complete. */
|
|
31
|
-
beginDraining(): void;
|
|
32
|
-
isDraining(): boolean;
|
|
33
|
-
/** Wall-clock ms when the listener started. Zero if never started. */
|
|
34
|
-
getStartedAt(): number;
|
|
35
26
|
stop(): Promise<void>;
|
|
36
27
|
}
|
|
37
28
|
//# sourceMappingURL=http-listener.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-listener.d.ts","sourceRoot":"","sources":["../../src/transport/http-listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,eAAe,EAAE,KAAK,cAAc,EAAe,MAAM,WAAW,CAAC;AAEjG
|
|
1
|
+
{"version":3,"file":"http-listener.d.ts","sourceRoot":"","sources":["../../src/transport/http-listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,eAAe,EAAE,KAAK,cAAc,EAAe,MAAM,WAAW,CAAC;AAEjG;;;;;;GAMG;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAErG,MAAM,WAAW,mBAAmB;IAClC,oFAAoF;IACpF,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAED,qBAAa,YAAY;IAGX,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,MAAM,CAAuB;gBAER,OAAO,EAAE,mBAAmB;IAEnD,KAAK,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAuB1D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAM5B"}
|
|
@@ -2,43 +2,32 @@ import { createServer } from 'node:http';
|
|
|
2
2
|
export class HTTPListener {
|
|
3
3
|
options;
|
|
4
4
|
server = null;
|
|
5
|
-
draining = false;
|
|
6
|
-
startedAt = 0;
|
|
7
5
|
constructor(options) {
|
|
8
6
|
this.options = options;
|
|
9
7
|
}
|
|
10
8
|
async start() {
|
|
11
9
|
const server = createServer((req, res) => {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
res.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
10
|
+
Promise.resolve(this.options.handler(req, res)).catch((err) => {
|
|
11
|
+
const msg = err instanceof Error ? (err.stack ?? err.message) : String(err);
|
|
12
|
+
process.stderr.write(`[mmagent] listener handler rejected: ${msg}\n`);
|
|
13
|
+
if (!res.headersSent) {
|
|
14
|
+
res.writeHead(500, { 'content-type': 'application/json' });
|
|
15
|
+
res.end(JSON.stringify({ error: { code: 'internal_error', message: 'Internal server error' } }));
|
|
16
|
+
}
|
|
17
|
+
else if (!res.writableEnded) {
|
|
18
|
+
res.end();
|
|
19
|
+
}
|
|
20
|
+
});
|
|
20
21
|
});
|
|
21
22
|
await new Promise((resolve) => {
|
|
22
23
|
server.listen(this.options.port, this.options.bind, resolve);
|
|
23
24
|
});
|
|
24
25
|
this.server = server;
|
|
25
|
-
this.startedAt = Date.now();
|
|
26
26
|
const addr = server.address();
|
|
27
27
|
const port = typeof addr === 'object' && addr !== null ? addr.port : this.options.port;
|
|
28
28
|
const address = typeof addr === 'object' && addr !== null ? (addr.address ?? null) : null;
|
|
29
29
|
return { port, address };
|
|
30
30
|
}
|
|
31
|
-
/** Begin graceful shutdown — new requests get 503; existing ones complete. */
|
|
32
|
-
beginDraining() {
|
|
33
|
-
this.draining = true;
|
|
34
|
-
}
|
|
35
|
-
isDraining() {
|
|
36
|
-
return this.draining;
|
|
37
|
-
}
|
|
38
|
-
/** Wall-clock ms when the listener started. Zero if never started. */
|
|
39
|
-
getStartedAt() {
|
|
40
|
-
return this.startedAt;
|
|
41
|
-
}
|
|
42
31
|
async stop() {
|
|
43
32
|
if (!this.server)
|
|
44
33
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-listener.js","sourceRoot":"","sources":["../../src/transport/http-listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA0D,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"http-listener.js","sourceRoot":"","sources":["../../src/transport/http-listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA0D,MAAM,WAAW,CAAC;AAqBjG,MAAM,OAAO,YAAY;IAGM;IAFrB,MAAM,GAAkB,IAAI,CAAC;IAErC,YAA6B,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;IAAG,CAAC;IAE7D,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACvC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBACrE,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC5E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,GAAG,IAAI,CAAC,CAAC;gBACtE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;oBACrB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAAE,CAAC,CAAC,CAAC;gBACnG,CAAC;qBAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;oBAC9B,GAAG,CAAC,GAAG,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAE,IAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAC7G,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAE,IAA6B,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACpH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { HTTPListener, type HTTPListenerOptions, type HTTPRequestHandler } from './http-listener.js';
|
|
2
|
-
export { RouteDispatcher
|
|
2
|
+
export { RouteDispatcher } from './route-dispatcher.js';
|
|
3
3
|
export { isLoopbackAddress, shouldRejectNonLoopback, isAllowedHostHeader, } from './loopback-enforcer.js';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|