@principles/core 3.0.0 → 4.0.1

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 (121) hide show
  1. package/dist/host/host-installer.d.ts +15 -0
  2. package/dist/host/host-installer.d.ts.map +1 -1
  3. package/dist/host/host-installer.js.map +1 -1
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +1 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/prompt-builder/index.d.ts +0 -1
  9. package/dist/prompt-builder/index.d.ts.map +1 -1
  10. package/dist/prompt-builder/index.js +0 -1
  11. package/dist/prompt-builder/index.js.map +1 -1
  12. package/dist/runtime-v2/adapter/output-schema-registry.js +2 -2
  13. package/dist/runtime-v2/control-plane-triage.d.ts +1 -1
  14. package/dist/runtime-v2/control-plane-triage.d.ts.map +1 -1
  15. package/dist/runtime-v2/control-plane-triage.js +0 -15
  16. package/dist/runtime-v2/control-plane-triage.js.map +1 -1
  17. package/dist/runtime-v2/evidence-triage/observation-resolver.d.ts +3 -6
  18. package/dist/runtime-v2/evidence-triage/observation-resolver.d.ts.map +1 -1
  19. package/dist/runtime-v2/evidence-triage/observation-resolver.js +5 -10
  20. package/dist/runtime-v2/evidence-triage/observation-resolver.js.map +1 -1
  21. package/dist/runtime-v2/evidence-triage/source-descriptors.d.ts +2 -1
  22. package/dist/runtime-v2/evidence-triage/source-descriptors.d.ts.map +1 -1
  23. package/dist/runtime-v2/evidence-triage/source-descriptors.js +3 -8
  24. package/dist/runtime-v2/evidence-triage/source-descriptors.js.map +1 -1
  25. package/dist/runtime-v2/evidence-triage/types.d.ts +1 -1
  26. package/dist/runtime-v2/evidence-triage/types.d.ts.map +1 -1
  27. package/dist/runtime-v2/evidence-triage/types.js +0 -1
  28. package/dist/runtime-v2/evidence-triage/types.js.map +1 -1
  29. package/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
  30. package/dist/runtime-v2/feature-flags/feature-flag-contract.js +5 -2
  31. package/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
  32. package/dist/runtime-v2/feature-flags/feature-flag-lifecycle.d.ts.map +1 -1
  33. package/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js +5 -10
  34. package/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js.map +1 -1
  35. package/dist/runtime-v2/golden-trace.d.ts.map +1 -1
  36. package/dist/runtime-v2/golden-trace.js +0 -1
  37. package/dist/runtime-v2/golden-trace.js.map +1 -1
  38. package/dist/runtime-v2/index.d.ts +5 -9
  39. package/dist/runtime-v2/index.d.ts.map +1 -1
  40. package/dist/runtime-v2/index.js +4 -8
  41. package/dist/runtime-v2/index.js.map +1 -1
  42. package/dist/runtime-v2/internalization/artificer-run-correlation.d.ts +1 -1
  43. package/dist/runtime-v2/internalization/artificer-run-correlation.js +1 -1
  44. package/dist/runtime-v2/internalization/consumer-evidence-preflight.d.ts +1 -1
  45. package/dist/runtime-v2/internalization/evidence-readiness.js +1 -1
  46. package/dist/runtime-v2/internalization/owner-evidence-recovery.d.ts +1 -1
  47. package/dist/runtime-v2/internalization/rule-host-contracts.d.ts +0 -1
  48. package/dist/runtime-v2/internalization/rule-host-contracts.d.ts.map +1 -1
  49. package/dist/runtime-v2/operator-health-read-model.d.ts +0 -2
  50. package/dist/runtime-v2/operator-health-read-model.d.ts.map +1 -1
  51. package/dist/runtime-v2/operator-health-read-model.js +1 -55
  52. package/dist/runtime-v2/operator-health-read-model.js.map +1 -1
  53. package/dist/runtime-v2/pain-recall-capability.d.ts.map +1 -1
  54. package/dist/runtime-v2/pain-recall-capability.js +53 -2
  55. package/dist/runtime-v2/pain-recall-capability.js.map +1 -1
  56. package/dist/runtime-v2/pain-recall-read-model.d.ts.map +1 -1
  57. package/dist/runtime-v2/pain-recall-read-model.js +60 -5
  58. package/dist/runtime-v2/pain-recall-read-model.js.map +1 -1
  59. package/dist/runtime-v2/principle-reuse/reuse-domain.d.ts +1 -1
  60. package/dist/runtime-v2/principle-reuse/reuse-domain.js +1 -1
  61. package/dist/runtime-v2/principle-reuse/reuse-proposal.d.ts +1 -1
  62. package/dist/runtime-v2/principle-reuse/reuse-proposal.js +1 -1
  63. package/dist/runtime-v2/principle-reuse/reuse-retrieval.d.ts +1 -1
  64. package/dist/runtime-v2/principle-reuse/reuse-retrieval.js +1 -1
  65. package/dist/runtime-v2/signal-collector/confidence-gate.d.ts +1 -5
  66. package/dist/runtime-v2/signal-collector/confidence-gate.d.ts.map +1 -1
  67. package/dist/runtime-v2/signal-collector/confidence-gate.js +0 -9
  68. package/dist/runtime-v2/signal-collector/confidence-gate.js.map +1 -1
  69. package/dist/runtime-v2/signal-collector/keyword-stage.d.ts +2 -2
  70. package/dist/runtime-v2/signal-collector/keyword-stage.d.ts.map +1 -1
  71. package/dist/runtime-v2/signal-collector/keyword-stage.js +41 -10
  72. package/dist/runtime-v2/signal-collector/keyword-stage.js.map +1 -1
  73. package/dist/runtime-v2/signal-collector/llm-stage.d.ts +1 -1
  74. package/dist/runtime-v2/signal-collector/llm-stage.d.ts.map +1 -1
  75. package/dist/runtime-v2/signal-collector/llm-stage.js +3 -4
  76. package/dist/runtime-v2/signal-collector/llm-stage.js.map +1 -1
  77. package/dist/runtime-v2/signal-collector/signal-collector.js +4 -4
  78. package/dist/runtime-v2/signal-collector/signal-collector.js.map +1 -1
  79. package/dist/runtime-v2/signal-collector/types.d.ts +6 -8
  80. package/dist/runtime-v2/signal-collector/types.d.ts.map +1 -1
  81. package/dist/runtime-v2/signal-collector/types.js +6 -6
  82. package/dist/runtime-v2/signal-collector/types.js.map +1 -1
  83. package/dist/runtime-v2/trajectory-schema.d.ts +25 -5
  84. package/dist/runtime-v2/trajectory-schema.d.ts.map +1 -1
  85. package/dist/runtime-v2/trajectory-schema.js +58 -2
  86. package/dist/runtime-v2/trajectory-schema.js.map +1 -1
  87. package/dist/runtime-v2/types/event-types.d.ts +0 -35
  88. package/dist/runtime-v2/types/event-types.d.ts.map +1 -1
  89. package/dist/runtime-v2/types/event-types.js +0 -19
  90. package/dist/runtime-v2/types/event-types.js.map +1 -1
  91. package/dist/runtime-v2/types/index.d.ts +2 -2
  92. package/dist/runtime-v2/types/index.d.ts.map +1 -1
  93. package/dist/runtime-v2/types/index.js +1 -1
  94. package/dist/runtime-v2/types/index.js.map +1 -1
  95. package/dist/trajectory-types.d.ts +0 -2
  96. package/dist/trajectory-types.d.ts.map +1 -1
  97. package/package.json +2 -2
  98. package/dist/prompt-builder/attitude-directive.d.ts +0 -7
  99. package/dist/prompt-builder/attitude-directive.d.ts.map +0 -1
  100. package/dist/prompt-builder/attitude-directive.js +0 -39
  101. package/dist/prompt-builder/attitude-directive.js.map +0 -1
  102. package/dist/runtime-v2/gfi/gfi-kernel.d.ts +0 -12
  103. package/dist/runtime-v2/gfi/gfi-kernel.d.ts.map +0 -1
  104. package/dist/runtime-v2/gfi/gfi-kernel.js +0 -148
  105. package/dist/runtime-v2/gfi/gfi-kernel.js.map +0 -1
  106. package/dist/runtime-v2/gfi/gfi-policy.d.ts +0 -3
  107. package/dist/runtime-v2/gfi/gfi-policy.d.ts.map +0 -1
  108. package/dist/runtime-v2/gfi/gfi-policy.js +0 -23
  109. package/dist/runtime-v2/gfi/gfi-policy.js.map +0 -1
  110. package/dist/runtime-v2/gfi/gfi-read-model.d.ts +0 -78
  111. package/dist/runtime-v2/gfi/gfi-read-model.d.ts.map +0 -1
  112. package/dist/runtime-v2/gfi/gfi-read-model.js +0 -129
  113. package/dist/runtime-v2/gfi/gfi-read-model.js.map +0 -1
  114. package/dist/runtime-v2/gfi/gfi-types.d.ts +0 -70
  115. package/dist/runtime-v2/gfi/gfi-types.d.ts.map +0 -1
  116. package/dist/runtime-v2/gfi/gfi-types.js +0 -2
  117. package/dist/runtime-v2/gfi/gfi-types.js.map +0 -1
  118. package/dist/runtime-v2/gfi/index.d.ts +0 -6
  119. package/dist/runtime-v2/gfi/index.d.ts.map +0 -1
  120. package/dist/runtime-v2/gfi/index.js +0 -4
  121. package/dist/runtime-v2/gfi/index.js.map +0 -1
