@tenphi/akno-protocol 0.1.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.
Files changed (67) hide show
  1. package/LICENSE +83 -0
  2. package/README.md +26 -0
  3. package/dist/common.d.ts +1553 -0
  4. package/dist/common.d.ts.map +1 -0
  5. package/dist/common.js +309 -0
  6. package/dist/common.js.map +1 -0
  7. package/dist/errors.d.ts +24 -0
  8. package/dist/errors.d.ts.map +1 -0
  9. package/dist/errors.js +69 -0
  10. package/dist/errors.js.map +1 -0
  11. package/dist/index.d.ts +16 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +16 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/ops/answer.d.ts +207 -0
  16. package/dist/ops/answer.d.ts.map +1 -0
  17. package/dist/ops/answer.js +90 -0
  18. package/dist/ops/answer.js.map +1 -0
  19. package/dist/ops/context.d.ts +845 -0
  20. package/dist/ops/context.d.ts.map +1 -0
  21. package/dist/ops/context.js +82 -0
  22. package/dist/ops/context.js.map +1 -0
  23. package/dist/ops/folder.d.ts +85 -0
  24. package/dist/ops/folder.d.ts.map +1 -0
  25. package/dist/ops/folder.js +56 -0
  26. package/dist/ops/folder.js.map +1 -0
  27. package/dist/ops/graph.d.ts +352 -0
  28. package/dist/ops/graph.d.ts.map +1 -0
  29. package/dist/ops/graph.js +63 -0
  30. package/dist/ops/graph.js.map +1 -0
  31. package/dist/ops/list.d.ts +136 -0
  32. package/dist/ops/list.d.ts.map +1 -0
  33. package/dist/ops/list.js +57 -0
  34. package/dist/ops/list.js.map +1 -0
  35. package/dist/ops/mutate.d.ts +432 -0
  36. package/dist/ops/mutate.d.ts.map +1 -0
  37. package/dist/ops/mutate.js +234 -0
  38. package/dist/ops/mutate.js.map +1 -0
  39. package/dist/ops/read.d.ts +242 -0
  40. package/dist/ops/read.d.ts.map +1 -0
  41. package/dist/ops/read.js +65 -0
  42. package/dist/ops/read.js.map +1 -0
  43. package/dist/ops/recall.d.ts +531 -0
  44. package/dist/ops/recall.d.ts.map +1 -0
  45. package/dist/ops/recall.js +59 -0
  46. package/dist/ops/recall.js.map +1 -0
  47. package/dist/ops/timeline.d.ts +264 -0
  48. package/dist/ops/timeline.d.ts.map +1 -0
  49. package/dist/ops/timeline.js +68 -0
  50. package/dist/ops/timeline.js.map +1 -0
  51. package/dist/ops/write.d.ts +182 -0
  52. package/dist/ops/write.d.ts.map +1 -0
  53. package/dist/ops/write.js +114 -0
  54. package/dist/ops/write.js.map +1 -0
  55. package/dist/registry.d.ts +2657 -0
  56. package/dist/registry.d.ts.map +1 -0
  57. package/dist/registry.js +191 -0
  58. package/dist/registry.js.map +1 -0
  59. package/dist/version.d.ts +14 -0
  60. package/dist/version.d.ts.map +1 -0
  61. package/dist/version.js +14 -0
  62. package/dist/version.js.map +1 -0
  63. package/dist/wire.d.ts +112 -0
  64. package/dist/wire.d.ts.map +1 -0
  65. package/dist/wire.js +102 -0
  66. package/dist/wire.js.map +1 -0
  67. package/package.json +38 -0
