Commit Graph

6054 Commits

Author SHA1 Message Date
Ling-Sen Peng 11ee26616c ci: xfail the LLM-judge compiled-workflow validation test
test_llm_judge_validates_compiled_workflow fails: the judge returns
pass=false, reporting structural items from the kitchen-sink agent spec
as missing from the compiled workflowDef.

Listed as a plain reason string rather than run:false — the test makes a
single judge call and fails fast, so there is no CI time to reclaim, and
leaving it running means a fix surfaces as XPASS.

E2E_MIN_PASSED drops 135 -> 134 in the same commit, as the known-failures
README requires: an added entry moves a test out of the PASSED column, and
without the matching decrement the lane fails on the passed-count floor
for an unrelated-looking reason.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-21 10:12:07 -07:00
ling-senpeng13 2c9b1cb0e7 Merge branch 'main' into ci/python-sdk-e2e-sqlite 2026-08-21 09:18:35 -07:00
Viren Baraiya 9b6e4c08ac Fix docs deploy: make main.py importable in the mkdocs container
mkdocs.yml declares the mermaid custom fence as
`!!python/name:main.mermaid_fence`, which PyYAML resolves with a plain
`import main` while parsing the config.  The deploy action runs the mkdocs
console script inside a Docker container, where sys.path[0] is the script's
bin directory rather than the checkout, so the import fails and the deploy
aborts before building.

Point PYTHONPATH at the container's workspace mount so main.py resolves.

Run 32411004435 failed with:
  cannot find module 'main' (No module named 'main')
    in "/github/workspace/mkdocs.yml", line 283, column 19
