@rubytech/create-realagent 1.0.832 → 1.0.834

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 (97) hide show
  1. package/dist/index.js +131 -9
  2. package/package.json +1 -1
  3. package/payload/platform/lib/admins-write/dist/index.d.ts +87 -0
  4. package/payload/platform/lib/admins-write/dist/index.d.ts.map +1 -0
  5. package/payload/platform/lib/admins-write/dist/index.js +248 -0
  6. package/payload/platform/lib/admins-write/dist/index.js.map +1 -0
  7. package/payload/platform/lib/admins-write/src/index.ts +311 -0
  8. package/payload/platform/lib/admins-write/tsconfig.json +8 -0
  9. package/payload/platform/neo4j/migrations/009-conversation-archive-title.ts +197 -0
  10. package/payload/platform/neo4j/schema.cypher +1 -1
  11. package/payload/platform/package.json +2 -2
  12. package/payload/platform/plugins/admin/PLUGIN.md +1 -1
  13. package/payload/platform/plugins/admin/mcp/dist/index.js +37 -44
  14. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  15. package/payload/platform/plugins/docs/references/internals.md +4 -3
  16. package/payload/platform/plugins/memory/bin/conversation-archive-ingest.mjs +215 -43
  17. package/payload/platform/plugins/memory/bin/conversation-archive-ingest.sh +7 -2
  18. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js +75 -0
  19. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js.map +1 -1
  20. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts +16 -10
  21. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts.map +1 -1
  22. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js +155 -100
  23. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js.map +1 -1
  24. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.d.ts +13 -5
  25. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.d.ts.map +1 -1
  26. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js +53 -59
  27. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js.map +1 -1
  28. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js +9 -0
  29. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js.map +1 -1
  30. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts +24 -7
  31. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts.map +1 -1
  32. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js +47 -11
  33. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js.map +1 -1
  34. package/payload/platform/plugins/memory/skills/conversation-archive/SKILL.md +45 -8
  35. package/payload/platform/scripts/lib/resolve-account-dir.sh +3 -1
  36. package/payload/platform/scripts/migrate-import.sh +3 -1
  37. package/payload/platform/scripts/seed-neo4j.sh +13 -3
  38. package/payload/server/chunk-CRAIGEXY.js +654 -0
  39. package/payload/server/chunk-GK4WHM3H.js +9961 -0
  40. package/payload/server/chunk-I2NOLBQA.js +2123 -0
  41. package/payload/server/chunk-IVTESKFR.js +9961 -0
  42. package/payload/server/chunk-KD3XP4IK.js +1116 -0
  43. package/payload/server/chunk-KKGGT5RH.js +654 -0
  44. package/payload/server/chunk-MRJGG6CS.js +2124 -0
  45. package/payload/server/chunk-OJZPS4BL.js +367 -0
  46. package/payload/server/chunk-ZVW5XKPU.js +1116 -0
  47. package/payload/server/client-pool-FM3YJWV5.js +32 -0
  48. package/payload/server/client-pool-J5BCVVI2.js +32 -0
  49. package/payload/server/cloudflare-task-tracker-FSPEJOTH.js +19 -0
  50. package/payload/server/cloudflare-task-tracker-XCUO4N74.js +19 -0
  51. package/payload/server/maxy-edge.js +6 -5
  52. package/payload/server/neo4j-migrations-5AN2U3YO.js +664 -0
  53. package/payload/server/neo4j-migrations-XP7XDVPX.js +664 -0
  54. package/payload/server/public/assets/{Checkbox-CTGhpDKq.js → Checkbox-Bq6ORjz2.js} +1 -1
  55. package/payload/server/public/assets/admin-CstEkw-G.js +352 -0
  56. package/payload/server/public/assets/data-DwZZ7qbH.js +1 -0
  57. package/payload/server/public/assets/graph-DceEv42K.js +1 -0
  58. package/payload/server/public/assets/{jsx-runtime-D4WovFYk.css → jsx-runtime-DidQeNoZ.css} +1 -1
  59. package/payload/server/public/assets/page-Bpi_jPw6.js +50 -0
  60. package/payload/server/public/assets/{page-DkBfWy4C.js → page-CFWoVkgV.js} +1 -1
  61. package/payload/server/public/assets/{public-BdVIVpv8.js → public-BWMwq5Jj.js} +1 -1
  62. package/payload/server/public/assets/{useAdminFetch-DmHu0oCx.js → useAdminFetch-B93ig7ef.js} +1 -1
  63. package/payload/server/public/assets/{useVoiceRecorder-CSc_hxjV.js → useVoiceRecorder-Cb0nAtOo.js} +1 -1
  64. package/payload/server/public/data.html +5 -5
  65. package/payload/server/public/graph.html +6 -6
  66. package/payload/server/public/index.html +8 -8
  67. package/payload/server/public/public.html +5 -5
  68. package/payload/server/server.js +376 -167
  69. package/payload/platform/plugins/admin/mcp/dist/lib/review-tools.d.ts +0 -31
  70. package/payload/platform/plugins/admin/mcp/dist/lib/review-tools.d.ts.map +0 -1
  71. package/payload/platform/plugins/admin/mcp/dist/lib/review-tools.js +0 -666
  72. package/payload/platform/plugins/admin/mcp/dist/lib/review-tools.js.map +0 -1
  73. package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.d.ts +0 -61
  74. package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.d.ts.map +0 -1
  75. package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.js +0 -266
  76. package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.js.map +0 -1
  77. package/payload/platform/plugins/memory/mcp/dist/tools/whatsapp-export-insight-pass.d.ts +0 -27
  78. package/payload/platform/plugins/memory/mcp/dist/tools/whatsapp-export-insight-pass.d.ts.map +0 -1
  79. package/payload/platform/plugins/memory/mcp/dist/tools/whatsapp-export-insight-pass.js +0 -477
  80. package/payload/platform/plugins/memory/mcp/dist/tools/whatsapp-export-insight-pass.js.map +0 -1
  81. package/payload/platform/plugins/memory/mcp/dist/tools/whatsapp-export-insight-write.d.ts +0 -27
  82. package/payload/platform/plugins/memory/mcp/dist/tools/whatsapp-export-insight-write.d.ts.map +0 -1
  83. package/payload/platform/plugins/memory/mcp/dist/tools/whatsapp-export-insight-write.js +0 -160
  84. package/payload/platform/plugins/memory/mcp/dist/tools/whatsapp-export-insight-write.js.map +0 -1
  85. package/payload/platform/plugins/memory/mcp/dist/tools/whatsapp-export-parse.d.ts +0 -10
  86. package/payload/platform/plugins/memory/mcp/dist/tools/whatsapp-export-parse.d.ts.map +0 -1
  87. package/payload/platform/plugins/memory/mcp/dist/tools/whatsapp-export-parse.js +0 -29
  88. package/payload/platform/plugins/memory/mcp/dist/tools/whatsapp-export-parse.js.map +0 -1
  89. package/payload/platform/plugins/memory/mcp/dist/tools/whatsapp-export-preview.d.ts +0 -28
  90. package/payload/platform/plugins/memory/mcp/dist/tools/whatsapp-export-preview.d.ts.map +0 -1
  91. package/payload/platform/plugins/memory/mcp/dist/tools/whatsapp-export-preview.js +0 -34
  92. package/payload/platform/plugins/memory/mcp/dist/tools/whatsapp-export-preview.js.map +0 -1
  93. package/payload/server/public/assets/admin-BNwPsMhJ.js +0 -352
  94. package/payload/server/public/assets/data-Y77FLKjs.js +0 -1
  95. package/payload/server/public/assets/graph-N_Bw-8oT.js +0 -1
  96. package/payload/server/public/assets/page-BKLGP-th.js +0 -50
  97. /package/payload/server/public/assets/{jsx-runtime-DkaAusaX.js → jsx-runtime-DH5S-MwB.js} +0 -0
