@zhixuan92/multi-model-agent-core 2.8.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/dist/batch-registry.d.ts +60 -0
  2. package/dist/batch-registry.d.ts.map +1 -0
  3. package/dist/batch-registry.js +146 -0
  4. package/dist/batch-registry.js.map +1 -0
  5. package/dist/config/load.d.ts +8 -0
  6. package/dist/config/load.d.ts.map +1 -1
  7. package/dist/config/load.js +12 -0
  8. package/dist/config/load.js.map +1 -1
  9. package/dist/config/schema.d.ts +37 -15
  10. package/dist/config/schema.d.ts.map +1 -1
  11. package/dist/config/schema.js +48 -29
  12. package/dist/config/schema.js.map +1 -1
  13. package/dist/context/context-block-store.d.ts +8 -0
  14. package/dist/context/context-block-store.d.ts.map +1 -1
  15. package/dist/context/context-block-store.js +23 -2
  16. package/dist/context/context-block-store.js.map +1 -1
  17. package/dist/executors/audit.d.ts +7 -0
  18. package/dist/executors/audit.d.ts.map +1 -0
  19. package/dist/executors/audit.js +140 -0
  20. package/dist/executors/audit.js.map +1 -0
  21. package/dist/executors/debug.d.ts +7 -0
  22. package/dist/executors/debug.d.ts.map +1 -0
  23. package/dist/executors/debug.js +65 -0
  24. package/dist/executors/debug.js.map +1 -0
  25. package/dist/executors/delegate.d.ts +28 -0
  26. package/dist/executors/delegate.d.ts.map +1 -0
  27. package/dist/executors/delegate.js +76 -0
  28. package/dist/executors/delegate.js.map +1 -0
  29. package/dist/executors/execute-plan.d.ts +11 -0
  30. package/dist/executors/execute-plan.d.ts.map +1 -0
  31. package/dist/executors/execute-plan.js +128 -0
  32. package/dist/executors/execute-plan.js.map +1 -0
  33. package/dist/executors/index.d.ts +9 -0
  34. package/dist/executors/index.d.ts.map +1 -0
  35. package/dist/executors/index.js +10 -0
  36. package/dist/executors/index.js.map +1 -0
  37. package/dist/executors/retry.d.ts +20 -0
  38. package/dist/executors/retry.d.ts.map +1 -0
  39. package/dist/executors/retry.js +65 -0
  40. package/dist/executors/retry.js.map +1 -0
  41. package/dist/executors/review.d.ts +7 -0
  42. package/dist/executors/review.d.ts.map +1 -0
  43. package/dist/executors/review.js +128 -0
  44. package/dist/executors/review.js.map +1 -0
  45. package/dist/executors/shared-compute.d.ts +4 -0
  46. package/dist/executors/shared-compute.d.ts.map +1 -0
  47. package/dist/executors/shared-compute.js +19 -0
  48. package/dist/executors/shared-compute.js.map +1 -0
  49. package/dist/executors/types.d.ts +65 -0
  50. package/dist/executors/types.d.ts.map +1 -0
  51. package/dist/executors/types.js +2 -0
  52. package/dist/executors/types.js.map +1 -0
  53. package/dist/executors/verify.d.ts +7 -0
  54. package/dist/executors/verify.d.ts.map +1 -0
  55. package/dist/executors/verify.js +105 -0
  56. package/dist/executors/verify.js.map +1 -0
  57. package/dist/index.d.ts +4 -2
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +4 -2
  60. package/dist/index.js.map +1 -1
  61. package/dist/project-context.d.ts +5 -2
  62. package/dist/project-context.d.ts.map +1 -1
  63. package/dist/project-context.js +1 -1
  64. package/dist/project-context.js.map +1 -1
  65. package/dist/tool-schemas/audit.d.ts +27 -0
  66. package/dist/tool-schemas/audit.d.ts.map +1 -0
  67. package/dist/tool-schemas/audit.js +24 -0
  68. package/dist/tool-schemas/audit.js.map +1 -0
  69. package/dist/tool-schemas/debug.d.ts +17 -0
  70. package/dist/tool-schemas/debug.d.ts.map +1 -0
  71. package/dist/tool-schemas/debug.js +21 -0
  72. package/dist/tool-schemas/debug.js.map +1 -0
  73. package/dist/tool-schemas/delegate.d.ts +19 -0
  74. package/dist/tool-schemas/delegate.d.ts.map +1 -0
  75. package/dist/tool-schemas/delegate.js +23 -0
  76. package/dist/tool-schemas/delegate.js.map +1 -0
  77. package/dist/tool-schemas/execute-plan.d.ts +16 -0
  78. package/dist/tool-schemas/execute-plan.d.ts.map +1 -0
  79. package/dist/tool-schemas/execute-plan.js +23 -0
  80. package/dist/tool-schemas/execute-plan.js.map +1 -0
  81. package/dist/tool-schemas/index.d.ts +8 -0
  82. package/dist/tool-schemas/index.d.ts.map +1 -0
  83. package/dist/tool-schemas/index.js +9 -0
  84. package/dist/tool-schemas/index.js.map +1 -0
  85. package/dist/tool-schemas/retry.d.ts +14 -0
  86. package/dist/tool-schemas/retry.d.ts.map +1 -0
  87. package/dist/tool-schemas/retry.js +17 -0
  88. package/dist/tool-schemas/retry.js.map +1 -0
  89. package/dist/tool-schemas/review.d.ts +21 -0
  90. package/dist/tool-schemas/review.d.ts.map +1 -0
  91. package/dist/tool-schemas/review.js +21 -0
  92. package/dist/tool-schemas/review.js.map +1 -0
  93. package/dist/tool-schemas/verify.d.ts +16 -0
  94. package/dist/tool-schemas/verify.d.ts.map +1 -0
  95. package/dist/tool-schemas/verify.js +21 -0
  96. package/dist/tool-schemas/verify.js.map +1 -0
  97. package/dist/types.d.ts +15 -12
  98. package/dist/types.d.ts.map +1 -1
  99. package/dist/types.js.map +1 -1
  100. package/package.json +77 -1