@@ -1,10 +1,10 @@
1
- import type { UnifiedKeywordStore, KeywordCategory, MatchedPrecision } from './types.js';
1
+ import type { UnifiedKeywordStore, MatchedPrecision } from './types.js';
2
2
  export interface KeywordScanResult {
3
3
  matched: boolean;
4
4
  matchedTerms: string[];
5
5
  matchedPrecision: MatchedPrecision;
6
6
  needsLlmConfirmation: boolean;
7
- suggestedType: KeywordCategory | null;
7
+ suggestedType: 'correction' | null;
8
8
  }
9
9
  /**
10
10
  * Stage 1: 同步关键词快扫。零成本,纯函数。
@@ -1 +1 @@
1
- {"version":3,"file":"keyword-stage.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/signal-collector/keyword-stage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEzF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,aAAa,EAAE,eAAe,GAAG,IAAI,CAAC;CACvC;AAwGD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,iBAAiB,CAmExF"}
1
+ {"version":3,"file":"keyword-stage.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/signal-collector/keyword-stage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAExE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;CACpC;AA6ID;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,iBAAiB,CA+DxF"}
@@ -9,8 +9,12 @@ const QUOTE_PAIRS = [
9
9
  const CLAUSE_BOUNDARIES = new Set([
10
10
  '。', '!', '?', ';', '\n', ',', '、', ':', ':', ';', ',', '!', '?', '.',
11
11
  ]);
12
+ /** 句末边界:条件语境的跨小句回溯只在本句内,不跨句。 */
13
+ const SENTENCE_BOUNDARIES = new Set(['。', '!', '?', '\n']);
12
14
  const THIRD_PERSON_PREFIX = /(?:他|她|它|有人|别人|旁人|同事|朋友|领导|客户|网友|用户)(?:说|说过|称|提到|认为|表示)|(?:文档|注释|日志|报错|错误信息|README)(?:里|上面|中)?(?:说|写着|写道|提到)|(?:据说|听说)/u;