@@ -14,13 +14,16 @@
14
14
  * the Anthropic API key. The API-key path is reserved for the public
15
15
  * agent.
16
16
  *
17
- * Hallucination defence: every returned `kind` is verified against the
18
- * loaded ontology label set. Sections whose `kind` is not a real label
19
- * are tagged `UNMAPPED`. Failure of the LLM call (missing creds, network,
20
- * malformed JSON) returns `{kind: "error", reason}` (Task 897 vocabulary
21
- * was `kind: "fallback"`). The caller decides whether to abort the
22
- * ingest or degrade-on-error per session; classifier never silently
23
- * substitutes a degraded write.
17
+ * Hallucination defence: section `kind` is enforced as a closed enum in
18
+ * `ClassifierOutputTool.input_schema`, so a hallucinated kind cannot reach
19
+ * this module Anthropic rejects the tool_use input at the API boundary.
20
+ * For `related[].kind` and `documentEdges[].targetKind` (which the static
21
+ * schema cannot constrain because the live ontology label set is a runtime
22
+ * input), the post-validator drops any label not in `ontologyLabels`.
23
+ * Failure of the LLM call (missing creds, network, schema-violating
24
+ * `tool_use.input`) returns `{kind: "error", reason}`. The caller decides
25
+ * whether to abort the ingest or degrade-on-error per session; classifier
26
+ * never silently substitutes a degraded write.
24
27
  */