@@ -0,0 +1,207 @@
1
+ import { z } from 'zod';
2
+ /** A direct question over the existing qualified recall pipeline. */
3
+ export declare const AnswerInput: z.ZodObject<{
4
+ question: z.ZodString;
5
+ limit: z.ZodOptional<z.ZodNumber>;
6
+ retrieval_budget: z.ZodOptional<z.ZodNumber>;
7
+ include: z.ZodOptional<z.ZodArray<z.ZodEnum<{
8
+ knowledge: "knowledge";
9
+ source: "source";
10
+ inference: "inference";
11
+ ignored: "ignored";
12
+ }>>>;
13
+ filter: z.ZodOptional<z.ZodObject<{
14
+ folder: z.ZodOptional<z.ZodString>;
15
+ type: z.ZodOptional<z.ZodString>;
16
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
17
+ role: z.ZodOptional<z.ZodEnum<{
18
+ knowledge: "knowledge";
19
+ source: "source";
20
+ inference: "inference";
21
+ ignored: "ignored";
22
+ }>>;
23
+ source: z.ZodOptional<z.ZodEnum<{
24
+ page: "page";
25
+ document: "document";
26
+ both: "both";
27
+ }>>;
28
+ ownership: z.ZodOptional<z.ZodEnum<{
29
+ any: "any";
30
+ orphan: "orphan";
31
+ owned: "owned";
32
+ }>>;
33
+ }, z.core.$strip>>;
34
+ since: z.ZodOptional<z.ZodString>;
35
+ until: z.ZodOptional<z.ZodString>;
36
+ expand: z.ZodOptional<z.ZodBoolean>;
37
+ graph: z.ZodOptional<z.ZodBoolean>;
38
+ rerank: z.ZodOptional<z.ZodBoolean>;
39
+ include_context: z.ZodOptional<z.ZodBoolean>;
40
+ max_answer_tokens: z.ZodOptional<z.ZodNumber>;
41
+ }, z.core.$strip>;
42
+ export type AnswerInput = z.infer<typeof AnswerInput>;
43
+ export declare const AnswerContextItem: z.ZodDiscriminatedUnion<[z.ZodObject<{
44
+ evidence_id: z.ZodString;
45
+ type: z.ZodLiteral<"page">;
46
+ slug: z.ZodString;
47
+ title: z.ZodString;
48
+ lines: z.ZodArray<z.ZodObject<{
49
+ n: z.ZodNumber;
50
+ text: z.ZodString;
51
+ confidence: z.ZodOptional<z.ZodNumber>;
52
+ fact: z.ZodOptional<z.ZodString>;
53
+ }, z.core.$strip>>;
54
+ }, z.core.$strip>, z.ZodObject<{
55
+ evidence_id: z.ZodString;
56
+ type: z.ZodLiteral<"document">;
57
+ document_id: z.ZodString;
58
+ owner_slug: z.ZodOptional<z.ZodString>;
59
+ pages: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
60
+ quote: z.ZodString;
61
+ }, z.core.$strip>], "type">;
62
+ export type AnswerContextItem = z.infer<typeof AnswerContextItem>;
63
+ export declare const AnswerCitation: z.ZodDiscriminatedUnion<[z.ZodObject<{
64
+ id: z.ZodString;
65
+ type: z.ZodLiteral<"page">;
66
+ slug: z.ZodString;
67
+ lines: z.ZodArray<z.ZodNumber>;
68
+ }, z.core.$strip>, z.ZodObject<{
69
+ id: z.ZodString;
70
+ type: z.ZodLiteral<"document">;
71
+ document_id: z.ZodString;
72
+ owner_slug: z.ZodOptional<z.ZodString>;
73
+ pages: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
74
+ }, z.core.$strip>], "type">;
75
+ export type AnswerCitation = z.infer<typeof AnswerCitation>;
76
+ /** A content-free receipt for one request to the configured answer model. */
77
+ export declare const AnswerModelCallReceipt: z.ZodObject<{
78
+ model: z.ZodString;
79
+ latency_ms: z.ZodNumber;
80
+ input_tokens: z.ZodNullable<z.ZodNumber>;
81
+ output_tokens: z.ZodNullable<z.ZodNumber>;
82
+ total_tokens: z.ZodNullable<z.ZodNumber>;
83
+ }, z.core.$strip>;
84
+ export type AnswerModelCallReceipt = z.infer<typeof AnswerModelCallReceipt>;
85
+ export declare const AnswerOutput: z.ZodObject<{
86
+ status: z.ZodEnum<{
87
+ ok: "ok";
88
+ empty: "empty";
89
+ degraded: "degraded";
90
+ unavailable: "unavailable";
91
+ }>;
92
+ degraded: z.ZodOptional<z.ZodArray<z.ZodEnum<{
93
+ no_embedding_model: "no_embedding_model";
94
+ no_reranker: "no_reranker";
95
+ no_derive_model: "no_derive_model";
96
+ no_expansion_model: "no_expansion_model";
97
+ embedding_failed: "embedding_failed";
98
+ rerank_failed: "rerank_failed";
99
+ derive_failed: "derive_failed";
100
+ expansion_failed: "expansion_failed";
101
+ no_vector_index: "no_vector_index";
102
+ partial_index: "partial_index";
103
+ no_document_text: "no_document_text";
104
+ document_source_missing: "document_source_missing";
105
+ no_graph_index: "no_graph_index";
106
+ no_entity_index: "no_entity_index";
107
+ entity_resolution_failed: "entity_resolution_failed";
108
+ partial_graph_index: "partial_graph_index";
109
+ graph_traversal_limited: "graph_traversal_limited";
110
+ no_answer_model: "no_answer_model";
111
+ answer_failed: "answer_failed";
112
+ answer_verification_failed: "answer_verification_failed";
113
+ answer_truncated: "answer_truncated";
114
+ }>>>;
115
+ note: z.ZodOptional<z.ZodString>;
116
+ outcome: z.ZodEnum<{
117
+ not_found: "not_found";
118
+ complete: "complete";
119
+ partial: "partial";
120
+ not_answered: "not_answered";
121
+ }>;
122
+ answer: z.ZodNullable<z.ZodString>;
123
+ coverage: z.ZodRecord<z.ZodString, z.ZodBoolean>;
124
+ citations: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
125
+ id: z.ZodString;
126
+ type: z.ZodLiteral<"page">;
127
+ slug: z.ZodString;
128
+ lines: z.ZodArray<z.ZodNumber>;
129
+ }, z.core.$strip>, z.ZodObject<{
130
+ id: z.ZodString;
131
+ type: z.ZodLiteral<"document">;
132
+ document_id: z.ZodString;
133
+ owner_slug: z.ZodOptional<z.ZodString>;
134
+ pages: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
135
+ }, z.core.$strip>], "type">>;
136
+ context: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
137
+ evidence_id: z.ZodString;
138
+ type: z.ZodLiteral<"page">;
139
+ slug: z.ZodString;
140
+ title: z.ZodString;
141
+ lines: z.ZodArray<z.ZodObject<{
142
+ n: z.ZodNumber;
143
+ text: z.ZodString;
144
+ confidence: z.ZodOptional<z.ZodNumber>;
145
+ fact: z.ZodOptional<z.ZodString>;
146
+ }, z.core.$strip>>;
147
+ }, z.core.$strip>, z.ZodObject<{
148
+ evidence_id: z.ZodString;
149
+ type: z.ZodLiteral<"document">;
150
+ document_id: z.ZodString;
151
+ owner_slug: z.ZodOptional<z.ZodString>;
152
+ pages: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
153
+ quote: z.ZodString;
154
+ }, z.core.$strip>], "type">>>;
155
+ related_page_slugs: z.ZodArray<z.ZodString>;
156
+ related_documents: z.ZodArray<z.ZodObject<{
157
+ id: z.ZodString;
158
+ owner_slug: z.ZodOptional<z.ZodString>;
159
+ }, z.core.$strip>>;
160
+ searched: z.ZodArray<z.ZodString>;
161
+ qualification: z.ZodOptional<z.ZodObject<{
162
+ model: z.ZodEnum<{
163
+ llm: "llm";
164
+ native: "native";
165
+ }>;
166
+ model_id: z.ZodOptional<z.ZodString>;
167
+ latency_ms: z.ZodOptional<z.ZodNumber>;
168
+ input_tokens: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
169
+ output_tokens: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
170
+ total_tokens: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
171
+ applied: z.ZodBoolean;
172
+ judged: z.ZodNumber;
173
+ rejected: z.ZodNumber;
174
+ unjudged: z.ZodNumber;
175
+ basis: z.ZodEnum<{
176
+ llm_grade: "llm_grade";
177
+ native_auto: "native_auto";
178
+ native_manual: "native_manual";
179
+ disabled: "disabled";
180
+ calibration_failed: "calibration_failed";
181
+ }>;
182
+ threshold: z.ZodNullable<z.ZodNumber>;
183
+ }, z.core.$strip>>;
184
+ budget_used: z.ZodObject<{
185
+ retrieval_tokens: z.ZodNumber;
186
+ evidence_tokens: z.ZodNumber;
187
+ answer_tokens: z.ZodNumber;
188
+ }, z.core.$strip>;
189
+ model_usage: z.ZodObject<{
190
+ generation: z.ZodNullable<z.ZodObject<{
191
+ model: z.ZodString;
192
+ latency_ms: z.ZodNumber;
193
+ input_tokens: z.ZodNullable<z.ZodNumber>;
194
+ output_tokens: z.ZodNullable<z.ZodNumber>;
195
+ total_tokens: z.ZodNullable<z.ZodNumber>;
196
+ }, z.core.$strip>>;
197
+ verification: z.ZodNullable<z.ZodObject<{
198
+ model: z.ZodString;
199
+ latency_ms: z.ZodNumber;
200
+ input_tokens: z.ZodNullable<z.ZodNumber>;
201
+ output_tokens: z.ZodNullable<z.ZodNumber>;
202
+ total_tokens: z.ZodNullable<z.ZodNumber>;
203
+ }, z.core.$strip>>;
204
+ }, z.core.$strip>;
205
+ }, z.core.$strip>;
206
+ export type AnswerOutput = z.infer<typeof AnswerOutput>;
207
+ //# sourceMappingURL=answer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answer.d.ts","sourceRoot":"","sources":["../../src/ops/answer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,qEAAqE;AACrE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkBtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;2BAgB5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,cAAc;;;;;;;;;;;2BAczB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB;;;;;;iBAOjC,CAAC;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE5E,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2BvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
@@ -0,0 +1,90 @@
1
+ import { z } from 'zod';
2
+ import { DatePrefix, Line, PageRole, RecallQualification, ResultEnvelope, SlugFilter } from "../common.js";
3
+ /** A direct question over the existing qualified recall pipeline. */
4
+ export const AnswerInput = z.object({
5
+ question: z.string().trim().min(1),
6
+ /** Maximum qualified page/document candidates considered related. */
7
+ limit: z.number().int().positive().max(100).optional(),
8
+ /** Internal evidence budget; answer never offers recall's full-body escape hatch. */
9
+ retrieval_budget: z.number().int().positive().optional(),
10
+ include: z.array(PageRole).optional(),
11
+ filter: SlugFilter.optional(),
12
+ since: DatePrefix.optional(),
13
+ until: DatePrefix.optional(),
14
+ expand: z.boolean().optional(),
15
+ graph: z.boolean().optional(),
16
+ /** Answer skips reranking by default; opt in when strict retrieval qualification is worth the latency. */
17
+ rerank: z.boolean().optional(),
18
+ /** Return the bounded evidence supplied to the answer model. Off keeps the response compact. */
19
+ include_context: z.boolean().optional(),
20
+ /** Per-call answer ceiling, still bounded by the configured answer role. */
21
+ max_answer_tokens: z.number().int().positive().max(8192).optional(),
22
+ });
23
+ export const AnswerContextItem = z.discriminatedUnion('type', [
24
+ z.object({
25
+ evidence_id: z.string(),
26
+ type: z.literal('page'),
27
+ slug: z.string(),
28
+ title: z.string(),
29
+ lines: z.array(Line).min(1),
30
+ }),
31
+ z.object({
32
+ evidence_id: z.string(),
33
+ type: z.literal('document'),
34
+ document_id: z.string(),
35
+ owner_slug: z.string().optional(),
36
+ pages: z.array(z.number().int().positive()).min(1).optional(),
37
+ quote: z.string().min(1),
38
+ }),
39
+ ]);
40
+ export const AnswerCitation = z.discriminatedUnion('type', [
41
+ z.object({
42
+ id: z.string(),
43
+ type: z.literal('page'),
44
+ slug: z.string(),
45
+ lines: z.array(z.number().int().positive()).min(1),
46
+ }),
47
+ z.object({
48
+ id: z.string(),
49
+ type: z.literal('document'),
50
+ document_id: z.string(),
51
+ owner_slug: z.string().optional(),
52
+ pages: z.array(z.number().int().positive()).min(1).optional(),
53
+ }),
54
+ ]);
55
+ /** A content-free receipt for one request to the configured answer model. */
56
+ export const AnswerModelCallReceipt = z.object({
57
+ model: z.string(),
58
+ latency_ms: z.number().nonnegative(),
59
+ /** Null means the compatible endpoint did not report this value; it is never estimated here. */
60
+ input_tokens: z.number().int().nonnegative().nullable(),
61
+ output_tokens: z.number().int().nonnegative().nullable(),
62
+ total_tokens: z.number().int().nonnegative().nullable(),
63
+ });
64
+ export const AnswerOutput = ResultEnvelope.extend({
65
+ outcome: z.enum(['complete', 'partial', 'not_found', 'not_answered']),
66
+ answer: z.string().nullable(),
67
+ coverage: z.record(z.string(), z.boolean()),
68
+ citations: z.array(AnswerCitation),
69
+ /** Present only when explicitly requested; contains the exact bounded evidence considered. */
70
+ context: z.array(AnswerContextItem).optional(),
71
+ /** Ranked compact identities only. Use recall/read when evidence text is needed. */
72
+ related_page_slugs: z.array(z.string()),
73
+ related_documents: z.array(z.object({
74
+ id: z.string(),
75
+ owner_slug: z.string().optional(),
76
+ })),
77
+ searched: z.array(z.string()),
78
+ qualification: RecallQualification.optional(),
79
+ budget_used: z.object({
80
+ retrieval_tokens: z.number().int().nonnegative(),
81
+ evidence_tokens: z.number().int().nonnegative(),
82
+ answer_tokens: z.number().int().nonnegative(),
83
+ }),
84
+ /** Actual provider receipts. These are separate from the bounded token estimates above. */
85
+ model_usage: z.object({
86
+ generation: AnswerModelCallReceipt.nullable(),
87
+ verification: AnswerModelCallReceipt.nullable(),
88
+ }),
89
+ });
90
+ //# sourceMappingURL=answer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answer.js","sourceRoot":"","sources":["../../src/ops/answer.ts"],"names":[],"mappings":"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"}