Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
bc55a07
Add V2 spreadsheet merge capability (Phase 1, refs #1619)
paullizer Oct 2, 2026
0f6a04a
Reconcile differently structured spreadsheets in V2 merges (Phase 2, …
paullizer Oct 3, 2026
d80ebf6
Merge files as V2 workflow tasks (Phase 3, refs #1619)
paullizer Oct 3, 2026
f2a71fd
Merge PDFs and build workbooks in V2 workflows (Phase 4, refs #1619)
paullizer Oct 3, 2026
cd8a9cf
Fix test harnesses broken by the merge phases (refs #1619)
paullizer Oct 3, 2026
18c56b6
Merge Word documents in V2 workflows (Phase 5, refs #1619)
paullizer Oct 3, 2026
b4a1a0a
Merge PowerPoint decks in V2 workflows (Phase 6, refs #1619)
paullizer Oct 3, 2026
a4939cb
Merge documents in V2 chat and harden file merges (Phase 7, refs #1619)
paullizer Oct 3, 2026
c400028
Ask one sheet or a sheet per file before merging spreadsheets (refs #…
paullizer Oct 3, 2026
0aa93a7
Merge origin/paullizer-react-v2-ui and renumber to 0.261.240
paullizer Oct 3, 2026
0111d7d
Merge origin/paullizer-react-v2-ui and renumber to 0.261.241
paullizer Oct 3, 2026
2c5504f
Spill large merges into the container's scratch directory (0.261.242)
paullizer Oct 3, 2026
60130be
Merge origin/paullizer-react-v2-ui and renumber to 0.261.243
paullizer Oct 5, 2026
a3a98d0
Fix CodeQL alerts for file merge
paullizer Oct 5, 2026
c941aa7
Document the shared document merge core module (refs #1619)
paullizer Oct 5, 2026
784b63c
Drop the unused Sequence import from the merge core (refs #1619)
paullizer Oct 5, 2026
f8a02a0
Merge origin/paullizer-react-v2-ui and renumber to 0.261.245
paullizer Oct 5, 2026
29677f0
Merge origin/paullizer-react-v2-ui and renumber to 0.261.246
paullizer Oct 5, 2026
a8f57cd
Merge origin/paullizer-react-v2-ui and renumber to 0.261.248
paullizer Oct 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 79 additions & 1 deletion application/single_app/admin_settings_fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,13 @@
DOCUMENT_ACTION_WORKFLOW_MIN_LIMIT = 2
DOCUMENT_ACTION_WORKFLOW_MAX_LIMIT = 1000
DOCUMENT_ACTION_WORKFLOW_DEFAULT_LIMIT = 10
# Merge, mirrored from MERGE_* in functions_document_actions.py.
DOCUMENT_ACTION_MERGE_CHAT_DEFAULT_LIMIT = 10
DOCUMENT_ACTION_MERGE_WORKFLOW_DEFAULT_LIMIT = 100
DOCUMENT_ACTION_MERGE_ROW_MIN_LIMIT = 1000
DOCUMENT_ACTION_MERGE_ROW_MAX_LIMIT = 1_000_000
DOCUMENT_ACTION_MERGE_CHAT_DEFAULT_ROWS = 250_000
DOCUMENT_ACTION_MERGE_WORKFLOW_DEFAULT_ROWS = 1_000_000

# Schemes permitted for administrator-configured navigation links. These render
# into an anchor href, so allowing arbitrary schemes would let a saved link
Expand Down Expand Up @@ -3820,6 +3827,9 @@
{"value": "document_analyze", "label": "Analyse documents"},
{"value": "document_compare", "label": "Compare documents"},
{"value": "tabular_analyze", "label": "Analyse spreadsheets"},
{"value": "tabular_inspect", "label": "Inspect spreadsheets"},
{"value": "tabular_merge", "label": "Merge spreadsheets"},
{"value": "document_merge", "label": "Merge documents"},
{"value": "web_search", "label": "Search the web"},
{"value": "url_fetch", "label": "Read linked pages"},
{"value": "deep_research", "label": "Research in depth"},
Expand Down Expand Up @@ -4619,6 +4629,74 @@
"group": "Comparison",
"depends_on": {"key": "document_action_comparison_enabled", "equals": True},
},
{
"key": "document_action_merge_enabled",
"settings_path": ["document_action_capabilities", "merge", "enabled"],
"type": "switch",
"label": "Enable Merge",
"help": (
"Lets chat orchestration combine the rows of several CSV or Excel files "
"into one table, lining up columns that differ when asked, then deliver it "
"as a CSV or Excel file. Rows are appended exactly by code, not rewritten by "
"a model. Also allows inspecting the files' columns first."
),
"default": True,
"group": "Merge",
},
{
"key": "document_action_merge_chat_max_documents",
"settings_path": ["document_action_capabilities", "merge", "chat_max_documents"],
"type": "number",
"label": "Merge: Chat Document Limit",
"help": (
"Most files one chat request may merge or inspect. Merging is cheaper than "
"Analyze because no model reads the files, so this can be higher."
),
"default": DOCUMENT_ACTION_MERGE_CHAT_DEFAULT_LIMIT,
"min": DOCUMENT_ACTION_CHAT_MIN_LIMIT,
"max": DOCUMENT_ACTION_CHAT_MAX_LIMIT,
"group": "Merge",
"depends_on": {"key": "document_action_merge_enabled", "equals": True},
},
{
"key": "document_action_merge_workflow_max_documents",
"settings_path": ["document_action_capabilities", "merge", "workflow_max_documents"],
"type": "number",
"label": "Merge: Workflow Document Limit",
"help": "The same limit for a workflow run, where large batches belong.",
"default": DOCUMENT_ACTION_MERGE_WORKFLOW_DEFAULT_LIMIT,
"min": DOCUMENT_ACTION_WORKFLOW_MIN_LIMIT,
"max": DOCUMENT_ACTION_WORKFLOW_MAX_LIMIT,
"group": "Merge",
"depends_on": {"key": "document_action_merge_enabled", "equals": True},
},
{
"key": "document_action_merge_chat_max_rows",
"settings_path": ["document_action_capabilities", "merge", "chat_max_rows"],
"type": "number",
"label": "Merge: Chat Row Limit",
"help": (
"Most rows one chat merge may produce. A few very large files can cost more "
"than many small ones, so rows are limited as well as files."
),
"default": DOCUMENT_ACTION_MERGE_CHAT_DEFAULT_ROWS,
"min": DOCUMENT_ACTION_MERGE_ROW_MIN_LIMIT,
"max": DOCUMENT_ACTION_MERGE_ROW_MAX_LIMIT,
"group": "Merge",
"depends_on": {"key": "document_action_merge_enabled", "equals": True},
},
{
"key": "document_action_merge_workflow_max_rows",
"settings_path": ["document_action_capabilities", "merge", "workflow_max_rows"],
"type": "number",
"label": "Merge: Workflow Row Limit",
"help": "The same row limit for a workflow run.",
"default": DOCUMENT_ACTION_MERGE_WORKFLOW_DEFAULT_ROWS,
"min": DOCUMENT_ACTION_MERGE_ROW_MIN_LIMIT,
"max": DOCUMENT_ACTION_MERGE_ROW_MAX_LIMIT,
"group": "Merge",
"depends_on": {"key": "document_action_merge_enabled", "equals": True},
},
],
# Rendered by V1 only while Workspace Mode is on, matching agent-toggles-card.
"plugin-feature-toggles": [
Expand Down Expand Up @@ -7123,7 +7201,7 @@ def _apply_nested_paths(normalized, current_settings, warnings=None):
Deep Research reading the stale copy.

``settings_path`` names a single destination as a list of segments.
``document_action_capabilities`` holds six values across two action types,
``document_action_capabilities`` holds the Analyze, Comparison and Merge values,
and nothing reads a flattened form of them, so writing the flat keys through
would save a setting the application never looks at.

Expand Down
2 changes: 1 addition & 1 deletion application/single_app/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@
EXECUTOR_TYPE = 'thread'
EXECUTOR_MAX_WORKERS = 30
SESSION_TYPE = 'filesystem'
VERSION = "0.261.238"
VERSION = "0.261.248"
IS_DEVELOPMENT = is_development_env_enabled()

# Opt-out for deployments where App Service Easy Auth is active but the platform
Expand Down
Loading
Loading