25
28
  import { callOauthLlm } from "../../../../../lib/oauth-llm/dist/index.js";
26
29
  import { HAIKU_MODEL } from "../../../../../lib/models/dist/index.js";
@@ -94,9 +97,10 @@ function projectOutputTokens(documentTextLength) {
94
97
  }
95
98
  /**
96
99
  * Closed enumeration of section `kind` values. Each becomes a secondary
97
- * label on the `:Section` node (e.g. `:Section:Position`). Anything outside
98
- * this list collapses to `Other` (the writer stamps the classifier's
99
- * one-line reason on `:Section:Other.classifierReason` for ontology growth).
100
+ * label on the `:Section` node (e.g. `:Section:Position`). The `kind` field
101
+ * is enforced as an `enum` in `ClassifierOutputTool.input_schema`, so a
102
+ * hallucinated kind cannot reach the post-validator — Anthropic rejects the
103
+ * tool_use input at the API boundary (Task 898).
100
104
  *
101
105
  * Source of truth: schema-base.md "Section kinds" table. Changes here MUST
102
106
  * be mirrored there or the validator will reject the secondary label.
@@ -154,6 +158,109 @@ export const ALL_SECTION_KINDS = new Set([
154
158
  ...STANDALONE_NODE_KINDS,
155
159
  SECTION_KIND_OTHER,
156
160
  ]);
161
+ // ---------------------------------------------------------------------------
162
+ // Task 898 — structured tool-use schema.
163
+ //
164
+ // Forces Haiku to emit its output as `tool_use.input` matching this JSON-Schema-
165
+ // draft-7 contract. Anthropic validates the payload at the API boundary, so:
166
+ // - hallucinated `kind` values are impossible (enum constraint);
167
+ // - markdown fences cannot wrap the response (no text block at all);
168
+ // - `max_tokens` truncation surfaces as a structurally-invalid `tool_use.input`
169
+ // (missing required fields on the trailing section), which the existing
170
+ // missing-offsets loud-fail at classifyDocument catches without ambiguity.
171
+ //
172
+ // Open-ended fields (`properties`, `targetProperties`, edge `properties`) use
173
+ // `additionalProperties: true` because per-section property keys are domain-
174
+ // specific (Position has jobTitle/startDate; Education has degree/fieldOfStudy;
175
+ // chat-mode chunks have firstMessageAt/messageCount). Ontology validation of
176
+ // `related[].kind` and `documentEdges[].targetKind` stays in the post-validator —
177
+ // the live ontology label set is a runtime input the static schema cannot encode.
178
+ // ---------------------------------------------------------------------------
179
+ const ALL_SECTION_KINDS_LIST = Array.from(ALL_SECTION_KINDS);
180
+ export const ClassifierOutputTool = {
181
+ name: "emit_classifier_output",
182
+ description: "Emit the classified document structure for a Neo4j knowledge graph: per-section typed chunks with anchor edges, optional related-entity edges, document-level edges, and orphan candidates.",
183
+ input_schema: {
184
+ type: "object",
185
+ required: ["documentSummary", "documentKeywords", "sections", "orphanCandidates"],
186
+ properties: {
187
+ documentSummary: { type: "string" },
188
+ documentKeywords: { type: "array", items: { type: "string" } },
189
+ sections: {
190
+ type: "array",
191
+ items: {
192
+ type: "object",
193
+ required: ["kind", "title", "summary", "sourceStart", "sourceEnd", "properties", "anchorEdge"],
194
+ properties: {
195
+ kind: { type: "string", enum: ALL_SECTION_KINDS_LIST },
196
+ title: { type: "string", maxLength: 200 },
197
+ summary: { type: "string", maxLength: SUMMARY_MAX_CHARS },
198
+ sourceStart: { type: "integer", minimum: 0 },
199
+ sourceEnd: { type: "integer", minimum: 0 },
200
+ properties: { type: "object", additionalProperties: true },
201
+ anchorEdge: {
202
+ type: ["object", "null"],
203
+ required: ["type", "direction"],
204
+ properties: {
205
+ type: { type: "string" },
206
+ direction: { type: "string", enum: ["from-anchor", "to-anchor"] },
207
+ properties: { type: "object", additionalProperties: true },
208
+ },
209
+ },
210
+ related: {
211
+ type: "array",
212
+ items: {
213
+ type: "object",
214
+ required: ["kind", "properties", "edge"],
215
+ properties: {
216
+ kind: { type: "string" },
217
+ properties: { type: "object", additionalProperties: true },
218
+ edge: {
219
+ type: "object",
220
+ required: ["type", "direction"],
221
+ properties: {
222
+ type: { type: "string" },
223
+ direction: { type: "string", enum: ["outgoing", "incoming"] },
224
+ properties: { type: "object", additionalProperties: true },
225
+ },
226
+ },
227
+ merge: { type: "boolean" },
228
+ },
229
+ },
230
+ },
231
+ classifierReason: { type: "string" },
232
+ },
233
+ },
234
+ },
235
+ documentEdges: {
236
+ type: "array",
237
+ items: {
238
+ type: "object",
239
+ required: ["type", "direction", "targetKind", "targetProperties"],
240
+ properties: {
241
+ type: { type: "string" },
242
+ direction: { type: "string", enum: ["outgoing", "incoming"] },
243
+ targetKind: { type: "string" },
244
+ targetProperties: { type: "object", additionalProperties: true },
245
+ merge: { type: "boolean" },
246
+ },
247
+ },
248
+ },
249
+ orphanCandidates: {
250
+ type: "array",
251
+ items: {
252
+ type: "object",
253
+ required: ["kind", "label", "reason"],
254
+ properties: {
255
+ kind: { type: "string" },
256
+ label: { type: "string" },
257
+ reason: { type: "string" },
258
+ },
259
+ },
260
+ },
261
+ },
262
+ },
263
+ };
157
264
  // Task 894 — chat-mode system prompt. Used when ClassifyParams.mode === 'chat'.
158
265
  // Input is the raw text body of a WhatsApp `_chat.txt` export (or any chat
159
266
  // export that follows the bracketed-timestamp + sender + colon line shape);
@@ -209,7 +316,7 @@ const CHAT_SYSTEM_PROMPT = [
209
316
  "- Even a one-message archive must produce one chunk — never return zero chunks for non-empty input.",
210
317
  "- Offset coverage: chunks MUST cover every message in chronological order. Adjacent chunks should be contiguous (chunk N's sourceEnd equals chunk N+1's sourceStart) so no message is skipped. messageCount summed across chunks equals total archive messages.",
211
318
  "",
212
- "Respond with ONLY the JSON object, no prose, no markdown fences.",
319
+ "Call the `emit_classifier_output` tool with the structured result. Do not emit any text response.",
213
320
  ].join("\n");
214
321
  const SYSTEM_PROMPT = [
215
322
  "You are a document section classifier for a Neo4j knowledge graph. You map sections of an unstructured document onto a closed enumeration of section kinds, each of which becomes a secondary label on a `:Section` node.",
@@ -256,35 +363,11 @@ const SYSTEM_PROMPT = [
256
363
  "- Never invent edge names. Use the natural-edge map exactly as given. The graph validator rejects writes with unknown edge types.",
257
364
  "- Be conservative with 'related' entities — only include them when the section explicitly names them.",
258
365
  "- Offsets cover the source: sourceStart and sourceEnd are integer character positions in the supplied document text. Do not re-emit body text — the server reconstructs it from your offsets.",
259
- "- Respond with ONLY the JSON object, no prose, no markdown fences.",
366
+ "- Call the `emit_classifier_output` tool with the structured result. Do not emit any text response.",
260
367
  ].join("\n");
261
368
  // ---------------------------------------------------------------------------
262
369
  // Helpers
263
370
  // ---------------------------------------------------------------------------
264
- /**
265
- * Strip a balanced markdown fence from a JSON response. Returns:
266
- * { kind: "ok", json } when the text was bare JSON or fully fenced.
267
- * { kind: "truncated", reason } when the text opens a fence but never closes
268
- * it — a structural fingerprint of `max_tokens` mid-response (Task 897
269
- * sub-scope G, replacing the pre-897 silent fall-through to JSON.parse
270
- * which masked truncation as `malformed JSON`).
271
- */
272
- function extractJson(raw) {
273
- const trimmed = raw.trim();
274
- const balanced = trimmed.match(/^```(?:json)?\s*([\s\S]*?)```$/);
275
- if (balanced)
276
- return { kind: "ok", json: balanced[1].trim() };
277
- // One-sided fence — opens with ``` (optionally `json`) but no closing fence.
278
- // This is the truncation fingerprint: the model started a fenced response
279
- // and ran out of output tokens before closing it.
280
- if (/^```(?:json)?/.test(trimmed) && !/```\s*$/.test(trimmed)) {
281
- return {
282
- kind: "truncated",
283
- reason: "response-truncated: opening ``` fence with no closing — model likely hit max_tokens mid-response",
284
- };
285
- }
286
- return { kind: "ok", json: trimmed };
287
- }
288
371
  function logError(accountId, reason) {
289
372
  process.stderr.write(`[memory-classify] [${accountId}] ERROR reason="${reason}"\n`);
290
373
  }
