@principles/core 1.218.0 → 1.219.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.
- package/dist/runtime-v2/__tests__/architecture-regression.test.js +14 -2
- package/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/pain-to-principle-service.test.js +1 -0
- package/dist/runtime-v2/__tests__/pain-to-principle-service.test.js.map +1 -1
- package/dist/runtime-v2/config/__tests__/internal-agent-names.test.d.ts +2 -0
- package/dist/runtime-v2/config/__tests__/internal-agent-names.test.d.ts.map +1 -0
- package/dist/runtime-v2/config/__tests__/internal-agent-names.test.js +15 -0
- package/dist/runtime-v2/config/__tests__/internal-agent-names.test.js.map +1 -0
- package/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js +7 -0
- package/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js.map +1 -1
- package/dist/runtime-v2/config/__tests__/pd-config-contract.test.js +1 -0
- package/dist/runtime-v2/config/__tests__/pd-config-contract.test.js.map +1 -1
- package/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.js +1 -0
- package/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.js.map +1 -1
- package/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js +1 -0
- package/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js.map +1 -1
- package/dist/runtime-v2/config/pd-config-defaults.d.ts.map +1 -1
- package/dist/runtime-v2/config/pd-config-defaults.js +1 -0
- package/dist/runtime-v2/config/pd-config-defaults.js.map +1 -1
- package/dist/runtime-v2/config/pd-config-types.d.ts +1 -1
- package/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -1
- package/dist/runtime-v2/config/pd-config-types.js +1 -0
- package/dist/runtime-v2/config/pd-config-types.js.map +1 -1
- package/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
- package/dist/runtime-v2/feature-flags/feature-flag-contract.js +1 -0
- package/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
- package/dist/runtime-v2/index.d.ts +2 -0
- package/dist/runtime-v2/index.d.ts.map +1 -1
- package/dist/runtime-v2/index.js +2 -0
- package/dist/runtime-v2/index.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js +1 -0
- package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js.map +1 -1
- package/dist/runtime-v2/signal-collector/__tests__/keyword-stage.test.d.ts +2 -0
- package/dist/runtime-v2/signal-collector/__tests__/keyword-stage.test.d.ts.map +1 -0
- package/dist/runtime-v2/signal-collector/__tests__/keyword-stage.test.js +39 -0
- package/dist/runtime-v2/signal-collector/__tests__/keyword-stage.test.js.map +1 -0
- package/dist/runtime-v2/signal-collector/__tests__/llm-stage.test.d.ts +2 -0
- package/dist/runtime-v2/signal-collector/__tests__/llm-stage.test.d.ts.map +1 -0
- package/dist/runtime-v2/signal-collector/__tests__/llm-stage.test.js +34 -0
- package/dist/runtime-v2/signal-collector/__tests__/llm-stage.test.js.map +1 -0
- package/dist/runtime-v2/signal-collector/__tests__/signal-collector.test.d.ts +2 -0
- package/dist/runtime-v2/signal-collector/__tests__/signal-collector.test.d.ts.map +1 -0
- package/dist/runtime-v2/signal-collector/__tests__/signal-collector.test.js +71 -0
- package/dist/runtime-v2/signal-collector/__tests__/signal-collector.test.js.map +1 -0
- package/dist/runtime-v2/signal-collector/__tests__/types.test.d.ts +2 -0
- package/dist/runtime-v2/signal-collector/__tests__/types.test.d.ts.map +1 -0
- package/dist/runtime-v2/signal-collector/__tests__/types.test.js +35 -0
- package/dist/runtime-v2/signal-collector/__tests__/types.test.js.map +1 -0
- package/dist/runtime-v2/signal-collector/index.d.ts +5 -0
- package/dist/runtime-v2/signal-collector/index.d.ts.map +1 -0
- package/dist/runtime-v2/signal-collector/index.js +5 -0
- package/dist/runtime-v2/signal-collector/index.js.map +1 -0
- package/dist/runtime-v2/signal-collector/keyword-stage.d.ts +20 -0
- package/dist/runtime-v2/signal-collector/keyword-stage.d.ts.map +1 -0
- package/dist/runtime-v2/signal-collector/keyword-stage.js +61 -0
- package/dist/runtime-v2/signal-collector/keyword-stage.js.map +1 -0
- package/dist/runtime-v2/signal-collector/llm-stage.d.ts +16 -0
- package/dist/runtime-v2/signal-collector/llm-stage.d.ts.map +1 -0
- package/dist/runtime-v2/signal-collector/llm-stage.js +34 -0
- package/dist/runtime-v2/signal-collector/llm-stage.js.map +1 -0
- package/dist/runtime-v2/signal-collector/signal-collector.d.ts +16 -0
- package/dist/runtime-v2/signal-collector/signal-collector.d.ts.map +1 -0
- package/dist/runtime-v2/signal-collector/signal-collector.js +71 -0
- package/dist/runtime-v2/signal-collector/signal-collector.js.map +1 -0
- package/dist/runtime-v2/signal-collector/types.d.ts +61 -0
- package/dist/runtime-v2/signal-collector/types.d.ts.map +1 -0
- package/dist/runtime-v2/signal-collector/types.js +45 -0
- package/dist/runtime-v2/signal-collector/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { scanKeywords } from './keyword-stage.js';
|
|
2
|
+
const MAX_EXCERPT = 200;
|
|
3
|
+
export function buildEvidence(text, detectedAt) {
|
|
4
|
+
const excerpt = text.length > MAX_EXCERPT ? text.slice(0, MAX_EXCERPT) : text;
|
|
5
|
+
return { excerpt, detectedAt };
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* 同步阶段(prompt hook 内调用,绝不阻塞):Stage1 关键词快扫。
|
|
9
|
+
* - high 精度命中 → 直接返回 final output(needsLlmConfirmation=false)
|
|
10
|
+
* - ambiguous / 未命中 → 返回 pending output(needsLlmConfirmation 取决于 enableLlmStage)
|
|
11
|
+
* 由 plugin 层异步调 mapLlmResultToOutput 完成 Stage2。
|
|
12
|
+
*
|
|
13
|
+
* 注意:这个函数不调 LLM。LLM 在 plugin 层。
|
|
14
|
+
*/
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/max-params -- positional API for plugin-layer call sites (text, sessionId, store, config)
|
|
16
|
+
export function collectSync(text, sessionId, store, config, detectedAt) {
|
|
17
|
+
void sessionId;
|
|
18
|
+
const scan = scanKeywords(text, store);
|
|
19
|
+
const evidence = buildEvidence(text, detectedAt);
|
|
20
|
+
if (scan.matched && scan.matchedPrecision === 'high' && scan.suggestedType) {
|
|
21
|
+
return {
|
|
22
|
+
isSignal: true,
|
|
23
|
+
type: scan.suggestedType,
|
|
24
|
+
strength: scan.suggestedType === 'correction' ? 'STRONG' : 'WEAK',
|
|
25
|
+
matchedTerms: scan.matchedTerms,
|
|
26
|
+
matchedPrecision: 'high',
|
|
27
|
+
detectionSource: 'keyword',
|
|
28
|
+
needsLlmConfirmation: false,
|
|
29
|
+
evidence,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
// CodeRabbit #12: LLM 阶段关闭时,needsLlmConfirmation 应为 false(不会发生二阶段确认)
|
|
33
|
+
return {
|
|
34
|
+
isSignal: false,
|
|
35
|
+
type: null,
|
|
36
|
+
strength: null,
|
|
37
|
+
matchedTerms: scan.matchedTerms,
|
|
38
|
+
matchedPrecision: scan.matchedPrecision,
|
|
39
|
+
detectionSource: 'none',
|
|
40
|
+
needsLlmConfirmation: config.enableLlmStage,
|
|
41
|
+
evidence,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Stage2(异步,plugin 层拿到 LLM 结果后调用):把 LLM 分类映射成 final output。
|
|
46
|
+
*/
|
|
47
|
+
// eslint-disable-next-line @typescript-eslint/max-params -- positional API: (llm, text, sessionId, config)
|
|
48
|
+
export function mapLlmResultToOutput(llm, text, _sessionId, _config, detectedAt) {
|
|
49
|
+
void _sessionId;
|
|
50
|
+
void _config;
|
|
51
|
+
const evidence = buildEvidence(text, detectedAt);
|
|
52
|
+
if (!llm.is_feedback || llm.type === 'none') {
|
|
53
|
+
return {
|
|
54
|
+
isSignal: false, type: null, strength: null, matchedTerms: [],
|
|
55
|
+
matchedPrecision: null, detectionSource: 'llm', needsLlmConfirmation: false,
|
|
56
|
+
llmReason: llm.reason, evidence,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
isSignal: true,
|
|
61
|
+
type: llm.type,
|
|
62
|
+
strength: llm.type === 'correction' ? 'STRONG' : 'WEAK',
|
|
63
|
+
matchedTerms: [],
|
|
64
|
+
matchedPrecision: null,
|
|
65
|
+
detectionSource: 'llm',
|
|
66
|
+
needsLlmConfirmation: false,
|
|
67
|
+
llmReason: llm.reason,
|
|
68
|
+
evidence,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=signal-collector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-collector.js","sourceRoot":"","sources":["../../../src/runtime-v2/signal-collector/signal-collector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,UAAkB;IAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACjC,CAAC;AAED;;;;;;;GAOG;AACH,wIAAwI;AACxI,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,SAAiB,EACjB,KAA0B,EAC1B,MAA6B,EAC7B,UAAkB;IAElB,KAAK,SAAS,CAAC;IACf,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAEjD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,KAAK,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3E,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,IAAI,CAAC,aAAa;YACxB,QAAQ,EAAE,IAAI,CAAC,aAAa,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;YACjE,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,gBAAgB,EAAE,MAAM;YACxB,eAAe,EAAE,SAAS;YAC1B,oBAAoB,EAAE,KAAK;YAC3B,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,qEAAqE;IACrE,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,eAAe,EAAE,MAAM;QACvB,oBAAoB,EAAE,MAAM,CAAC,cAAc;QAC3C,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,2GAA2G;AAC3G,MAAM,UAAU,oBAAoB,CAClC,GAA4B,EAC5B,IAAY,EACZ,UAAkB,EAClB,OAA8B,EAC9B,UAAkB;IAElB,KAAK,UAAU,CAAC;IAChB,KAAK,OAAO,CAAC;IACb,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAEjD,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5C,OAAO;YACL,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE;YAC7D,gBAAgB,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK;YAC3E,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ;SAChC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,QAAQ,EAAE,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;QACvD,YAAY,EAAE,EAAE;QAChB,gBAAgB,EAAE,IAAI;QACtB,eAAe,EAAE,KAAK;QACtB,oBAAoB,EAAE,KAAK;QAC3B,SAAS,EAAE,GAAG,CAAC,MAAM;QACrB,QAAQ;KACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export type KeywordCategory = 'correction' | 'empathy';
|
|
2
|
+
export type TermSource = 'seed' | 'migrated' | 'owner_promoted';
|
|
3
|
+
export interface UnifiedKeyword {
|
|
4
|
+
term: string;
|
|
5
|
+
category: KeywordCategory;
|
|
6
|
+
weight: number;
|
|
7
|
+
precision: 'high' | 'ambiguous';
|
|
8
|
+
source: TermSource;
|
|
9
|
+
}
|
|
10
|
+
export interface UnifiedKeywordStore {
|
|
11
|
+
version: number;
|
|
12
|
+
terms: Record<string, UnifiedKeyword>;
|
|
13
|
+
}
|
|
14
|
+
export interface PendingTerm {
|
|
15
|
+
term: string;
|
|
16
|
+
suggestedCategory: KeywordCategory;
|
|
17
|
+
suggestedPrecision: 'high' | 'ambiguous';
|
|
18
|
+
reason: string;
|
|
19
|
+
discoveredAt: string;
|
|
20
|
+
source: 'llm_candidate';
|
|
21
|
+
}
|
|
22
|
+
export interface PendingTermStore {
|
|
23
|
+
version: number;
|
|
24
|
+
terms: PendingTerm[];
|
|
25
|
+
}
|
|
26
|
+
export interface SignalCollectorConfig {
|
|
27
|
+
enableLlmStage: boolean;
|
|
28
|
+
llmTimeoutMs: number;
|
|
29
|
+
promptTemplate: string;
|
|
30
|
+
strongPainScore: number;
|
|
31
|
+
strongRateLimitPerHour: number;
|
|
32
|
+
}
|
|
33
|
+
export type SignalStrength = 'STRONG' | 'WEAK';
|
|
34
|
+
export type DetectionSource = 'keyword' | 'llm' | 'none';
|
|
35
|
+
export type MatchedPrecision = 'high' | 'ambiguous' | null;
|
|
36
|
+
export interface SignalEvidence {
|
|
37
|
+
excerpt: string;
|
|
38
|
+
detectedAt: string;
|
|
39
|
+
}
|
|
40
|
+
export interface SignalCollectorOutput {
|
|
41
|
+
isSignal: boolean;
|
|
42
|
+
type: 'correction' | 'empathy' | null;
|
|
43
|
+
strength: SignalStrength | null;
|
|
44
|
+
matchedTerms: string[];
|
|
45
|
+
matchedPrecision: MatchedPrecision;
|
|
46
|
+
detectionSource: DetectionSource;
|
|
47
|
+
needsLlmConfirmation: boolean;
|
|
48
|
+
llmReason?: string;
|
|
49
|
+
evidence: SignalEvidence;
|
|
50
|
+
}
|
|
51
|
+
export declare const SignalCollectorOutputSchema: {
|
|
52
|
+
validate(value: unknown): value is SignalCollectorOutput;
|
|
53
|
+
};
|
|
54
|
+
export interface LlmClassificationResult {
|
|
55
|
+
is_feedback: boolean;
|
|
56
|
+
type: 'correction' | 'empathy' | 'none';
|
|
57
|
+
confidence: number;
|
|
58
|
+
reason: string;
|
|
59
|
+
}
|
|
60
|
+
export declare function validateLlmClassification(value: unknown): value is LlmClassificationResult;
|
|
61
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/signal-collector/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,SAAS,CAAC;AACvD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,gBAAgB,CAAC;AAEhE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC;IAChC,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACvC;AAID,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,eAAe,CAAC;IACnC,kBAAkB,EAAE,MAAM,GAAG,WAAW,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAID,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC;AAC/C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;AACzD,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,CAAC;IACtC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,eAAe,EAAE,eAAe,CAAC;IACjC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAID,eAAO,MAAM,2BAA2B;oBACtB,OAAO,GAAG,KAAK,IAAI,qBAAqB;CAgBzD,CAAC;AAIF,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,uBAAuB,CAQ1F"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// ── Unified Keyword Store (合并后的统一词库,纯数据) ──
|
|
2
|
+
// ── TypeBox Schema (用于校验, ERR-001 防御) ──
|
|
3
|
+
export const SignalCollectorOutputSchema = {
|
|
4
|
+
validate(value) {
|
|
5
|
+
if (typeof value !== 'object' || value === null)
|
|
6
|
+
return false;
|
|
7
|
+
const v = value;
|
|
8
|
+
if (typeof v.isSignal !== 'boolean')
|
|
9
|
+
return false;
|
|
10
|
+
if (v.type !== null && v.type !== 'correction' && v.type !== 'empathy')
|
|
11
|
+
return false;
|
|
12
|
+
if (v.strength !== null && v.strength !== 'STRONG' && v.strength !== 'WEAK')
|
|
13
|
+
return false;
|
|
14
|
+
if (!Array.isArray(v.matchedTerms))
|
|
15
|
+
return false;
|
|
16
|
+
if (v.matchedPrecision !== null && v.matchedPrecision !== 'high' && v.matchedPrecision !== 'ambiguous')
|
|
17
|
+
return false;
|
|
18
|
+
if (v.detectionSource !== 'keyword' && v.detectionSource !== 'llm' && v.detectionSource !== 'none')
|
|
19
|
+
return false;
|
|
20
|
+
if (typeof v.needsLlmConfirmation !== 'boolean')
|
|
21
|
+
return false;
|
|
22
|
+
const ev = v.evidence;
|
|
23
|
+
if (typeof ev !== 'object' || ev === null)
|
|
24
|
+
return false;
|
|
25
|
+
const e = ev;
|
|
26
|
+
if (typeof e.excerpt !== 'string' || typeof e.detectedAt !== 'string')
|
|
27
|
+
return false;
|
|
28
|
+
return true;
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
export function validateLlmClassification(value) {
|
|
32
|
+
if (typeof value !== 'object' || value === null)
|
|
33
|
+
return false;
|
|
34
|
+
const v = value;
|
|
35
|
+
if (typeof v.is_feedback !== 'boolean')
|
|
36
|
+
return false;
|
|
37
|
+
if (v.type !== 'correction' && v.type !== 'empathy' && v.type !== 'none')
|
|
38
|
+
return false;
|
|
39
|
+
if (typeof v.confidence !== 'number' || v.confidence < 0 || v.confidence > 1)
|
|
40
|
+
return false;
|
|
41
|
+
if (typeof v.reason !== 'string')
|
|
42
|
+
return false;
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/runtime-v2/signal-collector/types.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAiE7C,0CAA0C;AAE1C,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,QAAQ,CAAC,KAAc;QACrB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAC9D,MAAM,CAAC,GAAG,KAAgC,CAAC;QAC3C,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAClD,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACrF,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;YAAE,OAAO,KAAK,CAAC;QACjD,IAAI,CAAC,CAAC,gBAAgB,KAAK,IAAI,IAAI,CAAC,CAAC,gBAAgB,KAAK,MAAM,IAAI,CAAC,CAAC,gBAAgB,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QACrH,IAAI,CAAC,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,CAAC,eAAe,KAAK,KAAK,IAAI,CAAC,CAAC,eAAe,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC;QACjH,IAAI,OAAO,CAAC,CAAC,oBAAoB,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC9D,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC;QACtB,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QACxD,MAAM,CAAC,GAAG,EAA6B,CAAC;QACxC,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACpF,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC;AAWF,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACrD,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACvF,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3F,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC"}
|