@@ -0,0 +1,7 @@
1
+ import type { ExecutionContext, ExecutorOutput } from './types.js';
2
+ import type { Input } from '../tool-schemas/review.js';
3
+ export interface ReviewOutput extends ExecutorOutput {
4
+ contextBlockId?: string;
5
+ }
6
+ export declare function executeReview(ctx: ExecutionContext, input: Input): Promise<ReviewOutput>;
7
+ //# sourceMappingURL=review.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/executors/review.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAuFvD,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,YAAY,CAAC,CAkEvB"}
@@ -0,0 +1,128 @@
1
+ // packages/core/src/executors/review.ts
2
+ import { randomUUID } from 'node:crypto';
3
+ import { runTasks } from '../run-tasks.js';
4
+ import { computeTimings, computeAggregateCost } from './shared-compute.js';
5
+ // --- Ported from packages/mcp/src/tools/review-code.ts ---
6
+ const REVIEW_DONE_CONDITIONS = {
7
+ security: 'Identify security vulnerabilities with severity, location, and remediation.',
8
+ performance: 'Identify performance issues with impact level, location, and fix recommendation.',
9
+ correctness: 'Identify logic errors, edge cases, and contract violations with severity and location.',
10
+ style: 'Identify style issues, naming inconsistencies, and dead code with location and fix.',
11
+ };
12
+ const DELTA_REVIEW_SUFFIX = ' Perform a full review (do not reduce thoroughness). Verify each prior finding as addressed or unaddressed. Omit addressed prior findings. Include unaddressed prior findings and new findings. End with a summary of which prior findings were resolved.';
13
+ function resolveReviewDoneCondition(focus, hasContextBlocks) {
14
+ let base;
15
+ if (!focus || focus.length === 0) {
16
+ base = 'Review code for correctness, security, performance, and style. Each finding has category, severity, location, and recommendation.';
17
+ }
18
+ else {
19
+ base = focus.map(f => REVIEW_DONE_CONDITIONS[f] ?? '').filter(Boolean).join(' ');
20
+ }
21
+ return hasContextBlocks ? base + DELTA_REVIEW_SUFFIX : base;
22
+ }
23
+ function buildFilePathsPrompt(filePaths) {
24
+ if (!filePaths || filePaths.length === 0)
25
+ return '';
26
+ return `Read and analyze these files:\n${filePaths.map(p => `- ${p}`).join('\n')}`;
27
+ }
28
+ function buildPerFilePrompt(filePath, promptTemplate) {
29
+ return `${promptTemplate}\n\nRead and analyze this file:\n- ${filePath}`;
30
+ }
31
+ function buildReviewPrompt(code, filePaths, focus, hasContextBlocks) {
32
+ const parts = ['Review this code:'];
33
+ if (code)
34
+ parts.push(`\`\`\`\n${code}\n\`\`\``);
35
+ const fileSection = buildFilePathsPrompt(filePaths);
36
+ if (fileSection)
37
+ parts.push(fileSection);
38
+ if (focus && focus.length > 0)
39
+ parts.push(`Focus areas: ${focus.join(', ')}.`);
40
+ if (hasContextBlocks) {
41
+ parts.push('Context is provided above (e.g. a diff or prior review). Perform a full review as normal — do not skip areas or reduce thoroughness.', 'If the context contains prior review findings:', '- **Omit** findings that have been addressed — do not re-report them.', '- **Include** findings that are still present (mark as "unfixed from prior review").', '- **Include** any new findings.', '- End with a **Fixed** summary listing which prior findings were resolved.');
42
+ }
43
+ else {
44
+ parts.push('Provide a structured review with findings and recommendations.');
45
+ }
46
+ return parts.join('\n\n');
47
+ }
48
+ function hasContent(value) {
49
+ return value !== undefined && value.trim().length > 0;
50
+ }
51
+ function resolveDispatchMode(inlineContent, filePaths) {
52
+ if (hasContent(inlineContent))
53
+ return 'single';
54
+ const validPaths = (filePaths ?? []).filter(p => p.trim().length > 0);
55
+ if (validPaths.length >= 2)
56
+ return 'fan_out';
57
+ return 'single';
58
+ }
59
+ function autoRegisterContextBlock(results, store) {
60
+ if (!store)
61
+ return undefined;
62
+ const usable = results.filter(r => !r.outputIsDiagnostic && r.output.trim().length > 0);
63
+ if (usable.length === 0)
64
+ return undefined;
65
+ const combined = usable.map(r => r.output).join('\n\n---\n\n');
66
+ const { id } = store.register(combined);
67
+ return id;
68
+ }
69
+ export async function executeReview(ctx, input) {
70
+ const { config, contextBlockStore } = ctx;
71
+ const hasContextBlocks = Array.isArray(input.contextBlockIds) && input.contextBlockIds.length > 0;
72
+ const parentModel = ctx.parentModel ?? config.defaults?.parentModel ?? undefined;
73
+ const baseTaskSpec = {
74
+ agentType: 'complex',
75
+ reviewPolicy: 'full',
76
+ briefQualityPolicy: 'off',
77
+ done: resolveReviewDoneCondition(input.focus, hasContextBlocks),
78
+ tools: config.defaults?.tools ?? 'full',
79
+ timeoutMs: config.defaults?.timeoutMs ?? 1_800_000,
80
+ maxCostUSD: config.defaults?.maxCostUSD ?? 10,
81
+ sandboxPolicy: config.defaults?.sandboxPolicy ?? 'cwd-only',
82
+ cwd: ctx.projectContext.cwd,
83
+ contextBlockIds: input.contextBlockIds,
84
+ parentModel,
85
+ };
86
+ const runtime = contextBlockStore ? { contextBlockStore } : undefined;
87
+ const mode = resolveDispatchMode(input.code, input.filePaths);
88
+ if (mode === 'fan_out') {
89
+ const validPaths = input.filePaths.filter(p => p.trim().length > 0);
90
+ const promptTemplate = buildReviewPrompt(undefined, undefined, input.focus, hasContextBlocks);
91
+ const tasks = validPaths.map(fp => ({
92
+ ...baseTaskSpec,
93
+ prompt: buildPerFilePrompt(fp, promptTemplate),
94
+ }));
95
+ const startMs = Date.now();
96
+ const results = await runTasks(tasks, config, { runtime });
97
+ const wallClockMs = Date.now() - startMs;
98
+ const ctxId = autoRegisterContextBlock(results, contextBlockStore);
99
+ const batchTimings = computeTimings(wallClockMs, results);
100
+ const costSummary = computeAggregateCost(results);
101
+ return {
102
+ results,
103
+ headline: '',
104
+ batchTimings,
105
+ costSummary,
106
+ batchId: randomUUID(),
107
+ wallClockMs,
108
+ parentModel,
109
+ ...(ctxId !== undefined && { contextBlockId: ctxId }),
110
+ };
111
+ }
112
+ const prompt = buildReviewPrompt(input.code, input.filePaths, input.focus, hasContextBlocks);
113
+ const results = await runTasks([{ ...baseTaskSpec, prompt }], config, { runtime });
114
+ const ctxId = autoRegisterContextBlock(results, contextBlockStore);
115
+ const batchTimings = computeTimings(0, results);
116
+ const costSummary = computeAggregateCost(results);
117
+ return {
118
+ results,
119
+ headline: '',
120
+ batchTimings,
121
+ costSummary,
122
+ batchId: randomUUID(),
123
+ wallClockMs: 0,
124
+ parentModel,
125
+ ...(ctxId !== undefined && { contextBlockId: ctxId }),
126
+ };
127
+ }
128
+ //# sourceMappingURL=review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/executors/review.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { RunResult, BatchTimings, BatchAggregateCost } from '../types.js';
2
+ export declare function computeTimings(wallClockMs: number, results: RunResult[]): BatchTimings;
3
+ export declare function computeAggregateCost(results: RunResult[]): BatchAggregateCost;
4
+ //# sourceMappingURL=shared-compute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-compute.d.ts","sourceRoot":"","sources":["../../src/executors/shared-compute.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE/E,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,YAAY,CAItF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,kBAAkB,CAY7E"}
@@ -0,0 +1,19 @@
1
+ export function computeTimings(wallClockMs, results) {
2
+ const sumOfTaskMs = results.reduce((sum, r) => sum + (r.durationMs ?? 0), 0);
3
+ const estimatedParallelSavingsMs = Math.max(0, sumOfTaskMs - wallClockMs);
4
+ return { wallClockMs, sumOfTaskMs, estimatedParallelSavingsMs };
5
+ }
6
+ export function computeAggregateCost(results) {
7
+ let totalActualCostUSD = 0;
8
+ let totalSavedCostUSD = 0;
9
+ for (const r of results) {
10
+ if (r.usage.costUSD !== null && r.usage.costUSD !== undefined) {
11
+ totalActualCostUSD += r.usage.costUSD;
12
+ }
13
+ if (r.usage.savedCostUSD !== null && r.usage.savedCostUSD !== undefined) {
14
+ totalSavedCostUSD += r.usage.savedCostUSD;
15
+ }
16
+ }
17
+ return { totalActualCostUSD, totalSavedCostUSD };
18
+ }
19
+ //# sourceMappingURL=shared-compute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-compute.js","sourceRoot":"","sources":["../../src/executors/shared-compute.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,OAAoB;IACtE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC;IAC1E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAoB;IACvD,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC9D,kBAAkB,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACxE,iBAAiB,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;AACnD,CAAC"}
@@ -0,0 +1,65 @@
1
+ import type { ProjectContext } from '../project-context.js';
2
+ import type { Provider, RunResult, BatchTimings, BatchAggregateCost, MultiModelConfig } from '../types.js';
3
+ import type { DiagnosticLogger } from '../diagnostics/disconnect-log.js';
4
+ import type { ContextBlockStore } from '../context/context-block-store.js';
5
+ export interface ClarificationProposal {
6
+ kind: string;
7
+ interpretation: string;
8
+ details?: Record<string, unknown>;
9
+ }
10
+ export type ClarificationResponse = {
11
+ interpretation: string;
12
+ };
13
+ export interface ProgressEvent {
14
+ kind: string;
15
+ message: string;
16
+ timestamp: number;
17
+ }
18
+ export interface ExecutionContext {
19
+ projectContext: ProjectContext;
20
+ config: MultiModelConfig;
21
+ /**
22
+ * Diagnostic logger for the request scope.
23
+ *
24
+ * NOTE: interface-populated but not currently consumed by any executor. Diagnostic events
25
+ * today emit from the HTTP pipeline and `run-tasks.ts` runner layer. Retained so future
26
+ * executor-internal events (e.g. mid-flight aborts, partial-progress signals) can flow
27
+ * through the same scoped logger.
28
+ */
29
+ logger: DiagnosticLogger;
30
+ contextBlockStore: ContextBlockStore;
31
+ /**
32
+ * Resolves a named agent profile (e.g. "standard", "complex") to a Provider instance.
33
+ *
34
+ * NOTE: interface-populated but not currently consumed by any executor. Today executors pass
35
+ * `ctx.config` to `runTasks()`, which resolves providers internally via `createProvider`.
36
+ * Declared here because the 3.0.0 plan mandates this channel; retained so future per-request
37
+ * provider overrides (tenant auth, per-request model swap) can flow through the context.
38
+ */
39
+ providerFactory: (profile: string) => Provider;
40
+ /** Optional progress callback for streaming progress events to callers. */
41
+ onProgress?: (event: ProgressEvent) => void;
42
+ /** Awaits a clarification response from the caller. Not supported in MCP context (stub rejects). */
43
+ awaitClarification: (proposal: ClarificationProposal) => Promise<ClarificationResponse>;
44
+ /** The parent model name, resolved from env at context-build time. */
45
+ parentModel?: string;
46
+ }
47
+ /**
48
+ * Uniform output envelope returned by every executor.
49
+ * Required shape for GET /batch/:id?taskIndex=N slicing (see spec §6.5).
50
+ *
51
+ * All four top-level fields are required; additional passthrough fields
52
+ * (batchId, contextBlockId, clarificationId, etc.) are preserved.
53
+ */
54
+ export interface ExecutorOutput {
55
+ results: RunResult[];
56
+ headline: string;
57
+ batchTimings: BatchTimings;
58
+ costSummary: BatchAggregateCost;
59
+ batchId: string;
60
+ contextBlockId?: string;
61
+ clarificationId?: string;
62
+ wallClockMs?: number;
63
+ parentModel?: string;
64
+ }
65
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/executors/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC3G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAI3E,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB;;;;;;;OAOG;IACH,MAAM,EAAE,gBAAgB,CAAC;IACzB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC;;;;;;;OAOG;IACH,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,QAAQ,CAAC;IAC/C,2EAA2E;IAC3E,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,oGAAoG;IACpG,kBAAkB,EAAE,CAAC,QAAQ,EAAE,qBAAqB,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACxF,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,kBAAkB,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/executors/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { ExecutionContext, ExecutorOutput } from './types.js';
2
+ import type { Input } from '../tool-schemas/verify.js';
3
+ export interface VerifyOutput extends ExecutorOutput {
4
+ contextBlockId?: string;
5
+ }
6
+ export declare function executeVerify(ctx: ExecutionContext, input: Input): Promise<VerifyOutput>;
7
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/executors/verify.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAyDvD,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,YAAY,CAAC,CAiEvB"}
@@ -0,0 +1,105 @@
1
+ // packages/core/src/executors/verify.ts
2
+ import { randomUUID } from 'node:crypto';
3
+ import { runTasks } from '../run-tasks.js';
4
+ import { computeTimings, computeAggregateCost } from './shared-compute.js';
5
+ // --- Ported from packages/mcp/src/tools/verify-work.ts ---
6
+ function buildFilePathsPrompt(filePaths) {
7
+ if (!filePaths || filePaths.length === 0)
8
+ return '';
9
+ return `Read and analyze these files:\n${filePaths.map(p => `- ${p}`).join('\n')}`;
10
+ }
11
+ function buildPerFilePrompt(filePath, promptTemplate) {
12
+ return `${promptTemplate}\n\nRead and analyze this file:\n- ${filePath}`;
13
+ }
14
+ function buildVerifyPrompt(work, filePaths, checklist) {
15
+ const parts = ['Verify this work:'];
16
+ if (work)
17
+ parts.push(work);
18
+ const fileSection = buildFilePathsPrompt(filePaths);
19
+ if (fileSection)
20
+ parts.push(fileSection);
21
+ const checklistText = checklist.map((item, i) => `${i + 1}. ${item}`).join('\n');
22
+ parts.push(`Checklist:\n${checklistText}`);
23
+ parts.push('For each checklist item, indicate pass/fail and provide evidence.');
24
+ return parts.join('\n\n');
25
+ }
26
+ function hasContent(value) {
27
+ return value !== undefined && value.trim().length > 0;
28
+ }
29
+ function resolveDispatchMode(inlineContent, filePaths) {
30
+ if (hasContent(inlineContent))
31
+ return 'single';
32
+ const validPaths = (filePaths ?? []).filter(p => p.trim().length > 0);
33
+ if (validPaths.length >= 2)
34
+ return 'fan_out';
35
+ return 'single';
36
+ }
37
+ function autoRegisterContextBlock(results, store) {
38
+ if (!store)
39
+ return undefined;
40
+ const usable = results.filter(r => !r.outputIsDiagnostic && r.output.trim().length > 0);
41
+ if (usable.length === 0)
42
+ return undefined;
43
+ const combined = usable.map(r => r.output).join('\n\n---\n\n');
44
+ const { id } = store.register(combined);
45
+ return id;
46
+ }
47
+ export async function executeVerify(ctx, input) {
48
+ const { config, contextBlockStore } = ctx;
49
+ const parentModel = ctx.parentModel ?? config.defaults?.parentModel ?? undefined;
50
+ const baseTaskSpec = {
51
+ agentType: 'standard',
52
+ reviewPolicy: 'spec_only',
53
+ briefQualityPolicy: 'off',
54
+ done: `Every checklist item (${input.checklist.length} total) has a pass/fail verdict with supporting evidence from the code.`,
55
+ tools: config.defaults?.tools ?? 'full',
56
+ timeoutMs: config.defaults?.timeoutMs ?? 1_800_000,
57
+ maxCostUSD: config.defaults?.maxCostUSD ?? 10,
58
+ sandboxPolicy: config.defaults?.sandboxPolicy ?? 'cwd-only',
59
+ cwd: ctx.projectContext.cwd,
60
+ contextBlockIds: input.contextBlockIds,
61
+ parentModel,
62
+ };
63
+ const runtime = contextBlockStore ? { contextBlockStore } : undefined;
64
+ const mode = resolveDispatchMode(input.work, input.filePaths);
65
+ if (mode === 'fan_out') {
66
+ const validPaths = input.filePaths.filter(p => p.trim().length > 0);
67
+ const promptTemplate = buildVerifyPrompt(undefined, undefined, input.checklist);
68
+ const tasks = validPaths.map(fp => ({
69
+ ...baseTaskSpec,
70
+ prompt: buildPerFilePrompt(fp, promptTemplate),
71
+ }));
72
+ const startMs = Date.now();
73
+ const results = await runTasks(tasks, config, { runtime });
74
+ const wallClockMs = Date.now() - startMs;
75
+ const ctxId = autoRegisterContextBlock(results, contextBlockStore);
76
+ const batchTimings = computeTimings(wallClockMs, results);
77
+ const costSummary = computeAggregateCost(results);
78
+ return {
79
+ results,
80
+ headline: '',
81
+ batchTimings,
82
+ costSummary,
83
+ batchId: randomUUID(),
84
+ wallClockMs,
85
+ parentModel,
86
+ ...(ctxId !== undefined && { contextBlockId: ctxId }),
87
+ };
88
+ }
89
+ const prompt = buildVerifyPrompt(input.work, input.filePaths, input.checklist);
90
+ const results = await runTasks([{ ...baseTaskSpec, prompt }], config, { runtime });
91
+ const ctxId = autoRegisterContextBlock(results, contextBlockStore);
92
+ const batchTimings = computeTimings(0, results);
93
+ const costSummary = computeAggregateCost(results);
94
+ return {
95
+ results,
96
+ headline: '',
97
+ batchTimings,
98
+ costSummary,
99
+ batchId: randomUUID(),
100
+ wallClockMs: 0,
101
+ parentModel,
102
+ ...(ctxId !== undefined && { contextBlockId: ctxId }),
103
+ };
104
+ }
105
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/executors/verify.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- export { loadConfigFromFile } from './config/load.js';
2
- export { parseConfig, multiModelConfigSchema } from './config/schema.js';
1
+ export { loadConfigFromFile, loadAuthToken } from './config/load.js';
2
+ export { parseConfig, multiModelConfigSchema, serverConfigSchema } from './config/schema.js';
3
+ export type { ServerConfig } from './config/schema.js';
3
4
  export type { ToolMode, SandboxPolicy, AgentType, AgentCapability, AgentConfig, Effort, CostTier, RunStatus, TaskSpec, ProviderConfig, CodexProviderConfig, ClaudeProviderConfig, OpenAICompatibleProviderConfig, MultiModelConfig, TokenUsage, RunResult, BatchTimings, BatchProgress, BatchAggregateCost, Provider, RunOptions, RunTasksRuntime, ProgressEvent, InternalRunnerEvent, EligibilityFailureCheck, EligibilityFailure, ProviderEligibility, BriefQualityWarning, BriefQualityPolicy, ReadinessResult, } from './types.js';
