kiokuko-dsh 0.2.16 → 0.2.17

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 (102) hide show
  1. package/PERMISSIONS.md +11 -0
  2. package/README.ja.md +2 -0
  3. package/README.ko.md +2 -0
  4. package/README.md +2 -0
  5. package/README.zh-CN.md +2 -0
  6. package/THIRD_PARTY_NOTICES.md +4 -0
  7. package/dist/deep-thinker/core/contracts.d.ts +5 -5
  8. package/dist/deep-thinker/memory-finalizer.d.ts +1 -1
  9. package/dist/deep-thinker/store.d.ts +1 -1
  10. package/dist/dsh/coding-workflow/host.d.ts.map +1 -1
  11. package/dist/dsh/coding-workflow/host.js +7 -6
  12. package/dist/dsh/coding-workflow/host.js.map +1 -1
  13. package/dist/dsh/composition.js +1 -1
  14. package/dist/dsh/composition.js.map +1 -1
  15. package/dist/dsh/config.d.ts +1 -1
  16. package/dist/dsh/core/host.d.ts.map +1 -1
  17. package/dist/dsh/core/host.js +7 -1
  18. package/dist/dsh/core/host.js.map +1 -1
  19. package/dist/dsh/decisions/contracts.d.ts +1 -0
  20. package/dist/dsh/decisions/contracts.d.ts.map +1 -1
  21. package/dist/dsh/decisions/contracts.js +1 -1
  22. package/dist/dsh/decisions/contracts.js.map +1 -1
  23. package/dist/dsh/decisions/diagnostic-correlation.d.ts +3 -0
  24. package/dist/dsh/decisions/diagnostic-correlation.d.ts.map +1 -0
  25. package/dist/dsh/decisions/diagnostic-correlation.js +7 -0
  26. package/dist/dsh/decisions/diagnostic-correlation.js.map +1 -0
  27. package/dist/dsh/decisions/diagnostics.d.ts +512 -0
  28. package/dist/dsh/decisions/diagnostics.d.ts.map +1 -0
  29. package/dist/dsh/decisions/diagnostics.js +389 -0
  30. package/dist/dsh/decisions/diagnostics.js.map +1 -0
  31. package/dist/dsh/decisions/host.d.ts +2 -1
  32. package/dist/dsh/decisions/host.d.ts.map +1 -1
  33. package/dist/dsh/decisions/host.js +18 -5
  34. package/dist/dsh/decisions/host.js.map +1 -1
  35. package/dist/dsh/decisions/intent-assessment.d.ts +20 -0
  36. package/dist/dsh/decisions/intent-assessment.d.ts.map +1 -0
  37. package/dist/dsh/decisions/intent-assessment.js +104 -0
  38. package/dist/dsh/decisions/intent-assessment.js.map +1 -0
  39. package/dist/dsh/decisions/message-refs.d.ts +6 -0
  40. package/dist/dsh/decisions/message-refs.d.ts.map +1 -0
  41. package/dist/dsh/decisions/message-refs.js +16 -0
  42. package/dist/dsh/decisions/message-refs.js.map +1 -0
  43. package/dist/dsh/decisions/micro-judge.d.ts +58 -0
  44. package/dist/dsh/decisions/micro-judge.d.ts.map +1 -0
  45. package/dist/dsh/decisions/micro-judge.js +160 -0
  46. package/dist/dsh/decisions/micro-judge.js.map +1 -0
  47. package/dist/dsh/decisions/request-intent.d.ts +1 -2
  48. package/dist/dsh/decisions/request-intent.d.ts.map +1 -1
  49. package/dist/dsh/decisions/request-intent.js +16 -18
  50. package/dist/dsh/decisions/request-intent.js.map +1 -1
  51. package/dist/dsh/decisions/service.d.ts +10 -1
  52. package/dist/dsh/decisions/service.d.ts.map +1 -1
  53. package/dist/dsh/decisions/service.js +52 -7
  54. package/dist/dsh/decisions/service.js.map +1 -1
  55. package/dist/dsh/execution-selection.d.ts +5 -5
  56. package/dist/dsh/host-adapter/admission.d.ts.map +1 -1
  57. package/dist/dsh/host-adapter/admission.js +3 -0
  58. package/dist/dsh/host-adapter/admission.js.map +1 -1
  59. package/dist/dsh/host-adapter.d.ts.map +1 -1
  60. package/dist/dsh/host-adapter.js +4 -0
  61. package/dist/dsh/host-adapter.js.map +1 -1
  62. package/dist/dsh/index.d.ts +2 -2
  63. package/dist/dsh/model-configuration.d.ts +6 -6
  64. package/dist/dsh/modules/enno.d.ts +1 -1
  65. package/dist/dsh/on-demand-intake.d.ts +10 -0
  66. package/dist/dsh/on-demand-intake.d.ts.map +1 -1
  67. package/dist/dsh/on-demand-intake.js +63 -9
  68. package/dist/dsh/on-demand-intake.js.map +1 -1
  69. package/dist/dsh/task-state.d.ts.map +1 -1
  70. package/dist/dsh/task-state.js +4 -0
  71. package/dist/dsh/task-state.js.map +1 -1
  72. package/dist/dsh/turn-process.d.ts.map +1 -1
  73. package/dist/dsh/turn-process.js +3 -0
  74. package/dist/dsh/turn-process.js.map +1 -1
  75. package/dist/enno-oduno/store.d.ts.map +1 -1
  76. package/dist/enno-oduno/store.js +2 -0
  77. package/dist/enno-oduno/store.js.map +1 -1
  78. package/dist/locale/en.json +1 -1
  79. package/dist/locale/ja.json +1 -1
  80. package/dist/locale/ko.json +1 -1
  81. package/dist/locale/zh-CN.json +1 -1
  82. package/dist/memory/lifecycle.d.ts +1 -1
  83. package/docs/coding-workflow.md +1 -1
  84. package/docs/decision-diagnostics.md +60 -0
  85. package/docs/guardrail.md +3 -3
  86. package/docs/harness-map.md +2 -0
  87. package/docs/micro-judge.md +34 -0
  88. package/guardrail/manifest.json +0 -22
  89. package/micro-judge/darwin-arm64/kiokuko-micro-judge +0 -0
  90. package/micro-judge/licenses/COPYRIGHT-Rust-1.85.0.txt +384 -0
  91. package/micro-judge/licenses/LICENSE-APACHE +176 -0
  92. package/micro-judge/licenses/LICENSE-MIT +23 -0
  93. package/micro-judge/licenses/manifest.json +5 -0
  94. package/micro-judge/manifest.json +15 -0
  95. package/micro-judge/native-acceptance-darwin-arm64.tap +118 -0
  96. package/micro-judge/native-verification-darwin-arm64.json +20 -0
  97. package/migrations/044_decision_diagnostics.sql +46 -0
  98. package/package.json +13 -8
  99. package/scripts/guardrail-artifacts.mjs +0 -1
  100. package/scripts/verify-micro-judge.mjs +53 -0
  101. package/guardrail/x86_64-apple-darwin/kiokuko-guardrail +0 -0
  102. package/guardrail/x86_64-apple-darwin/manifest.json +0 -71
