@dcyfr/ai 3.0.0 → 3.0.2
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/CHANGELOG.md +10 -0
- package/LICENSE +11 -30
- package/README.md +211 -138
- package/dist/.tsbuildinfo +1 -1
- package/dist/ai/core/provider-registry.d.ts +8 -0
- package/dist/ai/core/provider-registry.d.ts.map +1 -1
- package/dist/ai/core/provider-registry.js +17 -2
- package/dist/ai/core/provider-registry.js.map +1 -1
- package/dist/ai/metacognition/config.d.ts +41 -0
- package/dist/ai/metacognition/config.d.ts.map +1 -0
- package/dist/ai/metacognition/config.js +51 -0
- package/dist/ai/metacognition/config.js.map +1 -0
- package/dist/ai/metacognition/governance.d.ts +68 -0
- package/dist/ai/metacognition/governance.d.ts.map +1 -0
- package/dist/ai/metacognition/governance.js +118 -0
- package/dist/ai/metacognition/governance.js.map +1 -0
- package/dist/ai/metacognition/index.d.ts +24 -0
- package/dist/ai/metacognition/index.d.ts.map +1 -0
- package/dist/ai/metacognition/index.js +18 -0
- package/dist/ai/metacognition/index.js.map +1 -0
- package/dist/ai/metacognition/ledger.d.ts +121 -0
- package/dist/ai/metacognition/ledger.d.ts.map +1 -0
- package/dist/ai/metacognition/ledger.js +268 -0
- package/dist/ai/metacognition/ledger.js.map +1 -0
- package/dist/ai/metacognition/runtime.d.ts +205 -0
- package/dist/ai/metacognition/runtime.d.ts.map +1 -0
- package/dist/ai/metacognition/runtime.js +391 -0
- package/dist/ai/metacognition/runtime.js.map +1 -0
- package/dist/ai/metacognition/telemetry.d.ts +144 -0
- package/dist/ai/metacognition/telemetry.d.ts.map +1 -0
- package/dist/ai/metacognition/telemetry.js +149 -0
- package/dist/ai/metacognition/telemetry.js.map +1 -0
- package/dist/ai/metacognition/transfer.d.ts +153 -0
- package/dist/ai/metacognition/transfer.d.ts.map +1 -0
- package/dist/ai/metacognition/transfer.js +182 -0
- package/dist/ai/metacognition/transfer.js.map +1 -0
- package/dist/ai/metacognition/types.d.ts +302 -0
- package/dist/ai/metacognition/types.d.ts.map +1 -0
- package/dist/ai/metacognition/types.js +79 -0
- package/dist/ai/metacognition/types.js.map +1 -0
- package/dist/ai/runtime/agent-runtime.d.ts.map +1 -1
- package/dist/ai/runtime/agent-runtime.js.map +1 -1
- package/dist/ai/src/integrations/linear/index.d.ts +19 -0
- package/dist/ai/src/integrations/linear/index.d.ts.map +1 -0
- package/dist/ai/src/integrations/linear/index.js +20 -0
- package/dist/ai/src/integrations/linear/index.js.map +1 -0
- package/dist/ai/src/integrations/linear/issue-mapper.d.ts +93 -0
- package/dist/ai/src/integrations/linear/issue-mapper.d.ts.map +1 -0
- package/dist/ai/src/integrations/linear/issue-mapper.js +186 -0
- package/dist/ai/src/integrations/linear/issue-mapper.js.map +1 -0
- package/dist/ai/src/integrations/linear/linear-client.d.ts +199 -0
- package/dist/ai/src/integrations/linear/linear-client.d.ts.map +1 -0
- package/dist/ai/src/integrations/linear/linear-client.js +300 -0
- package/dist/ai/src/integrations/linear/linear-client.js.map +1 -0
- package/dist/ai/src/runtime/agent-runtime.js +1 -1
- package/dist/ai/src/runtime/agent-runtime.js.map +1 -1
- package/dist/ai/src/security/prompt-scan-worker.d.ts +63 -0
- package/dist/ai/src/security/prompt-scan-worker.d.ts.map +1 -0
- package/dist/ai/src/security/prompt-scan-worker.js +174 -0
- package/dist/ai/src/security/prompt-scan-worker.js.map +1 -0
- package/dist/ai/src/telemetry/delegation-telemetry.d.ts +10 -0
- package/dist/ai/src/telemetry/delegation-telemetry.d.ts.map +1 -1
- package/dist/ai/src/telemetry/delegation-telemetry.js +23 -0
- package/dist/ai/src/telemetry/delegation-telemetry.js.map +1 -1
- package/package.json +29 -19
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metacognitive Improvement — Structured Telemetry
|
|
3
|
+
* TLP:AMBER - Internal Use Only
|
|
4
|
+
*
|
|
5
|
+
* Emits structured telemetry events for the metacognitive improvement lifecycle.
|
|
6
|
+
* Tracks proposal throughput, approval ratio, and rollback rate.
|
|
7
|
+
*
|
|
8
|
+
* The telemetry system is intentionally thin and side-effect-free:
|
|
9
|
+
* - Events are emitted to registered sinks (console, remote, in-memory).
|
|
10
|
+
* - Sinks are async and non-blocking; errors are caught and ignored.
|
|
11
|
+
* - The default sink writes structured JSON to stdout (compatible with log aggregators).
|
|
12
|
+
*
|
|
13
|
+
* @module ai/metacognition/telemetry
|
|
14
|
+
*/
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
// MetacogTelemetryEmitter
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
/**
|
|
19
|
+
* Emits structured telemetry events and aggregates running metrics.
|
|
20
|
+
*
|
|
21
|
+
* Usage:
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const emitter = new MetacogTelemetryEmitter([consoleSink]);
|
|
24
|
+
* emitter.proposalSubmitted({ proposal_id, actor, domain, ... });
|
|
25
|
+
* const metrics = emitter.getMetrics();
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export class MetacogTelemetryEmitter {
|
|
29
|
+
sinks;
|
|
30
|
+
counts = {
|
|
31
|
+
submitted: 0,
|
|
32
|
+
evaluatedPass: 0,
|
|
33
|
+
evaluatedFail: 0,
|
|
34
|
+
approved: 0,
|
|
35
|
+
applied: 0,
|
|
36
|
+
rolledBack: 0,
|
|
37
|
+
};
|
|
38
|
+
constructor(sinks = [defaultConsoleSink]) {
|
|
39
|
+
this.sinks = sinks;
|
|
40
|
+
}
|
|
41
|
+
// -------------------------------------------------------------------------
|
|
42
|
+
// Emit helpers
|
|
43
|
+
// -------------------------------------------------------------------------
|
|
44
|
+
proposalSubmitted(fields) {
|
|
45
|
+
this.counts.submitted++;
|
|
46
|
+
this.emit({ event: 'metacog.proposal.submitted', timestamp: now(), ...fields });
|
|
47
|
+
}
|
|
48
|
+
proposalEvaluated(fields) {
|
|
49
|
+
if (fields.passed)
|
|
50
|
+
this.counts.evaluatedPass++;
|
|
51
|
+
else
|
|
52
|
+
this.counts.evaluatedFail++;
|
|
53
|
+
this.emit({ event: 'metacog.proposal.evaluated', timestamp: now(), ...fields });
|
|
54
|
+
}
|
|
55
|
+
proposalApproved(fields) {
|
|
56
|
+
this.counts.approved++;
|
|
57
|
+
this.emit({ event: 'metacog.proposal.approved', timestamp: now(), ...fields });
|
|
58
|
+
}
|
|
59
|
+
proposalRejected(fields) {
|
|
60
|
+
this.counts.evaluatedFail++;
|
|
61
|
+
this.emit({ event: 'metacog.proposal.rejected', timestamp: now(), ...fields });
|
|
62
|
+
}
|
|
63
|
+
proposalApplied(fields) {
|
|
64
|
+
this.counts.applied++;
|
|
65
|
+
this.emit({ event: 'metacog.proposal.applied', timestamp: now(), ...fields });
|
|
66
|
+
}
|
|
67
|
+
proposalRolledBack(fields) {
|
|
68
|
+
this.counts.rolledBack++;
|
|
69
|
+
this.emit({ event: 'metacog.proposal.rolled_back', timestamp: now(), ...fields });
|
|
70
|
+
}
|
|
71
|
+
transferEvaluated(fields) {
|
|
72
|
+
this.emit({ event: 'metacog.transfer.evaluated', timestamp: now(), ...fields });
|
|
73
|
+
}
|
|
74
|
+
// -------------------------------------------------------------------------
|
|
75
|
+
// Metrics
|
|
76
|
+
// -------------------------------------------------------------------------
|
|
77
|
+
/**
|
|
78
|
+
* Return computed metrics from all events observed since construction.
|
|
79
|
+
*/
|
|
80
|
+
getMetrics() {
|
|
81
|
+
const { submitted, evaluatedPass, evaluatedFail, approved, applied, rolledBack } = this.counts;
|
|
82
|
+
return {
|
|
83
|
+
proposals_submitted: submitted,
|
|
84
|
+
proposals_evaluated_pass: evaluatedPass,
|
|
85
|
+
proposals_evaluated_fail: evaluatedFail,
|
|
86
|
+
proposals_approved: approved,
|
|
87
|
+
proposals_applied: applied,
|
|
88
|
+
proposals_rolled_back: rolledBack,
|
|
89
|
+
approval_ratio: submitted > 0 ? approved / submitted : null,
|
|
90
|
+
rollback_rate: applied > 0 ? rolledBack / applied : null,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/** Reset all counters (useful for time-windowed metrics). */
|
|
94
|
+
resetMetrics() {
|
|
95
|
+
this.counts = {
|
|
96
|
+
submitted: 0, evaluatedPass: 0, evaluatedFail: 0,
|
|
97
|
+
approved: 0, applied: 0, rolledBack: 0,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
// -------------------------------------------------------------------------
|
|
101
|
+
// Internal
|
|
102
|
+
// -------------------------------------------------------------------------
|
|
103
|
+
emit(event) {
|
|
104
|
+
for (const sink of this.sinks) {
|
|
105
|
+
try {
|
|
106
|
+
const result = sink(event);
|
|
107
|
+
if (result instanceof Promise) {
|
|
108
|
+
result.catch(() => { });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// Sinks must not crash the runtime
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// ---------------------------------------------------------------------------
|
|
118
|
+
// Built-in sinks
|
|
119
|
+
// ---------------------------------------------------------------------------
|
|
120
|
+
/**
|
|
121
|
+
* Default sink: writes structured JSON to stdout.
|
|
122
|
+
* Compatible with log aggregators that parse JSON lines.
|
|
123
|
+
*/
|
|
124
|
+
export const defaultConsoleSink = (event) => {
|
|
125
|
+
console.log(JSON.stringify(event));
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* In-memory sink: collects events for test assertions.
|
|
129
|
+
*/
|
|
130
|
+
export class InMemoryTelemetrySink {
|
|
131
|
+
events = [];
|
|
132
|
+
sink = (event) => {
|
|
133
|
+
this.events.push(event);
|
|
134
|
+
};
|
|
135
|
+
/** Filter events by type. */
|
|
136
|
+
byType(type) {
|
|
137
|
+
return this.events.filter((e) => e.event === type);
|
|
138
|
+
}
|
|
139
|
+
clear() {
|
|
140
|
+
this.events.length = 0;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// ---------------------------------------------------------------------------
|
|
144
|
+
// Helpers
|
|
145
|
+
// ---------------------------------------------------------------------------
|
|
146
|
+
function now() {
|
|
147
|
+
return new Date().toISOString();
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../../packages/ai/metacognition/telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-Domain Transfer Evaluation Pipeline
|
|
3
|
+
* TLP:AMBER - Internal Use Only
|
|
4
|
+
*
|
|
5
|
+
* Implements the transfer evaluation contract and gate logic for
|
|
6
|
+
* cross-domain promotion of improvement proposals.
|
|
7
|
+
*
|
|
8
|
+
* Pipeline:
|
|
9
|
+
* 1. Evaluate proposal in source domain (caller's responsibility).
|
|
10
|
+
* 2. Call evaluateTransfer() to run target-domain evaluation.
|
|
11
|
+
* 3. Transfer is allowed only when score ≥ threshold AND regression
|
|
12
|
+
* budget is not exceeded.
|
|
13
|
+
*
|
|
14
|
+
* @module ai/metacognition/transfer
|
|
15
|
+
*/
|
|
16
|
+
import type { BenchmarkResult, ImprovementProposal } from './types.js';
|
|
17
|
+
/**
|
|
18
|
+
* A domain definition for transfer evaluation.
|
|
19
|
+
* Each domain exposes named benchmarks that proposals must satisfy.
|
|
20
|
+
*/
|
|
21
|
+
export interface DomainDefinition {
|
|
22
|
+
/** Unique domain identifier. Must match domains referenced in proposals. */
|
|
23
|
+
domain_id: string;
|
|
24
|
+
/** Human-readable name. */
|
|
25
|
+
name: string;
|
|
26
|
+
/** Registered benchmarks available in this domain. */
|
|
27
|
+
benchmarks: BenchmarkDefinition[];
|
|
28
|
+
}
|
|
29
|
+
/** A single named benchmark within a domain. */
|
|
30
|
+
export interface BenchmarkDefinition {
|
|
31
|
+
/** Unique within the domain. */
|
|
32
|
+
benchmark_id: string;
|
|
33
|
+
/** Human-readable description of what this benchmark measures. */
|
|
34
|
+
description: string;
|
|
35
|
+
/**
|
|
36
|
+
* Minimum score (0.0–1.0) for this benchmark to count as passing.
|
|
37
|
+
* A result with score >= pass_threshold is considered a pass.
|
|
38
|
+
*/
|
|
39
|
+
pass_threshold: number;
|
|
40
|
+
/**
|
|
41
|
+
* Whether a failure on this benchmark is blocking regardless of
|
|
42
|
+
* aggregate score or regression budget. Safety/security gates should
|
|
43
|
+
* set this to true.
|
|
44
|
+
*/
|
|
45
|
+
blocking: boolean;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Input to the transfer evaluation gate.
|
|
49
|
+
* Carries the proposal being evaluated, the source domain's baseline results,
|
|
50
|
+
* and the target domain configuration.
|
|
51
|
+
*/
|
|
52
|
+
export interface TransferEvaluationInput {
|
|
53
|
+
proposal: ImprovementProposal;
|
|
54
|
+
/** Domain the improvement was originally developed in. */
|
|
55
|
+
source_domain: DomainDefinition;
|
|
56
|
+
/** Domain the improvement is being promoted to. */
|
|
57
|
+
target_domain: DomainDefinition;
|
|
58
|
+
/**
|
|
59
|
+
* Baseline benchmark results for the target domain
|
|
60
|
+
* (measured before this proposal was applied).
|
|
61
|
+
*/
|
|
62
|
+
target_baseline: BaselineRecord[];
|
|
63
|
+
/**
|
|
64
|
+
* Minimum aggregate transfer score (0.0–1.0) required for promotion.
|
|
65
|
+
* Defaults to the proposal's evaluation_criteria.success_threshold.
|
|
66
|
+
*/
|
|
67
|
+
score_threshold?: number;
|
|
68
|
+
/**
|
|
69
|
+
* Maximum fraction of benchmarks allowed to regress (0.0–1.0).
|
|
70
|
+
* Defaults to the proposal's evaluation_criteria.regression_budget.
|
|
71
|
+
*/
|
|
72
|
+
regression_budget?: number;
|
|
73
|
+
}
|
|
74
|
+
/** A baseline measurement for a single benchmark in a domain. */
|
|
75
|
+
export interface BaselineRecord {
|
|
76
|
+
domain_id: string;
|
|
77
|
+
benchmark_id: string;
|
|
78
|
+
baseline_score: number;
|
|
79
|
+
measured_at: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Transfer score and promotion decision for a single proposal.
|
|
83
|
+
*/
|
|
84
|
+
export interface TransferEvaluationResult {
|
|
85
|
+
proposal_id: string;
|
|
86
|
+
source_domain_id: string;
|
|
87
|
+
target_domain_id: string;
|
|
88
|
+
evaluated_at: string;
|
|
89
|
+
/** Aggregate transfer score across all target-domain benchmarks (0.0–1.0). */
|
|
90
|
+
transfer_score: number;
|
|
91
|
+
/** Score threshold that was applied. */
|
|
92
|
+
score_threshold: number;
|
|
93
|
+
/** Whether the transfer score meets the threshold. */
|
|
94
|
+
score_passed: boolean;
|
|
95
|
+
/** Whether any benchmark regressed beyond the regression budget. */
|
|
96
|
+
regression_budget_exceeded: boolean;
|
|
97
|
+
/** Fraction of benchmarks that regressed. */
|
|
98
|
+
regression_fraction: number;
|
|
99
|
+
/** True only when score_passed AND NOT regression_budget_exceeded AND no blocking failures. */
|
|
100
|
+
transferable: boolean;
|
|
101
|
+
/** Per-benchmark results in the target domain. */
|
|
102
|
+
benchmark_results: BenchmarkResult[];
|
|
103
|
+
/** IDs of blocking benchmarks that failed. */
|
|
104
|
+
blocking_failures: string[];
|
|
105
|
+
/** Human-readable explanation of the promotion decision. */
|
|
106
|
+
decision_reason: string;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Interface for running benchmarks in a domain.
|
|
110
|
+
* Implementations provide domain-specific evaluation logic.
|
|
111
|
+
*/
|
|
112
|
+
export interface BenchmarkRunner {
|
|
113
|
+
domain_id: string;
|
|
114
|
+
/**
|
|
115
|
+
* Run a single benchmark against the proposed policy changes.
|
|
116
|
+
* Returns the achieved score (0.0–1.0).
|
|
117
|
+
*/
|
|
118
|
+
runBenchmark(benchmark_id: string, proposal: ImprovementProposal): Promise<number>;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Evaluate whether an improvement proposal is transferable to a target domain.
|
|
122
|
+
*
|
|
123
|
+
* Algorithm:
|
|
124
|
+
* 1. For each benchmark in target domain, run evaluation via `runner`.
|
|
125
|
+
* 2. Compute delta vs baseline: negative delta = regression.
|
|
126
|
+
* 3. Check for blocking failures (regardless of aggregate score).
|
|
127
|
+
* 4. Compute regression fraction vs regression_budget.
|
|
128
|
+
* 5. Compute aggregate transfer score.
|
|
129
|
+
* 6. transferable = score_passed AND NOT budget_exceeded AND no blocking failures.
|
|
130
|
+
*
|
|
131
|
+
* @param input - Transfer evaluation configuration and baselines.
|
|
132
|
+
* @param runner - Domain-specific benchmark runner for the target domain.
|
|
133
|
+
*/
|
|
134
|
+
export declare function evaluateTransfer(input: TransferEvaluationInput, runner: BenchmarkRunner): Promise<TransferEvaluationResult>;
|
|
135
|
+
/** Thrown when transfer evaluation configuration is invalid. */
|
|
136
|
+
export declare class TransferEvaluationError extends Error {
|
|
137
|
+
constructor(message: string);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Domain A: scoring_strategy
|
|
141
|
+
* Representative benchmarks for a scoring-weight policy domain.
|
|
142
|
+
*/
|
|
143
|
+
export declare const SCORING_STRATEGY_DOMAIN: DomainDefinition;
|
|
144
|
+
/**
|
|
145
|
+
* Domain B: delegation_thresholds
|
|
146
|
+
* Representative benchmarks for a delegation-threshold policy domain.
|
|
147
|
+
*/
|
|
148
|
+
export declare const DELEGATION_THRESHOLDS_DOMAIN: DomainDefinition;
|
|
149
|
+
/** Pre-measured baselines for the scoring_strategy domain. */
|
|
150
|
+
export declare const SCORING_STRATEGY_BASELINES: BaselineRecord[];
|
|
151
|
+
/** Pre-measured baselines for the delegation_thresholds domain. */
|
|
152
|
+
export declare const DELEGATION_THRESHOLDS_BASELINES: BaselineRecord[];
|
|
153
|
+
//# sourceMappingURL=transfer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../../packages/ai/metacognition/transfer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAMvE;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAElB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IAEb,sDAAsD;IACtD,UAAU,EAAE,mBAAmB,EAAE,CAAC;CACnC;AAED,gDAAgD;AAChD,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,YAAY,EAAE,MAAM,CAAC;IAErB,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,mBAAmB,CAAC;IAE9B,0DAA0D;IAC1D,aAAa,EAAE,gBAAgB,CAAC;IAEhC,mDAAmD;IACnD,aAAa,EAAE,gBAAgB,CAAC;IAEhC;;;OAGG;IACH,eAAe,EAAE,cAAc,EAAE,CAAC;IAElC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,iEAAiE;AACjE,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IAEzB,YAAY,EAAE,MAAM,CAAC;IAErB,8EAA8E;IAC9E,cAAc,EAAE,MAAM,CAAC;IAEvB,wCAAwC;IACxC,eAAe,EAAE,MAAM,CAAC;IAExB,sDAAsD;IACtD,YAAY,EAAE,OAAO,CAAC;IAEtB,oEAAoE;IACpE,0BAA0B,EAAE,OAAO,CAAC;IAEpC,6CAA6C;IAC7C,mBAAmB,EAAE,MAAM,CAAC;IAE5B,+FAA+F;IAC/F,YAAY,EAAE,OAAO,CAAC;IAEtB,kDAAkD;IAClD,iBAAiB,EAAE,eAAe,EAAE,CAAC;IAErC,8CAA8C;IAC9C,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAE5B,4DAA4D;IAC5D,eAAe,EAAE,MAAM,CAAC;CACzB;AAMD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,YAAY,CACV,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,mBAAmB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAAC;CACpB;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,uBAAuB,EAC9B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,wBAAwB,CAAC,CAgFnC;AA4BD,gEAAgE;AAChE,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAMD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,gBAuBrC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,gBAuB1C,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,0BAA0B,EAAE,cAAc,EAItD,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,+BAA+B,EAAE,cAAc,EAI3D,CAAC"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-Domain Transfer Evaluation Pipeline
|
|
3
|
+
* TLP:AMBER - Internal Use Only
|
|
4
|
+
*
|
|
5
|
+
* Implements the transfer evaluation contract and gate logic for
|
|
6
|
+
* cross-domain promotion of improvement proposals.
|
|
7
|
+
*
|
|
8
|
+
* Pipeline:
|
|
9
|
+
* 1. Evaluate proposal in source domain (caller's responsibility).
|
|
10
|
+
* 2. Call evaluateTransfer() to run target-domain evaluation.
|
|
11
|
+
* 3. Transfer is allowed only when score ≥ threshold AND regression
|
|
12
|
+
* budget is not exceeded.
|
|
13
|
+
*
|
|
14
|
+
* @module ai/metacognition/transfer
|
|
15
|
+
*/
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
// Transfer gate logic (task 3.2)
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
/**
|
|
20
|
+
* Evaluate whether an improvement proposal is transferable to a target domain.
|
|
21
|
+
*
|
|
22
|
+
* Algorithm:
|
|
23
|
+
* 1. For each benchmark in target domain, run evaluation via `runner`.
|
|
24
|
+
* 2. Compute delta vs baseline: negative delta = regression.
|
|
25
|
+
* 3. Check for blocking failures (regardless of aggregate score).
|
|
26
|
+
* 4. Compute regression fraction vs regression_budget.
|
|
27
|
+
* 5. Compute aggregate transfer score.
|
|
28
|
+
* 6. transferable = score_passed AND NOT budget_exceeded AND no blocking failures.
|
|
29
|
+
*
|
|
30
|
+
* @param input - Transfer evaluation configuration and baselines.
|
|
31
|
+
* @param runner - Domain-specific benchmark runner for the target domain.
|
|
32
|
+
*/
|
|
33
|
+
export async function evaluateTransfer(input, runner) {
|
|
34
|
+
if (runner.domain_id !== input.target_domain.domain_id) {
|
|
35
|
+
throw new TransferEvaluationError(`Runner domain "${runner.domain_id}" does not match target domain "${input.target_domain.domain_id}"`);
|
|
36
|
+
}
|
|
37
|
+
const scoreThreshold = input.score_threshold ?? input.proposal.evaluation_criteria.success_threshold;
|
|
38
|
+
const regressionBudget = input.regression_budget ?? input.proposal.evaluation_criteria.regression_budget;
|
|
39
|
+
const baselineMap = new Map();
|
|
40
|
+
for (const b of input.target_baseline) {
|
|
41
|
+
if (b.domain_id === input.target_domain.domain_id) {
|
|
42
|
+
baselineMap.set(b.benchmark_id, b.baseline_score);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const benchmarkResults = [];
|
|
46
|
+
const blockingFailures = [];
|
|
47
|
+
for (const bench of input.target_domain.benchmarks) {
|
|
48
|
+
const score = await runner.runBenchmark(bench.benchmark_id, input.proposal);
|
|
49
|
+
const baselineScore = baselineMap.get(bench.benchmark_id) ?? 0;
|
|
50
|
+
const delta = score - baselineScore;
|
|
51
|
+
const passed = score >= bench.pass_threshold;
|
|
52
|
+
benchmarkResults.push({
|
|
53
|
+
domain: input.target_domain.domain_id,
|
|
54
|
+
benchmark_id: bench.benchmark_id,
|
|
55
|
+
passed,
|
|
56
|
+
score,
|
|
57
|
+
baseline_score: baselineScore,
|
|
58
|
+
delta,
|
|
59
|
+
});
|
|
60
|
+
if (bench.blocking && !passed) {
|
|
61
|
+
blockingFailures.push(bench.benchmark_id);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const regressedCount = benchmarkResults.filter((r) => r.delta < 0).length;
|
|
65
|
+
const regressionFraction = benchmarkResults.length > 0 ? regressedCount / benchmarkResults.length : 0;
|
|
66
|
+
const regressionBudgetExceeded = regressionFraction > regressionBudget;
|
|
67
|
+
const transferScore = benchmarkResults.length > 0
|
|
68
|
+
? benchmarkResults.reduce((sum, r) => sum + r.score, 0) / benchmarkResults.length
|
|
69
|
+
: 0;
|
|
70
|
+
const scorePassed = transferScore >= scoreThreshold;
|
|
71
|
+
const transferable = scorePassed && !regressionBudgetExceeded && blockingFailures.length === 0;
|
|
72
|
+
return {
|
|
73
|
+
proposal_id: input.proposal.proposal_id,
|
|
74
|
+
source_domain_id: input.source_domain.domain_id,
|
|
75
|
+
target_domain_id: input.target_domain.domain_id,
|
|
76
|
+
evaluated_at: new Date().toISOString(),
|
|
77
|
+
transfer_score: transferScore,
|
|
78
|
+
score_threshold: scoreThreshold,
|
|
79
|
+
score_passed: scorePassed,
|
|
80
|
+
regression_budget_exceeded: regressionBudgetExceeded,
|
|
81
|
+
regression_fraction: regressionFraction,
|
|
82
|
+
transferable,
|
|
83
|
+
benchmark_results: benchmarkResults,
|
|
84
|
+
blocking_failures: blockingFailures,
|
|
85
|
+
decision_reason: buildDecisionReason(transferable, scorePassed, transferScore, scoreThreshold, regressionBudgetExceeded, regressionFraction, regressionBudget, blockingFailures),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function buildDecisionReason(transferable, scorePassed, score, threshold, budgetExceeded, regressionFraction, budget, blockingFailures) {
|
|
89
|
+
if (transferable) {
|
|
90
|
+
return `Transfer approved: score ${score.toFixed(3)} ≥ threshold ${threshold.toFixed(3)}, regression fraction ${regressionFraction.toFixed(3)} within budget.`;
|
|
91
|
+
}
|
|
92
|
+
const reasons = [];
|
|
93
|
+
if (!scorePassed) {
|
|
94
|
+
reasons.push(`score ${score.toFixed(3)} below threshold ${threshold.toFixed(3)}`);
|
|
95
|
+
}
|
|
96
|
+
if (budgetExceeded) {
|
|
97
|
+
reasons.push(`regression fraction ${regressionFraction.toFixed(3)} exceeds budget ${budget.toFixed(3)}`);
|
|
98
|
+
}
|
|
99
|
+
if (blockingFailures.length > 0) {
|
|
100
|
+
reasons.push(`blocking benchmarks failed: ${blockingFailures.join(', ')}`);
|
|
101
|
+
}
|
|
102
|
+
return `Transfer blocked: ${reasons.join('; ')}.`;
|
|
103
|
+
}
|
|
104
|
+
/** Thrown when transfer evaluation configuration is invalid. */
|
|
105
|
+
export class TransferEvaluationError extends Error {
|
|
106
|
+
constructor(message) {
|
|
107
|
+
super(message);
|
|
108
|
+
this.name = 'TransferEvaluationError';
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// ---------------------------------------------------------------------------
|
|
112
|
+
// Baseline benchmark fixtures (task 3.3)
|
|
113
|
+
// ---------------------------------------------------------------------------
|
|
114
|
+
/**
|
|
115
|
+
* Domain A: scoring_strategy
|
|
116
|
+
* Representative benchmarks for a scoring-weight policy domain.
|
|
117
|
+
*/
|
|
118
|
+
export const SCORING_STRATEGY_DOMAIN = {
|
|
119
|
+
domain_id: 'scoring_strategy',
|
|
120
|
+
name: 'Scoring Strategy',
|
|
121
|
+
benchmarks: [
|
|
122
|
+
{
|
|
123
|
+
benchmark_id: 'precision_at_k',
|
|
124
|
+
description: 'Precision at K for top-ranked results',
|
|
125
|
+
pass_threshold: 0.75,
|
|
126
|
+
blocking: false,
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
benchmark_id: 'recall_at_k',
|
|
130
|
+
description: 'Recall at K for top-ranked results',
|
|
131
|
+
pass_threshold: 0.70,
|
|
132
|
+
blocking: false,
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
benchmark_id: 'safety_gate',
|
|
136
|
+
description: 'Safety filter pass-rate — must not regress',
|
|
137
|
+
pass_threshold: 0.95,
|
|
138
|
+
blocking: true,
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* Domain B: delegation_thresholds
|
|
144
|
+
* Representative benchmarks for a delegation-threshold policy domain.
|
|
145
|
+
*/
|
|
146
|
+
export const DELEGATION_THRESHOLDS_DOMAIN = {
|
|
147
|
+
domain_id: 'delegation_thresholds',
|
|
148
|
+
name: 'Delegation Thresholds',
|
|
149
|
+
benchmarks: [
|
|
150
|
+
{
|
|
151
|
+
benchmark_id: 'approval_latency_p95',
|
|
152
|
+
description: 'P95 approval latency within SLA',
|
|
153
|
+
pass_threshold: 0.90,
|
|
154
|
+
blocking: false,
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
benchmark_id: 'false_positive_rate',
|
|
158
|
+
description: 'False positive approval rate below ceiling',
|
|
159
|
+
pass_threshold: 0.85,
|
|
160
|
+
blocking: false,
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
benchmark_id: 'security_boundary',
|
|
164
|
+
description: 'Security boundary enforcement — blocking gate',
|
|
165
|
+
pass_threshold: 1.0,
|
|
166
|
+
blocking: true,
|
|
167
|
+
},
|
|
168
|
+
],
|
|
169
|
+
};
|
|
170
|
+
/** Pre-measured baselines for the scoring_strategy domain. */
|
|
171
|
+
export const SCORING_STRATEGY_BASELINES = [
|
|
172
|
+
{ domain_id: 'scoring_strategy', benchmark_id: 'precision_at_k', baseline_score: 0.80, measured_at: '2026-01-01T00:00:00.000Z' },
|
|
173
|
+
{ domain_id: 'scoring_strategy', benchmark_id: 'recall_at_k', baseline_score: 0.75, measured_at: '2026-01-01T00:00:00.000Z' },
|
|
174
|
+
{ domain_id: 'scoring_strategy', benchmark_id: 'safety_gate', baseline_score: 0.98, measured_at: '2026-01-01T00:00:00.000Z' },
|
|
175
|
+
];
|
|
176
|
+
/** Pre-measured baselines for the delegation_thresholds domain. */
|
|
177
|
+
export const DELEGATION_THRESHOLDS_BASELINES = [
|
|
178
|
+
{ domain_id: 'delegation_thresholds', benchmark_id: 'approval_latency_p95', baseline_score: 0.92, measured_at: '2026-01-01T00:00:00.000Z' },
|
|
179
|
+
{ domain_id: 'delegation_thresholds', benchmark_id: 'false_positive_rate', baseline_score: 0.88, measured_at: '2026-01-01T00:00:00.000Z' },
|
|
180
|
+
{ domain_id: 'delegation_thresholds', benchmark_id: 'security_boundary', baseline_score: 1.0, measured_at: '2026-01-01T00:00:00.000Z' },
|
|
181
|
+
];
|
|
182
|
+
//# sourceMappingURL=transfer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../../packages/ai/metacognition/transfer.ts"],"names":[],"mappings":"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"}
|