4
5
  export { ParsedStructuredReport } from './reporting/structured-report.js';
5
6
  export { InMemoryContextBlockStore, ContextBlockNotFoundError, } from './context/context-block-store.js';
@@ -35,6 +36,7 @@ export { getMaxRoundsPerDraft } from './intake/feature-flag.js';
35
36
  export { validateSource } from './intake/source-schema.js';
36
37
  export type { DraftTask, SourceRoute, AnySource, DelegateSource, ReviewSource, DebugSource, VerifySource, AuditSource, ExecutePlanSource, StoredDraft, ClarificationSet, ConfirmationEntry, ConfirmDraftError, ConfirmResult, ClassificationResult, ClarificationEntry, HardError, IntakeProgress, ReadyDraft, IntakeResult, } from './intake/types.js';
37
38
  export { createDraftId, parseDraftId, generateRequestId } from './intake/draft-id.js';
39
+ export * from './batch-registry.js';
38
40
  export { createDiagnosticLogger } from './diagnostics/disconnect-log.js';
39
41
  export type { DiagnosticLogger, ShutdownCause, CreateDiagnosticLoggerOptions, } from './diagnostics/disconnect-log.js';
40
42
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // Config
2
- export { loadConfigFromFile } from './config/load.js';
3
- export { parseConfig, multiModelConfigSchema } from './config/schema.js';
2
+ export { loadConfigFromFile, loadAuthToken } from './config/load.js';
3
+ export { parseConfig, multiModelConfigSchema, serverConfigSchema } from './config/schema.js';
4
4
  // Context blocks
