dsh-super-code 0.0.9

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 (71) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +162 -0
  3. package/client/index.js +920 -0
  4. package/cordis.patch.yml +21 -0
  5. package/lib/core/delegation.d.ts +59 -0
  6. package/lib/core/delegation.d.ts.map +1 -0
  7. package/lib/core/delegation.js +41 -0
  8. package/lib/core/delegation.js.map +1 -0
  9. package/lib/core/evaluation.d.ts +123 -0
  10. package/lib/core/evaluation.d.ts.map +1 -0
  11. package/lib/core/evaluation.js +180 -0
  12. package/lib/core/evaluation.js.map +1 -0
  13. package/lib/core/experiment-recipes.d.ts +5 -0
  14. package/lib/core/experiment-recipes.d.ts.map +1 -0
  15. package/lib/core/experiment-recipes.js +67 -0
  16. package/lib/core/experiment-recipes.js.map +1 -0
  17. package/lib/core/guidance.d.ts +10 -0
  18. package/lib/core/guidance.d.ts.map +1 -0
  19. package/lib/core/guidance.js +16 -0
  20. package/lib/core/guidance.js.map +1 -0
  21. package/lib/core/session-scan.d.ts +8 -0
  22. package/lib/core/session-scan.d.ts.map +1 -0
  23. package/lib/core/session-scan.js +21 -0
  24. package/lib/core/session-scan.js.map +1 -0
  25. package/lib/core/task-memory.d.ts +81 -0
  26. package/lib/core/task-memory.d.ts.map +1 -0
  27. package/lib/core/task-memory.js +158 -0
  28. package/lib/core/task-memory.js.map +1 -0
  29. package/lib/core/teams.d.ts +19 -0
  30. package/lib/core/teams.d.ts.map +1 -0
  31. package/lib/core/teams.js +40 -0
  32. package/lib/core/teams.js.map +1 -0
  33. package/lib/core/tool-evidence.d.ts +57 -0
  34. package/lib/core/tool-evidence.d.ts.map +1 -0
  35. package/lib/core/tool-evidence.js +97 -0
  36. package/lib/core/tool-evidence.js.map +1 -0
  37. package/lib/dsh/index.d.ts +6 -0
  38. package/lib/dsh/index.d.ts.map +1 -0
  39. package/lib/dsh/index.js +11 -0
  40. package/lib/dsh/index.js.map +1 -0
  41. package/lib/dsh/super-code.d.ts +22 -0
  42. package/lib/dsh/super-code.d.ts.map +1 -0
  43. package/lib/dsh/super-code.js +247 -0
  44. package/lib/dsh/super-code.js.map +1 -0
  45. package/lib/evaluate.d.ts +3 -0
  46. package/lib/evaluate.d.ts.map +1 -0
  47. package/lib/evaluate.js +40 -0
  48. package/lib/evaluate.js.map +1 -0
  49. package/lib/experiments.d.ts +77 -0
  50. package/lib/experiments.d.ts.map +1 -0
  51. package/lib/experiments.js +196 -0
  52. package/lib/experiments.js.map +1 -0
  53. package/lib/index.d.ts +13 -0
  54. package/lib/index.d.ts.map +1 -0
  55. package/lib/index.js +14 -0
  56. package/lib/index.js.map +1 -0
  57. package/lib/super-agent-usage.d.ts +44 -0
  58. package/lib/super-agent-usage.d.ts.map +1 -0
  59. package/lib/super-agent-usage.js +203 -0
  60. package/lib/super-agent-usage.js.map +1 -0
  61. package/lib/task-memory-projection.d.ts +43 -0
  62. package/lib/task-memory-projection.d.ts.map +1 -0
  63. package/lib/task-memory-projection.js +48 -0
  64. package/lib/task-memory-projection.js.map +1 -0
  65. package/lib/task-memory-store.d.ts +35 -0
  66. package/lib/task-memory-store.d.ts.map +1 -0
  67. package/lib/task-memory-store.js +69 -0
  68. package/lib/task-memory-store.js.map +1 -0
  69. package/package.json +123 -0
  70. package/presets/super-code/agent.cordis.yml +50 -0
  71. package/presets/super-code/preset.yml +3 -0