@@ -328,34 +411,32 @@ function asNonNegativeInt(v) {
328
411
  export async function classifyDocument(params) {
329
412
  const { accountId, anchorDescription, ontologyLabels, naturalEdgeMap, documentText } = params;
330
413
  const mode = params.mode ?? "document";
331
- // Task 896 clause 3 + Task 897 sub-scope F dispatch.
414
+ // Task 896 clause 3 + Task 897 sub-scope F + Task 902 sub-scope C dispatch.
332
415
  //
333
- // Document mode forces the chunked path when EITHER:
416
+ // BOTH modes force the chunked path when EITHER:
334
417
  // - the input exceeds CHUNK_CHAR_SIZE (input-size gate, defence-in-depth), OR
335
418
  // - the projected output tokens exceed PROMPT_OUTPUT_TOKEN_BUDGET
336
419
  // (output-size gate, the primary trigger post-Task-896 since the
337
420
  // offsets-only schema means input size no longer predicts output size).
338
421
  //
339
- // Oversize chat mode loud-fails (sessionize must keep sessions under
340
- // the ceiling, per eng review). Single-shot path stays unchanged below.
341
- if (mode === "document") {
342
- const projected = projectOutputTokens(documentText.length);
343
- if (documentText.length > CHUNK_CHAR_SIZE || projected > PROMPT_OUTPUT_TOKEN_BUDGET) {
344
- process.stderr.write(`[memory-classify] [${accountId}] dispatch=chunked chars=${documentText.length} projectedOutputTokens=${projected} budget=${PROMPT_OUTPUT_TOKEN_BUDGET}\n`);
345
- return classifyDocumentChunked(params);
346
- }
422
+ // Pre-902 chat mode loud-failed instead of dispatching chunked, which
423
+ // forced operators to re-issue with a smaller --session-gap-hours to
424
+ // chunk-via-sessionize a path that combined with cleanup-by-archiveSha256
425
+ // to silently destroy 138 chunks (Adam Mackay incident, 2026-05-04).
426
+ // Removing the per-mode gate, plus removing --session-gap-hours (sub-scope
427
+ // D), means oversize chat sessions are absorbed by the chunker — no
428
+ // operator lever required.
429
+ const projected = projectOutputTokens(documentText.length);
430
+ if (documentText.length > CHUNK_CHAR_SIZE || projected > PROMPT_OUTPUT_TOKEN_BUDGET) {
431
+ process.stderr.write(`[memory-classify] [${accountId}] dispatch=chunked-${mode} chars=${documentText.length} projectedOutputTokens=${projected} budget=${PROMPT_OUTPUT_TOKEN_BUDGET}\n`);
432
+ return classifyDocumentChunked(params);
347
433
  }
348
434
  if (documentText.length > INPUT_CHAR_CEILING) {
435
+ // Should be unreachable post-902 since CHUNK_CHAR_SIZE < INPUT_CHAR_CEILING
436
+ // by construction, but kept as defence-in-depth in case constants drift
437
+ // between the chunker and the input ceiling.
349
438
  const overage = `chars=${documentText.length}, ceiling=${INPUT_CHAR_CEILING}`;
350
- if (mode === "chat") {
351
- logError(accountId, `input-too-large: chat session exceeds Haiku input ceiling (${overage}). Sessionize must split sessions before classify (Task 894).`);
352
- }
353
- else {
354
- // Document mode > INPUT_CHAR_CEILING but ≤ CHUNK_CHAR_SIZE shouldn't
355
- // happen since CHUNK_CHAR_SIZE < INPUT_CHAR_CEILING — kept as
356
- // defence-in-depth in case constants drift.
357
- logError(accountId, `input-too-large: document exceeds Haiku input ceiling without chunking (${overage}). Constants drift between CHUNK_CHAR_SIZE and INPUT_CHAR_CEILING.`);
358
- }
439
+ logError(accountId, `input-too-large: ${mode} input exceeds Haiku ceiling without chunking (${overage}). Constants drift between CHUNK_CHAR_SIZE and INPUT_CHAR_CEILING.`);
359
440
  return {
360
441
  kind: "error",
361
442
  reason: `Input is ${documentText.length} chars; classifier ceiling is ${INPUT_CHAR_CEILING}.`,
@@ -395,57 +476,35 @@ export async function classifyDocument(params) {
395
476
  // which keep the wrapper's 60s default.
396
477
  process.stderr.write(`[memory-classify] [${accountId}] calling haiku (mode=${mode}, chars=${documentText.length}, labels=${ontologyLabels.size}, timeoutMs=180000)\n`);
397
478
  const haikuStart = Date.now();
479
+ // Task 898 — forced tool-use makes Haiku emit its output as a structured
480
+ // `tool_use.input` payload validated by Anthropic against
481
+ // `ClassifierOutputTool.input_schema`. Removes the markdown-fence /
482
+ // malformed-JSON / response-truncated failure modes by construction:
483
+ // truncation now manifests as a structurally-invalid `tool_use.input`
484
+ // (missing required fields on the trailing section), caught by the
485
+ // existing missing-offsets loud-fail below.
398
486
  const llmResult = await callOauthLlm({
399
487
  model: HAIKU_MODEL,
400
488
  system: systemPrompt,
401
489
  userMessage,
402
490
  maxTokens: MAX_OUTPUT_TOKENS,
403
491
  timeoutMs: 180_000,
492
+ tools: [ClassifierOutputTool],
493
+ toolChoiceName: ClassifierOutputTool.name,
404
494
  });
405
495
  const haikuMs = Date.now() - haikuStart;
406
496
  if (llmResult.kind === "fallback") {
407
497
  logError(accountId, `${llmResult.cause}: ${llmResult.reason}`);
408
498
  return { kind: "error", reason: llmResult.reason };
409
499
  }
410
- const responseText = llmResult.text;
411
- // Task 897 sub-scope G — surface finish-reason + output-tokens per call so
412
- // a `max_tokens` from Haiku appears directly in observability instead of
413
- // surfacing downstream as `malformed JSON`.
414
500
  const stopReason = llmResult.stopReason ?? "(unknown)";
415
501
  const outputTokens = llmResult.outputTokens ?? -1;
416
- process.stderr.write(`[memory-classify] [${accountId}] response-finish-reason=${stopReason} output-tokens=${outputTokens}\n`);
417
- // --- Parse + validate ---
418
- // Task 897 sub-scope G fence handling is structural now. A one-sided
419
- // fence (opening ``` with no closing) is the `max_tokens` truncation
420
- // fingerprint; surface it as `response-truncated` instead of falling
421
- // through to JSON.parse and reporting `malformed JSON`.
422
- const fence = extractJson(responseText);
423
- if (fence.kind === "truncated") {
424
- logError(accountId, `${fence.reason} stop-reason=${stopReason} output-tokens=${outputTokens} len=${responseText.length} pre-strip-tail=${JSON.stringify(responseText.slice(-200))}`);
425
- return { kind: "error", reason: "Haiku response truncated mid-fence (likely max_tokens hit)" };
426
- }
427
- const jsonText = fence.json;
428
- let parsed;
429
- try {
430
- parsed = JSON.parse(jsonText);
431
- }
432
- catch (err) {
433
- // Task 896 clause 5: surface diagnostics so a malformed-JSON error
434
- // distinguishes fence drift and genuine model junk. The truncation case
435
- // is now caught above by `extractJson` returning `kind: "truncated"`,
436
- // so this branch covers genuinely malformed JSON only.
437
- const message = err instanceof Error ? err.message : String(err);
438
- const fenceStripped = jsonText !== responseText;
439
- logError(accountId, `malformed JSON: parse-error=${JSON.stringify(message)} len=${responseText.length} fence-stripped=${fenceStripped} stop-reason=${stopReason} ` +
440
- `pre-strip-head=${JSON.stringify(responseText.slice(0, 200))} ` +
441
- `pre-strip-tail=${JSON.stringify(responseText.slice(-200))}`);
442
- return { kind: "error", reason: "Haiku returned malformed JSON" };
443
- }
444
- const root = asObject(parsed);
445
- if (!root) {
446
- logError(accountId, "response is not an object");
447
- return { kind: "error", reason: "invalid response shape" };
448
- }
502
+ process.stderr.write(`[memory-classify] [${accountId}] structured-output ok stop-reason=${stopReason} output-tokens=${outputTokens}\n`);
503
+ // Task 898 `tool_use.input` is already a typed object, validated by
504
+ // Anthropic against the tool's input_schema. No JSON.parse, no fence
505
+ // stripping. The `as*` helpers below still defensively narrow each field
506
+ // because TS sees `Record<string, unknown>` at the wrapper boundary.
507
+ const root = llmResult.input;
449
508
  const documentSummary = asString(root.documentSummary) ?? "";
450
509
  const documentKeywords = Array.isArray(root.documentKeywords)
451
510
  ? root.documentKeywords.filter((k) => typeof k === "string")
@@ -513,14 +572,10 @@ export async function classifyDocument(params) {
513
572
  });
514
573
  continue;
515
574
  }
516
- // Resolve `kind` against the closed enumeration. Anything outside the
517
- // enumeration collapses to `Other` with the classifier's reason. This
518
- // is distinct from the LLM-call fallback (which aborts the ingest
519
- // entirely): `Other` is a successful classification of a section the
520
- // ontology doesn't yet have a kind for.
521
- const rawKind = asString(obj.kind) ?? SECTION_KIND_OTHER;
522
- const isKnownKind = ALL_SECTION_KINDS.has(rawKind);
523
- const kind = isKnownKind ? rawKind : SECTION_KIND_OTHER;
575
+ // Task 898 — the `kind` enum is enforced by Anthropic's schema validator,
576
+ // so a hallucinated kind cannot reach this point. The pre-Task-898
577
+ // collapse-to-Other branch is unreachable dead code on the structured path.
578
+ const kind = asString(obj.kind) ?? SECTION_KIND_OTHER;
524
579
  const classifierReason = asString(obj.classifierReason) ?? undefined;
525
580
  let anchorEdge = null;
526
581
  const rawAnchor = asObject(obj.anchorEdge);
@@ -1 +1 @@
1
- {"version":3,"file":"llm-classifier.js","sourceRoot":"","sources":["../../src/lib/llm-classifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm-classifier.js","sourceRoot":"","sources":["../../src/lib/llm-classifier.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,10 @@
3
3
  *
4
4
  * Given a pool of candidate entities (from memory-search) and a natural-language
5
5
  * ranking criterion, returns a ranked ordering with per-item reasoning. When the
6
- * LLM is unavailable (no API key, network error, malformed response, or all
7
- * hallucinated nodeIds), returns a fallback reason that callers use to produce
8
- * an unranked result with a visible "[Ranking unavailable: ...]" notice.
6
+ * LLM is unavailable (missing OAuth credentials, network error, schema-violating
7
+ * `tool_use.input`, or all hallucinated nodeIds), returns an error reason that
8
+ * callers use to produce an unranked result with a visible
9
+ * "[Ranking unavailable: ...]" notice.
9
10
  *
10
11
  * Trust boundary: the `criteria` string comes from an agent (admin, public, or
11
12
  * workflow). The system prompt explicitly sandboxes it as a ranking directive —
@@ -13,9 +14,15 @@
13
14
  * same pattern as email/screening.ts.
14
15
  *
15
16
  * Hallucination defence: Haiku only sees nodeIds from the candidate pool, and
16
- * the parser discards any nodeId in its response that is not in the input set.
17
- * If all rankings are hallucinated, we fall back.
17
+ * the post-validator discards any nodeId in its response that is not in the
18
+ * input set. If all rankings are hallucinated, we return an error.
19
+ *
20
+ * Output is structured by construction: forced tool-use against
21
+ * `RankerOutputTool.input_schema` so Anthropic validates the response shape at
22
+ * the API boundary. Markdown-fence and malformed-JSON failure modes are
23
+ * impossible under this contract.
18
24
  */
25
+ import { type OauthLlmTool } from "../../../../../lib/oauth-llm/dist/index.js";
19
26
  export interface RankCandidate {
20
27
  nodeId: string;
21
28
  labels: string[];
@@ -40,6 +47,7 @@ export type RankResult = {
40
47
  kind: "error";
41
48
  reason: string;
42
49
  };
50
+ export declare const RankerOutputTool: OauthLlmTool;
43
51
  /**
44
52
  * Rank a pool of candidates against a natural-language criterion via Haiku.
45
53
  *
@@ -1 +1 @@
1
- {"version":3,"file":"llm-ranker.d.ts","sourceRoot":"","sources":["../../src/lib/llm-ranker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AASH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,EAAE,KAAK,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAgGtC;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,aAAa,EAAE,EAC3B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,CAAC,CAiHrB"}
1
+ {"version":3,"file":"llm-ranker.d.ts","sourceRoot":"","sources":["../../src/lib/llm-ranker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAO7F,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,EAAE,KAAK,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAgCtC,eAAO,MAAM,gBAAgB,EAAE,YAsB9B,CAAC;AAsDF;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,aAAa,EAAE,EAC3B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,CAAC,CAqFrB"}