5
5
  export { InMemoryContextBlockStore, ContextBlockNotFoundError, } from './context/context-block-store.js';
6
6
  export { expandContextBlocks } from './context/expand-context-blocks.js';
@@ -35,6 +35,8 @@ export { processConfirmations } from './intake/confirm.js';
35
35
  export { getMaxRoundsPerDraft } from './intake/feature-flag.js';
36
36
  export { validateSource } from './intake/source-schema.js';
37
37
  export { createDraftId, parseDraftId, generateRequestId } from './intake/draft-id.js';
38
+ // Batch registry
39
+ export * from './batch-registry.js';
38
40
  // Diagnostics
39
41
  export { createDiagnosticLogger } from './diagnostics/disconnect-log.js';
40
42
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAqCzE,iBAAiB;AACjB,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,kCAAkC,CAAC;AAM1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,WAAW;AACX,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,cAAc;AACd,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,kBAAkB;AAClB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,YAAY;AACZ,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,YAAY;AACZ,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,6BAA6B,EAC7B,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAElC,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAErF,kBAAkB;AAClB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAuB3D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEtF,cAAc;AACd,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAsC7F,iBAAiB;AACjB,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,kCAAkC,CAAC;AAM1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,WAAW;AACX,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,cAAc;AACd,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,kBAAkB;AAClB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,YAAY;AACZ,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,YAAY;AACZ,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,6BAA6B,EAC7B,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAElC,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAErF,kBAAkB;AAClB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAuB3D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEtF,iBAAiB;AACjB,cAAc,qBAAqB,CAAC;AAEpC,cAAc;AACd,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -4,12 +4,15 @@ import { BatchCache } from './batch-cache.js';
4
4
  export interface ProjectContext {
5
5
  readonly cwd: string;
6
6
  readonly contextBlocks: InMemoryContextBlockStore;
7
+ /** Per-project terminal-only retention index; authoritative live-batch lookup is via BatchRegistry.countActiveForProject(cwd). */
7
8
  readonly batchCache: BatchCache;
8
9
  readonly clarifications: ClarificationStore;
9
10
  readonly createdAt: number;
10
- lastSeenAt: number;
11
- readonly activeSessions: Set<string>;
11
+ /** Wall-clock ms of last activity on this project context (HTTP request, session attach/detach). */
12
+ lastActivityAt: number;
13
+ /** HTTP requests currently in-flight for this cwd. */
12
14
  activeRequests: number;
15
+ readonly activeSessions: Set<string>;
13
16
  pendingReservations: number;
14
17
  }