@@ -0,0 +1,21 @@
1
+ # Register this package's preset directory in the host roster.
2
+ # dsh-web-app already provides the agent-presets row; this patch replaces its
3
+ # config so the package root is added without creating a second host registry.
4
+ # DSH boots a profile from <profile>/cordis.yml and installs bundle packages in
5
+ # that profile's node_modules (or the parent profiles fallback). Resolving from
6
+ # that stable anchor works for both pnpm links and the packaged fallback; a bare
7
+ # `presets/` path would incorrectly point beside the profile config instead.
8
+ - id: agent-presets
9
+ name: '@deepseek-ai/dsh-agent-presets'
10
+ config:
11
+ default: super-code
12
+ roots:
13
+ - path: !!js "process.getBuiltinModule('node:url').fileURLToPath(new URL('node_modules/dsh-super-code/presets/', baseUrl))"
14
+ trust: system
15
+ includeShippedRoot: true
16
+ includeUserRoot: true
17
+
18
+ # Register host projections and discover the browser contribution.
19
+ - insert:
20
+ - id: super-code
21
+ name: dsh-super-code
@@ -0,0 +1,59 @@
1
+ import type { TaskMemory } from './task-memory.js';
2
+ export interface MemberAssignment {
3
+ owner: string;
4
+ attemptId: string;
5
+ objective: string;
6
+ ownedPaths: string[];
7
+ acceptance: string[];
8
+ maxTokens: number;
9
+ }
10
+ export interface MemberBrief extends MemberAssignment {
11
+ binding: string;
12
+ sessionId: string;
13
+ taskId: string;
14
+ createdAtSeq: number;
15
+ requirementsRevision: number;
16
+ delegationRevision: number;
17
+ workspace: string;
18
+ sourceVersion: string;
19
+ constraints: string[];
20
+ taskGoal: string;
21
+ taskAcceptance: string[];
22
+ }
23
+ export interface MemberResult {
24
+ binding: string;
25
+ owner: string;
26
+ attemptId: string;
27
+ outcome: 'completed' | 'failed' | 'cancelled' | 'stop_unknown';
28
+ summary: string;
29
+ artifacts: string[];
30
+ checks: string[];
31
+ unknowns: string[];
32
+ /** Optional self-report, never authenticated usage or budget enforcement. */
33
+ cost?: {
34
+ inputTokens: number;
35
+ outputTokens: number;
36
+ cachedTokens: number;
37
+ toolCalls: number;
38
+ complete: boolean;
39
+ };
40
+ }
41
+ export type MemberAccounting = {
42
+ kind: 'unavailable';
43
+ budget: 'unknown';
44
+ } | {
45
+ kind: 'model-reported';
46
+ budget: 'unknown';
47
+ reportedBudget: 'within' | 'exceeded' | 'incomplete' | 'invalid';
48
+ };
49
+ export interface MemberReview {
50
+ reviewable: boolean;
51
+ reasons: string[];
52
+ accounting: MemberAccounting;
53
+ result: MemberResult;
54
+ }
55
+ /** Compact, version-bound inputs for the existing host subagent provider. */
56
+ export declare function createMemberBrief(task: TaskMemory, sessionId: string, input: MemberAssignment): MemberBrief;
57
+ /** Version matching is necessary for review, not proof that the work is correct. */
58
+ export declare function validateMemberResult(task: TaskMemory, sessionId: string, assignment: MemberAssignment, input: MemberResult): MemberReview;
59
+ //# sourceMappingURL=delegation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation.d.ts","sourceRoot":"","sources":["../../src/core/delegation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CACnH;AACD,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACnD,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;IAClI,SAAS,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAC5G;AACD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;IACjD,OAAO,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,cAAc,CAAA;IAC9D,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAC1E,6EAA6E;IAC7E,IAAI,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAA;CACjH;AACD,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC;IAAC,cAAc,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,CAAA;CAAE,CAAA;AACnH,MAAM,WAAW,YAAY;IAAG,UAAU,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE;AAM5H,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,WAAW,CAQ3G;AAED,oFAAoF;AACpF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAiBzI"}
@@ -0,0 +1,41 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { z } from 'zod';
3
+ const text = z.string().trim().min(1).max(4000);
4
+ const count = z.number().int().nonnegative().safe();
5
+ const assignmentSchema = z.object({ owner: text, attemptId: text, objective: text, ownedPaths: z.array(text).max(64), acceptance: z.array(text).min(1).max(32), maxTokens: z.number().int().positive() }).strict();
6
+ const resultSchema = z.object({ binding: text, owner: text, attemptId: text, outcome: z.enum(['completed', 'failed', 'cancelled', 'stop_unknown']), summary: text, artifacts: z.array(text).max(64), checks: z.array(text).max(64), unknowns: z.array(text).max(32), cost: z.object({ inputTokens: count, outputTokens: count, cachedTokens: count, toolCalls: count, complete: z.boolean() }).strict().optional() }).strict();
7
+ /** Compact, version-bound inputs for the existing host subagent provider. */
8
+ export function createMemberBrief(task, sessionId, input) {
9
+ const assignment = assignmentSchema.parse(input);
10
+ if (sessionId.trim() === '')
11
+ throw new Error('sessionId is required');
12
+ if (task.status !== 'active')
13
+ throw new Error('Only active tasks may delegate work');
14
+ const fields = { ...assignment, sessionId, taskId: task.id, createdAtSeq: task.createdAtSeq, requirementsRevision: task.requirementsRevision,
15
+ delegationRevision: task.delegationRevision, taskGoal: task.goal, taskAcceptance: [...task.acceptance],
16
+ workspace: task.workspace, sourceVersion: task.sourceVersion, constraints: task.requirements.map(item => item.text) };
17
+ return { ...fields, binding: createHash('sha256').update(JSON.stringify(fields)).digest('hex') };
18
+ }
19
+ /** Version matching is necessary for review, not proof that the work is correct. */
20
+ export function validateMemberResult(task, sessionId, assignment, input) {
21
+ assignment = assignmentSchema.parse(assignment);
22
+ const result = resultSchema.parse(input);
23
+ const reasons = [];
24
+ if (task.status !== 'active')
25
+ reasons.push('parent task is not active');
26
+ else {
27
+ const current = createMemberBrief(task, sessionId, assignment);
28
+ if (result.binding !== current.binding)
29
+ reasons.push('stale task, requirements, workspace, source or assignment');
30
+ }
31
+ if (result.owner !== assignment.owner || result.attemptId !== assignment.attemptId)
32
+ reasons.push('owner or attempt differs');
33
+ if (result.outcome !== 'completed')
34
+ reasons.push(result.outcome);
35
+ const cost = result.cost;
36
+ const accounting = cost === undefined ? { kind: 'unavailable', budget: 'unknown' }
37
+ : { kind: 'model-reported', budget: 'unknown', reportedBudget: cost.cachedTokens > cost.inputTokens || !Number.isSafeInteger(cost.inputTokens + cost.outputTokens) ? 'invalid'
38
+ : !cost.complete ? 'incomplete' : cost.inputTokens + cost.outputTokens > assignment.maxTokens ? 'exceeded' : 'within' };
39
+ return { reviewable: reasons.length === 0, reasons, accounting, result };
40
+ }
41
+ //# sourceMappingURL=delegation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation.js","sourceRoot":"","sources":["../../src/core/delegation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ import { z } from 'zod';
2
+ export interface EvaluationUsage {
3
+ uncachedInput: number;
4
+ cacheRead: number;
5
+ cacheWrite: number;
6
+ output: number;
7
+ }
8
+ export interface EvaluationIdentity {
9
+ preset: string;
10
+ version: string;
11
+ artifact: string;
12
+ }
13
+ export interface EvaluationConditions {
14
+ task: string;
15
+ evaluator: string;
16
+ model: string;
17
+ reasoning: string;
18
+ tools: string;
19
+ resources: string;
20
+ environment: string;
21
+ harness: string;
22
+ }
23
+ export interface EvaluationRate extends EvaluationUsage {
24
+ id: string;
25
+ provider: string;
26
+ model: string;
27
+ currency: string;
28
+ source: string;
29
+ effectiveAt: string;
30
+ perRequest: number;
31
+ }
32
+ export interface EvaluationRequest {
33
+ id: string;
34
+ sessionId: string;
35
+ attemptId: string;
36
+ kind: 'root' | 'member' | 'retry' | 'compaction';
37
+ provider: string;
38
+ model: string;
39
+ rateId?: string;
40
+ usage?: EvaluationUsage;
41
+ toolCharge?: number;
42
+ }
43
+ export interface SuperCodeManifest {
44
+ protocol: 'super-code/v3';
45
+ baseline: EvaluationIdentity;
46
+ candidate: EvaluationIdentity;
47
+ cases: {
48
+ taskId: string;
49
+ category: string;
50
+ conditions: EvaluationConditions;
51
+ }[];
52
+ gates: {
53
+ minAccuracyUplift: number;
54
+ maxLostSuccesses: number;
55
+ minCostReduction?: number;
56
+ minLatencyReduction?: number;
57
+ };
58
+ rates: EvaluationRate[];
59
+ }
60
+ export interface SuperCodeMeasurement {
61
+ protocol: 'super-code/v3';
62
+ side: 'baseline' | 'candidate';
63
+ identity: EvaluationIdentity;
64
+ taskId: string;
65
+ category: string;
66
+ conditions: EvaluationConditions;
67
+ mode: 'real' | 'mock' | 'replay';
68
+ outcome: 'passed' | 'failed' | 'agent_failed' | 'audit_failed' | 'infrastructure_error' | 'evaluation_error' | 'unknown';
69
+ latencyMs: number;
70
+ expectedRequests: string[];
71
+ requestManifestComplete: boolean;
72
+ requests: EvaluationRequest[];
73
+ }
74
+ export declare const evaluationManifestSchema: z.ZodType<SuperCodeManifest>;
75
+ export declare const evaluationMeasurementSchema: z.ZodType<SuperCodeMeasurement>;
76
+ export interface EvaluationSide {
77
+ recorded: number;
78
+ scored: number;
79
+ passed: number;
80
+ attempts: number;
81
+ requests: number;
82
+ expectedRequests: number;
83
+ latencyMs: number;
84
+ tokens: EvaluationUsage;
85
+ outcomes: Record<string, number>;
86
+ accounting: {
87
+ status: 'measured';
88
+ currency: string;
89
+ amount: number;
90
+ } | {
91
+ status: 'unmeasured';
92
+ reasons: string[];
93
+ };
94
+ }
95
+ export interface EvaluationPairs {
96
+ paired: number;
97
+ gained: string[];
98
+ lost: string[];
99
+ unchanged: string[];
100
+ unscored: string[];
101
+ }
102
+ export interface SuperCodeBatchResult {
103
+ status: 'incomplete' | 'unmatched' | 'unmeasured' | 'measured';
104
+ accepted: boolean;
105
+ reasons: string[];
106
+ planned: number;
107
+ baseline: EvaluationSide;
108
+ candidate: EvaluationSide;
109
+ pairs: EvaluationPairs;
110
+ categories: Record<string, {
111
+ paired: number;
112
+ gained: number;
113
+ lost: number;
114
+ }>;
115
+ checks: {
116
+ quality: boolean;
117
+ cost: boolean;
118
+ latency: boolean;
119
+ };
120
+ }
121
+ /** Fixed sides, fixed gates, full coverage. Partial reports never imply a release pass. */
122
+ export declare function evaluateSuperCodeBatch(input: SuperCodeManifest, measurements: readonly SuperCodeMeasurement[]): SuperCodeBatchResult;
123
+ //# sourceMappingURL=evaluation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluation.d.ts","sourceRoot":"","sources":["../../src/core/evaluation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,180 @@
1
+ import { z } from 'zod';
2
+ const label = z.string().trim().min(1);
3
+ const count = z.number().int().nonnegative().safe();
4
+ const amount = z.number().finite().nonnegative();
5
+ const ratio = z.number().min(0).max(1);
6
+ const sides = ['baseline', 'candidate'];
7
+ const buckets = ['uncachedInput', 'cacheRead', 'cacheWrite', 'output'];
8
+ const usageSchema = z.object({ uncachedInput: count, cacheRead: count, cacheWrite: count, output: count }).strict();
9
+ const identitySchema = z.object({ preset: label, version: label, artifact: label }).strict();
10
+ const conditionsSchema = z.object({ task: label, evaluator: label, model: label, reasoning: label, tools: label, resources: label, environment: label, harness: label }).strict();
11
+ const rateSchema = z.object({ id: label, provider: label, model: label, currency: label, source: label, effectiveAt: label,
12
+ uncachedInput: amount, cacheRead: amount, cacheWrite: amount, output: amount, perRequest: amount }).strict();
13
+ export const evaluationManifestSchema = z.object({
14
+ protocol: z.literal('super-code/v3'),
15
+ baseline: identitySchema, candidate: identitySchema,
16
+ cases: z.array(z.object({ taskId: label, category: label, conditions: conditionsSchema }).strict()).min(1),
17
+ // Explicit before the run: equivalence refactors need not claim a quality uplift.
18
+ gates: z.object({ minAccuracyUplift: ratio, maxLostSuccesses: count, minCostReduction: ratio.optional(), minLatencyReduction: ratio.optional() }).strict(),
19
+ rates: z.array(rateSchema),
20
+ }).strict();
21
+ const requestSchema = z.object({ id: label, sessionId: label, attemptId: label,
22
+ kind: z.enum(['root', 'member', 'retry', 'compaction']), provider: label, model: label,
23
+ rateId: label.optional(), usage: usageSchema.optional(), toolCharge: amount.optional(),
24
+ }).strict();
25
+ const outcomeSchema = z.enum(['passed', 'failed', 'agent_failed', 'audit_failed', 'infrastructure_error', 'evaluation_error', 'unknown']);
26
+ export const evaluationMeasurementSchema = z.object({
27
+ protocol: z.literal('super-code/v3'), side: z.enum(sides), identity: identitySchema,
28
+ taskId: label, category: label, conditions: conditionsSchema, mode: z.enum(['real', 'mock', 'replay']), outcome: outcomeSchema,
29
+ latencyMs: amount, expectedRequests: z.array(label), requestManifestComplete: z.boolean(), requests: z.array(requestSchema),
30
+ }).strict();
31
+ function unique(values, subject) {
32
+ const result = new Set(values);
33
+ if (result.size !== values.length)
34
+ throw new Error(`Duplicate ${subject}`);
35
+ return result;
36
+ }
37
+ /** The adapter supplies a complete request manifest, including failed and maintenance calls. */
38
+ function summarize(rows, rates) {
39
+ const tokens = { uncachedInput: 0, cacheRead: 0, cacheWrite: 0, output: 0 };
40
+ const attempts = new Set(), currencies = new Set(), reasons = [];
41
+ const outcomes = {};
42
+ const rateById = new Map(rates.map(rate => [rate.id, rate]));
43
+ let total = 0, requests = 0, expectedRequests = 0, latencyMs = 0, scored = 0, passed = 0;
44
+ for (const row of rows) {
45
+ outcomes[row.outcome] = (outcomes[row.outcome] ?? 0) + 1;
46
+ if (isScored(row)) {
47
+ scored++;
48
+ if (row.outcome === 'passed')
49
+ passed++;
50
+ }
51
+ latencyMs += row.latencyMs;
52
+ const expected = unique(row.expectedRequests, 'expected request id');
53
+ const observed = unique(row.requests.map(request => request.id), 'request id');
54
+ expectedRequests += expected.size;
55
+ requests += observed.size;
56
+ if (!row.requestManifestComplete)
57
+ reasons.push(`${row.taskId}: incomplete request manifest`);
58
+ if (row.outcome === 'passed' && expected.size === 0)
59
+ reasons.push(`${row.taskId}: passed without model request evidence`);
60
+ for (const id of expected)
61
+ if (!observed.has(id))
62
+ reasons.push(`${row.taskId}: missing request ${id}`);
63
+ for (const request of row.requests) {
64
+ if (!expected.has(request.id))
65
+ throw new Error(`Unexpected request ${request.id}`);
66
+ attempts.add(JSON.stringify([row.taskId, request.sessionId, request.attemptId]));
67
+ if (request.usage)
68
+ for (const key of buckets)
69
+ tokens[key] += request.usage[key];
70
+ const rate = request.rateId === undefined ? undefined : rateById.get(request.rateId);
71
+ if (!rate || rate.provider !== request.provider || rate.model !== request.model) {
72
+ reasons.push(`${row.taskId}/${request.id}: missing or mismatched price identity`);
73
+ continue;
74
+ }
75
+ currencies.add(rate.currency);
76
+ if (!request.usage || request.toolCharge === undefined) {
77
+ reasons.push(`${row.taskId}/${request.id}: incomplete usage or tool charges`);
78
+ continue;
79
+ }
80
+ total += buckets.reduce((sum, key) => sum + request.usage[key] * rate[key] / 1_000_000, rate.perRequest + request.toolCharge);
81
+ }
82
+ }
83
+ // Empty cost is not automatically free. A single declared currency establishes the unit.
84
+ if (!currencies.size && !requests && rates.length)
85
+ for (const rate of rates)
86
+ currencies.add(rate.currency);
87
+ if (currencies.size !== 1)
88
+ reasons.push('No single known currency; no implicit exchange rates');
89
+ if (!Number.isFinite(total) || !Number.isFinite(latencyMs) || buckets.some(key => !Number.isSafeInteger(tokens[key])))
90
+ throw new Error('Evaluation totals exceed numeric capacity');
91
+ return { recorded: rows.length, scored, passed, attempts: attempts.size, requests, expectedRequests, latencyMs, tokens, outcomes,
92
+ accounting: reasons.length ? { status: 'unmeasured', reasons } : { status: 'measured', currency: [...currencies][0], amount: total } };
93
+ }
94
+ function isScored(row) {
95
+ return row.mode === 'real' && ['passed', 'failed', 'agent_failed', 'audit_failed'].includes(row.outcome);
96
+ }
97
+ function same(left, right) {
98
+ return Object.keys(left).every(key => left[key] === right[key]);
99
+ }
100
+ function meetsReduction(baseline, candidate, required) {
101
+ return baseline === 0 ? candidate === 0 && required === 0 : (baseline - candidate) / baseline + 1e-12 >= required;
102
+ }
103
+ /** Fixed sides, fixed gates, full coverage. Partial reports never imply a release pass. */
104
+ export function evaluateSuperCodeBatch(input, measurements) {
105
+ const manifest = evaluationManifestSchema.parse(input);
106
+ unique(manifest.cases.map(item => item.taskId), 'manifest task id');
107
+ unique(manifest.rates.map(item => item.id), 'price id');
108
+ const rows = measurements.map(row => evaluationMeasurementSchema.parse(row));
109
+ const cases = new Map(manifest.cases.map(item => [item.taskId, item]));
110
+ const groups = new Map();
111
+ const mismatches = [], missing = [], unmeasured = [];
112
+ const requestIdentities = new Set();
113
+ for (const row of rows) {
114
+ const expected = cases.get(row.taskId);
115
+ if (!expected)
116
+ throw new Error(`Unexpected task ${row.taskId}`);
117
+ const group = groups.get(row.taskId) ?? {};
118
+ if (group[row.side])
119
+ throw new Error(`Duplicate ${row.side} measurement for ${row.taskId}`);
120
+ group[row.side] = row;
121
+ groups.set(row.taskId, group);
122
+ if (row.category !== expected.category || !same(row.conditions, expected.conditions) || !same(row.identity, manifest[row.side]))
123
+ mismatches.push(`${row.taskId}/${row.side}: comparison identity differs`);
124
+ if (!isScored(row))
125
+ unmeasured.push(`${row.taskId}/${row.side}: ${row.mode}/${row.outcome}`);
126
+ for (const request of row.requests) {
127
+ const identity = JSON.stringify([request.sessionId, request.id]);
128
+ if (requestIdentities.has(identity))
129
+ throw new Error('Duplicate session request across measurements');
130
+ requestIdentities.add(identity);
131
+ }
132
+ }
133
+ const baseline = summarize(rows.filter(row => row.side === 'baseline'), manifest.rates);
134
+ const candidate = summarize(rows.filter(row => row.side === 'candidate'), manifest.rates);
135
+ const pairs = { paired: 0, gained: [], lost: [], unchanged: [], unscored: [] };
136
+ const categories = Object.create(null);
137
+ for (const item of manifest.cases) {
138
+ const group = groups.get(item.taskId);
139
+ for (const side of sides)
140
+ if (!group?.[side])
141
+ missing.push(`${item.taskId}/${side}`);
142
+ const a = group?.baseline, b = group?.candidate;
143
+ if (!a || !b || !isScored(a) || !isScored(b)) {
144
+ pairs.unscored.push(item.taskId);
145
+ continue;
146
+ }
147
+ pairs.paired++;
148
+ const category = categories[item.category] ??= { paired: 0, gained: 0, lost: 0 };
149
+ category.paired++;
150
+ if (a.outcome !== 'passed' && b.outcome === 'passed') {
151
+ pairs.gained.push(item.taskId);
152
+ category.gained++;
153
+ }
154
+ else if (a.outcome === 'passed' && b.outcome !== 'passed') {
155
+ pairs.lost.push(item.taskId);
156
+ category.lost++;
157
+ }
158
+ else
159
+ pairs.unchanged.push(item.taskId);
160
+ }
161
+ for (const [side, summary] of [['baseline', baseline], ['candidate', candidate]]) {
162
+ if (summary.accounting.status === 'unmeasured')
163
+ unmeasured.push(...summary.accounting.reasons.map(reason => `${side}: ${reason}`));
164
+ }
165
+ const a = baseline.accounting, b = candidate.accounting;
166
+ const comparableCost = a.status === 'measured' && b.status === 'measured' && a.currency === b.currency;
167
+ if (a.status === 'measured' && b.status === 'measured' && a.currency !== b.currency)
168
+ unmeasured.push('Comparison currencies differ');
169
+ const status = mismatches.length ? 'unmatched' : missing.length ? 'incomplete' : unmeasured.length ? 'unmeasured' : 'measured';
170
+ const gates = manifest.gates;
171
+ const checks = {
172
+ quality: pairs.paired === manifest.cases.length && (pairs.gained.length - pairs.lost.length) / pairs.paired + 1e-12 >= gates.minAccuracyUplift
173
+ && pairs.lost.length <= gates.maxLostSuccesses && Object.values(categories).every(category => category.gained >= category.lost),
174
+ cost: comparableCost && (gates.minCostReduction === undefined || meetsReduction(a.amount, b.amount, gates.minCostReduction)),
175
+ latency: gates.minLatencyReduction === undefined || meetsReduction(baseline.latencyMs, candidate.latencyMs, gates.minLatencyReduction),
176
+ };
177
+ return { status, accepted: status === 'measured' && Object.values(checks).every(Boolean), reasons: [...mismatches, ...missing, ...unmeasured],
178
+ planned: manifest.cases.length, baseline, candidate, pairs, categories, checks };
179
+ }
180
+ //# sourceMappingURL=evaluation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluation.js","sourceRoot":"","sources":["../../src/core/evaluation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Documentation only: experiments run in task-owned shell scripts, never here. */
2
+ export declare const EXPERIMENT_RECIPES: readonly ["reduce", "differential", "interleavings", "metamorphic"];
3
+ export type ExperimentRecipe = typeof EXPERIMENT_RECIPES[number];
4
+ export declare function readExperimentRecipe(recipe: ExperimentRecipe): string;
5
+ //# sourceMappingURL=experiment-recipes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"experiment-recipes.d.ts","sourceRoot":"","sources":["../../src/core/experiment-recipes.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,eAAO,MAAM,kBAAkB,qEAAsE,CAAA;AACrG,MAAM,MAAM,gBAAgB,GAAG,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAA;AAqDhE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAYrE"}
@@ -0,0 +1,67 @@
1
+ /** Documentation only: experiments run in task-owned shell scripts, never here. */
2
+ export const EXPERIMENT_RECIPES = ['reduce', 'differential', 'interleavings', 'metamorphic'];
3
+ const examples = {
4
+ reduce: `const probe = xs => xs.filter(x => x === 2).length > 1
5
+ ? {kind:'fail', signature:'duplicate-two'} : {kind:'pass'};
6
+ const result = await reduceFailure([0,2,8,2,9], 'duplicate-two', probe, budget);
7
+ const {input,...summary}=result;
8
+ console.log(JSON.stringify({...summary,inputLength:input.length,inputPreview:input.slice(0,8)}));`,
9
+ differential: `// Independent reference: sum retains duplicates; this candidate incorrectly drops them.
10
+ const sum = xs => xs.reduce((a,b) => a+b, 0);
11
+ const probe = differential(sum, xs => sum([...new Set(xs)]));
12
+ const result = await findCounterexample([[0,1], [0,2,8,2,9]], probe, budget);
13
+ // A general difference does not identify the original fault; do not auto-reduce it.
14
+ const {input,verdict,...summary}=result;
15
+ console.log(JSON.stringify({...summary,...(input ? {inputLength:input.length,inputPreview:input.slice(0,8)} : {}),
16
+ ...(verdict ? {signature:verdict.signature} : {})}));`,
17
+ interleavings: `// Explicit start/completion boundaries, two requests, fresh state per trial.
18
+ async function observe(schedule, guarded) {
19
+ let version=0, latest=-1, visible=-1;
20
+ const gates=[Promise.withResolvers(), Promise.withResolvers()], jobs=[];
21
+ for (const {lane,index} of schedule) {
22
+ if (index===0) {
23
+ const token=++version; latest=lane;
24
+ jobs[lane]=(async()=>{ await gates[lane].promise;
25
+ if (!guarded || token===version) visible=lane; })();
26
+ } else { gates[lane].resolve(); await jobs[lane]; }
27
+ }
28
+ return {latest,visible};
29
+ }
30
+ const schedules=interleavings(2,2,6);
31
+ const probe=differential(s=>observe(s,true), s=>observe(s,false));
32
+ const result=await findCounterexample(schedules,probe,budget);
33
+ const {input,verdict,...summary}=result;
34
+ console.log(JSON.stringify({coverage:schedules.coverage,...summary,
35
+ ...(input ? {inputLength:input.length,inputPreview:input.slice(0,8)} : {}),...(verdict ? {signature:verdict.signature} : {})}));`,
36
+ metamorphic: `// Contract: a sum is invariant under permutation. The candidate violates it.
37
+ const probe=metamorphic('sum-permutation', xs=>xs[0], xs=>xs.reverse(), (a,b)=>a===b);
38
+ const result=await findCounterexample([[1,2,3]],probe,budget);
39
+ const {input,verdict,...summary}=result;
40
+ console.log(JSON.stringify({...summary,...(input ? {inputLength:input.length,inputPreview:input.slice(0,8)} : {}),
41
+ ...(verdict ? {signature:verdict.signature} : {})}));`,
42
+ };
43
+ const imports = {
44
+ reduce: 'reduceFailure', differential: 'differential, findCounterexample',
45
+ interleavings: 'interleavings, differential, findCounterexample', metamorphic: 'metamorphic, findCounterexample',
46
+ };
47
+ const notes = {
48
+ reduce: 'Use a task-specific failure predicate/signature. Confirmation runs twice and counts toward budget. one-removal assumes repeatable probes; it is not a global minimum or proof of the same root cause.',
49
+ differential: 'Use an independent, trusted reference. Each probe runs two observations. checked covers supplied samples only. behavior-difference identifies any mismatch, not one fault; reduce only with a task-specific predicate/signature, otherwise report a difference witness.',
50
+ interleavings: 'Control real await boundaries with barriers, not sleeps; reset state per schedule. Two ordered lanes, at most 256 steps. coverage describes enumeration, not checked schedules; search stops at the first difference. Each differential probe runs two observations.',
51
+ metamorphic: 'Derive the transform/relation from a real contract. Each probe runs two observations. checked covers supplied samples only; a relation violation does not identify its root cause.',
52
+ };
53
+ export function readExperimentRecipe(recipe) {
54
+ if (!Object.hasOwn(examples, recipe))
55
+ throw new Error('Unknown experiment recipe');
56
+ const moduleUrl = new URL('../experiments.js', import.meta.url).href;
57
+ return `Experiment: ${recipe}
58
+ Module: ${moduleUrl}
59
+ Demo, not project evidence. Adapt to authorized, repeatable checks with isolated state and cloneable data. Run in foreground bash with timeoutMs (e.g. 10000); library deadlines/abort are cooperative, not hard interruption. Share one probe budget per batch. Exceptions propagate; unknown/stopped are not pass. Array previews show at most 8 entries; full data stays in result. Save large reports to task files; avoid printing large entries.
60
+ ${notes[recipe]}
61
+ \`\`\`js
62
+ import { ExperimentBudget, ${imports[recipe]} } from ${JSON.stringify(moduleUrl)};
63
+ const budget=new ExperimentBudget({maxChecks:100,timeoutMs:2000});
64
+ ${examples[recipe]}
65
+ \`\`\``;
66
+ }
67
+ //# sourceMappingURL=experiment-recipes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"experiment-recipes.js","sourceRoot":"","sources":["../../src/core/experiment-recipes.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,CAAU,CAAA;AAGrG,MAAM,QAAQ,GAA+C;IAC3D,MAAM,EAAE;;;;kGAIwF;IAChG,YAAY,EAAE;;;;;;;wDAOwC;IACtD,aAAa,EAAE;;;;;;;;;;;;;;;;;;mIAkBkH;IACjI,WAAW,EAAE;;;;;wDAKyC;CACvD,CAAA;AACD,MAAM,OAAO,GAA+C;IAC1D,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,kCAAkC;IACzE,aAAa,EAAE,iDAAiD,EAAE,WAAW,EAAE,iCAAiC;CACjH,CAAA;AACD,MAAM,KAAK,GAA+C;IACxD,MAAM,EAAE,uMAAuM;IAC/M,YAAY,EAAE,yQAAyQ;IACvR,aAAa,EAAE,sQAAsQ;IACrR,WAAW,EAAE,oLAAoL;CAClM,CAAA;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAwB;IAC3D,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAClF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;IACpE,OAAO,eAAe,MAAM;UACpB,SAAS;;EAEjB,KAAK,CAAC,MAAM,CAAC;;6BAEc,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;EAE9E,QAAQ,CAAC,MAAM,CAAC;OACX,CAAA;AACP,CAAC"}
@@ -0,0 +1,10 @@
1
+ export type GuidanceMode = 'standard' | 'guided';
2
+ export interface GuidedRoute {
3
+ readonly provider: string;
4
+ readonly model: string;
5
+ }
6
+ /** Exact deployment policy, not a guess about capability from a model name. */
7
+ export declare function createGuidanceSelector(routes?: readonly GuidedRoute[]): (provider: unknown, model: unknown) => GuidanceMode;
8
+ /** Only selected routes pay for concrete reminders; standards remain identical. */
9
+ export declare const GUIDED_INSTRUCTIONS = "Inspect definitions and working callers for uncertain APIs; do not add aliases to satisfy imagined tests. A cause remains unconfirmed until an observation distinguishes it. Run the relevant check and inspect the result: a started command, exit code alone, zero tests or a teammate's claim does not establish acceptance. Before calling a failure pre-existing or environmental, compare the same check on the baseline; otherwise report it as unresolved. Never assume hidden tests will fix a failure. When stuck, change the hypothesis or reduce the reproduction, not the agent count. Use only necessary checks; no mandatory checklist or extra narration.";
10
+ //# sourceMappingURL=guidance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guidance.d.ts","sourceRoot":"","sources":["../../src/core/guidance.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAA;AAChD,MAAM,WAAW,WAAW;IAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAOlF,+EAA+E;AAC/E,wBAAgB,sBAAsB,CAAC,MAAM,GAAE,SAAS,WAAW,EAAO,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,YAAY,CAK/H;AAED,mFAAmF;AACnF,eAAO,MAAM,mBAAmB,8oBAA8oB,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ const guidedRoutesSchema = z.array(z.object({
3
+ provider: z.string().trim().min(1).max(256),
4
+ model: z.string().trim().min(1).max(256),
5
+ }).strict()).max(128);
6
+ /** Exact deployment policy, not a guess about capability from a model name. */
7
+ export function createGuidanceSelector(routes = []) {
8
+ const configured = guidedRoutesSchema.parse(routes);
9
+ const keys = new Set(configured.map(route => JSON.stringify([route.provider, route.model])));
10
+ if (keys.size !== configured.length)
11
+ throw new Error('Duplicate guided model route');
12
+ return (provider, model) => typeof provider === 'string' && typeof model === 'string' && keys.has(JSON.stringify([provider, model])) ? 'guided' : 'standard';
13
+ }
14
+ /** Only selected routes pay for concrete reminders; standards remain identical. */
15
+ export const GUIDED_INSTRUCTIONS = `Inspect definitions and working callers for uncertain APIs; do not add aliases to satisfy imagined tests. A cause remains unconfirmed until an observation distinguishes it. Run the relevant check and inspect the result: a started command, exit code alone, zero tests or a teammate's claim does not establish acceptance. Before calling a failure pre-existing or environmental, compare the same check on the baseline; otherwise report it as unresolved. Never assume hidden tests will fix a failure. When stuck, change the hypothesis or reduce the reproduction, not the agent count. Use only necessary checks; no mandatory checklist or extra narration.`;
16
+ //# sourceMappingURL=guidance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guidance.js","sourceRoot":"","sources":["../../src/core/guidance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CACzC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAErB,+EAA+E;AAC/E,MAAM,UAAU,sBAAsB,CAAC,SAAiC,EAAE;IACxE,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACnD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5F,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACpF,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAA;AAC9J,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,2oBAA2oB,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { SessionEvent } from '@deepseek-ai/dsh-session';
2
+ /** Bounded backward lookup; yield between chunks so cancellation stays responsive. */
3
+ export declare function scanSessionPage(end: number, before: number, eventAt: (seq: number) => SessionEvent | undefined, visit: (event: SessionEvent) => boolean, signal: AbortSignal): Promise<{
4
+ nextBeforeSeq: number;
5
+ done: boolean;
6
+ scanned: number;
7
+ }>;
8
+ //# sourceMappingURL=session-scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-scan.d.ts","sourceRoot":"","sources":["../../src/core/session-scan.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D,sFAAsF;AACtF,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,EACnH,KAAK,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAelI"}