thoughtframe/src/main/java/org/thoughtframe/search/WebSearchModule.java
thoughtframe/webapp/WEB-INF/base/thoughtframe/frames/research/actions/plan.groovy
thoughtframe/src/main/resources/plugin.xml
thoughtframe/webapp/WEB-INF/base/thoughtframe/frames/research/actions/start.groovy
thoughtframe/webapp/WEB-INF/base/thoughtframe/frames/research/actions/start.xconf
thoughtframe/webapp/WEB-INF/base/thoughtframe/frames/research/deepresearch.groovy
thoughtframe/src/main/java/org/thoughtframe/search/DeepSeekWebSearcher.java
thoughtframe/webapp/WEB-INF/base/thoughtframe/frames/research/actions/start.html
thoughtframe/webapp/WEB-INF/base/thoughtframe/frames/research/actions/read.groovy
thoughtframe/webapp/WEB-INF/base/thoughtframe/frames/research/actions/search.groovy
thoughtframe/webapp/WEB-INF/base/thoughtframe/frames/research/actions/synthesize.groovy
thoughtframe/src/main/java/org/thoughtframe/search/WebSearcher.java
ian
at
thoughtframe/src/main/java/org/thoughtframe/Logo.java
thoughtframe/webapp/WEB-INF/base/thoughtframe/system/events/importing/importcomplete.xconf
thoughtframe/webapp/WEB-INF/base/thoughtframe/system/events/scripts/asset/applygoogletranscode.groovy
dam/src/main/java/org/entermediadb/asset/sources/OriginalsAssetSource.java
ian
at
The frame is structure only: each state declares its step and maps the step's own event (planned/searched/read/synthesized/failed) to a transition, so no script decides its own next state. Steps are scripts under actions/ that call api.deepseek.com/v1/tools/{search,fetch} directly and read the existing 'deepseek-key' setting; they leave queries/sources/notes/report on the frame.
Reverts the DeepSeekWebSearcher provider, the WebSearcher.fetch default and the WebSearchModule changes from a7a3bb66: the frame needs none of them, so the engine stays untouched.