2026-08-20 19:52:53 -07:00
Viren Baraiya 98a0a7320f Fix references to design docs removed from the repo (#1555) 2026-08-20 15:54:39 -07:00
Viren Baraiya 58b461bf34 Agent docs (#1406) 2026-08-20 12:52:15 -07:00
Andrew Lai (AJ) bbd4d0c1cb Fix monaco editor context menu paste by forcing loader to use monaco 0.56.0 (#1541)
* Fix monaco editor context menu paste by forcing loader to use monaco 0.56.0

* Extract to a side-effect module

* Make test less flaky
v3.32.0-rc.26
2026-08-18 13:56:26 -07:00
Rajeshwar Agrawal bc7f0b2423 Fix inconsistent ES8 workflow state refresh handling (#1012)
* fix: inconsistent es8 workflow state

* refactor: remove core sweeper reconciliation

---------

Co-authored-by: Naomi Most <naomi.most@orkes.io>
2026-08-18 12:46:38 -07:00
ling-senpeng13 c128265815 Merge branch 'main' into ci/python-sdk-e2e-sqlite 2026-08-18 12:02:41 -07:00
Andrew Lai (AJ) c61e9b4610 Base changes to resolving the path after auth (#1526) v3.32.0-rc.25 2026-08-18 11:59:40 -07:00
ling-senpeng13 b294eeea90 Merge branch 'main' into ci/python-sdk-e2e-sqlite 2026-08-18 11:57:02 -07:00
Nikhil Ramashasthri cb6e3cbb39 fix: propagate CANCELED instead of FAILED from JOIN when a forked branch is canceled (#1425)
* fix: propagate CANCELED instead of FAILED from JOIN when a forked branch is canceled

* test: cover permissive fork join sub workflows terminated by the user in the test harness

---------

Co-authored-by: Naomi Most <naomi.most@orkes.io>
2026-08-18 10:56:12 -07:00
Naomi Most 2957c5536d Merge branch 'main' into ci/python-sdk-e2e-sqlite 2026-08-18 10:30:52 -07:00
Andrew Lai (AJ) e7958b7b00 Clear out workflowDefinition in subworkflow param if it was touched then cleared (#1542) 2026-08-18 09:45:24 -07:00
Andrew Lai (AJ) bdf6930cc6 Fix incorrect conductor version when app is loading (#1511)
* https://github.com/conductor-oss/conductor/issues/1489
Fix incorrect conductor version when app is loading

* Capitalize Unknown
2026-08-18 09:18:50 -07:00
Andrew Lai (AJ) 9e97d211b9 Add end to end integration tests and bump coverage to 90% requirement (#1494)
* - Add end to end integration tests
- Update playwright so it can get OPENAI_API_KEY from .env.local

* Bump coverage percentage to 90% to test CI before merging in additional tests

* Update workflow to use  coverage report script

* Add tests and remove kitchen

* - Delete orphaned components
- Cleanup local coverage runs

* Make test less flaky

* Run integration tests in docker for consistent snapshots

* Show incompletion reasons

---------

Co-authored-by: Dale Brady <49766562+bradyyie@users.noreply.github.com>
2026-08-18 08:55:17 -07:00
Naomi Most 6c62d120a8 docs: require issue discussion before PR for external contributors (#1538) 2026-08-13 20:54:26 -07:00
Miguel Prieto cf7c3e4a8a fix(build): bump springdoc to 2.8.6 for Spring Framework 6.2 compatibility (#1537)
bump springdoc to 2.8.6 for Spring Framework 6.2 compatibility
2026-08-13 21:02:00 -03:00
Dale Brady ab389ddf0b Merge pull request #1520 from conductor-oss/feature/agent-mcp-fixes
fix(agentspan): JOIN only compacts outputs containing state keys
v3.32.1
2026-08-12 15:42:58 -04:00
bradyyie e2ff613424 refactor(agentspan,core): address review nits
- Extract shared buildContextInjectionTask/injectContextIntoUserMessage on
  AgentCompiler and reuse across both compilers (3 duplicated sites); the
  swarm loop now honors the configured context size limits instead of
  hardcoded defaults, and the user-message rewrite uses a ListIterator
  instead of index bookkeeping.
- Extract parentHandsOffOnToolOf predicate for the swarm turn-skip check.
- Join: move the agent output-shaping explanation onto prepareAgentOutput's
  javadoc and return unmodifiable maps for the constructed shapes
  (LinkedHashMap kept over Map.of — tool outputs may contain nulls; the
  pass-through branch stays live to preserve default JOIN behavior).
2026-08-12 15:16:31 -04:00
nicholascole 1393277352 fix(agentspan,ui-next): fix swarm handoff turn-skip scoping and agent diagram rendering
agentspan:
- Only suppress an agent's post-tool-call turn when a parent on_tool_result
  handoff actually watches a tool that agent owns, instead of suppressing it
  for every sub-agent in the swarm whenever any handoff targets any tool.
  Otherwise a sub-agent's own tool result was never summarized in words
  because its loop ended before the LLM saw the output.
- Add a ctx_inject task to the resumed per-turn loop so a turn that does
  keep looping (per the above fix) can see prior state/tool-results instead
  of just the bare prompt, mirroring AgentCompiler's existing wiring.

ui-next:
- Guard AgentExecutionDiagram's response sublabel against undefined text so
  a tool-call-only turn renders an empty sublabel instead of the literal
  string "undefined".
- In agentExecutionUtils, render handoffs (explicit transfer, condition-based
  via handoff_check, or HANDOFF-strategy routing) for real sub-agent turns,
  which previously showed nothing between agents handing off work.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-12 15:09:46 -04:00
nicholascole 4e890d524d fix(core): retain agent tool identity across join 2026-08-12 15:09:46 -04:00
nicholascole 31cda4831d fix(core): preserve unmarked agent tool outputs in join 2026-08-12 15:09:46 -04:00
nicholascole b7e5b25c58 fix(core): retain agent outputs across join input shapes 2026-08-12 15:09:46 -04:00
nicholascole 09842ab16b revert(agentspan): remove redundant tool result markers 2026-08-12 15:09:46 -04:00
nicholascole 07b6861fda Remove redundant MCP tool-spec secret rewrite 2026-08-12 15:09:46 -04:00
nicholascole 50ac267126 style(agentspan): preserve existing spacing 2026-08-12 15:09:46 -04:00
nicholascole da370dd676 refactor(agentspan): remove OCG-derived MCP options 2026-08-12 15:09:46 -04:00
nicholascole 9e19eb9899 refactor(core): share agent task metadata keys 2026-08-12 15:09:46 -04:00
nicholascole ca8b91fe39 docs(core): clarify agent tool marker precedence 2026-08-12 15:09:46 -04:00
nicholascole b8e8d8e2e0 test(agentspan): cover MCP output through JOIN 2026-08-12 15:09:46 -04:00
nicholascole 695b71d108 fix(agentspan): preserve MCP tool outputs 2026-08-12 15:09:46 -04:00
Dale Brady 86532f92b4 Merge pull request #1448 from pratikshabelwate05/feat/llm-chat-complete-instructions-tooltip
feat(ui): add tooltip and helper text to LLM Chat Complete Instructions field
2026-08-12 15:01:04 -04:00
Dale Brady 874ba9bd81 Merge branch 'main' into feat/llm-chat-complete-instructions-tooltip 2026-08-12 14:47:43 -04:00
Dale Brady 4ffd11d974 Merge pull request #1517 from conductor-oss/fix/index-end-time-sort
fix(persistence): index end_time so End Time can be sorted and filtered
2026-08-12 14:46:44 -04:00
Dale Brady 69084b9a98 Merge branch 'main' into feat/llm-chat-complete-instructions-tooltip 2026-08-12 12:25:12 -04:00
Manan Bhatt 5f57954f8a Merge branch 'main' into fix/index-end-time-sort 2026-08-12 21:20:50 +05:30
Andrew Lai (AJ) 1bad2c88df https://github.com/conductor-oss/conductor/issues/1451 (#1519)
* https://github.com/conductor-oss/conductor/issues/1451
Model override on Run Agent is free-text with no way to pick an available model

* Add tests

* Fix test
2026-08-10 13:41:18 -07:00
Manan Bhatt 69c16eae27 fix(persistence): index end_time so End Time can be sorted and filtered
The End Time column on the executions and task search pages is marked
sortable, and the date-range picker emits `endTime>`/`endTime<` clauses.
`end_time` was never a column on workflow_index or task_index, so the
query builders snake_cased the field, failed to match it against
VALID_FIELDS, and dropped it -- from the ORDER BY via getSort() and from
the WHERE via Condition.isValid(). Sorting by End Time returned an
unordered page and lost the default `startTime:DESC`; filtering by an
End Time range silently returned unfiltered results.

Add end_time to both index tables on sqlite and postgres, index it,
populate it from the summary on write, and add it to the allow-list.
The millis-to-UTC conversion applied to filter values keys off the
`_time` suffix, so the date range needs no further change.

The column is NOT NULL defaulting to the epoch rather than nullable.
End time is absent until an execution is terminal, and SQLite sorts
NULL lowest while Postgres sorts it highest, so a nullable column would
put still-running executions at opposite ends of an endTime:DESC page
depending on the backend. getSort() emits a bare
`attribute + " " + order` with no room for a NULLS clause, so the
sentinel is what keeps the two engines agreeing: unfinished rows carry
the epoch and sort last on DESC, first on ASC, on both. This follows the
update_time sentinel already in V1 and V13.1.

end_time is added to the ON CONFLICT update clause as well as the
insert, since the row already exists by the time a workflow finishes.

Existing rows are back-filled from json_data, which already holds the
instant as an ISO-8601 string. Terminal executions are never re-indexed,
so without a back-fill every historical execution would sort as
unfinished forever.

Both back-fills are written to survive a malformed value rather than
abort. Sqlite's strftime() returns NULL on one and COALESCE keeps the
epoch. Postgres needs more care than V13.2 took: to_timestamp with a
fixed 'YYYY-MM-DD"T"HH24:MI:SS.MS' raises `invalid value "Z" for "MS"`
on an endTime with no milliseconds, and since applyDataMigrations
defaults to true that would abort the migration and stop the server
booting. V18.1 uses a ::timestamptz cast, which accepts any ISO-8601
form and reads the trailing Z as UTC, behind a regex guard so a
non-timestamp value skips the row instead of failing the statement.

Verified on a 3913-workflow / 45531-task sqlite database: all 3822
finished workflows match json_data exactly with 0 mismatches, the 91
unfinished rows keep the epoch, and `ORDER BY end_time DESC` plans as
`SCAN workflow_index USING INDEX workflow_index_end_time_idx`. On
postgres, V18 then V18.1 against seeded data converts values with and
without milliseconds and with offsets, and leaves empty, malformed and
absent endTimes at the epoch.

No UI change: only `workflowType` was ever remapped on the way out, so
`endTime` already reached the server unchanged.
2026-08-10 22:24:24 +05:30
Viren Baraiya 8f78c0a781 Resolve #1490: CVEs detected in Conductor-OSS 3.32.0-rc.23 dependencies (#1502)
* conductor workspace baseline [conductor-workspace:6589c18f-c889-4d2a-b5d8-08a22da1c609:baseline]

Conductor-Original-Branch: main
Conductor-Original-Head: 4799963183

* code_subtask secure-bom-transitives

* code_subtask align-kafka-event-queue

* code_subtask upgrade-direct-libraries

* code_subtask upgrade-boot-jackson

---------

Co-authored-by: Naomi Most <naomi.most@orkes.io>
2026-08-10 09:53:34 -07:00
ling-senpeng13 4d0f8a00f3 Merge branch 'main' into ci/python-sdk-e2e-sqlite 2026-08-07 10:48:21 -07:00
Andrew Lai (AJ) 9dc1a4e98a Restrict triggering playwright to changes to ui-next (#1507) v3.32.0 2026-08-07 10:30:42 -07:00
Pratiksha Belwate 1f1e14efe2 Merge branch 'main' into feat/llm-chat-complete-instructions-tooltip 2026-08-07 11:41:48 -04:00
Miguel Prieto dc358c4a1d fix: write and compare sqlite index timestamps in UTC (#1497) (#1498) 2026-08-07 00:28:15 -07:00
Kowser 4799963183 feat(ui): add agent execution input output tab (#1495)
Co-authored-by: Kowser <kowser.orkes@gmail.com>
Co-authored-by: Viren Baraiya <virenx@gmail.com>
2026-08-06 19:02:31 -07:00
Kowser 08813eb0e2 fix(ui): open agent definitions from executions (#1496)
Co-authored-by: Kowser <kowser.orkes@gmail.com>
2026-08-06 17:12:52 -07:00
ling-senpeng13 db1ba8bcc2 Merge branch 'main' into ci/python-sdk-e2e-sqlite 2026-08-06 14:56:17 -07:00
Pratiksha Belwate 88b02b80db Merge remote-tracking branch 'fork/feat/llm-chat-complete-instructions-tooltip' into feat/llm-chat-complete-instructions-tooltip 2026-08-06 13:54:04 -04:00
Pratiksha Belwate 11c39702b8 Merge remote-tracking branch 'origin/main' into feat/llm-chat-complete-instructions-tooltip
# Conflicts:
#	ui-next/src/pages/definition/EditorPanel/TaskFormTab/forms/LLMChatCompleteTaskForm.test.tsx
2026-08-06 13:48:35 -04:00
Sai Meghana Barla 1d9524f297 Fix/agent execution diagram fixes (#1488) v3.32.0-rc.24 2026-08-06 09:05:02 -07:00
Andrew Lai (AJ) cc093c0808 Prebuild OSS UI (#1487) 2026-08-05 22:24:53 -07:00