@zhixuan92/multi-model-agent-core 4.7.12 → 4.7.14
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 +13 -13
- package/dist/events/task-envelope.d.ts +6 -0
- package/dist/events/task-envelope.d.ts.map +1 -1
- package/dist/events/task-envelope.js +4 -0
- package/dist/events/task-envelope.js.map +1 -1
- package/dist/events/wire-schema.d.ts +10 -10
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/dist/lifecycle/annotate-parser.d.ts.map +1 -1
- package/dist/lifecycle/annotate-parser.js +1 -2
- package/dist/lifecycle/annotate-parser.js.map +1 -1
- package/dist/lifecycle/annotate-prompts.d.ts.map +1 -1
- package/dist/lifecycle/annotate-prompts.js +6 -3
- package/dist/lifecycle/annotate-prompts.js.map +1 -1
- package/dist/lifecycle/auto-commit.d.ts +0 -15
- package/dist/lifecycle/auto-commit.d.ts.map +1 -1
- package/dist/lifecycle/auto-commit.js +0 -37
- package/dist/lifecycle/auto-commit.js.map +1 -1
- package/dist/lifecycle/derive-completion.d.ts +0 -1
- package/dist/lifecycle/derive-completion.d.ts.map +1 -1
- package/dist/lifecycle/derive-completion.js +3 -4
- package/dist/lifecycle/derive-completion.js.map +1 -1
- package/dist/lifecycle/executor-output-types.d.ts +2 -0
- package/dist/lifecycle/executor-output-types.d.ts.map +1 -1
- package/dist/lifecycle/handlers/annotate-stage.d.ts.map +1 -1
- package/dist/lifecycle/handlers/annotate-stage.js +15 -6
- package/dist/lifecycle/handlers/annotate-stage.js.map +1 -1
- package/dist/lifecycle/handlers/enrich-runtime-result.d.ts.map +1 -1
- package/dist/lifecycle/handlers/enrich-runtime-result.js +7 -15
- package/dist/lifecycle/handlers/enrich-runtime-result.js.map +1 -1
- package/dist/lifecycle/handlers/git-commit-handler.d.ts.map +1 -1
- package/dist/lifecycle/handlers/git-commit-handler.js +100 -70
- package/dist/lifecycle/handlers/git-commit-handler.js.map +1 -1
- package/dist/lifecycle/handlers/implement-stage.d.ts.map +1 -1
- package/dist/lifecycle/handlers/implement-stage.js +6 -1
- package/dist/lifecycle/handlers/implement-stage.js.map +1 -1
- package/dist/lifecycle/handlers/rework-stage.d.ts.map +1 -1
- package/dist/lifecycle/handlers/rework-stage.js +3 -2
- package/dist/lifecycle/handlers/rework-stage.js.map +1 -1
- package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +1 -1
- package/dist/lifecycle/handlers/terminal-handlers.js +16 -90
- package/dist/lifecycle/handlers/terminal-handlers.js.map +1 -1
- package/dist/lifecycle/lifecycle-context.d.ts +1 -40
- package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
- package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
- package/dist/lifecycle/lifecycle-driver.js +1 -32
- package/dist/lifecycle/lifecycle-driver.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 +4 -1
- package/dist/lifecycle/real-diff.js.map +1 -1
- package/dist/lifecycle/repo-commit-lock.d.ts +20 -0
- package/dist/lifecycle/repo-commit-lock.d.ts.map +1 -0
- package/dist/lifecycle/repo-commit-lock.js +40 -0
- package/dist/lifecycle/repo-commit-lock.js.map +1 -0
- 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/stage-io.d.ts +1 -0
- package/dist/lifecycle/stage-io.d.ts.map +1 -1
- package/dist/lifecycle/stage-io.js.map +1 -1
- package/dist/lifecycle/stage-plan-builder.d.ts.map +1 -1
- package/dist/lifecycle/stage-plan-builder.js +10 -6
- package/dist/lifecycle/stage-plan-builder.js.map +1 -1
- package/dist/lifecycle/stage-plan-types.d.ts +17 -13
- package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
- package/dist/lifecycle/stage-plan-types.js +27 -1
- package/dist/lifecycle/stage-plan-types.js.map +1 -1
- package/dist/lifecycle/stage-progression.d.ts.map +1 -1
- package/dist/lifecycle/stage-progression.js +0 -1
- package/dist/lifecycle/stage-progression.js.map +1 -1
- package/dist/lifecycle/task-executor.d.ts +0 -23
- package/dist/lifecycle/task-executor.d.ts.map +1 -1
- package/dist/lifecycle/task-executor.js +26 -67
- package/dist/lifecycle/task-executor.js.map +1 -1
- package/dist/lifecycle/task-runner.d.ts +8 -53
- package/dist/lifecycle/task-runner.d.ts.map +1 -1
- package/dist/lifecycle/task-runner.js +7 -69
- package/dist/lifecycle/task-runner.js.map +1 -1
- package/dist/lifecycle/tool-config-types.d.ts +6 -9
- package/dist/lifecycle/tool-config-types.d.ts.map +1 -1
- package/dist/providers/runner-types.d.ts +0 -5
- package/dist/providers/runner-types.d.ts.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/stores/batch-registry.d.ts +0 -18
- package/dist/stores/batch-registry.d.ts.map +1 -1
- package/dist/stores/batch-registry.js +0 -12
- package/dist/stores/batch-registry.js.map +1 -1
- 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/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 +13 -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/tool-config.d.ts.map +1 -1
- package/dist/tools/debug/tool-config.js +12 -72
- 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 +6 -2
- package/dist/tools/delegate/schema.d.ts.map +1 -1
- package/dist/tools/delegate/schema.js +3 -2
- 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 +3 -1
- 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 +6 -2
- 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/tool-config.d.ts.map +1 -1
- package/dist/tools/investigate/tool-config.js +4 -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/register-context-block/tool-config.d.ts.map +1 -1
- package/dist/tools/register-context-block/tool-config.js +2 -0
- package/dist/tools/register-context-block/tool-config.js.map +1 -1
- 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.d.ts.map +1 -1
- package/dist/tools/research/tool-config.js +4 -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/tool-config.d.ts.map +1 -1
- package/dist/tools/retry/tool-config.js +6 -5
- 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/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 +13 -81
- package/dist/tools/review/tool-config.js.map +1 -1
- package/dist/types/enums.d.ts +1 -1
- package/dist/types/task-spec.d.ts +12 -11
- package/dist/types/task-spec.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/lifecycle/fallback-report.d.ts +0 -5
- package/dist/lifecycle/fallback-report.d.ts.map +0 -1
- package/dist/lifecycle/fallback-report.js +0 -33
- package/dist/lifecycle/fallback-report.js.map +0 -1
- package/dist/lifecycle/handlers/commit-stage.d.ts +0 -16
- package/dist/lifecycle/handlers/commit-stage.d.ts.map +0 -1
- package/dist/lifecycle/handlers/commit-stage.js +0 -52
- package/dist/lifecycle/handlers/commit-stage.js.map +0 -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/lifecycle/repo-hygiene.d.ts +0 -14
- package/dist/lifecycle/repo-hygiene.d.ts.map +0 -1
- package/dist/lifecycle/repo-hygiene.js +0 -74
- package/dist/lifecycle/repo-hygiene.js.map +0 -1
- package/dist/lifecycle/task-completion-summary.d.ts +0 -23
- package/dist/lifecycle/task-completion-summary.d.ts.map +0 -1
- package/dist/lifecycle/task-completion-summary.js +0 -83
- package/dist/lifecycle/task-completion-summary.js.map +0 -1
- package/dist/lifecycle/task-grouping.d.ts +0 -19
- package/dist/lifecycle/task-grouping.d.ts.map +0 -1
- package/dist/lifecycle/task-grouping.js +0 -48
- package/dist/lifecycle/task-grouping.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
|
@@ -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({
|
|
@@ -19,6 +19,8 @@ export function registerRetry(registry) {
|
|
|
19
19
|
export const toolConfig = {
|
|
20
20
|
name: 'retry',
|
|
21
21
|
category: 'assist',
|
|
22
|
+
dispatchMode: 'parallel',
|
|
23
|
+
dispatchModeOverridable: false,
|
|
22
24
|
agentType: 'standard',
|
|
23
25
|
briefSlot: retryBriefSlot,
|
|
24
26
|
buildTaskSpec: (brief, ctx) => {
|
|
@@ -38,11 +40,10 @@ export const toolConfig = {
|
|
|
38
40
|
contextBlockIds: origTask?.contextBlockIds ?? [],
|
|
39
41
|
mainModel: origTask?.mainModel,
|
|
40
42
|
done: origTask?.done,
|
|
41
|
-
autoCommit: origTask?.autoCommit ?? false,
|
|
42
43
|
};
|
|
43
44
|
},
|
|
44
|
-
reportSchema:
|
|
45
|
-
headlineTemplate:
|
|
45
|
+
reportSchema: noStructuredReportSchema,
|
|
46
|
+
headlineTemplate: makeFindingsHeadlineTemplate('retry', 'high'),
|
|
46
47
|
postProcessEnvelope: (envelope, ctx) => {
|
|
47
48
|
const results = (Array.isArray(envelope.results) ? envelope.results : []);
|
|
48
49
|
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"}
|
|
@@ -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,CA0C9D,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,17 @@ 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',
|
|
52
|
+
dispatchMode: 'parallel',
|
|
53
|
+
dispatchModeOverridable: false,
|
|
119
54
|
agentType: 'complex',
|
|
120
55
|
briefSlot: reviewBriefSlot,
|
|
121
56
|
buildTaskSpec: (brief, ctx) => {
|
|
122
|
-
const prompt = buildReviewPrompt(brief);
|
|
123
57
|
// Propagate filePaths + mainModel onto the TaskSpec so the headline
|
|
124
58
|
// 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.)
|
|
59
|
+
// wire telemetry carries main_model attribution.
|
|
129
60
|
const filePaths = brief.filePath
|
|
130
61
|
? [brief.filePath]
|
|
131
62
|
: (brief.filePaths && brief.filePaths.length > 0 ? brief.filePaths : undefined);
|
|
@@ -137,11 +68,13 @@ export const toolConfig = {
|
|
|
137
68
|
}
|
|
138
69
|
if (brief.focus)
|
|
139
70
|
targetParts.push(`Focus: ${Array.isArray(brief.focus) ? brief.focus.join(', ') : brief.focus}`);
|
|
71
|
+
// The read-route dispatcher builds the worker prefix from this pure target
|
|
72
|
+
// + FINDING_FORMAT_SHARED + review RouteSemantics; `prompt` mirrors it
|
|
73
|
+
// (required field / telemetry, not the read-route worker input).
|
|
74
|
+
const target = targetParts.join('\n\n');
|
|
140
75
|
return {
|
|
141
|
-
prompt,
|
|
142
|
-
|
|
143
|
-
// prefix; bypasses the legacy ## Finding format spec embedded in `prompt`.
|
|
144
|
-
parallelTarget: targetParts.join('\n\n'),
|
|
76
|
+
prompt: target,
|
|
77
|
+
readTarget: target,
|
|
145
78
|
agentType: 'complex',
|
|
146
79
|
reviewPolicy: 'none',
|
|
147
80
|
briefQualityPolicy: 'off',
|
|
@@ -153,10 +86,9 @@ export const toolConfig = {
|
|
|
153
86
|
contextBlockIds: brief.contextBlockIds,
|
|
154
87
|
filePaths,
|
|
155
88
|
mainModel: ctx.mainModel ?? undefined,
|
|
156
|
-
autoCommit: false,
|
|
157
89
|
};
|
|
158
90
|
},
|
|
159
|
-
reportSchema:
|
|
160
|
-
headlineTemplate:
|
|
91
|
+
reportSchema: noStructuredReportSchema,
|
|
92
|
+
headlineTemplate: makeFindingsHeadlineTemplate('review', 'blocking'),
|
|
161
93
|
};
|
|
162
94
|
//# 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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"}
|
package/dist/types/enums.d.ts
CHANGED
|
@@ -11,11 +11,11 @@ export declare const ReviewVerdictEnum: z.ZodEnum<{
|
|
|
11
11
|
export declare const ConcernCategory: z.ZodEnum<{
|
|
12
12
|
other: "other";
|
|
13
13
|
security: "security";
|
|
14
|
-
performance: "performance";
|
|
15
14
|
missing_test: "missing_test";
|
|
16
15
|
scope_creep: "scope_creep";
|
|
17
16
|
incomplete_impl: "incomplete_impl";
|
|
18
17
|
style_lint: "style_lint";
|
|
18
|
+
performance: "performance";
|
|
19
19
|
maintainability: "maintainability";
|
|
20
20
|
doc_gap: "doc_gap";
|
|
21
21
|
doc_drift: "doc_drift";
|
|
@@ -31,24 +31,25 @@ export interface TaskSpec {
|
|
|
31
31
|
requiredMarkers?: string[];
|
|
32
32
|
};
|
|
33
33
|
testCommand?: string;
|
|
34
|
-
autoCommit?: boolean;
|
|
35
34
|
planContext?: string;
|
|
36
35
|
outputTargets?: string[];
|
|
37
36
|
/**
|
|
38
|
-
* For read-only routes that go through the
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* sub-workers see ONLY the user's request — not
|
|
42
|
-
* format spec
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
37
|
+
* For read-only routes that go through the read-route dispatcher, this is
|
|
38
|
+
* the user's pure question / work / problem text (route-specific shape),
|
|
39
|
+
* set by each route's buildTaskSpec. Used as the "target" content embedded
|
|
40
|
+
* in the cached prefix so sub-workers see ONLY the user's request — not a
|
|
41
|
+
* legacy monolithic format spec. The dispatcher uses this then `document`;
|
|
42
|
+
* there is NO `prompt` fallback (a non-research read route with an empty
|
|
43
|
+
* target throws `read_route_missing_target`). Audit: the inlined document /
|
|
44
|
+
* file targets. Review: the code snippet + filePaths. Debug: problem
|
|
45
|
+
* statement. Investigate: question. Research: the research question (the
|
|
46
|
+
* actual worker input is built from `research`).
|
|
46
47
|
*/
|
|
47
|
-
|
|
48
|
+
readTarget?: string;
|
|
48
49
|
/**
|
|
49
50
|
* v4.4.x: subtype field for read-only tools. Set by each tool's
|
|
50
51
|
* buildTaskSpec from the input schema's `subtype` field. The lifecycle's
|
|
51
|
-
*
|
|
52
|
+
* read-route dispatcher reads this to look up the per-tool
|
|
52
53
|
* SUBTYPES map and select the matching criteria / orientation /
|
|
53
54
|
* semantics block. Defaults to 'default' when undefined.
|
|
54
55
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-spec.d.ts","sourceRoot":"","sources":["../../src/types/task-spec.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AACjE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,CAAC;AAChD,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAC/C,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AACxD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAC1D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,oBAAoB,GAAG,eAAe,GAAG,SAAS,GAAG,oBAAoB,GAAG,QAAQ,CAAC;AAEzH,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC;IAC3D,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC;CAC7D;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,KAAK,CAAC,EAAE,QAAQ,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,WAAW,GAAG,MAAM,CAAA;IAC7D,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,gBAAgB,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;IAChG,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,
|
|
1
|
+
{"version":3,"file":"task-spec.d.ts","sourceRoot":"","sources":["../../src/types/task-spec.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AACjE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,CAAC;AAChD,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAC/C,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AACxD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAC1D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,oBAAoB,GAAG,eAAe,GAAG,SAAS,GAAG,oBAAoB,GAAG,QAAQ,CAAC;AAEzH,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC;IAC3D,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC;CAC7D;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,KAAK,CAAC,EAAE,QAAQ,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,WAAW,GAAG,MAAM,CAAA;IAC7D,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,gBAAgB,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;IAChG,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE;QACT,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,qBAAqB,CAAC,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChE,CAAA;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhixuan92/multi-model-agent-core",
|
|
3
|
-
"version": "4.7.
|
|
3
|
+
"version": "4.7.14",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Core library for multi-model-agent: provider runners (Claude, Codex, OpenAI-compatible), routing logic, config schema, and tool/sandbox primitives.",
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { RuntimeRunResult } from '../types.js';
|
|
2
|
-
import type { ParsedStructuredReport } from '../reporting/structured-report.js';
|
|
3
|
-
export declare function readImplementerFileContents(filesWritten: string[], cwd: string | undefined): Promise<Record<string, string>>;
|
|
4
|
-
export declare function buildFallbackImplReport(result: RuntimeRunResult): ParsedStructuredReport;
|
|
5
|
-
//# sourceMappingURL=fallback-report.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fallback-report.d.ts","sourceRoot":"","sources":["../../src/lifecycle/fallback-report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAIhF,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,MAAM,EAAE,EACtB,GAAG,EAAE,MAAM,GAAG,SAAS,GACtB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAejC;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,sBAAsB,CAYxF"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { parseStructuredReport } from '../reporting/structured-report.js';
|
|
2
|
-
import fs from 'fs/promises';
|
|
3
|
-
export async function readImplementerFileContents(filesWritten, cwd) {
|
|
4
|
-
const contents = {};
|
|
5
|
-
const basePath = cwd ?? process.cwd();
|
|
6
|
-
for (const filePath of filesWritten) {
|
|
7
|
-
try {
|
|
8
|
-
const resolved = filePath.startsWith('/') ? filePath : `${basePath}/${filePath}`;
|
|
9
|
-
const content = await fs.readFile(resolved, 'utf-8');
|
|
10
|
-
contents[filePath] = content.length > 50_000
|
|
11
|
-
? content.slice(0, 50_000) + '\n[truncated at 50KB]'
|
|
12
|
-
: content;
|
|
13
|
-
}
|
|
14
|
-
catch {
|
|
15
|
-
contents[filePath] = '[file not readable]';
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
return contents;
|
|
19
|
-
}
|
|
20
|
-
export function buildFallbackImplReport(result) {
|
|
21
|
-
const parsed = parseStructuredReport(result.output);
|
|
22
|
-
if (parsed.summary) {
|
|
23
|
-
return parsed;
|
|
24
|
-
}
|
|
25
|
-
return {
|
|
26
|
-
summary: result.output.substring(0, 200),
|
|
27
|
-
filesChanged: result.filesWritten.map(f => ({ path: f, summary: 'updated' })),
|
|
28
|
-
deviationsFromBrief: [],
|
|
29
|
-
unresolved: [],
|
|
30
|
-
extraSections: {},
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=fallback-report.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fallback-report.js","sourceRoot":"","sources":["../../src/lifecycle/fallback-report.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,MAAM,aAAa,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,YAAsB,EACtB,GAAuB;IAEvB,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC;YACjF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM;gBAC1C,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,uBAAuB;gBACpD,CAAC,CAAC,OAAO,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,QAAQ,CAAC,GAAG,qBAAqB,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAwB;IAC9D,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;QACxC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7E,mBAAmB,EAAE,EAAE;QACvB,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,EAAE;KAClB,CAAC;AACJ,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { CommitFields } from '../../reporting/structured-report.js';
|
|
2
|
-
export interface CommitStageInput {
|
|
3
|
-
cwd: string;
|
|
4
|
-
filesWritten: string[];
|
|
5
|
-
commit: CommitFields;
|
|
6
|
-
}
|
|
7
|
-
export interface CommitStageResult {
|
|
8
|
-
sha: string;
|
|
9
|
-
subject: string;
|
|
10
|
-
body: string;
|
|
11
|
-
filesChanged: string[];
|
|
12
|
-
authoredAt: string;
|
|
13
|
-
}
|
|
14
|
-
export declare function readbackCommit(sha: string, cwd: string): Promise<CommitStageResult>;
|
|
15
|
-
export declare function runCommitStage(input: CommitStageInput): Promise<CommitStageResult>;
|
|
16
|
-
//# sourceMappingURL=commit-stage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commit-stage.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/commit-stage.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAIzE,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AA0BD,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAQzF;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAcxF"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { execFile } from 'node:child_process';
|
|
2
|
-
import { isAbsolute, normalize, relative, sep } from 'node:path';
|
|
3
|
-
import { promisify } from 'node:util';
|
|
4
|
-
import { composeCommitMessage } from '../../lifecycle/auto-commit.js';
|
|
5
|
-
const exec = promisify(execFile);
|
|
6
|
-
function validatePaths(cwd, paths) {
|
|
7
|
-
const out = [];
|
|
8
|
-
for (const p of paths) {
|
|
9
|
-
if (/[\x00-\x1f]/.test(p))
|
|
10
|
-
throw new Error(`commit-stage: path contains control chars: ${JSON.stringify(p)}`);
|
|
11
|
-
let candidate;
|
|
12
|
-
if (isAbsolute(p)) {
|
|
13
|
-
const rel = relative(cwd, normalize(p));
|
|
14
|
-
if (rel === '' || rel === '..' || rel.startsWith(`..${sep}`) || isAbsolute(rel)) {
|
|
15
|
-
throw new Error(`commit-stage: absolute path outside cwd rejected: ${p}`);
|
|
16
|
-
}
|
|
17
|
-
candidate = rel;
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
const norm = normalize(p);
|
|
21
|
-
const rel = relative(cwd, normalize(`${cwd}/${norm}`));
|
|
22
|
-
if (rel.startsWith('..'))
|
|
23
|
-
throw new Error(`commit-stage: path escapes cwd: ${p}`);
|
|
24
|
-
candidate = norm;
|
|
25
|
-
}
|
|
26
|
-
out.push(candidate);
|
|
27
|
-
}
|
|
28
|
-
return out;
|
|
29
|
-
}
|
|
30
|
-
export async function readbackCommit(sha, cwd) {
|
|
31
|
-
const { stdout: meta } = await exec('git', ['log', '-1', sha, '--format=%H%n%cI%n%s%n%b'], { cwd, windowsHide: true });
|
|
32
|
-
const lines = meta.split('\n');
|
|
33
|
-
const [shaOut, isoCi, subject, ...bodyLines] = lines;
|
|
34
|
-
const { stdout: names } = await exec('git', ['log', '-1', sha, '--name-only', '--format='], { cwd, windowsHide: true });
|
|
35
|
-
const filesChanged = names.split('\n').map(s => s.trim()).filter(Boolean);
|
|
36
|
-
const authoredAt = new Date(isoCi).toISOString();
|
|
37
|
-
return { sha: shaOut, subject, body: bodyLines.join('\n').trimEnd(), filesChanged, authoredAt };
|
|
38
|
-
}
|
|
39
|
-
export async function runCommitStage(input) {
|
|
40
|
-
if (input.filesWritten.length === 0) {
|
|
41
|
-
throw new Error('commit-stage: filesWritten must not be empty (call only when treeDirty)');
|
|
42
|
-
}
|
|
43
|
-
const safePaths = validatePaths(input.cwd, input.filesWritten);
|
|
44
|
-
await exec('git', ['add', '--', ...safePaths], { cwd: input.cwd, windowsHide: true });
|
|
45
|
-
const message = composeCommitMessage(input.commit);
|
|
46
|
-
const [subjectFull, body] = message.split(/\n\n([\s\S]*)/, 2);
|
|
47
|
-
const commitArgs = ['commit', '-q', '-m', subjectFull, ...(body ? ['-m', body] : [])];
|
|
48
|
-
await exec('git', commitArgs, { cwd: input.cwd, windowsHide: true });
|
|
49
|
-
const { stdout: head } = await exec('git', ['rev-parse', 'HEAD'], { cwd: input.cwd, windowsHide: true });
|
|
50
|
-
return readbackCommit(head.trim(), input.cwd);
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=commit-stage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commit-stage.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/commit-stage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parallel-criteria-routes.d.ts","sourceRoot":"","sources":["../../src/lifecycle/parallel-criteria-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAGL,KAAK,kBAAkB,EAExB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAExF,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,GAAG,UAAU,CAAC;AAE1F;;kBAEkB;AAClB,eAAO,MAAM,qBAAqB,QAmBtB,CAAC;AAEb,UAAU,UAAU;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAChD,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,EAAE,UAAU,CAMlE,CAAC;AAEF,mEAAmE;AACnE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;IACpC,WAAW,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,MAAM,CAAC;IACpD,WAAW,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,MAAM,CAAC;IACnD,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;CAC7C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,iBAAiB,CAsBnB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,iBAAiB,CAEzE;AAGD,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parallel-criteria-routes.js","sourceRoot":"","sources":["../../src/lifecycle/parallel-criteria-routes.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EACzB,4BAA4B,GAG7B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAqB,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAsB,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,cAAc,EAAqB,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAA2B,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAwB,MAAM,+BAA+B,CAAC;AAIxF;;kBAEkB;AAClB,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,8EAA8E;IAC9E,EAAE;IACF,gCAAgC;IAChC,4CAA4C;IAC5C,+CAA+C;IAC/C,gLAAgL;IAChL,iFAAiF;IACjF,EAAE;IACF,6CAA6C;IAC7C,EAAE;IACF,0JAA0J;IAC1J,EAAE;IACF,oIAAoI;IACpI,EAAE;IACF,YAAY;IACZ,0CAA0C;IAC1C,kEAAkE;IAClE,sEAAsE;CACvE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAOb,MAAM,CAAC,MAAM,gBAAgB,GAA0C;IACrE,KAAK,EAAQ,EAAE,UAAU,EAAE,cAA2D,EAAE,cAAc,EAAE,SAAS,EAAE;IACnH,MAAM,EAAO,EAAE,UAAU,EAAE,eAA2D,EAAE,cAAc,EAAE,SAAS,EAAE;IACnH,KAAK,EAAQ,EAAE,UAAU,EAAE,cAA2D,EAAE,cAAc,EAAE,SAAS,EAAE;IACnH,WAAW,EAAE,EAAE,UAAU,EAAE,oBAA2D,EAAE,cAAc,EAAE,SAAS,EAAE;IACnH,QAAQ,EAAK,EAAE,UAAU,EAAE,iBAA2D,EAAE,cAAc,EAAE,SAAS,EAAE;CACpH,CAAC;AAUF;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAwB,EACxB,OAA2B;IAE3B,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,CAAC,cAAc,CAAC;IAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,YAAY,KAAK,qBAAqB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7H,CAAC;IACD,MAAM,MAAM,GAAuB;QACjC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,aAAa,EAAE,qBAAqB;QACpC,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;IACF,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,CAAC,MAA0B,EAAE,EAAE,CAAC,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC;QACtF,WAAW,EAAE,CAAC,SAAyB,EAAE,EAAE,CAAC,4BAA4B,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;QACnG,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,KAAK,IAAI,gBAAgB,CAAC;AACnC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plan-extraction.d.ts","sourceRoot":"","sources":["../../src/lifecycle/plan-extraction.ts"],"names":[],"mappings":"AAIA,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EAAE,EACvB,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,MAAM,GAAG,SAAS,GACtB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA6C7B"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import fs from 'fs/promises';
|
|
2
|
-
const PLAN_CONTEXT_MAX_CHARS = 10_000;
|
|
3
|
-
export async function extractPlanSection(planFilePaths, taskDescriptor, cwd) {
|
|
4
|
-
const basePath = cwd ?? process.cwd();
|
|
5
|
-
for (const filePath of planFilePaths) {
|
|
6
|
-
try {
|
|
7
|
-
const resolved = filePath.startsWith('/') ? filePath : `${basePath}/${filePath}`;
|
|
8
|
-
const content = await fs.readFile(resolved, 'utf-8');
|
|
9
|
-
const lines = content.split('\n');
|
|
10
|
-
let startIndex = -1;
|
|
11
|
-
let headingLevel = 0;
|
|
12
|
-
for (let i = 0; i < lines.length; i++) {
|
|
13
|
-
const match = lines[i].match(/^(#{1,6})\s+(.*)/);
|
|
14
|
-
if (match && match[2].trim() === taskDescriptor.trim()) {
|
|
15
|
-
startIndex = i;
|
|
16
|
-
headingLevel = match[1].length;
|
|
17
|
-
break;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
if (startIndex === -1)
|
|
21
|
-
continue;
|
|
22
|
-
let endIndex = lines.length;
|
|
23
|
-
for (let i = startIndex + 1; i < lines.length; i++) {
|
|
24
|
-
const match = lines[i].match(/^(#{1,6})\s/);
|
|
25
|
-
if (match && match[1].length <= headingLevel) {
|
|
26
|
-
endIndex = i;
|
|
27
|
-
break;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
let section = lines.slice(startIndex, endIndex).join('\n');
|
|
31
|
-
if (section.length > PLAN_CONTEXT_MAX_CHARS) {
|
|
32
|
-
section = section.slice(0, PLAN_CONTEXT_MAX_CHARS) + '\n[truncated at 10KB]';
|
|
33
|
-
}
|
|
34
|
-
return section;
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
if (process.env.MULTI_MODEL_DEBUG === '1') {
|
|
38
|
-
console.error(`[multi-model-agent] plan file not readable: ${filePath}`);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return undefined;
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=plan-extraction.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plan-extraction.js","sourceRoot":"","sources":["../../src/lifecycle/plan-extraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAE7B,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,aAAuB,EACvB,cAAsB,EACtB,GAAuB;IAEvB,MAAM,QAAQ,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEtC,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC;YACjF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAErD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;YACpB,IAAI,YAAY,GAAG,CAAC,CAAC;YAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBACjD,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;oBACvD,UAAU,GAAG,CAAC,CAAC;oBACf,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC/B,MAAM;gBACR,CAAC;YACH,CAAC;YAED,IAAI,UAAU,KAAK,CAAC,CAAC;gBAAE,SAAS;YAEhC,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAC5C,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC;oBAC7C,QAAQ,GAAG,CAAC,CAAC;oBACb,MAAM;gBACR,CAAC;YACH,CAAC;YAED,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3D,IAAI,OAAO,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;gBAC5C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC,GAAG,uBAAuB,CAAC;YAC/E,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,GAAG,EAAE,CAAC;gBAC1C,OAAO,CAAC,KAAK,CAAC,+CAA+C,QAAQ,EAAE,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export interface DirtyFilesOptions {
|
|
2
|
-
timeoutMs?: number;
|
|
3
|
-
}
|
|
4
|
-
/**
|
|
5
|
-
* Returns the list of porcelain-reported dirty file paths in cwd, or []
|
|
6
|
-
* on any failure (timeout, spawn error, non-git repo). Never throws.
|
|
7
|
-
*/
|
|
8
|
-
export declare function getDirtyFiles(cwd: string, opts?: DirtyFilesOptions): Promise<string[]>;
|
|
9
|
-
/**
|
|
10
|
-
* Builds the [REPO HYGIENE] advisory string. Sorts files lexicographically;
|
|
11
|
-
* lists the first 20 and appends ", … (+N more)" when N > 0.
|
|
12
|
-
*/
|
|
13
|
-
export declare function formatHygieneAdvisory(files: string[]): string;
|
|
14
|
-
//# sourceMappingURL=repo-hygiene.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repo-hygiene.d.ts","sourceRoot":"","sources":["../../src/lifecycle/repo-hygiene.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAAG,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE;AAEzD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC,CAyCnB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAW7D"}
|