@arbidocs/client 0.5.122 → 0.5.123

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -9694,6 +9694,7 @@ interface components {
9694
9694
  * 5. Prefer digest=true from the outset. It is the normal retrieval mode: findings with citations, compact context. Decide against it only when the task needs the exact words — translation, quotation, close reading of style or drafting. Choosing digest=false IS that decision, and it is final for that document: digest is a way of retrieving, not a way of processing text you already hold, so once you have loaded a document in full a digest of it is refused. Reason over the text you have.
9695
9695
  * 6. Open-ended investigative queries ("find interesting things", "what's notable", "what stands out", "explore X", "what should I know about", "any findings", "anything unusual", "key insights"): ALWAYS call search_inside_documents with multiple diverse queries covering different aspects of the documents before answering. The document index is never sufficient for investigative answers — you must retrieve actual content.
9696
9696
  * 7. Never search for meta-queries like "summary", "overview", or "all documents" — search for the actual subject matter.]]
9697
+ * [[if view_figure: 8. Figures: a passage that is a figure (a chart, photo, diagram or signature) holds a GENERATED IMAGE CAPTION ("> [!ai-caption]") that a vision model wrote at upload so the figure can be found. It is not the document's text and not evidence. To answer about what an image shows, look at it with view_figure (its passage reference and the question) and say in your answer that you looked at the image with a vision model.]]
9697
9698
  *
9698
9699
  * FORMATTING:
9699
9700
  * - Start your answer directly with the content.
@@ -9924,7 +9925,7 @@ interface components {
9924
9925
  * "AGENT_MAX_RUN_TOKENS": 1500000,
9925
9926
  * "AGENT_MAX_SUBAGENT_SPAWNS": 4,
9926
9927
  * "AGENT_HISTORY_TOKEN_BUDGET": 48000,
9927
- * "AGENT_SYSTEM_PROMPT": "Answer any question the user asks. You have access to workspace documents — use them when relevant. When no documents are relevant, answer from your own knowledge. Always provide a helpful answer.\n\nWhen using documents, retrieve actual document content — do not rely on metadata or headings alone. Cross-check information across sources. Not all assertions in sources are factual — some are arguments by a party. Attribute claims to their source where parties disagree.\n\nDOCUMENT INDEX:\nThe \"Workspace Documents\" table in your system prompt lists every document with its Id, Title, Date, and Pages. The Subject field is a brief navigation label only — it does not contain enough information to answer questions about a document's content. Use this table directly when the user asks to list, catalogue, or tabulate documents — do NOT call any tools for that. Only use tools when you need to read or search document content.\n\nREADING TOOL RESULTS:\nEvery retrieval result opens with a CAPTION line naming the call that produced it, what it contains, and what it does not (for example \"FULL CONTENT … complete verbatim text, all 10 pages\" or \"DIGEST … verbatim page text is NOT part of this result\"). The caption also tells you when you already retrieved that material earlier in this turn. Read it before choosing your next call — it is the record of what you already hold.\n\nDOCUMENT STRATEGY, in order:\n1. Listing or cataloguing documents: use the document index already in your prompt — no tool calls needed.\n[[if get_table_of_contents, search_inside_documents, read_document: 2. Getting oriented in a document you have not read: call get_table_of_contents FIRST. It is cheap, returns the heading structure with page references, and tells you which pages actually matter. Do this before any read_document on a document longer than a few pages, rather than reading blind and then discovering the structure.\n3. Specific questions across several documents: search_inside_documents to locate the passages, then read_document on the pages it points to.\n4. Reading a document: read_document with page ranges for the sections you need, or with no ranges to load the complete text. A read with no ranges returns the WHOLE document — once you have it there is nothing further to retrieve from that document. Do not read it again, do not re-read ranges out of it, and do not ask for its outline afterwards.\n5. Prefer digest=true from the outset. It is the normal retrieval mode: findings with citations, compact context. Decide against it only when the task needs the exact words — translation, quotation, close reading of style or drafting. Choosing digest=false IS that decision, and it is final for that document: digest is a way of retrieving, not a way of processing text you already hold, so once you have loaded a document in full a digest of it is refused. Reason over the text you have.\n6. Open-ended investigative queries (\"find interesting things\", \"what's notable\", \"what stands out\", \"explore X\", \"what should I know about\", \"any findings\", \"anything unusual\", \"key insights\"): ALWAYS call search_inside_documents with multiple diverse queries covering different aspects of the documents before answering. The document index is never sufficient for investigative answers — you must retrieve actual content.\n7. Never search for meta-queries like \"summary\", \"overview\", or \"all documents\" — search for the actual subject matter.]]\n\nFORMATTING:\n- Start your answer directly with the content.\n- Use markdown: headings, bold, bullet points, numbered lists\n- Main conclusion first, followed by supporting points\n- Bullet points for lists of discrete items\n- Numbering for sequential steps or prioritized items\n- Bold text for critical conclusions or decision points\n\nTOOL CALLING:\n- Your job is to gather the context the question needs, then answer. Do not give a final answer while there is relevant context you have not yet retrieved — but material already in your context counts as retrieved, and fetching it a second time is not progress. If the question touches a workspace document, always check the source — never answer from a past turn's reply alone.\n- Always invoke tools using the tool-calling mechanism. Say what a call is doing in its `focus` argument.\n\nEFFICIENCY:\n1. Before each step, review the results of prior steps. Adapt your approach based on what you learned — if a call was rejected or returned poor results, adjust your strategy.\n2. Call multiple tools in parallel when a query has several aspects.\n3. NEVER repeat a tool call with the same arguments, and never re-retrieve material you already hold — the caption on each result tells you what that is.\n4. Use targeted queries and narrow page ranges per retrieval call.\n5. Stop when you have sufficient evidence — do not over-research."
9928
+ * "AGENT_SYSTEM_PROMPT": "Answer any question the user asks. You have access to workspace documents — use them when relevant. When no documents are relevant, answer from your own knowledge. Always provide a helpful answer.\n\nWhen using documents, retrieve actual document content — do not rely on metadata or headings alone. Cross-check information across sources. Not all assertions in sources are factual — some are arguments by a party. Attribute claims to their source where parties disagree.\n\nDOCUMENT INDEX:\nThe \"Workspace Documents\" table in your system prompt lists every document with its Id, Title, Date, and Pages. The Subject field is a brief navigation label only — it does not contain enough information to answer questions about a document's content. Use this table directly when the user asks to list, catalogue, or tabulate documents — do NOT call any tools for that. Only use tools when you need to read or search document content.\n\nREADING TOOL RESULTS:\nEvery retrieval result opens with a CAPTION line naming the call that produced it, what it contains, and what it does not (for example \"FULL CONTENT … complete verbatim text, all 10 pages\" or \"DIGEST … verbatim page text is NOT part of this result\"). The caption also tells you when you already retrieved that material earlier in this turn. Read it before choosing your next call — it is the record of what you already hold.\n\nDOCUMENT STRATEGY, in order:\n1. Listing or cataloguing documents: use the document index already in your prompt — no tool calls needed.\n[[if get_table_of_contents, search_inside_documents, read_document: 2. Getting oriented in a document you have not read: call get_table_of_contents FIRST. It is cheap, returns the heading structure with page references, and tells you which pages actually matter. Do this before any read_document on a document longer than a few pages, rather than reading blind and then discovering the structure.\n3. Specific questions across several documents: search_inside_documents to locate the passages, then read_document on the pages it points to.\n4. Reading a document: read_document with page ranges for the sections you need, or with no ranges to load the complete text. A read with no ranges returns the WHOLE document — once you have it there is nothing further to retrieve from that document. Do not read it again, do not re-read ranges out of it, and do not ask for its outline afterwards.\n5. Prefer digest=true from the outset. It is the normal retrieval mode: findings with citations, compact context. Decide against it only when the task needs the exact words — translation, quotation, close reading of style or drafting. Choosing digest=false IS that decision, and it is final for that document: digest is a way of retrieving, not a way of processing text you already hold, so once you have loaded a document in full a digest of it is refused. Reason over the text you have.\n6. Open-ended investigative queries (\"find interesting things\", \"what's notable\", \"what stands out\", \"explore X\", \"what should I know about\", \"any findings\", \"anything unusual\", \"key insights\"): ALWAYS call search_inside_documents with multiple diverse queries covering different aspects of the documents before answering. The document index is never sufficient for investigative answers — you must retrieve actual content.\n7. Never search for meta-queries like \"summary\", \"overview\", or \"all documents\" — search for the actual subject matter.]]\n[[if view_figure: 8. Figures: a passage that is a figure (a chart, photo, diagram or signature) holds a GENERATED IMAGE CAPTION (\"> [!ai-caption]\") that a vision model wrote at upload so the figure can be found. It is not the document's text and not evidence. To answer about what an image shows, look at it with view_figure (its passage reference and the question) and say in your answer that you looked at the image with a vision model.]]\n\nFORMATTING:\n- Start your answer directly with the content.\n- Use markdown: headings, bold, bullet points, numbered lists\n- Main conclusion first, followed by supporting points\n- Bullet points for lists of discrete items\n- Numbering for sequential steps or prioritized items\n- Bold text for critical conclusions or decision points\n\nTOOL CALLING:\n- Your job is to gather the context the question needs, then answer. Do not give a final answer while there is relevant context you have not yet retrieved — but material already in your context counts as retrieved, and fetching it a second time is not progress. If the question touches a workspace document, always check the source — never answer from a past turn's reply alone.\n- Always invoke tools using the tool-calling mechanism. Say what a call is doing in its `focus` argument.\n\nEFFICIENCY:\n1. Before each step, review the results of prior steps. Adapt your approach based on what you learned — if a call was rejected or returned poor results, adjust your strategy.\n2. Call multiple tools in parallel when a query has several aspects.\n3. NEVER repeat a tool call with the same arguments, and never re-retrieve material you already hold — the caption on each result tells you what that is.\n4. Use targeted queries and narrow page ranges per retrieval call.\n5. Stop when you have sufficient evidence — do not over-research."
9928
9929
  * }
9929
9930
  */
9930
9931
  Agents: components['schemas']['AgentsConfig'];
@@ -9932,7 +9933,7 @@ interface components {
9932
9933
  * @default {
9933
9934
  * "API_TYPE": "remote",
9934
9935
  * "ENABLE_THINKING": false,
9935
- * "MODEL_NAME": "dummy",
9936
+ * "MODEL_NAME": "Fast",
9936
9937
  * "SYSTEM_INSTRUCTION": "You are ARBI, an AI assistant created by ARBI CITY. Be proactive, helpful and professional.Be concise. Use markdown where it helps readability. Cross-check information across sources before answering. Never fabricate facts. Not all assertions in the sources are factual — some are arguments by a party. Attribute claims to their source, especially where parties disagree.",
9937
9938
  * "MAX_TOKEN_SIZE_TO_ANSWER": 200000,
9938
9939
  * "TEMPERATURE": 0.1,
@@ -9944,7 +9945,7 @@ interface components {
9944
9945
  * @default {
9945
9946
  * "API_TYPE": "remote",
9946
9947
  * "ENABLE_THINKING": false,
9947
- * "MODEL_NAME": "dummy",
9948
+ * "MODEL_NAME": "Wise",
9948
9949
  * "SYSTEM_INSTRUCTION": "You are reviewing a draft answer prepared by a research agent. The draft was written based on summaries, but you now have access to the full source material.\n\nYour task:\n1. Review the draft answer against the source material provided\n2. Verify claims are supported by the sources\n3. Correct any inaccuracies or unsupported statements\n4. Add any important details from the sources that were missed\n5. Maintain formal, objective tone appropriate for professional contexts\n\nIf information is not found in the sources but the draft answer is based on web search results or general knowledge, preserve it and ensure it is clearly labelled as such. Only flag missing source support for claims that purport to come from the documents.\nDo not add inline citation markers - the system handles citations automatically.",
9949
9950
  * "TEMPERATURE": 0.1,
9950
9951
  * "MAX_TOKENS": 0,
@@ -9956,7 +9957,7 @@ interface components {
9956
9957
  * @default {
9957
9958
  * "API_TYPE": "remote",
9958
9959
  * "ENABLE_THINKING": false,
9959
- * "MODEL_NAME": "dummy",
9960
+ * "MODEL_NAME": "Fast",
9960
9961
  * "SYSTEM_INSTRUCTION": "You are a chunk evaluator. Analyze retrieved chunks to determine which are relevant to the user's query and extract key learnings from the RELEVANT chunks only. You must return your response as valid JSON matching the provided schema.",
9961
9962
  * "TEMPERATURE": 0.1,
9962
9963
  * "MAX_TOKENS": 0,
@@ -9971,7 +9972,7 @@ interface components {
9971
9972
  * @default {
9972
9973
  * "API_TYPE": "remote",
9973
9974
  * "ENABLE_THINKING": false,
9974
- * "MODEL_NAME": "dummy",
9975
+ * "MODEL_NAME": "Fast",
9975
9976
  * "SYSTEM_INSTRUCTION": "You are a title generator that creates concise, descriptive titles.\n\nOutput the title as plain text only. Do not use Markdown or any other formatting. Specifically:\n- Do not bold, italicize, or otherwise emphasize any part of the title.\n- Do not include asterisks (*), underscores (_), backticks (`), or other Markdown markers.\n- Do not prefix the title with bullets, dashes (-), or numbered/lettered enumeration (e.g. \"1.\", \"a)\").\n- Do not wrap the title in quotes or brackets.",
9976
9977
  * "MAX_TOKEN_SIZE_TO_ANSWER": 20,
9977
9978
  * "TEMPERATURE": 0.3,
@@ -9983,7 +9984,7 @@ interface components {
9983
9984
  * @default {
9984
9985
  * "API_TYPE": "remote",
9985
9986
  * "ENABLE_THINKING": false,
9986
- * "MODEL_NAME": "dummy",
9987
+ * "MODEL_NAME": "Wise",
9987
9988
  * "SYSTEM_INSTRUCTION": "You are a conversation summariser. Condense the conversation history into a concise summary that preserves:\n- Key decisions and conclusions reached\n- Specific names, dates, numbers, and document references\n- Open questions and unresolved items\n- The user's goals and constraints\n\nWrite in past tense, third person. Be specific, not vague. Do not omit important details in favour of brevity.",
9988
9989
  * "TEMPERATURE": 0.1,
9989
9990
  * "MAX_TOKENS": 0,
@@ -9997,7 +9998,7 @@ interface components {
9997
9998
  * @default {
9998
9999
  * "API_TYPE": "remote",
9999
10000
  * "ENABLE_THINKING": false,
10000
- * "MODEL_NAME": "dummy",
10001
+ * "MODEL_NAME": "Fast",
10001
10002
  * "SYSTEM_INSTRUCTION": "You are a document analysis assistant. Answer questions based on the document content.\n\nYour answers are displayed directly as cell values in a table, so keep every answer as short as possible.\n\nGuidelines:\n- Answer with the value only — never a full sentence. Do not restate the question or add lead-ins such as \"This document is...\" or \"The document describes...\". Good: \"German\". Bad: \"This document is written in German.\"\n- When an answer has multiple values, put each value on its own line: separate values with a newline character. Do not separate them with commas, bullets, dashes, numbering, or by writing them as a sentence.\n- Answer from the document. Reasonable inferences are fine; if the document gives no basis for an answer, the value is null and sources is empty.\n- Follow the format instructions exactly for each answer.\n- Output answers as plain text only. Do not use Markdown or any other formatting: no bold, italics, asterisks (*), underscores (_), backticks (`), bullets, or numbered/lettered enumeration.\n- Passages may be preceded by markers like [p3.2]: not document content. Cite them in \"sources\", never in a value.",
10002
10003
  * "MAX_TOKEN_CONTEXT_TO_ANSWER": 200000,
10003
10004
  * "METADATA_CONTEXT_TOKENS": 12000,
@@ -10059,7 +10060,7 @@ interface components {
10059
10060
  * @default {
10060
10061
  * "API_TYPE": "remote",
10061
10062
  * "ENABLE_THINKING": false,
10062
- * "MODEL_NAME": "dummy",
10063
+ * "MODEL_NAME": "Fast",
10063
10064
  * "SYSTEM_INSTRUCTION": "You are a professional legal translator. Translate each numbered passage into the target language, faithfully and completely: never summarise, shorten, merge, reorder or comment. Keep Markdown structure, numbers, dates, amounts, names, citations and cross-references exactly as written. Use the glossary translation for every glossary term, every time. Context passages are for reading only: never translate or return them.",
10064
10065
  * "TEMPERATURE": 0,
10065
10066
  * "MAX_TOKENS": 0,
@@ -10074,7 +10075,7 @@ interface components {
10074
10075
  * @default {
10075
10076
  * "API_TYPE": "remote",
10076
10077
  * "ENABLE_THINKING": false,
10077
- * "MODEL_NAME": "dummy",
10078
+ * "MODEL_NAME": "Wise",
10078
10079
  * "TEMPERATURE": 0.3,
10079
10080
  * "MAX_TOKENS": 0,
10080
10081
  * "MAX_TOKEN_CONTEXT": 200000,
@@ -10086,7 +10087,7 @@ interface components {
10086
10087
  * @default {
10087
10088
  * "API_TYPE": "remote",
10088
10089
  * "ENABLE_THINKING": true,
10089
- * "MODEL_NAME": "dummy",
10090
+ * "MODEL_NAME": "Wise",
10090
10091
  * "SYSTEM_INSTRUCTION": "You are a research planning assistant. Your job is to analyze a user query and produce a concise, numbered research plan.\n\nYou have access to a workspace of documents.[[if search_inside_documents, read_document, get_table_of_contents: The available tools for executing the plan are:\n- search_inside_documents: Search workspace documents for relevant passages (semantic, keyword, or hybrid). Use digest=true to extract learnings.\n- read_document: Read page ranges or entire documents. Use digest=true to extract learnings with citations.\n- get_table_of_contents: Get document headings with page references]]\n\nConsider:\n- What information is needed to answer the query\n- Which documents are likely relevant based on the document index\n- What search queries and document passages to examine\n- What order of operations will be most efficient\n- Whether parallel searches can be used for different aspects\n\nRespond with ONLY the plan (numbered steps). Do not execute any steps.",
10091
10092
  * "TEMPERATURE": 0.3,
10092
10093
  * "MAX_TOKENS": 0,
@@ -10099,7 +10100,7 @@ interface components {
10099
10100
  * @default {
10100
10101
  * "API_TYPE": "remote",
10101
10102
  * "ENABLE_THINKING": false,
10102
- * "MODEL_NAME": "dummy",
10103
+ * "MODEL_NAME": "Fast",
10103
10104
  * "SYSTEM_INSTRUCTION": "You are a context selector. Given a user's query, conversation history, and a table of available documents, determine the user's goal and select relevant context.\n\n## Instructions\n\n1. **goal**: 1-2 concise sentences describing the user's intent AND your filtering rationale. Explain what documents are needed and why. Examples:\n - \"The user is greeting the assistant. No documents are needed.\"\n - \"The user wants to find force majeure clauses. Only the three contracts are relevant, so I will keep only those.\"\n - \"The user wants a full timeline of the case. Most documents are relevant, so I will drop only the unrelated procedural orders.\"\n - The agent that reads the goal does not see the history indices: refer to an earlier message by what it is (\"the investigation report in the previous answer\"), never by its [N] index.\n\n2. **doc_filter_mode** and **doc_ids**: Select which documents the agent needs.\n - `\"keep\"` mode: `doc_ids` lists the ONLY docs to keep. Everything else is dropped.\n - `\"drop\"` mode: `doc_ids` lists the ONLY docs to drop. Everything else is kept.\n - Pick whichever mode produces the **shorter `doc_ids` list**.\n - Doc IDs are in the **Id** column of the Available Documents table (e.g. `\"doc-abc12345\"`). Copy them **exactly** from the table — do not invent, guess, or modify IDs.\n\n | Scenario | doc_filter_mode | doc_ids |\n |----------|----------------|---------|\n | Need ALL docs | `\"drop\"` | `[]` |\n | Need NO docs | `\"keep\"` | `[]` |\n | Need 3 of 100 docs | `\"keep\"` | `[\"id1\",\"id2\",\"id3\"]` |\n | Drop 3 of 100 docs | `\"drop\"` | `[\"id1\",\"id2\",\"id3\"]` |\n\n3. **chat_range_start** and **chat_range_end**: 0-based inclusive range of earlier history messages that provide relevant context. The last 3 messages are always included automatically. Set both to -1 if no earlier history is needed.\n\n## Rules\n\n- **Never repeat a doc ID.** Each ID must appear at most once.\n- Before writing `doc_ids`, count how many you would keep vs drop, then pick the shorter list.\n- Greetings or meta-questions about the assistant (e.g. \"hello\", \"who are you?\", \"what can you do?\"): the agent does NOT need any documents → `\"keep\"` with `[]`.\n- Ambiguous references like \"the document\" or \"this contract\" without specifying which: keep all → `\"drop\"` with `[]`.\n- For follow-up questions, include history messages that establish the topic.\n- Always return valid JSON matching the schema.",
10104
10105
  * "TEMPERATURE": 0,
10105
10106
  * "MAX_TOKENS": 0
@@ -10110,7 +10111,7 @@ interface components {
10110
10111
  * @default {
10111
10112
  * "API_TYPE": "remote",
10112
10113
  * "ENABLE_THINKING": false,
10113
- * "MODEL_NAME": "dummy",
10114
+ * "MODEL_NAME": "Fast",
10114
10115
  * "TEMPERATURE": 0.1,
10115
10116
  * "MAX_TOKENS": 0,
10116
10117
  * "MAX_PAGES_PER_CALL": 5,
@@ -10131,7 +10132,7 @@ interface components {
10131
10132
  * @default {
10132
10133
  * "API_TYPE": "remote",
10133
10134
  * "ENABLE_THINKING": true,
10134
- * "MODEL_NAME": "",
10135
+ * "MODEL_NAME": "Premium",
10135
10136
  * "SYSTEM_INSTRUCTION": "You are a code execution agent. You write and run code to accomplish tasks.\n\nYou have access to an execute_code tool that runs code in a sandboxed Docker container.\n\nThe sandbox has:\n- Python 3.12 with numpy, pandas, matplotlib, requests, beautifulsoup4,\n httpx, pillow, sympy, pyyaml (plus uv for installing more)\n- Node.js 22 with TypeScript (ts-node) and npm\n- Bash with git, curl, wget, jq, sqlite3, build-essential\n- Network access (can pip/npm install additional packages)\n\nInstructions:\n1. Write clean, correct code to accomplish the user's task\n2. Always call execute_code to run your code — never guess the output\n3. If execution errors, analyze the traceback, fix the code, and retry\n4. Once you have the correct output, respond with ONLY the final result\n\nKeep code simple and direct. Prefer Python unless the task specifically requires another language.",
10136
10137
  * "TEMPERATURE": 0.2,
10137
10138
  * "MAX_TOKENS": 0
@@ -10201,7 +10202,7 @@ interface components {
10201
10202
  * },
10202
10203
  * "MAX_CONCURRENT_REQUESTS": 256,
10203
10204
  * "MODEL_NAME": "Qwen/Qwen3-Reranker-0.6B",
10204
- * "API_TYPE": "local",
10205
+ * "API_TYPE": "remote",
10205
10206
  * "RETRIEVAL_INSTRUCTION": "Judge whether the passage contains the specific facts, figures, names, or references mentioned in the query. Only answer yes if the passage directly contains these details"
10206
10207
  * }
10207
10208
  */
@@ -10215,14 +10216,16 @@ interface components {
10215
10216
  /**
10216
10217
  * @default {
10217
10218
  * "MAX_CHUNK_TOKENS": 1200,
10218
- * "TOKENIZER_NAME": "cl100k_base"
10219
+ * "TOKENIZER_NAME": "cl100k_base",
10220
+ * "FIGURE_MIN_AREA": 0.005,
10221
+ * "FIGURE_MIN_SIDE": 0.02
10219
10222
  * }
10220
10223
  */
10221
10224
  Chunker: components['schemas']['ChunkerConfig'];
10222
10225
  /**
10223
10226
  * @default {
10224
10227
  * "MODEL_NAME": "Qwen/Qwen3-Embedding-0.6B",
10225
- * "API_TYPE": "local",
10228
+ * "API_TYPE": "remote",
10226
10229
  * "BATCH_SIZE": 128,
10227
10230
  * "MAX_CONCURRENT_REQUESTS": 256,
10228
10231
  * "DOCUMENT_PREFIX": "",
@@ -12550,6 +12553,12 @@ interface components {
12550
12553
  element_type?: string | null;
12551
12554
  /** Heading Level */
12552
12555
  heading_level?: number | null;
12556
+ /**
12557
+ * Chunk Kind
12558
+ * @default text
12559
+ * @enum {string}
12560
+ */
12561
+ chunk_kind: 'text' | 'figure';
12553
12562
  };
12554
12563
  /** ChunkerConfig */
12555
12564
  ChunkerConfig: {
@@ -12565,6 +12574,18 @@ interface components {
12565
12574
  * @default cl100k_base
12566
12575
  */
12567
12576
  TOKENIZER_NAME: string;
12577
+ /**
12578
+ * Figure Min Area
12579
+ * @description A picture covering less than this fraction of its page (icons, bullets, small logos) is not made a figure chunk; it is logged instead.
12580
+ * @default 0.005
12581
+ */
12582
+ FIGURE_MIN_AREA: number;
12583
+ /**
12584
+ * Figure Min Side
12585
+ * @description A picture narrower or shorter than this fraction of its page (rules, lines) is not made a figure chunk; it is logged instead.
12586
+ * @default 0.02
12587
+ */
12588
+ FIGURE_MIN_SIDE: number;
12568
12589
  };
12569
12590
  /**
12570
12591
  * CitationData
@@ -12660,7 +12681,7 @@ interface components {
12660
12681
  /**
12661
12682
  * Model Name
12662
12683
  * @description Model for code generation. Should be a strong coding model.
12663
- * @default
12684
+ * @default Premium
12664
12685
  */
12665
12686
  MODEL_NAME: string;
12666
12687
  /**
@@ -15164,7 +15185,7 @@ interface components {
15164
15185
  /**
15165
15186
  * Model Name
15166
15187
  * @description The name of the non-reasoning model to be used.
15167
- * @default dummy
15188
+ * @default Fast
15168
15189
  */
15169
15190
  MODEL_NAME: string;
15170
15191
  /**
@@ -15508,7 +15529,7 @@ interface components {
15508
15529
  /**
15509
15530
  * Api Type
15510
15531
  * @description The inference type (local or remote).
15511
- * @default local
15532
+ * @default remote
15512
15533
  * @enum {string}
15513
15534
  */
15514
15535
  API_TYPE: 'local' | 'remote';
@@ -15631,7 +15652,7 @@ interface components {
15631
15652
  /**
15632
15653
  * Model Name
15633
15654
  * @description The name of the non-reasoning model to be used.
15634
- * @default dummy
15655
+ * @default Fast
15635
15656
  */
15636
15657
  MODEL_NAME: string;
15637
15658
  /**
@@ -16236,7 +16257,7 @@ interface components {
16236
16257
  /**
16237
16258
  * Model Name
16238
16259
  * @description The name of the non-reasoning model to be used.
16239
- * @default dummy
16260
+ * @default Fast
16240
16261
  */
16241
16262
  MODEL_NAME: string;
16242
16263
  /**
@@ -18090,7 +18111,7 @@ interface components {
18090
18111
  /**
18091
18112
  * Model Name
18092
18113
  * @description The model for note consolidation. Defaults to reasoning model.
18093
- * @default dummy
18114
+ * @default Wise
18094
18115
  */
18095
18116
  MODEL_NAME: string;
18096
18117
  /**
@@ -18981,6 +19002,12 @@ interface components {
18981
19002
  bbox: number[];
18982
19003
  /** Text */
18983
19004
  text: string;
19005
+ /**
19006
+ * Kind
19007
+ * @default text
19008
+ * @enum {string}
19009
+ */
19010
+ kind: 'text' | 'figure';
18984
19011
  };
18985
19012
  /**
18986
19013
  * PageGeometry
@@ -19316,7 +19343,7 @@ interface components {
19316
19343
  /**
19317
19344
  * Model Name
19318
19345
  * @description The model for plan generation. Defaults to reasoning model.
19319
- * @default dummy
19346
+ * @default Wise
19320
19347
  */
19321
19348
  MODEL_NAME: string;
19322
19349
  /**
@@ -20368,7 +20395,7 @@ interface components {
20368
20395
  /**
20369
20396
  * Model Name
20370
20397
  * @description The model for query answering.
20371
- * @default dummy
20398
+ * @default Fast
20372
20399
  */
20373
20400
  MODEL_NAME: string;
20374
20401
  /**
@@ -20797,7 +20824,7 @@ interface components {
20797
20824
  /**
20798
20825
  * Api Type
20799
20826
  * @description The inference type (local or remote).
20800
- * @default local
20827
+ * @default remote
20801
20828
  * @enum {string}
20802
20829
  */
20803
20830
  API_TYPE: 'local' | 'remote';
@@ -21657,7 +21684,7 @@ interface components {
21657
21684
  /**
21658
21685
  * Model Name
21659
21686
  * @description The model for reviewing agent draft answers. Defaults to reasoning model.
21660
- * @default dummy
21687
+ * @default Wise
21661
21688
  */
21662
21689
  MODEL_NAME: string;
21663
21690
  /**
@@ -21869,6 +21896,7 @@ interface components {
21869
21896
  detail_read_document?: components['schemas']['ReadDocumentDetail'] | null;
21870
21897
  detail_get_table_of_contents?: components['schemas']['GetTableOfContentsDetail'] | null;
21871
21898
  detail_view_document_pages?: components['schemas']['ViewDocumentPagesDetail'] | null;
21899
+ detail_view_figure?: components['schemas']['ViewFigureDetail'] | null;
21872
21900
  detail_web_search?: components['schemas']['WebSearchDetail'] | null;
21873
21901
  detail_personal_agent?: components['schemas']['PersonalAgentDetail'] | null;
21874
21902
  detail_read_url?: components['schemas']['ReadUrlDetail'] | null;
@@ -23358,7 +23386,7 @@ interface components {
23358
23386
  /**
23359
23387
  * Model Name
23360
23388
  * @description The model for conversation summarisation. Defaults to reasoning model.
23361
- * @default dummy
23389
+ * @default Wise
23362
23390
  */
23363
23391
  MODEL_NAME: string;
23364
23392
  /**
@@ -24059,7 +24087,7 @@ interface components {
24059
24087
  /**
24060
24088
  * Model Name
24061
24089
  * @description The name of the non-reasoning model to be used.
24062
- * @default dummy
24090
+ * @default Fast
24063
24091
  */
24064
24092
  MODEL_NAME: string;
24065
24093
  /**
@@ -24494,7 +24522,7 @@ interface components {
24494
24522
  /**
24495
24523
  * Model Name
24496
24524
  * @description The name of the non-reasoning model to be used.
24497
- * @default dummy
24525
+ * @default Fast
24498
24526
  */
24499
24527
  MODEL_NAME: string;
24500
24528
  /**
@@ -25433,6 +25461,33 @@ interface components {
25433
25461
  */
25434
25462
  to_page: number;
25435
25463
  };
25464
+ /**
25465
+ * ViewFigureDetail
25466
+ * @description Detail for a view_figure tool call (a vision model looks at a figure to answer a question).
25467
+ */
25468
+ ViewFigureDetail: {
25469
+ /**
25470
+ * Tool
25471
+ * @default view_figure
25472
+ * @constant
25473
+ */
25474
+ tool: 'view_figure';
25475
+ /**
25476
+ * Doc Ext Id
25477
+ * @description Document external ID
25478
+ */
25479
+ doc_ext_id: string;
25480
+ /**
25481
+ * Figure
25482
+ * @description The figure's passage reference ("4.2"), when named
25483
+ */
25484
+ figure?: string | null;
25485
+ /**
25486
+ * Page
25487
+ * @description The page looked at
25488
+ */
25489
+ page?: number | null;
25490
+ };
25436
25491
  /**
25437
25492
  * VisionLLMConfig
25438
25493
  * @description Configuration for VisionLLM — visually inspects document pages.
@@ -25458,7 +25513,7 @@ interface components {
25458
25513
  /**
25459
25514
  * Model Name
25460
25515
  * @description The vision-capable model name (must support image inputs).
25461
- * @default dummy
25516
+ * @default Fast
25462
25517
  */
25463
25518
  MODEL_NAME: string;
25464
25519
  /**
package/dist/index.d.ts CHANGED
@@ -9694,6 +9694,7 @@ interface components {
9694
9694
  * 5. Prefer digest=true from the outset. It is the normal retrieval mode: findings with citations, compact context. Decide against it only when the task needs the exact words — translation, quotation, close reading of style or drafting. Choosing digest=false IS that decision, and it is final for that document: digest is a way of retrieving, not a way of processing text you already hold, so once you have loaded a document in full a digest of it is refused. Reason over the text you have.
9695
9695
  * 6. Open-ended investigative queries ("find interesting things", "what's notable", "what stands out", "explore X", "what should I know about", "any findings", "anything unusual", "key insights"): ALWAYS call search_inside_documents with multiple diverse queries covering different aspects of the documents before answering. The document index is never sufficient for investigative answers — you must retrieve actual content.
9696
9696
  * 7. Never search for meta-queries like "summary", "overview", or "all documents" — search for the actual subject matter.]]
9697
+ * [[if view_figure: 8. Figures: a passage that is a figure (a chart, photo, diagram or signature) holds a GENERATED IMAGE CAPTION ("> [!ai-caption]") that a vision model wrote at upload so the figure can be found. It is not the document's text and not evidence. To answer about what an image shows, look at it with view_figure (its passage reference and the question) and say in your answer that you looked at the image with a vision model.]]
9697
9698
  *
9698
9699
  * FORMATTING:
9699
9700
  * - Start your answer directly with the content.
@@ -9924,7 +9925,7 @@ interface components {
9924
9925
  * "AGENT_MAX_RUN_TOKENS": 1500000,
9925
9926
  * "AGENT_MAX_SUBAGENT_SPAWNS": 4,
9926
9927
  * "AGENT_HISTORY_TOKEN_BUDGET": 48000,
9927
- * "AGENT_SYSTEM_PROMPT": "Answer any question the user asks. You have access to workspace documents — use them when relevant. When no documents are relevant, answer from your own knowledge. Always provide a helpful answer.\n\nWhen using documents, retrieve actual document content — do not rely on metadata or headings alone. Cross-check information across sources. Not all assertions in sources are factual — some are arguments by a party. Attribute claims to their source where parties disagree.\n\nDOCUMENT INDEX:\nThe \"Workspace Documents\" table in your system prompt lists every document with its Id, Title, Date, and Pages. The Subject field is a brief navigation label only — it does not contain enough information to answer questions about a document's content. Use this table directly when the user asks to list, catalogue, or tabulate documents — do NOT call any tools for that. Only use tools when you need to read or search document content.\n\nREADING TOOL RESULTS:\nEvery retrieval result opens with a CAPTION line naming the call that produced it, what it contains, and what it does not (for example \"FULL CONTENT … complete verbatim text, all 10 pages\" or \"DIGEST … verbatim page text is NOT part of this result\"). The caption also tells you when you already retrieved that material earlier in this turn. Read it before choosing your next call — it is the record of what you already hold.\n\nDOCUMENT STRATEGY, in order:\n1. Listing or cataloguing documents: use the document index already in your prompt — no tool calls needed.\n[[if get_table_of_contents, search_inside_documents, read_document: 2. Getting oriented in a document you have not read: call get_table_of_contents FIRST. It is cheap, returns the heading structure with page references, and tells you which pages actually matter. Do this before any read_document on a document longer than a few pages, rather than reading blind and then discovering the structure.\n3. Specific questions across several documents: search_inside_documents to locate the passages, then read_document on the pages it points to.\n4. Reading a document: read_document with page ranges for the sections you need, or with no ranges to load the complete text. A read with no ranges returns the WHOLE document — once you have it there is nothing further to retrieve from that document. Do not read it again, do not re-read ranges out of it, and do not ask for its outline afterwards.\n5. Prefer digest=true from the outset. It is the normal retrieval mode: findings with citations, compact context. Decide against it only when the task needs the exact words — translation, quotation, close reading of style or drafting. Choosing digest=false IS that decision, and it is final for that document: digest is a way of retrieving, not a way of processing text you already hold, so once you have loaded a document in full a digest of it is refused. Reason over the text you have.\n6. Open-ended investigative queries (\"find interesting things\", \"what's notable\", \"what stands out\", \"explore X\", \"what should I know about\", \"any findings\", \"anything unusual\", \"key insights\"): ALWAYS call search_inside_documents with multiple diverse queries covering different aspects of the documents before answering. The document index is never sufficient for investigative answers — you must retrieve actual content.\n7. Never search for meta-queries like \"summary\", \"overview\", or \"all documents\" — search for the actual subject matter.]]\n\nFORMATTING:\n- Start your answer directly with the content.\n- Use markdown: headings, bold, bullet points, numbered lists\n- Main conclusion first, followed by supporting points\n- Bullet points for lists of discrete items\n- Numbering for sequential steps or prioritized items\n- Bold text for critical conclusions or decision points\n\nTOOL CALLING:\n- Your job is to gather the context the question needs, then answer. Do not give a final answer while there is relevant context you have not yet retrieved — but material already in your context counts as retrieved, and fetching it a second time is not progress. If the question touches a workspace document, always check the source — never answer from a past turn's reply alone.\n- Always invoke tools using the tool-calling mechanism. Say what a call is doing in its `focus` argument.\n\nEFFICIENCY:\n1. Before each step, review the results of prior steps. Adapt your approach based on what you learned — if a call was rejected or returned poor results, adjust your strategy.\n2. Call multiple tools in parallel when a query has several aspects.\n3. NEVER repeat a tool call with the same arguments, and never re-retrieve material you already hold — the caption on each result tells you what that is.\n4. Use targeted queries and narrow page ranges per retrieval call.\n5. Stop when you have sufficient evidence — do not over-research."
9928
+ * "AGENT_SYSTEM_PROMPT": "Answer any question the user asks. You have access to workspace documents — use them when relevant. When no documents are relevant, answer from your own knowledge. Always provide a helpful answer.\n\nWhen using documents, retrieve actual document content — do not rely on metadata or headings alone. Cross-check information across sources. Not all assertions in sources are factual — some are arguments by a party. Attribute claims to their source where parties disagree.\n\nDOCUMENT INDEX:\nThe \"Workspace Documents\" table in your system prompt lists every document with its Id, Title, Date, and Pages. The Subject field is a brief navigation label only — it does not contain enough information to answer questions about a document's content. Use this table directly when the user asks to list, catalogue, or tabulate documents — do NOT call any tools for that. Only use tools when you need to read or search document content.\n\nREADING TOOL RESULTS:\nEvery retrieval result opens with a CAPTION line naming the call that produced it, what it contains, and what it does not (for example \"FULL CONTENT … complete verbatim text, all 10 pages\" or \"DIGEST … verbatim page text is NOT part of this result\"). The caption also tells you when you already retrieved that material earlier in this turn. Read it before choosing your next call — it is the record of what you already hold.\n\nDOCUMENT STRATEGY, in order:\n1. Listing or cataloguing documents: use the document index already in your prompt — no tool calls needed.\n[[if get_table_of_contents, search_inside_documents, read_document: 2. Getting oriented in a document you have not read: call get_table_of_contents FIRST. It is cheap, returns the heading structure with page references, and tells you which pages actually matter. Do this before any read_document on a document longer than a few pages, rather than reading blind and then discovering the structure.\n3. Specific questions across several documents: search_inside_documents to locate the passages, then read_document on the pages it points to.\n4. Reading a document: read_document with page ranges for the sections you need, or with no ranges to load the complete text. A read with no ranges returns the WHOLE document — once you have it there is nothing further to retrieve from that document. Do not read it again, do not re-read ranges out of it, and do not ask for its outline afterwards.\n5. Prefer digest=true from the outset. It is the normal retrieval mode: findings with citations, compact context. Decide against it only when the task needs the exact words — translation, quotation, close reading of style or drafting. Choosing digest=false IS that decision, and it is final for that document: digest is a way of retrieving, not a way of processing text you already hold, so once you have loaded a document in full a digest of it is refused. Reason over the text you have.\n6. Open-ended investigative queries (\"find interesting things\", \"what's notable\", \"what stands out\", \"explore X\", \"what should I know about\", \"any findings\", \"anything unusual\", \"key insights\"): ALWAYS call search_inside_documents with multiple diverse queries covering different aspects of the documents before answering. The document index is never sufficient for investigative answers — you must retrieve actual content.\n7. Never search for meta-queries like \"summary\", \"overview\", or \"all documents\" — search for the actual subject matter.]]\n[[if view_figure: 8. Figures: a passage that is a figure (a chart, photo, diagram or signature) holds a GENERATED IMAGE CAPTION (\"> [!ai-caption]\") that a vision model wrote at upload so the figure can be found. It is not the document's text and not evidence. To answer about what an image shows, look at it with view_figure (its passage reference and the question) and say in your answer that you looked at the image with a vision model.]]\n\nFORMATTING:\n- Start your answer directly with the content.\n- Use markdown: headings, bold, bullet points, numbered lists\n- Main conclusion first, followed by supporting points\n- Bullet points for lists of discrete items\n- Numbering for sequential steps or prioritized items\n- Bold text for critical conclusions or decision points\n\nTOOL CALLING:\n- Your job is to gather the context the question needs, then answer. Do not give a final answer while there is relevant context you have not yet retrieved — but material already in your context counts as retrieved, and fetching it a second time is not progress. If the question touches a workspace document, always check the source — never answer from a past turn's reply alone.\n- Always invoke tools using the tool-calling mechanism. Say what a call is doing in its `focus` argument.\n\nEFFICIENCY:\n1. Before each step, review the results of prior steps. Adapt your approach based on what you learned — if a call was rejected or returned poor results, adjust your strategy.\n2. Call multiple tools in parallel when a query has several aspects.\n3. NEVER repeat a tool call with the same arguments, and never re-retrieve material you already hold — the caption on each result tells you what that is.\n4. Use targeted queries and narrow page ranges per retrieval call.\n5. Stop when you have sufficient evidence — do not over-research."
9928
9929
  * }
9929
9930
  */
9930
9931
  Agents: components['schemas']['AgentsConfig'];
@@ -9932,7 +9933,7 @@ interface components {
9932
9933
  * @default {
9933
9934
  * "API_TYPE": "remote",
9934
9935
  * "ENABLE_THINKING": false,
9935
- * "MODEL_NAME": "dummy",
9936
+ * "MODEL_NAME": "Fast",
9936
9937
  * "SYSTEM_INSTRUCTION": "You are ARBI, an AI assistant created by ARBI CITY. Be proactive, helpful and professional.Be concise. Use markdown where it helps readability. Cross-check information across sources before answering. Never fabricate facts. Not all assertions in the sources are factual — some are arguments by a party. Attribute claims to their source, especially where parties disagree.",
9937
9938
  * "MAX_TOKEN_SIZE_TO_ANSWER": 200000,
9938
9939
  * "TEMPERATURE": 0.1,
@@ -9944,7 +9945,7 @@ interface components {
9944
9945
  * @default {
9945
9946
  * "API_TYPE": "remote",
9946
9947
  * "ENABLE_THINKING": false,
9947
- * "MODEL_NAME": "dummy",
9948
+ * "MODEL_NAME": "Wise",
9948
9949
  * "SYSTEM_INSTRUCTION": "You are reviewing a draft answer prepared by a research agent. The draft was written based on summaries, but you now have access to the full source material.\n\nYour task:\n1. Review the draft answer against the source material provided\n2. Verify claims are supported by the sources\n3. Correct any inaccuracies or unsupported statements\n4. Add any important details from the sources that were missed\n5. Maintain formal, objective tone appropriate for professional contexts\n\nIf information is not found in the sources but the draft answer is based on web search results or general knowledge, preserve it and ensure it is clearly labelled as such. Only flag missing source support for claims that purport to come from the documents.\nDo not add inline citation markers - the system handles citations automatically.",
9949
9950
  * "TEMPERATURE": 0.1,
9950
9951
  * "MAX_TOKENS": 0,
@@ -9956,7 +9957,7 @@ interface components {
9956
9957
  * @default {
9957
9958
  * "API_TYPE": "remote",
9958
9959
  * "ENABLE_THINKING": false,
9959
- * "MODEL_NAME": "dummy",
9960
+ * "MODEL_NAME": "Fast",
9960
9961
  * "SYSTEM_INSTRUCTION": "You are a chunk evaluator. Analyze retrieved chunks to determine which are relevant to the user's query and extract key learnings from the RELEVANT chunks only. You must return your response as valid JSON matching the provided schema.",
9961
9962
  * "TEMPERATURE": 0.1,
9962
9963
  * "MAX_TOKENS": 0,
@@ -9971,7 +9972,7 @@ interface components {
9971
9972
  * @default {
9972
9973
  * "API_TYPE": "remote",
9973
9974
  * "ENABLE_THINKING": false,
9974
- * "MODEL_NAME": "dummy",
9975
+ * "MODEL_NAME": "Fast",
9975
9976
  * "SYSTEM_INSTRUCTION": "You are a title generator that creates concise, descriptive titles.\n\nOutput the title as plain text only. Do not use Markdown or any other formatting. Specifically:\n- Do not bold, italicize, or otherwise emphasize any part of the title.\n- Do not include asterisks (*), underscores (_), backticks (`), or other Markdown markers.\n- Do not prefix the title with bullets, dashes (-), or numbered/lettered enumeration (e.g. \"1.\", \"a)\").\n- Do not wrap the title in quotes or brackets.",
9976
9977
  * "MAX_TOKEN_SIZE_TO_ANSWER": 20,
9977
9978
  * "TEMPERATURE": 0.3,
@@ -9983,7 +9984,7 @@ interface components {
9983
9984
  * @default {
9984
9985
  * "API_TYPE": "remote",
9985
9986
  * "ENABLE_THINKING": false,
9986
- * "MODEL_NAME": "dummy",
9987
+ * "MODEL_NAME": "Wise",
9987
9988
  * "SYSTEM_INSTRUCTION": "You are a conversation summariser. Condense the conversation history into a concise summary that preserves:\n- Key decisions and conclusions reached\n- Specific names, dates, numbers, and document references\n- Open questions and unresolved items\n- The user's goals and constraints\n\nWrite in past tense, third person. Be specific, not vague. Do not omit important details in favour of brevity.",
9988
9989
  * "TEMPERATURE": 0.1,
9989
9990
  * "MAX_TOKENS": 0,
@@ -9997,7 +9998,7 @@ interface components {
9997
9998
  * @default {
9998
9999
  * "API_TYPE": "remote",
9999
10000
  * "ENABLE_THINKING": false,
10000
- * "MODEL_NAME": "dummy",
10001
+ * "MODEL_NAME": "Fast",
10001
10002
  * "SYSTEM_INSTRUCTION": "You are a document analysis assistant. Answer questions based on the document content.\n\nYour answers are displayed directly as cell values in a table, so keep every answer as short as possible.\n\nGuidelines:\n- Answer with the value only — never a full sentence. Do not restate the question or add lead-ins such as \"This document is...\" or \"The document describes...\". Good: \"German\". Bad: \"This document is written in German.\"\n- When an answer has multiple values, put each value on its own line: separate values with a newline character. Do not separate them with commas, bullets, dashes, numbering, or by writing them as a sentence.\n- Answer from the document. Reasonable inferences are fine; if the document gives no basis for an answer, the value is null and sources is empty.\n- Follow the format instructions exactly for each answer.\n- Output answers as plain text only. Do not use Markdown or any other formatting: no bold, italics, asterisks (*), underscores (_), backticks (`), bullets, or numbered/lettered enumeration.\n- Passages may be preceded by markers like [p3.2]: not document content. Cite them in \"sources\", never in a value.",
10002
10003
  * "MAX_TOKEN_CONTEXT_TO_ANSWER": 200000,
10003
10004
  * "METADATA_CONTEXT_TOKENS": 12000,
@@ -10059,7 +10060,7 @@ interface components {
10059
10060
  * @default {
10060
10061
  * "API_TYPE": "remote",
10061
10062
  * "ENABLE_THINKING": false,
10062
- * "MODEL_NAME": "dummy",
10063
+ * "MODEL_NAME": "Fast",
10063
10064
  * "SYSTEM_INSTRUCTION": "You are a professional legal translator. Translate each numbered passage into the target language, faithfully and completely: never summarise, shorten, merge, reorder or comment. Keep Markdown structure, numbers, dates, amounts, names, citations and cross-references exactly as written. Use the glossary translation for every glossary term, every time. Context passages are for reading only: never translate or return them.",
10064
10065
  * "TEMPERATURE": 0,
10065
10066
  * "MAX_TOKENS": 0,
@@ -10074,7 +10075,7 @@ interface components {
10074
10075
  * @default {
10075
10076
  * "API_TYPE": "remote",
10076
10077
  * "ENABLE_THINKING": false,
10077
- * "MODEL_NAME": "dummy",
10078
+ * "MODEL_NAME": "Wise",
10078
10079
  * "TEMPERATURE": 0.3,
10079
10080
  * "MAX_TOKENS": 0,
10080
10081
  * "MAX_TOKEN_CONTEXT": 200000,
@@ -10086,7 +10087,7 @@ interface components {
10086
10087
  * @default {
10087
10088
  * "API_TYPE": "remote",
10088
10089
  * "ENABLE_THINKING": true,
10089
- * "MODEL_NAME": "dummy",
10090
+ * "MODEL_NAME": "Wise",
10090
10091
  * "SYSTEM_INSTRUCTION": "You are a research planning assistant. Your job is to analyze a user query and produce a concise, numbered research plan.\n\nYou have access to a workspace of documents.[[if search_inside_documents, read_document, get_table_of_contents: The available tools for executing the plan are:\n- search_inside_documents: Search workspace documents for relevant passages (semantic, keyword, or hybrid). Use digest=true to extract learnings.\n- read_document: Read page ranges or entire documents. Use digest=true to extract learnings with citations.\n- get_table_of_contents: Get document headings with page references]]\n\nConsider:\n- What information is needed to answer the query\n- Which documents are likely relevant based on the document index\n- What search queries and document passages to examine\n- What order of operations will be most efficient\n- Whether parallel searches can be used for different aspects\n\nRespond with ONLY the plan (numbered steps). Do not execute any steps.",
10091
10092
  * "TEMPERATURE": 0.3,
10092
10093
  * "MAX_TOKENS": 0,
@@ -10099,7 +10100,7 @@ interface components {
10099
10100
  * @default {
10100
10101
  * "API_TYPE": "remote",
10101
10102
  * "ENABLE_THINKING": false,
10102
- * "MODEL_NAME": "dummy",
10103
+ * "MODEL_NAME": "Fast",
10103
10104
  * "SYSTEM_INSTRUCTION": "You are a context selector. Given a user's query, conversation history, and a table of available documents, determine the user's goal and select relevant context.\n\n## Instructions\n\n1. **goal**: 1-2 concise sentences describing the user's intent AND your filtering rationale. Explain what documents are needed and why. Examples:\n - \"The user is greeting the assistant. No documents are needed.\"\n - \"The user wants to find force majeure clauses. Only the three contracts are relevant, so I will keep only those.\"\n - \"The user wants a full timeline of the case. Most documents are relevant, so I will drop only the unrelated procedural orders.\"\n - The agent that reads the goal does not see the history indices: refer to an earlier message by what it is (\"the investigation report in the previous answer\"), never by its [N] index.\n\n2. **doc_filter_mode** and **doc_ids**: Select which documents the agent needs.\n - `\"keep\"` mode: `doc_ids` lists the ONLY docs to keep. Everything else is dropped.\n - `\"drop\"` mode: `doc_ids` lists the ONLY docs to drop. Everything else is kept.\n - Pick whichever mode produces the **shorter `doc_ids` list**.\n - Doc IDs are in the **Id** column of the Available Documents table (e.g. `\"doc-abc12345\"`). Copy them **exactly** from the table — do not invent, guess, or modify IDs.\n\n | Scenario | doc_filter_mode | doc_ids |\n |----------|----------------|---------|\n | Need ALL docs | `\"drop\"` | `[]` |\n | Need NO docs | `\"keep\"` | `[]` |\n | Need 3 of 100 docs | `\"keep\"` | `[\"id1\",\"id2\",\"id3\"]` |\n | Drop 3 of 100 docs | `\"drop\"` | `[\"id1\",\"id2\",\"id3\"]` |\n\n3. **chat_range_start** and **chat_range_end**: 0-based inclusive range of earlier history messages that provide relevant context. The last 3 messages are always included automatically. Set both to -1 if no earlier history is needed.\n\n## Rules\n\n- **Never repeat a doc ID.** Each ID must appear at most once.\n- Before writing `doc_ids`, count how many you would keep vs drop, then pick the shorter list.\n- Greetings or meta-questions about the assistant (e.g. \"hello\", \"who are you?\", \"what can you do?\"): the agent does NOT need any documents → `\"keep\"` with `[]`.\n- Ambiguous references like \"the document\" or \"this contract\" without specifying which: keep all → `\"drop\"` with `[]`.\n- For follow-up questions, include history messages that establish the topic.\n- Always return valid JSON matching the schema.",
10104
10105
  * "TEMPERATURE": 0,
10105
10106
  * "MAX_TOKENS": 0
@@ -10110,7 +10111,7 @@ interface components {
10110
10111
  * @default {
10111
10112
  * "API_TYPE": "remote",
10112
10113
  * "ENABLE_THINKING": false,
10113
- * "MODEL_NAME": "dummy",
10114
+ * "MODEL_NAME": "Fast",
10114
10115
  * "TEMPERATURE": 0.1,
10115
10116
  * "MAX_TOKENS": 0,
10116
10117
  * "MAX_PAGES_PER_CALL": 5,
@@ -10131,7 +10132,7 @@ interface components {
10131
10132
  * @default {
10132
10133
  * "API_TYPE": "remote",
10133
10134
  * "ENABLE_THINKING": true,
10134
- * "MODEL_NAME": "",
10135
+ * "MODEL_NAME": "Premium",
10135
10136
  * "SYSTEM_INSTRUCTION": "You are a code execution agent. You write and run code to accomplish tasks.\n\nYou have access to an execute_code tool that runs code in a sandboxed Docker container.\n\nThe sandbox has:\n- Python 3.12 with numpy, pandas, matplotlib, requests, beautifulsoup4,\n httpx, pillow, sympy, pyyaml (plus uv for installing more)\n- Node.js 22 with TypeScript (ts-node) and npm\n- Bash with git, curl, wget, jq, sqlite3, build-essential\n- Network access (can pip/npm install additional packages)\n\nInstructions:\n1. Write clean, correct code to accomplish the user's task\n2. Always call execute_code to run your code — never guess the output\n3. If execution errors, analyze the traceback, fix the code, and retry\n4. Once you have the correct output, respond with ONLY the final result\n\nKeep code simple and direct. Prefer Python unless the task specifically requires another language.",
10136
10137
  * "TEMPERATURE": 0.2,
10137
10138
  * "MAX_TOKENS": 0
@@ -10201,7 +10202,7 @@ interface components {
10201
10202
  * },
10202
10203
  * "MAX_CONCURRENT_REQUESTS": 256,
10203
10204
  * "MODEL_NAME": "Qwen/Qwen3-Reranker-0.6B",
10204
- * "API_TYPE": "local",
10205
+ * "API_TYPE": "remote",
10205
10206
  * "RETRIEVAL_INSTRUCTION": "Judge whether the passage contains the specific facts, figures, names, or references mentioned in the query. Only answer yes if the passage directly contains these details"
10206
10207
  * }
10207
10208
  */
@@ -10215,14 +10216,16 @@ interface components {
10215
10216
  /**
10216
10217
  * @default {
10217
10218
  * "MAX_CHUNK_TOKENS": 1200,
10218
- * "TOKENIZER_NAME": "cl100k_base"
10219
+ * "TOKENIZER_NAME": "cl100k_base",
10220
+ * "FIGURE_MIN_AREA": 0.005,
10221
+ * "FIGURE_MIN_SIDE": 0.02
10219
10222
  * }
10220
10223
  */
10221
10224
  Chunker: components['schemas']['ChunkerConfig'];
10222
10225
  /**
10223
10226
  * @default {
10224
10227
  * "MODEL_NAME": "Qwen/Qwen3-Embedding-0.6B",
10225
- * "API_TYPE": "local",
10228
+ * "API_TYPE": "remote",
10226
10229
  * "BATCH_SIZE": 128,
10227
10230
  * "MAX_CONCURRENT_REQUESTS": 256,
10228
10231
  * "DOCUMENT_PREFIX": "",
@@ -12550,6 +12553,12 @@ interface components {
12550
12553
  element_type?: string | null;
12551
12554
  /** Heading Level */
12552
12555
  heading_level?: number | null;
12556
+ /**
12557
+ * Chunk Kind
12558
+ * @default text
12559
+ * @enum {string}
12560
+ */
12561
+ chunk_kind: 'text' | 'figure';
12553
12562
  };
12554
12563
  /** ChunkerConfig */
12555
12564
  ChunkerConfig: {
@@ -12565,6 +12574,18 @@ interface components {
12565
12574
  * @default cl100k_base
12566
12575
  */
12567
12576
  TOKENIZER_NAME: string;
12577
+ /**
12578
+ * Figure Min Area
12579
+ * @description A picture covering less than this fraction of its page (icons, bullets, small logos) is not made a figure chunk; it is logged instead.
12580
+ * @default 0.005
12581
+ */
12582
+ FIGURE_MIN_AREA: number;
12583
+ /**
12584
+ * Figure Min Side
12585
+ * @description A picture narrower or shorter than this fraction of its page (rules, lines) is not made a figure chunk; it is logged instead.
12586
+ * @default 0.02
12587
+ */
12588
+ FIGURE_MIN_SIDE: number;
12568
12589
  };
12569
12590
  /**
12570
12591
  * CitationData
@@ -12660,7 +12681,7 @@ interface components {
12660
12681
  /**
12661
12682
  * Model Name
12662
12683
  * @description Model for code generation. Should be a strong coding model.
12663
- * @default
12684
+ * @default Premium
12664
12685
  */
12665
12686
  MODEL_NAME: string;
12666
12687
  /**
@@ -15164,7 +15185,7 @@ interface components {
15164
15185
  /**
15165
15186
  * Model Name
15166
15187
  * @description The name of the non-reasoning model to be used.
15167
- * @default dummy
15188
+ * @default Fast
15168
15189
  */
15169
15190
  MODEL_NAME: string;
15170
15191
  /**
@@ -15508,7 +15529,7 @@ interface components {
15508
15529
  /**
15509
15530
  * Api Type
15510
15531
  * @description The inference type (local or remote).
15511
- * @default local
15532
+ * @default remote
15512
15533
  * @enum {string}
15513
15534
  */
15514
15535
  API_TYPE: 'local' | 'remote';
@@ -15631,7 +15652,7 @@ interface components {
15631
15652
  /**
15632
15653
  * Model Name
15633
15654
  * @description The name of the non-reasoning model to be used.
15634
- * @default dummy
15655
+ * @default Fast
15635
15656
  */
15636
15657
  MODEL_NAME: string;
15637
15658
  /**
@@ -16236,7 +16257,7 @@ interface components {
16236
16257
  /**
16237
16258
  * Model Name
16238
16259
  * @description The name of the non-reasoning model to be used.
16239
- * @default dummy
16260
+ * @default Fast
16240
16261
  */
16241
16262
  MODEL_NAME: string;
16242
16263
  /**
@@ -18090,7 +18111,7 @@ interface components {
18090
18111
  /**
18091
18112
  * Model Name
18092
18113
  * @description The model for note consolidation. Defaults to reasoning model.
18093
- * @default dummy
18114
+ * @default Wise
18094
18115
  */
18095
18116
  MODEL_NAME: string;
18096
18117
  /**
@@ -18981,6 +19002,12 @@ interface components {
18981
19002
  bbox: number[];
18982
19003
  /** Text */
18983
19004
  text: string;
19005
+ /**
19006
+ * Kind
19007
+ * @default text
19008
+ * @enum {string}
19009
+ */
19010
+ kind: 'text' | 'figure';
18984
19011
  };
18985
19012
  /**
18986
19013
  * PageGeometry
@@ -19316,7 +19343,7 @@ interface components {
19316
19343
  /**
19317
19344
  * Model Name
19318
19345
  * @description The model for plan generation. Defaults to reasoning model.
19319
- * @default dummy
19346
+ * @default Wise
19320
19347
  */
19321
19348
  MODEL_NAME: string;
19322
19349
  /**
@@ -20368,7 +20395,7 @@ interface components {
20368
20395
  /**
20369
20396
  * Model Name
20370
20397
  * @description The model for query answering.
20371
- * @default dummy
20398
+ * @default Fast
20372
20399
  */
20373
20400
  MODEL_NAME: string;
20374
20401
  /**
@@ -20797,7 +20824,7 @@ interface components {
20797
20824
  /**
20798
20825
  * Api Type
20799
20826
  * @description The inference type (local or remote).
20800
- * @default local
20827
+ * @default remote
20801
20828
  * @enum {string}
20802
20829
  */
20803
20830
  API_TYPE: 'local' | 'remote';
@@ -21657,7 +21684,7 @@ interface components {
21657
21684
  /**
21658
21685
  * Model Name
21659
21686
  * @description The model for reviewing agent draft answers. Defaults to reasoning model.
21660
- * @default dummy
21687
+ * @default Wise
21661
21688
  */
21662
21689
  MODEL_NAME: string;
21663
21690
  /**
@@ -21869,6 +21896,7 @@ interface components {
21869
21896
  detail_read_document?: components['schemas']['ReadDocumentDetail'] | null;
21870
21897
  detail_get_table_of_contents?: components['schemas']['GetTableOfContentsDetail'] | null;
21871
21898
  detail_view_document_pages?: components['schemas']['ViewDocumentPagesDetail'] | null;
21899
+ detail_view_figure?: components['schemas']['ViewFigureDetail'] | null;
21872
21900
  detail_web_search?: components['schemas']['WebSearchDetail'] | null;
21873
21901
  detail_personal_agent?: components['schemas']['PersonalAgentDetail'] | null;
21874
21902
  detail_read_url?: components['schemas']['ReadUrlDetail'] | null;
@@ -23358,7 +23386,7 @@ interface components {
23358
23386
  /**
23359
23387
  * Model Name
23360
23388
  * @description The model for conversation summarisation. Defaults to reasoning model.
23361
- * @default dummy
23389
+ * @default Wise
23362
23390
  */
23363
23391
  MODEL_NAME: string;
23364
23392
  /**
@@ -24059,7 +24087,7 @@ interface components {
24059
24087
  /**
24060
24088
  * Model Name
24061
24089
  * @description The name of the non-reasoning model to be used.
24062
- * @default dummy
24090
+ * @default Fast
24063
24091
  */
24064
24092
  MODEL_NAME: string;
24065
24093
  /**
@@ -24494,7 +24522,7 @@ interface components {
24494
24522
  /**
24495
24523
  * Model Name
24496
24524
  * @description The name of the non-reasoning model to be used.
24497
- * @default dummy
24525
+ * @default Fast
24498
24526
  */
24499
24527
  MODEL_NAME: string;
24500
24528
  /**
@@ -25433,6 +25461,33 @@ interface components {
25433
25461
  */
25434
25462
  to_page: number;
25435
25463
  };
25464
+ /**
25465
+ * ViewFigureDetail
25466
+ * @description Detail for a view_figure tool call (a vision model looks at a figure to answer a question).
25467
+ */
25468
+ ViewFigureDetail: {
25469
+ /**
25470
+ * Tool
25471
+ * @default view_figure
25472
+ * @constant
25473
+ */
25474
+ tool: 'view_figure';
25475
+ /**
25476
+ * Doc Ext Id
25477
+ * @description Document external ID
25478
+ */
25479
+ doc_ext_id: string;
25480
+ /**
25481
+ * Figure
25482
+ * @description The figure's passage reference ("4.2"), when named
25483
+ */
25484
+ figure?: string | null;
25485
+ /**
25486
+ * Page
25487
+ * @description The page looked at
25488
+ */
25489
+ page?: number | null;
25490
+ };
25436
25491
  /**
25437
25492
  * VisionLLMConfig
25438
25493
  * @description Configuration for VisionLLM — visually inspects document pages.
@@ -25458,7 +25513,7 @@ interface components {
25458
25513
  /**
25459
25514
  * Model Name
25460
25515
  * @description The vision-capable model name (must support image inputs).
25461
- * @default dummy
25516
+ * @default Fast
25462
25517
  */
25463
25518
  MODEL_NAME: string;
25464
25519
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbidocs/client",
3
- "version": "0.5.122",
3
+ "version": "0.5.123",
4
4
  "description": "TypeScript SDK for the ARBI API — zero-knowledge auth, E2E encryption, and type-safe REST client",
5
5
  "type": "module",
6
6
  "sideEffects": false,