15
18
  export declare function createProjectContext(cwd: string): ProjectContext;
@@ -1 +1 @@
1
- {"version":3,"file":"project-context.d.ts","sourceRoot":"","sources":["../src/project-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,aAAa,EAAE,yBAAyB,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAahE"}
1
+ {"version":3,"file":"project-context.d.ts","sourceRoot":"","sources":["../src/project-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,aAAa,EAAE,yBAAyB,CAAC;IAClD,kIAAkI;IAClI,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,oGAAoG;IACpG,cAAc,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,cAAc,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAahE"}
@@ -9,7 +9,7 @@ export function createProjectContext(cwd) {
9
9
  batchCache: new BatchCache(),
10
10
  clarifications: new ClarificationStore(),
11
11
  createdAt: now,
12
- lastSeenAt: now,
12
+ lastActivityAt: now,
13
13
  activeSessions: new Set(),
14
14
  activeRequests: 0,
15
15
  pendingReservations: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"project-context.js","sourceRoot":"","sources":["../src/project-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAc9C,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,OAAO;QACL,GAAG;QACH,aAAa,EAAE,IAAI,yBAAyB,EAAE;QAC9C,UAAU,EAAE,IAAI,UAAU,EAAE;QAC5B,cAAc,EAAE,IAAI,kBAAkB,EAAE;QACxC,SAAS,EAAE,GAAG;QACd,UAAU,EAAE,GAAG;QACf,cAAc,EAAE,IAAI,GAAG,EAAU;QACjC,cAAc,EAAE,CAAC;QACjB,mBAAmB,EAAE,CAAC;KACvB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"project-context.js","sourceRoot":"","sources":["../src/project-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAkB9C,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,OAAO;QACL,GAAG;QACH,aAAa,EAAE,IAAI,yBAAyB,EAAE;QAC9C,UAAU,EAAE,IAAI,UAAU,EAAE;QAC5B,cAAc,EAAE,IAAI,kBAAkB,EAAE;QACxC,SAAS,EAAE,GAAG;QACd,cAAc,EAAE,GAAG;QACnB,cAAc,EAAE,IAAI,GAAG,EAAU;QACjC,cAAc,EAAE,CAAC;QACjB,mBAAmB,EAAE,CAAC;KACvB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { z } from 'zod';
2
+ export declare const inputSchema: z.ZodObject<{
3
+ document: z.ZodOptional<z.ZodString>;
4
+ auditType: z.ZodUnion<readonly [z.ZodEnum<{
5
+ security: "security";
6
+ performance: "performance";
7
+ correctness: "correctness";
8
+ style: "style";
9
+ general: "general";
10
+ }>, z.ZodArray<z.ZodEnum<{
11
+ security: "security";
12
+ performance: "performance";
13
+ correctness: "correctness";
14
+ style: "style";
15
+ }>>]>;
16
+ filePaths: z.ZodOptional<z.ZodArray<z.ZodString>>;
17
+ contextBlockIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
18
+ }, z.core.$strip>;
19
+ export type Input = z.infer<typeof inputSchema>;
20
+ export declare const outputSchema: z.ZodObject<{
21
+ results: z.ZodArray<z.ZodUnknown>;
22
+ headline: z.ZodString;
23
+ batchTimings: z.ZodObject<{}, z.core.$loose>;
24
+ costSummary: z.ZodObject<{}, z.core.$loose>;
25
+ }, z.core.$loose>;
26
+ export type Output = z.infer<typeof outputSchema>;
27
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/tool-schemas/audit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;iBAUtB,CAAC;AAEH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAGhD,eAAO,MAAM,YAAY;;;;;iBAKT,CAAC;AAEjB,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
@@ -0,0 +1,24 @@
1
+ // packages/core/src/tool-schemas/audit.ts
2
+ import { z } from 'zod';
3
+ // Ported verbatim from packages/mcp/src/tools/audit-document.ts (auditDocumentSchema).
4
+ // commonToolFields (filePaths + contextBlockIds) are inlined here to avoid
5
+ // cross-package coupling.
6
+ export const inputSchema = z.object({
7
+ document: z.string().optional().describe('Inline document content to audit'),
8
+ auditType: z.union([
9
+ z.enum(['security', 'performance', 'correctness', 'style', 'general']),
10
+ z.array(z.enum(['security', 'performance', 'correctness', 'style'])).min(1),
11
+ ]).describe('Audit focus.'),
12
+ filePaths: z.array(z.string()).optional()
13
+ .describe('Files the sub-agent should focus on. Multiple files are processed in parallel.'),
14
+ contextBlockIds: z.array(z.string()).optional()
15
+ .describe('IDs from register_context_block to prepend to prompt. Use for delta audits, diff-scoped reviews, or shared specs.'),
16
+ });
17
+ // Uniform output envelope — required for GET /batch/:id?taskIndex=N slicing (see spec §6.5)
18
+ export const outputSchema = z.object({
19
+ results: z.array(z.unknown()), // per-task RunResult, index-aligned with input tasks
20
+ headline: z.string(),
21
+ batchTimings: z.object({}).passthrough(),
22
+ costSummary: z.object({}).passthrough(),
23
+ }).passthrough();
24
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/tool-schemas/audit.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,uFAAuF;AACvF,2EAA2E;AAC3E,0BAA0B;AAC1B,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IAC5E,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC;QACjB,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACtE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KAC5E,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;SACtC,QAAQ,CAAC,gFAAgF,CAAC;IAC7F,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;SAC5C,QAAQ,CAAC,mHAAmH,CAAC;CACjI,CAAC,CAAC;AAIH,4FAA4F;AAC5F,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAY,qDAAqD;IAC9F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;IACxC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;CACxC,CAAC,CAAC,WAAW,EAAE,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { z } from 'zod';
2
+ export declare const inputSchema: z.ZodObject<{
3
+ problem: z.ZodString;
4
+ context: z.ZodOptional<z.ZodString>;
5
+ hypothesis: z.ZodOptional<z.ZodString>;
6
+ filePaths: z.ZodOptional<z.ZodArray<z.ZodString>>;
7
+ contextBlockIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
8
+ }, z.core.$strip>;
9
+ export type Input = z.infer<typeof inputSchema>;
10
+ export declare const outputSchema: z.ZodObject<{
11
+ results: z.ZodArray<z.ZodUnknown>;
12
+ headline: z.ZodString;
13
+ batchTimings: z.ZodObject<{}, z.core.$loose>;
14
+ costSummary: z.ZodObject<{}, z.core.$loose>;
15
+ }, z.core.$loose>;
16
+ export type Output = z.infer<typeof outputSchema>;
17
+ //# sourceMappingURL=debug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/tool-schemas/debug.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,WAAW;;;;;;iBAStB,CAAC;AAEH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAGhD,eAAO,MAAM,YAAY;;;;;iBAKT,CAAC;AAEjB,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ // packages/core/src/tool-schemas/debug.ts
2
+ import { z } from 'zod';
3
+ // Ported verbatim from packages/mcp/src/tools/debug-task.ts (debugTaskSchema).
4
+ // The filePaths field has its description overridden in the original — reproduced here.
5
+ // commonToolFields (filePaths + contextBlockIds) are inlined to avoid cross-package coupling.
6
+ export const inputSchema = z.object({
7
+ problem: z.string().describe('What is broken'),
8
+ context: z.string().optional().describe('Background'),
9
+ hypothesis: z.string().optional().describe('Initial theory'),
10
+ filePaths: z.array(z.string()).optional().describe('Files the sub-agent should focus on. For debug_task, all provided files are investigated together in a single task.'),
11
+ contextBlockIds: z.array(z.string()).optional()
12
+ .describe('IDs from register_context_block to prepend to prompt. Use for delta audits, diff-scoped reviews, or shared specs.'),
13
+ });
14
+ // Uniform output envelope — required for GET /batch/:id?taskIndex=N slicing (see spec §6.5)
15
+ export const outputSchema = z.object({
16
+ results: z.array(z.unknown()), // per-task RunResult, index-aligned with input tasks
17
+ headline: z.string(),
18
+ batchTimings: z.object({}).passthrough(),
19
+ costSummary: z.object({}).passthrough(),
20
+ }).passthrough();
21
+ //# sourceMappingURL=debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/tool-schemas/debug.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+EAA+E;AAC/E,wFAAwF;AACxF,8FAA8F;AAC9F,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;IACrD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAC5D,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAChD,qHAAqH,CACtH;IACD,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;SAC5C,QAAQ,CAAC,mHAAmH,CAAC;CACjI,CAAC,CAAC;AAIH,4FAA4F;AAC5F,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAY,qDAAqD;IAC9F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;IACxC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;CACxC,CAAC,CAAC,WAAW,EAAE,CAAC"}