@@ -0,0 +1,512 @@
1
+ import type { IntentAssessment } from './intent-assessment.js';
2
+ import { z } from 'zod';
3
+ import type { SqliteDatabase } from '../../db/adapter.js';
4
+ import type { RequestIntentContext, RequestIntentDecision } from './request-intent.js';
5
+ export declare const DiagnosticBinding: z.ZodObject<{
6
+ runId: z.ZodString;
7
+ sessionId: z.ZodString;
8
+ repositoryDigest: z.ZodString;
9
+ revision: z.ZodNumber;
10
+ generation: z.ZodNumber;
11
+ sourceEpoch: z.ZodNumber;
12
+ workflowRevision: z.ZodOptional<z.ZodNumber>;
13
+ goalRevision: z.ZodOptional<z.ZodNumber>;
14
+ scopeRevision: z.ZodOptional<z.ZodNumber>;
15
+ }, z.core.$strict>;
16
+ export type DiagnosticBinding = z.infer<typeof DiagnosticBinding>;
17
+ export declare const DiagnosticAttempt: z.ZodObject<{
18
+ origin: z.ZodEnum<{
19
+ intake: "intake";
20
+ provider: "provider";
21
+ }>;
22
+ requestRef: z.ZodString;
23
+ sessionId: z.ZodOptional<z.ZodString>;
24
+ turn: z.ZodOptional<z.ZodNumber>;
25
+ inputDigest: z.ZodString;
26
+ contextDigest: z.ZodOptional<z.ZodString>;
27
+ binding: z.ZodOptional<z.ZodObject<{
28
+ runId: z.ZodString;
29
+ sessionId: z.ZodString;
30
+ repositoryDigest: z.ZodString;
31
+ revision: z.ZodNumber;
32
+ generation: z.ZodNumber;
33
+ sourceEpoch: z.ZodNumber;
34
+ workflowRevision: z.ZodOptional<z.ZodNumber>;
35
+ goalRevision: z.ZodOptional<z.ZodNumber>;
36
+ scopeRevision: z.ZodOptional<z.ZodNumber>;
37
+ }, z.core.$strict>>;
38
+ policyRef: z.ZodString;
39
+ referenceDigests: z.ZodDefault<z.ZodArray<z.ZodString>>;
40
+ purpose: z.ZodEnum<{
41
+ skills: "skills";
42
+ akinator: "akinator";
43
+ "request-intent": "request-intent";
44
+ "enno-check": "enno-check";
45
+ lisp: "lisp";
46
+ "memory-reuse": "memory-reuse";
47
+ compaction: "compaction";
48
+ "model-handoff": "model-handoff";
49
+ "answer-review": "answer-review";
50
+ "model-routing": "model-routing";
51
+ "intent-semantic-match": "intent-semantic-match";
52
+ }>;
53
+ }, z.core.$strict>;
54
+ export type DiagnosticAttempt = z.input<typeof DiagnosticAttempt>;
55
+ export declare const DIAGNOSTIC_REASONS: readonly ["observed", "resolved", "unresolved", "native_unowned", "clarification_required", "target_unknown", "scope_unknown", "transition_required", "question_unavailable", "context_changed", "answer_queued", "resume_observed", "receipt_observed", "continuation_observed", "assessment_disabled", "assessment_consistent", "assessment_clarify", "assessment_unavailable", "provider_completed", "provider_fallback", "provider_cancelled", "evaluation_failed"];
56
+ export declare const DiagnosticEvent: z.ZodObject<{
57
+ kind: z.ZodEnum<{
58
+ reference: "reference";
59
+ provider: "provider";
60
+ extraction: "extraction";
61
+ answer: "answer";
62
+ question: "question";
63
+ receipt: "receipt";
64
+ semantic_match: "semantic_match";
65
+ choice: "choice";
66
+ resume: "resume";
67
+ detector: "detector";
68
+ route: "route";
69
+ admission: "admission";
70
+ task_resume: "task_resume";
71
+ continuation: "continuation";
72
+ }>;
73
+ status: z.ZodEnum<{
74
+ observed: "observed";
75
+ blocked: "blocked";
76
+ not_run: "not_run";
77
+ waiting: "waiting";
78
+ queued: "queued";
79
+ }>;
80
+ reason: z.ZodEnum<{
81
+ unresolved: "unresolved";
82
+ resolved: "resolved";
83
+ observed: "observed";
84
+ native_unowned: "native_unowned";
85
+ clarification_required: "clarification_required";
86
+ target_unknown: "target_unknown";
87
+ scope_unknown: "scope_unknown";
88
+ transition_required: "transition_required";
89
+ question_unavailable: "question_unavailable";
90
+ context_changed: "context_changed";
91
+ answer_queued: "answer_queued";
92
+ resume_observed: "resume_observed";
93
+ receipt_observed: "receipt_observed";
94
+ continuation_observed: "continuation_observed";
95
+ assessment_disabled: "assessment_disabled";
96
+ assessment_consistent: "assessment_consistent";
97
+ assessment_clarify: "assessment_clarify";
98
+ assessment_unavailable: "assessment_unavailable";
99
+ provider_completed: "provider_completed";
100
+ provider_fallback: "provider_fallback";
101
+ provider_cancelled: "provider_cancelled";
102
+ evaluation_failed: "evaluation_failed";
103
+ }>;
104
+ parentEventId: z.ZodOptional<z.ZodString>;
105
+ referenceDigest: z.ZodOptional<z.ZodString>;
106
+ targetSessionId: z.ZodOptional<z.ZodString>;
107
+ binding: z.ZodOptional<z.ZodObject<{
108
+ runId: z.ZodString;
109
+ sessionId: z.ZodString;
110
+ repositoryDigest: z.ZodString;
111
+ revision: z.ZodNumber;
112
+ generation: z.ZodNumber;
113
+ sourceEpoch: z.ZodNumber;
114
+ workflowRevision: z.ZodOptional<z.ZodNumber>;
115
+ goalRevision: z.ZodOptional<z.ZodNumber>;
116
+ scopeRevision: z.ZodOptional<z.ZodNumber>;
117
+ }, z.core.$strict>>;
118
+ relation: z.ZodOptional<z.ZodEnum<{
119
+ unknown: "unknown";
120
+ new: "new";
121
+ same_scope_continuation: "same_scope_continuation";
122
+ scope_change: "scope_change";
123
+ }>>;
124
+ action: z.ZodOptional<z.ZodEnum<{
125
+ unknown: "unknown";
126
+ research: "research";
127
+ answer: "answer";
128
+ change: "change";
129
+ verify: "verify";
130
+ operate: "operate";
131
+ }>>;
132
+ changeScope: z.ZodOptional<z.ZodEnum<{
133
+ unknown: "unknown";
134
+ implementation: "implementation";
135
+ document: "document";
136
+ }>>;
137
+ source: z.ZodOptional<z.ZodEnum<{
138
+ unresolved: "unresolved";
139
+ "decision-provider": "decision-provider";
140
+ "main-model": "main-model";
141
+ }>>;
142
+ provider: z.ZodOptional<z.ZodEnum<{
143
+ typesafe: "typesafe";
144
+ nimble: "nimble";
145
+ "laya-coreml": "laya-coreml";
146
+ }>>;
147
+ modelRef: z.ZodOptional<z.ZodString>;
148
+ policyRef: z.ZodOptional<z.ZodString>;
149
+ detectorVersionRef: z.ZodOptional<z.ZodString>;
150
+ providerRevisionRef: z.ZodOptional<z.ZodString>;
151
+ elapsedMs: z.ZodOptional<z.ZodNumber>;
152
+ cacheHit: z.ZodOptional<z.ZodBoolean>;
153
+ providerDispatched: z.ZodOptional<z.ZodBoolean>;
154
+ semanticVerdict: z.ZodOptional<z.ZodEnum<{
155
+ unavailable: "unavailable";
156
+ contradicted: "contradicted";
157
+ insufficient: "insufficient";
158
+ supported: "supported";
159
+ }>>;
160
+ assessmentInputDigest: z.ZodOptional<z.ZodString>;
161
+ assessmentOutputDigest: z.ZodOptional<z.ZodString>;
162
+ judge: z.ZodOptional<z.ZodObject<{
163
+ state: z.ZodEnum<{
164
+ unavailable: "unavailable";
165
+ available: "available";
166
+ }>;
167
+ inputDigest: z.ZodOptional<z.ZodString>;
168
+ outputDigest: z.ZodOptional<z.ZodString>;
169
+ binaryHash: z.ZodOptional<z.ZodString>;
170
+ version: z.ZodLiteral<"kiokuko-fd-v1">;
171
+ complete: z.ZodOptional<z.ZodBoolean>;
172
+ status: z.ZodOptional<z.ZodEnum<{
173
+ entailed: "entailed";
174
+ refuted: "refuted";
175
+ undetermined: "undetermined";
176
+ inconsistent: "inconsistent";
177
+ resource_limit: "resource_limit";
178
+ }>>;
179
+ unavailableReason: z.ZodOptional<z.ZodEnum<{
180
+ cancelled: "cancelled";
181
+ timeout: "timeout";
182
+ unsupported_platform: "unsupported_platform";
183
+ artifact_unavailable: "artifact_unavailable";
184
+ artifact_mismatch: "artifact_mismatch";
185
+ invalid_input: "invalid_input";
186
+ process_failed: "process_failed";
187
+ output_limit: "output_limit";
188
+ malformed_response: "malformed_response";
189
+ }>>;
190
+ }, z.core.$strict>>;
191
+ selected: z.ZodOptional<z.ZodNumber>;
192
+ abstained: z.ZodOptional<z.ZodNumber>;
193
+ measured: z.ZodOptional<z.ZodNumber>;
194
+ choice: z.ZodOptional<z.ZodObject<{
195
+ questionRef: z.ZodString;
196
+ choiceRef: z.ZodString;
197
+ topProbability: z.ZodNumber;
198
+ runnerUpProbability: z.ZodNumber;
199
+ margin: z.ZodNumber;
200
+ confidence: z.ZodNumber;
201
+ gate: z.ZodEnum<{
202
+ confidence: "confidence";
203
+ probability_margin: "probability_margin";
204
+ }>;
205
+ acceptance: z.ZodObject<{
206
+ minConfidence: z.ZodOptional<z.ZodNumber>;
207
+ minProbability: z.ZodOptional<z.ZodNumber>;
208
+ minMargin: z.ZodOptional<z.ZodNumber>;
209
+ }, z.core.$strict>;
210
+ status: z.ZodEnum<{
211
+ selected: "selected";
212
+ abstained: "abstained";
213
+ }>;
214
+ failedChecks: z.ZodArray<z.ZodEnum<{
215
+ confidence: "confidence";
216
+ probability: "probability";
217
+ margin: "margin";
218
+ }>>;
219
+ }, z.core.$strict>>;
220
+ fallback: z.ZodOptional<z.ZodEnum<{
221
+ DECISION_TIMEOUT: "DECISION_TIMEOUT";
222
+ DECISION_UNAVAILABLE: "DECISION_UNAVAILABLE";
223
+ DECISION_AUTH: "DECISION_AUTH";
224
+ DECISION_CANCELLED: "DECISION_CANCELLED";
225
+ DECISION_INVALID_INPUT: "DECISION_INVALID_INPUT";
226
+ DECISION_UNSUPPORTED: "DECISION_UNSUPPORTED";
227
+ DECISION_TOO_LARGE: "DECISION_TOO_LARGE";
228
+ DECISION_MALFORMED_RESPONSE: "DECISION_MALFORMED_RESPONSE";
229
+ other: "other";
230
+ }>>;
231
+ resultRef: z.ZodOptional<z.ZodObject<{
232
+ requestId: z.ZodString;
233
+ inputDigest: z.ZodString;
234
+ }, z.core.$strict>>;
235
+ nextDecisionId: z.ZodOptional<z.ZodString>;
236
+ receiptId: z.ZodOptional<z.ZodString>;
237
+ continuationId: z.ZodOptional<z.ZodString>;
238
+ evaluationDecisionId: z.ZodOptional<z.ZodString>;
239
+ }, z.core.$strict>;
240
+ export type DiagnosticEvent = z.input<typeof DiagnosticEvent>;
241
+ export type DiagnosticRuntime = {
242
+ withDatabase<T>(operation: (db: SqliteDatabase) => T): Promise<T>;
243
+ };
244
+ export declare function diagnosticId(): string;
245
+ export declare function diagnosticEventId(decisionId: string, key: unknown): string;
246
+ /** Current source epoch follows the same rule as task-source-history/finalization. */
247
+ export declare function captureDiagnosticBinding(db: SqliteDatabase, runId: string, sessionId: string): DiagnosticBinding;
248
+ export declare function createDiagnosticAttempt(db: SqliteDatabase, decisionId: string, raw: DiagnosticAttempt): void;
249
+ /** Serialize sequence allocation and validate causality inside the caller's managed transaction. */
250
+ export declare function appendDiagnosticEvent(db: SqliteDatabase, decisionId: string, eventId: string, raw: DiagnosticEvent): number;
251
+ /** No raw exception is retained. A failed savepoint cannot alter the authoritative operation. */
252
+ export declare function bestEffortDiagnostic(db: SqliteDatabase, scopeRef: string, operation: () => void): boolean;
253
+ export declare function observeDiagnostic(runtime: DiagnosticRuntime, scope: string, operation: (db: SqliteDatabase) => void): Promise<void>;
254
+ export declare function diagnosticRuntimeLosses(runtime: DiagnosticRuntime): number;
255
+ /** Called only after the real host has bound the admitted run. Source interpretation stays immutable. */
256
+ export declare function recordDiagnosticAdmission(db: SqliteDatabase, input: {
257
+ sessionId: string;
258
+ turn: number;
259
+ runId: string;
260
+ task: string;
261
+ context?: RequestIntentContext;
262
+ decision?: RequestIntentDecision;
263
+ }): void;
264
+ /** Same managed transaction as the authoritative state transition. Never creates a correctness label. */
265
+ export declare function recordDiagnosticTaskResume(db: SqliteDatabase, runId: string, sessionId: string, operationId: string): void;
266
+ /** The receipt/outbox already exists. Savepoint failure is advisory; outer rollback also rolls back diagnostics. */
267
+ export declare function recordDiagnosticTurn(db: SqliteDatabase, receiptId: string): void;
268
+ /** Runs after the existing Enno receipt trigger, inside its authoritative transaction. */
269
+ export declare function recordDiagnosticEnnoCommit(db: SqliteDatabase, runId: string, operation: string, key: string): void;
270
+ /** Trusted, independent adjudication API; never exposed as a model tool or inferred from resume. */
271
+ export declare function reviewDiagnosticStop(db: SqliteDatabase, decisionId: string, verdict: 'false_stop' | 'justified_stop', reviewRef: string): void;
272
+ /** SELECT-only. Never backfill, migrate, probe a provider, dispatch or label an outcome. */
273
+ export declare function readDecisionDiagnostics(db: SqliteDatabase, sessionId: string, decisionId?: string): {
274
+ attempts: {
275
+ events: {
276
+ kind: "reference" | "provider" | "extraction" | "answer" | "question" | "receipt" | "semantic_match" | "choice" | "resume" | "detector" | "route" | "admission" | "task_resume" | "continuation";
277
+ status: "observed" | "blocked" | "not_run" | "waiting" | "queued";
278
+ reason: "unresolved" | "resolved" | "observed" | "native_unowned" | "clarification_required" | "target_unknown" | "scope_unknown" | "transition_required" | "question_unavailable" | "context_changed" | "answer_queued" | "resume_observed" | "receipt_observed" | "continuation_observed" | "assessment_disabled" | "assessment_consistent" | "assessment_clarify" | "assessment_unavailable" | "provider_completed" | "provider_fallback" | "provider_cancelled" | "evaluation_failed";
279
+ parentEventId?: string | undefined;
280
+ referenceDigest?: string | undefined;
281
+ targetSessionId?: string | undefined;
282
+ binding?: {
283
+ runId: string;
284
+ sessionId: string;
285
+ repositoryDigest: string;
286
+ revision: number;
287
+ generation: number;
288
+ sourceEpoch: number;
289
+ workflowRevision?: number | undefined;
290
+ goalRevision?: number | undefined;
291
+ scopeRevision?: number | undefined;
292
+ } | undefined;
293
+ relation?: "unknown" | "new" | "same_scope_continuation" | "scope_change" | undefined;
294
+ action?: "unknown" | "research" | "answer" | "change" | "verify" | "operate" | undefined;
295
+ changeScope?: "unknown" | "implementation" | "document" | undefined;
296
+ source?: "unresolved" | "decision-provider" | "main-model" | undefined;
297
+ provider?: "typesafe" | "nimble" | "laya-coreml" | undefined;
298
+ modelRef?: string | undefined;
299
+ policyRef?: string | undefined;
300
+ detectorVersionRef?: string | undefined;
301
+ providerRevisionRef?: string | undefined;
302
+ elapsedMs?: number | undefined;
303
+ cacheHit?: boolean | undefined;
304
+ providerDispatched?: boolean | undefined;
305
+ semanticVerdict?: "unavailable" | "contradicted" | "insufficient" | "supported" | undefined;
306
+ assessmentInputDigest?: string | undefined;
307
+ assessmentOutputDigest?: string | undefined;
308
+ judge?: {
309
+ state: "unavailable" | "available";
310
+ version: "kiokuko-fd-v1";
311
+ inputDigest?: string | undefined;
312
+ outputDigest?: string | undefined;
313
+ binaryHash?: string | undefined;
314
+ complete?: boolean | undefined;
315
+ status?: "entailed" | "refuted" | "undetermined" | "inconsistent" | "resource_limit" | undefined;
316
+ unavailableReason?: "cancelled" | "timeout" | "unsupported_platform" | "artifact_unavailable" | "artifact_mismatch" | "invalid_input" | "process_failed" | "output_limit" | "malformed_response" | undefined;
317
+ } | undefined;
318
+ selected?: number | undefined;
319
+ abstained?: number | undefined;
320
+ measured?: number | undefined;
321
+ choice?: {
322
+ questionRef: string;
323
+ choiceRef: string;
324
+ topProbability: number;
325
+ runnerUpProbability: number;
326
+ margin: number;
327
+ confidence: number;
328
+ gate: "confidence" | "probability_margin";
329
+ acceptance: {
330
+ minConfidence?: number | undefined;
331
+ minProbability?: number | undefined;
332
+ minMargin?: number | undefined;
333
+ };
334
+ status: "selected" | "abstained";
335
+ failedChecks: ("confidence" | "probability" | "margin")[];
336
+ } | undefined;
337
+ fallback?: "DECISION_TIMEOUT" | "DECISION_UNAVAILABLE" | "DECISION_AUTH" | "DECISION_CANCELLED" | "DECISION_INVALID_INPUT" | "DECISION_UNSUPPORTED" | "DECISION_TOO_LARGE" | "DECISION_MALFORMED_RESPONSE" | "other" | undefined;
338
+ resultRef?: {
339
+ requestId: string;
340
+ inputDigest: string;
341
+ } | undefined;
342
+ nextDecisionId?: string | undefined;
343
+ receiptId?: string | undefined;
344
+ continuationId?: string | undefined;
345
+ evaluationDecisionId?: string | undefined;
346
+ eventId: unknown;
347
+ sequence: unknown;
348
+ }[];
349
+ authoritativeLinks: {
350
+ receipts: import("../../db/adapter.js").SqliteRow[];
351
+ outbox: import("../../db/adapter.js").SqliteRow[];
352
+ };
353
+ missingReceiptLinks: number;
354
+ missingContinuationLinks: number;
355
+ stages: {
356
+ extraction: "observed" | "blocked" | "not_run" | "waiting" | "queued";
357
+ semanticMatch: "observed" | "blocked" | "not_run" | "waiting" | "queued";
358
+ detector: "observed" | "blocked" | "not_run" | "waiting" | "queued";
359
+ };
360
+ providerAttempts: {
361
+ events: {
362
+ kind: "reference" | "provider" | "extraction" | "answer" | "question" | "receipt" | "semantic_match" | "choice" | "resume" | "detector" | "route" | "admission" | "task_resume" | "continuation";
363
+ status: "observed" | "blocked" | "not_run" | "waiting" | "queued";
364
+ reason: "unresolved" | "resolved" | "observed" | "native_unowned" | "clarification_required" | "target_unknown" | "scope_unknown" | "transition_required" | "question_unavailable" | "context_changed" | "answer_queued" | "resume_observed" | "receipt_observed" | "continuation_observed" | "assessment_disabled" | "assessment_consistent" | "assessment_clarify" | "assessment_unavailable" | "provider_completed" | "provider_fallback" | "provider_cancelled" | "evaluation_failed";
365
+ parentEventId?: string | undefined;
366
+ referenceDigest?: string | undefined;
367
+ targetSessionId?: string | undefined;
368
+ binding?: {
369
+ runId: string;
370
+ sessionId: string;
371
+ repositoryDigest: string;
372
+ revision: number;
373
+ generation: number;
374
+ sourceEpoch: number;
375
+ workflowRevision?: number | undefined;
376
+ goalRevision?: number | undefined;
377
+ scopeRevision?: number | undefined;
378
+ } | undefined;
379
+ relation?: "unknown" | "new" | "same_scope_continuation" | "scope_change" | undefined;
380
+ action?: "unknown" | "research" | "answer" | "change" | "verify" | "operate" | undefined;
381
+ changeScope?: "unknown" | "implementation" | "document" | undefined;
382
+ source?: "unresolved" | "decision-provider" | "main-model" | undefined;
383
+ provider?: "typesafe" | "nimble" | "laya-coreml" | undefined;
384
+ modelRef?: string | undefined;
385
+ policyRef?: string | undefined;
386
+ detectorVersionRef?: string | undefined;
387
+ providerRevisionRef?: string | undefined;
388
+ elapsedMs?: number | undefined;
389
+ cacheHit?: boolean | undefined;
390
+ providerDispatched?: boolean | undefined;
391
+ semanticVerdict?: "unavailable" | "contradicted" | "insufficient" | "supported" | undefined;
392
+ assessmentInputDigest?: string | undefined;
393
+ assessmentOutputDigest?: string | undefined;
394
+ judge?: {
395
+ state: "unavailable" | "available";
396
+ version: "kiokuko-fd-v1";
397
+ inputDigest?: string | undefined;
398
+ outputDigest?: string | undefined;
399
+ binaryHash?: string | undefined;
400
+ complete?: boolean | undefined;
401
+ status?: "entailed" | "refuted" | "undetermined" | "inconsistent" | "resource_limit" | undefined;
402
+ unavailableReason?: "cancelled" | "timeout" | "unsupported_platform" | "artifact_unavailable" | "artifact_mismatch" | "invalid_input" | "process_failed" | "output_limit" | "malformed_response" | undefined;
403
+ } | undefined;
404
+ selected?: number | undefined;
405
+ abstained?: number | undefined;
406
+ measured?: number | undefined;
407
+ choice?: {
408
+ questionRef: string;
409
+ choiceRef: string;
410
+ topProbability: number;
411
+ runnerUpProbability: number;
412
+ margin: number;
413
+ confidence: number;
414
+ gate: "confidence" | "probability_margin";
415
+ acceptance: {
416
+ minConfidence?: number | undefined;
417
+ minProbability?: number | undefined;
418
+ minMargin?: number | undefined;
419
+ };
420
+ status: "selected" | "abstained";
421
+ failedChecks: ("confidence" | "probability" | "margin")[];
422
+ } | undefined;
423
+ fallback?: "DECISION_TIMEOUT" | "DECISION_UNAVAILABLE" | "DECISION_AUTH" | "DECISION_CANCELLED" | "DECISION_INVALID_INPUT" | "DECISION_UNSUPPORTED" | "DECISION_TOO_LARGE" | "DECISION_MALFORMED_RESPONSE" | "other" | undefined;
424
+ resultRef?: {
425
+ requestId: string;
426
+ inputDigest: string;
427
+ } | undefined;
428
+ nextDecisionId?: string | undefined;
429
+ receiptId?: string | undefined;
430
+ continuationId?: string | undefined;
431
+ evaluationDecisionId?: string | undefined;
432
+ }[];
433
+ origin: "intake" | "provider";
434
+ requestRef: string;
435
+ inputDigest: string;
436
+ policyRef: string;
437
+ referenceDigests: string[];
438
+ purpose: "skills" | "akinator" | "request-intent" | "enno-check" | "lisp" | "memory-reuse" | "compaction" | "model-handoff" | "answer-review" | "model-routing" | "intent-semantic-match";
439
+ sessionId?: string | undefined;
440
+ turn?: number | undefined;
441
+ contextDigest?: string | undefined;
442
+ binding?: {
443
+ runId: string;
444
+ sessionId: string;
445
+ repositoryDigest: string;
446
+ revision: number;
447
+ generation: number;
448
+ sourceEpoch: number;
449
+ workflowRevision?: number | undefined;
450
+ goalRevision?: number | undefined;
451
+ scopeRevision?: number | undefined;
452
+ } | undefined;
453
+ decisionId: unknown;
454
+ }[];
455
+ origin: "intake" | "provider";
456
+ requestRef: string;
457
+ inputDigest: string;
458
+ policyRef: string;
459
+ referenceDigests: string[];
460
+ purpose: "skills" | "akinator" | "request-intent" | "enno-check" | "lisp" | "memory-reuse" | "compaction" | "model-handoff" | "answer-review" | "model-routing" | "intent-semantic-match";
461
+ sessionId?: string | undefined;
462
+ turn?: number | undefined;
463
+ contextDigest?: string | undefined;
464
+ binding?: {
465
+ runId: string;
466
+ sessionId: string;
467
+ repositoryDigest: string;
468
+ revision: number;
469
+ generation: number;
470
+ sourceEpoch: number;
471
+ workflowRevision?: number | undefined;
472
+ goalRevision?: number | undefined;
473
+ scopeRevision?: number | undefined;
474
+ } | undefined;
475
+ decisionId: unknown;
476
+ }[];
477
+ metrics: {
478
+ stopped: number;
479
+ evaluated: number;
480
+ falseStops: number;
481
+ falseStopRate: number | null;
482
+ evaluationRate: number | null;
483
+ };
484
+ completeness: {
485
+ persistedGaps: number;
486
+ volatileLosses: number;
487
+ missingReceiptLinks: number;
488
+ missingContinuationLinks: number;
489
+ };
490
+ truncated: boolean;
491
+ };
492
+ export interface IntakeDiagnosticInput {
493
+ agent: {
494
+ session?: {
495
+ id: string;
496
+ };
497
+ };
498
+ turn: number;
499
+ messages: readonly unknown[];
500
+ }
501
+ export interface IntakeDiagnosticObservation {
502
+ kind: 'interpretation' | 'native_unowned' | 'question' | 'answer' | 'resume' | 'assessment' | 'assessment_disabled';
503
+ assessment?: IntentAssessment;
504
+ context?: RequestIntentContext;
505
+ decision?: RequestIntentDecision;
506
+ questionRef?: string;
507
+ answerRef?: string;
508
+ reason?: 'target_unknown' | 'scope_unknown' | 'transition_required' | 'clarification_required' | 'context_changed';
509
+ }
510
+ /** References originate in captured native input / host-issued question and followup IDs, never model submissions. */
511
+ export declare function createIntakeDiagnosticSink(runtime: DiagnosticRuntime): (input: IntakeDiagnosticInput, observation: IntakeDiagnosticObservation) => Promise<void>;
512
+ //# sourceMappingURL=diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../src/dsh/decisions/diagnostics.ts"],"names":[],"mappings":"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"}