13
15
  const NEGATION_ENDING = /(?:并不是|不是|没有|没|别|不|非)$/u;
16
+ /** 假设/条件标记必须位于当前小句句首:`要不是这是错的` 不构成假设语境。 */
17
+ const HYPOTHETICAL_PREFIX = /^(?:如果|假如|要是|假设|万一)/u;
14
18
  const PRONOUN_ENDING = /(?:我|你|他|她|我们|你们|他们|并|也|都|就|可|但|而|却|还|又)$/u;
15
19
  const NEGATION_INITIAL_TERM = /^(?:不是|没|没有|别让)/u;
16
20
  function findQuotedRanges(text) {
@@ -40,6 +44,12 @@ function clausePrefix(text, index) {
40
44
  start -= 1;
41
45
  return text.slice(start, index);
42
46
  }
47
+ function sentenceStartIndex(text, index) {
48
+ let start = index;
49
+ while (start > 0 && !SENTENCE_BOUNDARIES.has(text[start - 1] ?? ''))
50
+ start -= 1;
51
+ return start;
52
+ }
43
53
  function hasThirdPersonPrefix(prefix) {
44
54
  return THIRD_PERSON_PREFIX.test(prefix);
45
55
  }
@@ -49,6 +59,27 @@ function hasNegationPrefix(prefix, term) {
49
59
  // 「我不是让你」「我没让你」:否定词是命中词自身的一部分,前置人称/副词才构成否定语境。
50
60
  return PRONOUN_ENDING.test(prefix) && NEGATION_INITIAL_TERM.test(term);
51
61
  }
62
+ function hasHypotheticalPrefix(prefix) {
63
+ return HYPOTHETICAL_PREFIX.test(prefix);
64
+ }
65
+ /**
66
+ * 中文条件复句里,条件约束整句:同一句内、命中词之前只要有一个小句以假设/条件
67
+ * 标记开头,命中词就处在条件语境中。只在本句内回溯(句末标点切断),所以
68
+ * `如果方向反了。这是错的` 不受影响;`这是错的,如果要改就改`(纠正在前、
69
+ * 条件在后)也不受影响。
70
+ */
71
+ function hasHypotheticalClauseInSentence(text, index) {
72
+ const sentenceStart = sentenceStartIndex(text, index);
73
+ let clauseStart = sentenceStart;
74
+ for (let i = sentenceStart; i < index; i += 1) {
75
+ if (!CLAUSE_BOUNDARIES.has(text[i] ?? ''))
76
+ continue;
77
+ if (hasHypotheticalPrefix(text.slice(clauseStart, i)))
78
+ return true;
79
+ clauseStart = i + 1;
80
+ }
81
+ return false;
82
+ }
52
83
  function findOccurrences(haystack, needle) {
53
84
  const positions = [];
54
85
  if (needle.length === 0)
@@ -73,6 +104,10 @@ function classifyHighOccurrence(normalizedText, term, occurrence) {
73
104
  return 'downgraded';
74
105
  if (hasNegationPrefix(prefix, term))
75
106
  return 'downgraded';
107
+ if (hasHypotheticalPrefix(prefix))
108
+ return 'downgraded';
109
+ if (hasHypotheticalClauseInSentence(normalizedText, index))
110
+ return 'downgraded';
76
111
  return 'strong';
77
112
  }
78
113
  /**
@@ -100,15 +135,12 @@ export function scanKeywords(text, store) {
100
135
  .map((index) => classifyHighOccurrence(normalized, lowered, { index, quotedRanges }));
101
136
  const strong = dispositions.includes('strong');
102
137
  if (strong) {
103
- // CodeRabbit #10: 不 break,遍历所有 high 命中,correction 优先于 empathy
104
- // (避免结果依赖 terms 对象的键插入顺序)
105
- if (!highHit || kw.category === 'correction') {
106
- highHit = { term, category: kw.category };
107
- }
138
+ // 不 break,遍历所有 high 命中。
139
+ highHit = { term };
108
140
  }
109
141
  else if (dispositions.includes('downgraded')) {
110
142
  // 第三人称/否定语境命中仍是候选,但必须经 Stage 2 确认。
111
- ambiguousHits.push({ term, category: kw.category });
143
+ ambiguousHits.push({ term });
112
144
  }
113
145
  // quoted-only: 不进入任何结果(引号内不单独构成信号,也不消耗候选)。
114
146
  continue;
@@ -119,7 +151,7 @@ export function scanKeywords(text, store) {
119
151
  const hasOutsideQuotes = findOccurrences(normalized, lowered)
120
152
  .some((index) => !isInsideQuotes(index, index + lowered.length, quotedRanges));
121
153
  if (hasOutsideQuotes) {
122
- ambiguousHits.push({ term, category: kw.category });
154
+ ambiguousHits.push({ term });
123
155
  }
124
156
  }
125
157
  if (highHit) {
@@ -128,17 +160,16 @@ export function scanKeywords(text, store) {
128
160
  matchedTerms: [highHit.term],
129
161
  matchedPrecision: 'high',
130
162
  needsLlmConfirmation: false,
131
- suggestedType: highHit.category,
163
+ suggestedType: 'correction',
132
164
  };
133
165
  }
134
166
  if (ambiguousHits.length > 0) {
135
- const [first] = ambiguousHits;
136
167
  return {
137
168
  matched: true,
138
169
  matchedTerms: ambiguousHits.map((h) => h.term),
139
170
  matchedPrecision: 'ambiguous',
140
171
  needsLlmConfirmation: true,
141
- suggestedType: first ? first.category : null,
172
+ suggestedType: 'correction',
142
173
  };
143
174
  }
144
175
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"keyword-stage.js","sourceRoot":"","sources":["../../../src/runtime-v2/signal-collector/keyword-stage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keyword-stage.js","sourceRoot":"","sources":["../../../src/runtime-v2/signal-collector/keyword-stage.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@ export interface PayloadResolveResult {
28
28
  * 解析 RuntimeAdapter fetchOutput 的 payload 为分类结果。
29
29
  *
30
30
  * Canonical path 是 structured object(分类器以 outputSchemaRef 请求
31
- * signal-classification-output-v1,adapter 完成 JSON extraction + schema
31
+ * signal-classification-output-v2,adapter 完成 JSON extraction + schema
32
32
  * validation + bounded repair)。string / {output: string} 仅是未实现 schema
33
33
  * ref 的 adapter 的 compatibility fallback——消费侧仍对 unknown payload 做
34
34
  * 类型守卫(rc-1/rc-2,纵深防御: producer contract 不替代 consumer 校验)。
@@ -1 +1 @@
1
- {"version":3,"file":"llm-stage.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/signal-collector/llm-stage.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErF;;;GAGG;AACH,eAAO,MAAM,+BAA+B,6EAAiB,CAAC;AAE9D;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAW1D;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAU/D;AAID,MAAM,MAAM,qBAAqB,GAC7B,YAAY,GACZ,eAAe,GACf,iBAAiB,GACjB,SAAS,CAAC;AAEd,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAAC;CACvC;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,CAetF"}
1
+ {"version":3,"file":"llm-stage.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/signal-collector/llm-stage.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErF;;;GAGG;AACH,eAAO,MAAM,+BAA+B,6EAAiB,CAAC;AAE9D;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAU1D;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAU/D;AAID,MAAM,MAAM,qBAAqB,GAC7B,YAAY,GACZ,eAAe,GACf,iBAAiB,GACjB,SAAS,CAAC;AAEd,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAAC;CACvC;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,CAetF"}
@@ -12,12 +12,11 @@ export const SIGNAL_CLASSIFIER_SYSTEM_PROMPT = '你是一个用户反馈分类
12
12
  export function buildLlmPrompt(userMessage) {
13
13
  return `判断下面这条用户消息是否表达对 AI 助手行为的不满或纠正。
14
14
 
15
- 只输出 JSON,格式:{"is_feedback": bool, "type": "correction"|"empathy"|"none", "confidence": 0-1, "reason": "一句话理由"}
15
+ 只输出 JSON,格式:{"is_feedback": bool, "type": "correction"|"none", "confidence": 0-1, "reason": "一句话理由"}
16
16
 
17
17
  定义:
18
18
  - correction:用户明确指出 AI 做错了什么、应该改什么(如"这是错的""不要自作主张""应该先确认")
19
- - empathy:用户表达挫败/不满情绪,但没明确指出 AI 错在哪(如"搞什么啊""又来了""算了")
20
- - none:正常任务指令或闲聊
19
+ - none:正常任务指令、闲聊,或只表达情绪但没指出 AI 错在哪(如"搞什么啊""又来了""算了")
21
20
 
22
21
  用户消息:${userMessage}`;
23
22
  }
@@ -41,7 +40,7 @@ export function parseLlmClassification(raw) {
41
40
  * 解析 RuntimeAdapter fetchOutput 的 payload 为分类结果。
42
41
  *
43
42
  * Canonical path 是 structured object(分类器以 outputSchemaRef 请求
44
- * signal-classification-output-v1,adapter 完成 JSON extraction + schema
43
+ * signal-classification-output-v2,adapter 完成 JSON extraction + schema
45
44
  * validation + bounded repair)。string / {output: string} 仅是未实现 schema
46
45
  * ref 的 adapter 的 compatibility fallback——消费侧仍对 unknown payload 做
47
46
  * 类型守卫(rc-1/rc-2,纵深防御: producer contract 不替代 consumer 校验)。
@@ -1 +1 @@
1
- {"version":3,"file":"llm-stage.js","sourceRoot":"","sources":["../../../src/runtime-v2/signal-collector/llm-stage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAgC,MAAM,YAAY,CAAC;AAErF;;;GAGG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,cAAc,CAAC;AAE9D;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,OAAO;;;;;;;;;OASF,WAAW,EAAE,CAAC;AACrB,CAAC;AAOD;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACxC,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;AACH,CAAC;AAeD;;;;;;;;GAQG;AACH,MAAM,UAAU,+BAA+B,CAAC,OAAgB;IAC9D,IAAI,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK;YAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IAC1F,CAAC;SAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC/F,MAAM,WAAW,GAAI,OAAgC,CAAC,MAAM,CAAC;QAC7D,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;YACnD,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK;gBAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5F,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"llm-stage.js","sourceRoot":"","sources":["../../../src/runtime-v2/signal-collector/llm-stage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAgC,MAAM,YAAY,CAAC;AAErF;;;GAGG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,cAAc,CAAC;AAE9D;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,OAAO;;;;;;;;OAQF,WAAW,EAAE,CAAC;AACrB,CAAC;AAOD;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACxC,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;AACH,CAAC;AAeD;;;;;;;;GAQG;AACH,MAAM,UAAU,+BAA+B,CAAC,OAAgB;IAC9D,IAAI,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK;YAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IAC1F,CAAC;SAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC/F,MAAM,WAAW,GAAI,OAAgC,CAAC,MAAM,CAAC;QAC7D,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;YACnD,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK;gBAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5F,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC1C,CAAC"}
@@ -20,8 +20,8 @@ export function collectSync(text, sessionId, store, config, detectedAt) {
20
20
  if (scan.matched && scan.matchedPrecision === 'high' && scan.suggestedType) {
21
21
  return {
22
22
  isSignal: true,
23
- type: scan.suggestedType,
24
- strength: scan.suggestedType === 'correction' ? 'STRONG' : 'WEAK',
23
+ type: 'correction',
24
+ strength: 'STRONG',
25
25
  matchedTerms: scan.matchedTerms,
26
26
  matchedPrecision: 'high',
27
27
  detectionSource: 'keyword',
@@ -58,8 +58,8 @@ export function mapLlmResultToOutput(llm, text, _sessionId, _config, detectedAt)
58
58
  }
59
59
  return {
60
60
  isSignal: true,
61
- type: llm.type,
62
- strength: llm.type === 'correction' ? 'STRONG' : 'WEAK',
61
+ type: 'correction',
62
+ strength: 'STRONG',
63
63
  matchedTerms: [],
64
64
  matchedPrecision: null,
65
65
  detectionSource: 'llm',
@@ -1 +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"}
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,YAAY;YAClB,QAAQ,EAAE,QAAQ;YAClB,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,YAAY;QAClB,QAAQ,EAAE,QAAQ;QAClB,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"}
@@ -1,9 +1,7 @@
1
1
  import { type Static } from '@sinclair/typebox';
2
- export type KeywordCategory = 'correction' | 'empathy';
3
2
  export type TermSource = 'seed' | 'migrated' | 'owner_promoted' | 'llm_learned';
4
3
  export interface UnifiedKeyword {
5
4
  term: string;
6
- category: KeywordCategory;
7
5
  weight: number;
8
6
  precision: 'high' | 'ambiguous';
9
7
  source: TermSource;
@@ -27,7 +25,7 @@ export interface SignalCollectorConfig {
27
25
  */
28
26
  discoveryRateLimitPerHour?: number;
29
27
  }
30
- export type SignalStrength = 'STRONG' | 'WEAK';
28
+ export type SignalStrength = 'STRONG';
31
29
  export type DetectionSource = 'keyword' | 'llm' | 'none';
32
30
  export type MatchedPrecision = 'high' | 'ambiguous' | null;
33
31
  export interface SignalEvidence {
@@ -36,7 +34,7 @@ export interface SignalEvidence {
36
34
  }
37
35
  export interface SignalCollectorOutput {
38
36
  isSignal: boolean;
39
- type: 'correction' | 'empathy' | null;
37
+ type: 'correction' | null;
40
38
  strength: SignalStrength | null;
41
39
  matchedTerms: string[];
42
40
  matchedPrecision: MatchedPrecision;
@@ -50,16 +48,16 @@ export declare const SignalCollectorOutputSchema: {
50
48
  };
51
49
  export interface LlmClassificationResult {
52
50
  is_feedback: boolean;
53
- type: 'correction' | 'empathy' | 'none';
51
+ type: 'correction' | 'none';
54
52
  confidence: number;
55
53
  reason: string;
56
54
  }
57
55
  export declare function validateLlmClassification(value: unknown): value is LlmClassificationResult;
58
- export declare const SignalClassificationOutputV1Schema: import("@sinclair/typebox").TObject<{
56
+ export declare const SignalClassificationOutputV2Schema: import("@sinclair/typebox").TObject<{
59
57
  is_feedback: import("@sinclair/typebox").TBoolean;
60
- type: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"correction">, import("@sinclair/typebox").TLiteral<"empathy">, import("@sinclair/typebox").TLiteral<"none">]>;
58
+ type: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"correction">, import("@sinclair/typebox").TLiteral<"none">]>;
61
59
  confidence: import("@sinclair/typebox").TNumber;
62
60
  reason: import("@sinclair/typebox").TString;
63
61
  }>;
64
- export type SignalClassificationOutputV1 = Static<typeof SignalClassificationOutputV1Schema>;
62
+ export type SignalClassificationOutputV2 = Static<typeof SignalClassificationOutputV2Schema>;
65
63
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/signal-collector/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAItD,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,SAAS,CAAC;AACvD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAEhF,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;AAUD,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;IAC/B;;;;;;OAMG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC;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;IACtC,QAAQ,QAAQ,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;AASD,eAAO,MAAM,kCAAkC;;;;;EAK7C,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAAC,OAAO,kCAAkC,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/signal-collector/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAItD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAEhF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,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;AAUD,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;IAC/B;;;;;;OAMG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;AACtC,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,IAAI,CAAC;IAC1B,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;IACtC,QAAQ,QAAQ,OAAO,GAAG,KAAK,IAAI,qBAAqB;CAgBzD,CAAC;AAIF,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,YAAY,GAAG,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,uBAAuB,CAQ1F;AASD,eAAO,MAAM,kCAAkC;;;;;EAK7C,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAAC,OAAO,kCAAkC,CAAC,CAAC"}
@@ -7,9 +7,9 @@ export const SignalCollectorOutputSchema = {
7
7
  const v = value;
8
8
  if (typeof v.isSignal !== 'boolean')
9
9
  return false;
10
- if (v.type !== null && v.type !== 'correction' && v.type !== 'empathy')
10
+ if (v.type !== null && v.type !== 'correction')
11
11
  return false;
12
- if (v.strength !== null && v.strength !== 'STRONG' && v.strength !== 'WEAK')
12
+ if (v.strength !== null && v.strength !== 'STRONG')
13
13
  return false;
14
14
  if (!Array.isArray(v.matchedTerms))
15
15
  return false;
@@ -34,7 +34,7 @@ export function validateLlmClassification(value) {
34
34
  const v = value;
35
35
  if (typeof v.is_feedback !== 'boolean')
36
36
  return false;
37
- if (v.type !== 'correction' && v.type !== 'empathy' && v.type !== 'none')
37
+ if (v.type !== 'correction' && v.type !== 'none')
38
38
  return false;
39
39
  if (typeof v.confidence !== 'number' || v.confidence < 0 || v.confidence > 1)
40
40
  return false;
@@ -42,15 +42,15 @@ export function validateLlmClassification(value) {
42
42
  return false;
43
43
  return true;
44
44
  }
45
- // ── Stage2 structured-output contract (signal-classification-output-v1) ──
45
+ // ── Stage2 structured-output contract (signal-classification-output-v2) ──
46
46
  //
47
47
  // RuntimeAdapter 的 canonical 输出契约: 分类器以 outputSchemaRef 引用本 schema,
48
48
  // adapter 负责 JSON extraction + schema validation (+ bounded repair),分类器直接
49
49
  // 消费 validated structured payload (MVP_CORE_LOOP_CONTRACT INV-01)。
50
50
  // 字段名与 LlmClassificationResult 保持一致(snake_case 即 prompt 中的字面格式)。
51
- export const SignalClassificationOutputV1Schema = Type.Object({
51
+ export const SignalClassificationOutputV2Schema = Type.Object({
52
52
  is_feedback: Type.Boolean(),
53
- type: Type.Union([Type.Literal('correction'), Type.Literal('empathy'), Type.Literal('none')]),
53
+ type: Type.Union([Type.Literal('correction'), Type.Literal('none')]),
54
54
  confidence: Type.Number({ minimum: 0, maximum: 1 }),
55
55
  reason: Type.String(),
56
56
  });
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/runtime-v2/signal-collector/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAe,MAAM,mBAAmB,CAAC;AAiEtD,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;AAED,4EAA4E;AAC5E,EAAE;AACF,oEAAoE;AACpE,0EAA0E;AAC1E,mEAAmE;AACnE,iEAAiE;AAEjE,MAAM,CAAC,MAAM,kCAAkC,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5D,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE;IAC3B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7F,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACnD,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/runtime-v2/signal-collector/types.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Canonical trajectory.db schema definition (PRI-774; SPEC:
3
- * docs/specs/trajectory-data-plane-single-truth.md).
3
+ * docs/archive/specs/trajectory-data-plane-single-truth.md).
4
4
  *
5
5
  * Single source of truth for the schema applied by BOTH build paths:
6
6
  * - openclaw-plugin applyTrajectorySchema() → Profile B/C (views: true)
@@ -12,9 +12,11 @@
12
12
  * evolution_tasks column backfill, TRAJECTORY_SCHEMA_VERSION and
13
13
  * TRAJECTORY_TABLES declarations.
14
14
  * - does NOT own: path resolution, directory creation, connection lifecycle,
15
- * WAL/pragmas, schema_version ROW writes (TrajectoryDatabase.initSchema and
16
- * initTrajectorySchema keep that), v_daily_metrics (plugin migrateSchema),
17
- * governance_* tables (host-runtime stores).
15
+ * WAL/pragmas, schema_version ROW creation/upgrade on the normal entry points
16
+ * (TrajectoryDatabase.initSchema and initTrajectorySchema keep that), the
17
+ * version-row convergence performed by migrateLegacyGfiSchema (see below),
18
+ * v_daily_metrics (plugin migrateSchema), governance_* tables
19
+ * (host-runtime stores).
18
20
  *
19
21
  * Zero pathways are abolished: both paths keep their exact pre-PRI-774
20
22
  * behavior; only the definition-text copies converge (SPEC v3, Owner-approved).
@@ -33,9 +35,27 @@ export interface TrajectorySchemaApplyResult {
33
35
  warnings: string[];
34
36
  }
35
37
  /** trajectory.db schema version. Row writes stay with the two existing owner entry points. */
36
- export declare const TRAJECTORY_SCHEMA_VERSION = 1;
38
+ export declare const TRAJECTORY_SCHEMA_VERSION = 2;
37
39
  /** Fresh-schema table list, in creation order (single derived source). */
38
40
  export declare const TRAJECTORY_TABLES: readonly ['schema_version', 'ingest_checkpoint', 'sessions', 'assistant_turns', 'user_turns', 'tool_calls', 'pain_events', 'gate_blocks', 'trust_changes', 'principle_events', 'task_outcomes', 'correction_samples', 'sample_reviews', 'signal_confirmations', 'exports_audit'];
41
+ /**
42
+ * GFI-COMPLETE-REMOVAL-001: drop the retired GFI columns, terminalize the
43
+ * pending empathy confirmations that the retired correction collector created,
44
+ * and converge the schema_version row.
45
+ *
46
+ * Idempotent; safe on fresh databases. Called from applyTrajectorySchemaBase
47
+ * and explicitly by the host-runtime raw-DB open chains
48
+ * (production-pain-evidence.ts, governance-signal-admission.ts), which
49
+ * historically opened trajectory.db without applying the base schema.
50
+ *
51
+ * The version-row convergence belongs here because those raw open chains never
52
+ * go through TrajectoryDatabase.initSchema / initTrajectorySchema, so without
53
+ * it a migrated v1 database would keep claiming version 1 while its physical
54
+ * schema is v2 (the review finding "migration does not sync schema_version").
55
+ * It only touches an existing schema_version table; creating that table stays
56
+ * with the normal entry points.
57
+ */
58
+ export declare function migrateLegacyGfiSchema(db: Database): void;
39
59
  export declare function applyTrajectorySchemaBase(db: Database, opts?: {
40
60
  views?: boolean;
41
61
  }): {
@@ -1 +1 @@
1
- {"version":3,"file":"trajectory-schema.d.ts","sourceRoot":"","sources":["../../src/runtime-v2/trajectory-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,8FAA8F;AAC9F,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,YAC5B,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,CACP,CAAC;AAoBX,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,QAAQ,EACZ,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7B;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAqJ1C"}
1
+ {"version":3,"file":"trajectory-schema.d.ts","sourceRoot":"","sources":["../../src/runtime-v2/trajectory-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,8FAA8F;AAC9F,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,YAC5B,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,CACP,CAAC;AAyCX;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAqBzD;AAED,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,QAAQ,EACZ,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7B;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAwJ1C"}
@@ -1,5 +1,5 @@
1
1
  /** trajectory.db schema version. Row writes stay with the two existing owner entry points. */
2
- export const TRAJECTORY_SCHEMA_VERSION = 1;
2
+ export const TRAJECTORY_SCHEMA_VERSION = 2;
3
3
  /** Fresh-schema table list, in creation order (single derived source). */
4
4
  export const TRAJECTORY_TABLES = [
5
5
  'schema_version',
@@ -32,6 +32,60 @@ function tableExists(db, name) {
32
32
  .get(name);
33
33
  return row !== undefined;
34
34
  }
35
+ /**
36
+ * Bring an existing schema_version row up to TRAJECTORY_SCHEMA_VERSION.
37
+ * No-op on a v2 database (version already current) and on databases that do
38
+ * not have the table yet. A v1 row is upgraded in place.
39
+ */
40
+ function convergeSchemaVersion(db) {
41
+ if (!tableExists(db, 'schema_version'))
42
+ return;
43
+ const row = db
44
+ .prepare('SELECT version FROM schema_version LIMIT 1')
45
+ .get();
46
+ if (row === undefined) {
47
+ db.prepare('INSERT INTO schema_version (version) VALUES (?)').run(TRAJECTORY_SCHEMA_VERSION);
48
+ return;
49
+ }
50
+ if (row.version !== TRAJECTORY_SCHEMA_VERSION) {
51
+ db.prepare('UPDATE schema_version SET version = ?').run(TRAJECTORY_SCHEMA_VERSION);
52
+ }
53
+ }
54
+ /**
55
+ * GFI-COMPLETE-REMOVAL-001: drop the retired GFI columns, terminalize the
56
+ * pending empathy confirmations that the retired correction collector created,
57
+ * and converge the schema_version row.
58
+ *
59
+ * Idempotent; safe on fresh databases. Called from applyTrajectorySchemaBase
60
+ * and explicitly by the host-runtime raw-DB open chains
61
+ * (production-pain-evidence.ts, governance-signal-admission.ts), which
62
+ * historically opened trajectory.db without applying the base schema.
63
+ *
64
+ * The version-row convergence belongs here because those raw open chains never
65
+ * go through TrajectoryDatabase.initSchema / initTrajectorySchema, so without
66
+ * it a migrated v1 database would keep claiming version 1 while its physical
67
+ * schema is v2 (the review finding "migration does not sync schema_version").
68
+ * It only touches an existing schema_version table; creating that table stays
69
+ * with the normal entry points.
70
+ */
71
+ export function migrateLegacyGfiSchema(db) {
72
+ if (tableExists(db, 'tool_calls')) {
73
+ for (const column of ['gfi_before', 'gfi_after']) {
74
+ const exists = db
75
+ .prepare("SELECT name FROM pragma_table_info('tool_calls') WHERE name = ?")
76
+ .get(column);
77
+ if (exists !== undefined) {
78
+ db.exec(`ALTER TABLE tool_calls DROP COLUMN ${column}`);
79
+ }
80
+ }
81
+ }
82
+ if (tableExists(db, 'signal_confirmations')) {
83
+ db
84
+ .prepare("UPDATE signal_confirmations SET status = 'abandoned', resolved_at = ?, resolution = ? WHERE status = 'pending' AND suggested_type = 'empathy'")
85
+ .run(new Date().toISOString(), 'gfi_removal');
86
+ }
87
+ convergeSchemaVersion(db);
88
+ }
35
89
  export function applyTrajectorySchemaBase(db, opts = {}) {
36
90
  const warnings = [];
37
91
  const tables = [...TRAJECTORY_TABLES];
@@ -40,7 +94,7 @@ export function applyTrajectorySchemaBase(db, opts = {}) {
40
94
  db.exec('CREATE TABLE IF NOT EXISTS sessions (session_id TEXT PRIMARY KEY, started_at TEXT NOT NULL, updated_at TEXT NOT NULL)');
41
95
  db.exec('CREATE TABLE IF NOT EXISTS assistant_turns (id INTEGER PRIMARY KEY AUTOINCREMENT, session_id TEXT NOT NULL, run_id TEXT NOT NULL, provider TEXT NOT NULL, model TEXT NOT NULL, raw_text TEXT, sanitized_text TEXT NOT NULL, usage_json TEXT NOT NULL, empathy_signal_json TEXT NOT NULL, blob_ref TEXT, raw_excerpt TEXT, stop_reason TEXT, thinking_blocks_count INTEGER, created_at TEXT NOT NULL)');
42
96
  db.exec('CREATE TABLE IF NOT EXISTS user_turns (id INTEGER PRIMARY KEY AUTOINCREMENT, session_id TEXT NOT NULL, turn_index INTEGER NOT NULL, raw_text TEXT, blob_ref TEXT, raw_excerpt TEXT, correction_detected INTEGER NOT NULL DEFAULT 0, correction_cue TEXT, references_assistant_turn_id INTEGER, created_at TEXT NOT NULL)');
43
- db.exec('CREATE TABLE IF NOT EXISTS tool_calls (id INTEGER PRIMARY KEY AUTOINCREMENT, session_id TEXT NOT NULL, tool_name TEXT NOT NULL, outcome TEXT NOT NULL, duration_ms INTEGER, exit_code INTEGER, error_type TEXT, error_message TEXT, gfi_before REAL, gfi_after REAL, params_json TEXT NOT NULL, result_preview TEXT, created_at TEXT NOT NULL, project_dir TEXT, host_kind TEXT)');
97
+ db.exec('CREATE TABLE IF NOT EXISTS tool_calls (id INTEGER PRIMARY KEY AUTOINCREMENT, session_id TEXT NOT NULL, tool_name TEXT NOT NULL, outcome TEXT NOT NULL, duration_ms INTEGER, exit_code INTEGER, error_type TEXT, error_message TEXT, params_json TEXT NOT NULL, result_preview TEXT, created_at TEXT NOT NULL, project_dir TEXT, host_kind TEXT)');
44
98
  db.exec('CREATE TABLE IF NOT EXISTS pain_events (id INTEGER PRIMARY KEY AUTOINCREMENT, session_id TEXT NOT NULL, source TEXT NOT NULL, score REAL NOT NULL, reason TEXT, severity TEXT, origin TEXT, confidence REAL, text TEXT, canonical_pain_id TEXT, runtime_task_id TEXT, host_kind TEXT, created_at TEXT NOT NULL)');
45
99
  db.exec('CREATE TABLE IF NOT EXISTS gate_blocks (id INTEGER PRIMARY KEY AUTOINCREMENT, session_id TEXT, tool_name TEXT NOT NULL, file_path TEXT, reason TEXT NOT NULL, created_at TEXT NOT NULL)');
46
100
  db.exec('CREATE TABLE IF NOT EXISTS trust_changes (id INTEGER PRIMARY KEY AUTOINCREMENT, session_id TEXT, previous_score REAL NOT NULL, new_score REAL NOT NULL, delta REAL NOT NULL, reason TEXT NOT NULL, created_at TEXT NOT NULL)');
@@ -183,6 +237,8 @@ export function applyTrajectorySchemaBase(db, opts = {}) {
183
237
  throw err;
184
238
  }
185
239
  }
240
+ // GFI-COMPLETE-REMOVAL-001: retire legacy GFI columns/rows (idempotent).
241
+ migrateLegacyGfiSchema(db);
186
242
  // Secondary indexes (creation order preserved from the pre-convergence copy).
187
243
  db.exec('CREATE INDEX IF NOT EXISTS idx_assistant_turns_session_id ON assistant_turns(session_id)');
188
244
  db.exec('CREATE INDEX IF NOT EXISTS idx_assistant_turns_created_at ON assistant_turns(created_at)');
@@ -1 +1 @@
1
- {"version":3,"file":"trajectory-schema.js","sourceRoot":"","sources":["../../src/runtime-v2/trajectory-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trajectory-schema.js","sourceRoot":"","sources":["../../src/runtime-v2/trajectory-schema.ts"],"names":[],"mappings":"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"}
@@ -41,14 +41,7 @@ export interface ToolCallEventData {
41
41
  filePath?: string;
42
42
  error?: string;
43
43
  errorType?: string;
44
- /** @deprecated use gfiBefore/gfiAfter instead */
45
- gfi?: number;
46
- consecutiveErrors?: number;
47
44
  exitCode?: number;
48
- /** PRI-79: GFI value before this tool call */
49
- gfiBefore?: number;
50
- /** PRI-79: GFI value after this tool call (post-friction or post-relief) */
51
- gfiAfter?: number;
52
45
  /** PRI-750: host run/turn id — DIRECT turn binding (OpenClaw `runId`; Codex `turn_id`). Optional: absent when the host supplies none. */
53
46
  runId?: string;
54
47
  /** PRI-750: host tool-call id (OpenClaw `toolCallId`; Codex `tool_use_id`). Optional: absent when the host supplies none. */
@@ -59,11 +52,7 @@ export declare const ToolCallEventDataSchema: import("@sinclair/typebox").TObjec
59
52
  filePath: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
60
53
  error: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
61
54
  errorType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
62
- gfi: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
63
- consecutiveErrors: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
64
55
  exitCode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
65
- gfiBefore: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
66
- gfiAfter: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
67
56
  runId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
68
57
  toolCallId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
69
58
  }>;
@@ -743,21 +732,6 @@ export declare const EmpathyEventStatsSchema: import("@sinclair/typebox").TObjec
743
732
  }>>;
744
733
  }>;
745
734
  export type EmpathyEventStatsStatic = Static<typeof EmpathyEventStatsSchema>;
746
- export interface GfiStats {
747
- peak: number;
748
- samples: number;
749
- total: number;
750
- resetCount: number;
751
- hourlyDistribution: number[];
752
- }
753
- export declare const GfiStatsSchema: import("@sinclair/typebox").TObject<{
754
- peak: import("@sinclair/typebox").TNumber;
755
- samples: import("@sinclair/typebox").TNumber;
756
- total: import("@sinclair/typebox").TNumber;
757
- resetCount: import("@sinclair/typebox").TNumber;
758
- hourlyDistribution: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>;
759
- }>;
760
- export type GfiStatsStatic = Static<typeof GfiStatsSchema>;
761
735
  export interface EventEvolutionStats {
762
736
  tasksEnqueued: number;
763
737
  tasksCompleted: number;
@@ -860,8 +834,6 @@ export interface DailyStats {
860
834
  errors: ErrorStats;
861
835
  /** Empathy Engine event statistics */
862
836
  empathy: EmpathyEventStats;
863
- /** GFI statistics */
864
- gfi: GfiStats;
865
837
  /** Evolution statistics */
866
838
  evolution: EvolutionStats;
867
839
  /** Hook execution statistics */
@@ -927,13 +899,6 @@ export declare const DailyStatsSchema: import("@sinclair/typebox").TObject<{
927
899
  score: import("@sinclair/typebox").TNumber;
928
900
  }>>;
929
901
  }>;
930
- gfi: import("@sinclair/typebox").TObject<{
931
- peak: import("@sinclair/typebox").TNumber;
932
- samples: import("@sinclair/typebox").TNumber;
933
- total: import("@sinclair/typebox").TNumber;
934
- resetCount: import("@sinclair/typebox").TNumber;
935
- hourlyDistribution: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>;
936
- }>;
937
902
  evolution: import("@sinclair/typebox").TObject<{
938
903
  tasksEnqueued: import("@sinclair/typebox").TNumber;
939
904
  tasksCompleted: import("@sinclair/typebox").TNumber;