<?xml version="1.0" encoding="UTF-8"?>
<beans projectname="thoughtframe" depends="dam">


<bean id="velocity" class="org.entermediadb.asset.generators.ToolbarGenerator" >
		<property name="headerPath"><value>/openedit/components/html/toolbar.html</value></property>
		<property name="footerPath"><value>/openedit/components/html/footer.html</value></property>
		<property name="pageManager"><ref bean="pageManager"/></property>
		<property name="wraps"><ref bean="velocityGenerator"/></property>
	</bean>

	<bean id="wiki" class="org.entermediadb.asset.generators.ToolbarGenerator" >
		<property name="headerPath"><value>/openedit/components/html/toolbar.html</value></property>
		<property name="footerPath"><value>/openedit/components/html/footer.html</value></property>
		<property name="pageManager"><ref bean="pageManager"/></property>
		<property name="wraps"><ref bean="wikiGenerator"/></property>
	</bean>

	<bean id="admintoolbarGenerator"  class="org.openedit.generators.VelocityGenerator" >
		<property name="rootDirectory"><ref bean="root" /></property>
		<property name="openEditEngine"><ref bean="OpenEditEngine" /></property>
	</bean>


	<bean id="blockingAdmintoolbarGenerator" class="org.entermediadb.asset.generators.AdminToolBarGenerator" >
			<property name="headerPath"><value>/openedit/components/toolbar/admintoolbarselector.html</value></property>
			<property name="search"><value>&lt;body</value></property>
			<property name="pageManager"><ref bean="pageManager"/></property>
			<property name="moduleManager"><ref bean="moduleManager"/></property>
			<property name="wraps"><ref bean="velocityGenerator"/></property>
		</bean>
	<bean id="questionSearcher" class="org.thoughtframe.testbench.QuestionSearcher" scope="prototype">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
		<property name="rootDirectory">
			<ref bean="root" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="elasticNodeManager">
			<ref bean="elasticNodeManager" />
		</property>
	</bean>
	<bean id="RegistrationModule" class="org.thoughtframe.testbench.RegistrationModule">
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
		<property name="postMail">
			<ref bean="postMail" />
		</property>
	</bean>
	<bean id="JsonBenchModule" class="org.thoughtframe.testbench.modules.JsonBenchModule">
	</bean>
	<bean id="testnodeSearcher" class="org.thoughtframe.testbench.TestNodeSearcher" scope="prototype">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
		<property name="rootDirectory">
			<ref bean="root" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="elasticNodeManager">
			<ref bean="elasticNodeManager" />
		</property>
	</bean>
	<bean id="testquestionArchive" class="org.thoughtframe.testbench.xmldb.XmlQuestionArchive" scope="prototype">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="questionSearcher">
			<ref bean="questionSearcher" />
		</property>
		<property name="cacheManager">
			<ref bean="systemCacheManager" />
		</property>
	</bean>
	<bean id="questionCategoryArchive" class="org.thoughtframe.testbench.xmldb.XmlCategoryArchive" scope="prototype">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
	</bean>
	<bean id="testBench" class="org.thoughtframe.testbench.TestBench" scope="prototype">
		<property name="render">
			<ref bean="velocityRenderUtil" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="eventManager">
			<ref bean="eventManager" />
		</property>
		<property name="cacheManager">
			<ref bean="systemCacheManager" />
		</property>
	</bean>
	<bean id="TestBenchModule" class="org.thoughtframe.testbench.modules.TestBenchModule">
		<property name="importer">
			<ref bean="compositeImporter" />
		</property>
	</bean>
	<bean id="TestCategoryModule" class="org.thoughtframe.testbench.modules.TestCategoryModule">
	</bean>
	<bean id="testCategoryEditor" class="org.thoughtframe.testbench.edit.TestCategoryEditor" scope="prototype">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
	</bean>
	<bean id="randomTestBuilder" class="org.thoughtframe.testbench.RandomTestBuilder">
	</bean>
	<bean id="courseManager" class="org.thoughtframe.testbench.course.CourseManager">
		<property name="xmlLinkLoader">
			<ref bean="xmlLinkLoader" />
		</property>
	</bean>
	<bean id="categoryTestBuilder" class="org.thoughtframe.testbench.CategoryTestBuilder">
	</bean>
	<bean id="testManager" class="org.thoughtframe.testbench.TestManager" scope="prototype">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<!-- <property name="lockManager"> <ref bean="lockManager" /> </property> -->
	</bean>
	<bean id="testSearcher" class="org.thoughtframe.testbench.TestSearcher" scope="prototype">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
		<property name="rootDirectory">
			<ref bean="root" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="elasticNodeManager">
			<ref bean="elasticNodeManager" />
		</property>
	</bean>
	<bean id="testPlanArchive" class="org.thoughtframe.testbench.xmldb.XmlTestPlanArchive" scope="prototype">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="cacheManager">
			<ref bean="systemCacheManager" />
		</property>
	</bean>
	<bean id="CourseModule" class="org.thoughtframe.testbench.modules.CourseModule">
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
	</bean>
	<bean id="InstructorModule" class="org.thoughtframe.testbench.modules.InstructorModule">
	</bean>
	<bean id="courseSearcher" class="org.thoughtframe.testbench.course.CourseSearcher" scope="prototype">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="elasticNodeManager">
			<ref bean="elasticNodeManager" />
		</property>
		<property name="courseManager">
			<ref bean="courseManager" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="rootDirectory">
			<ref bean="root" />
		</property>
		<property name="cacheManager">
			<ref bean="systemCacheManager" />
		</property>
	</bean>
	<bean id="categoryImporter" class="org.thoughtframe.testing.importers.CategoryImporter" scope="prototype">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
	</bean>
	<bean id="questionImporter" class="org.thoughtframe.testing.importers.QuestionImporter" scope="prototype">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
	</bean>
	<bean id="responseImporter" class="org.thoughtframe.testing.importers.ResponseImporter" scope="prototype">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
	</bean>
	<bean id="compositeImporter" class="org.thoughtframe.testing.importers.CompositeImporter">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="importers">
			<list>
				<value>questionImporter</value>
				<value>responseImporter</value>
				<value>categoryImporter</value>
				<value>categoryImporter</value>
			</list>
		</property>
	</bean>
	<bean id="learningGroupSearcher" class="org.thoughtframe.testbench.learninggroup.LearningGroupSearcher" scope="prototype">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="elasticNodeManager">
			<ref bean="elasticNodeManager" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="rootDirectory">
			<ref bean="root" />
		</property>
		<property name="cacheManager">
			<ref bean="systemCacheManager" />
		</property>
	</bean>
	<bean id="LearningGroupModule" class="org.thoughtframe.testbench.modules.LearningGroupModule">
	</bean>
	
	<bean id="testplanSearcher" class="org.thoughtframe.testbench.test.TestPlanSearcher" scope="prototype">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="rootDirectory">
			<ref bean="root" />
		</property>
		<property name="elasticNodeManager">
			<ref bean="elasticNodeManager" />
		</property>
	</bean>
	<bean id="randomcategoryTestBuilder" class="org.thoughtframe.testbench.RandomCategoryTestBuilder">
	</bean>
	<bean id="pdf" class="org.thoughtframe.pdf.PdfUtil">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
	</bean>
	<bean id="TestbenchRegistrationModule" class="org.thoughtframe.testbench.modules.TestbenchRegistrationModule">
	</bean>
	<bean id="TestEditModule" class="org.thoughtframe.testbench.modules.TestEditModule">
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
	</bean>
	<bean id="SportModule" class="org.thoughtframe.sportforge.SportModule">
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
	</bean>
	<bean id="defaultTestBuilder" class="org.thoughtframe.testbench.DefaultTestBuilder">
	</bean>
	<bean id="planentryTestBuilder" class="org.thoughtframe.testbench.PlanEntryBuilder">


	</bean>

	<bean id="dailyTestBuilder" class="org.thoughtframe.testbench.DailyTestBuilder">


	</bean>
	<bean id="internalTestBuilder" class="org.thoughtframe.testbench.InternalTestBuilder">
	</bean>
	<bean id="xdocReportCreator" class="org.thoughtframe.xdoc.XdocReportCreator">
		<property name="rootDirectory">
			<ref bean="root" />
		</property>
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="openEditEngine">
			<ref bean="OpenEditEngine" />
		</property>
	</bean>
	<bean id="xdocGenerator" class="org.thoughtframe.xdoc.XdocGenerator">
		<property name="xdocReportCreator">
			<ref bean="xdocReportCreator" />
		</property>
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
	</bean>
	<bean id="SiteSearchModule" class="org.thoughtframe.sitesearch.SiteSearchModule">
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
	</bean>
	<!-- <bean id="siteSearcher" class="org.thoughtframe.sitesearch.SiteSearcher"> <property name="moduleManager"><ref bean="moduleManager" /></property> <property name="pageManager"><ref bean="pageManager" /></property> <property name="sourcePathCreator"><ref bean="chunkySourcePathCreator"/></property> <property name="rootDirectory"><ref bean="root" /></property> </bean> -->
	<bean id="htmlParser" class="org.thoughtframe.sitesearch.parse.HtmlParser">
	</bean>
	<bean id="pdfParser" class="org.thoughtframe.sitesearch.parse.PdfParser">
	</bean>
	<bean id="CommentsModule" class="org.thoughtframe.testbench.modules.CommentModule">
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
	</bean>
	<!-- <bean id="metaDataReader" class="org.thoughtframe.entermedia.scanner.MetaDataReader"> <property name="pageManager"> <ref bean="pageManager" /> </property> <property name="metadataExtractors"> <list> <ref bean="pdfExtractor" /> <ref bean="exiftoolMetadataExtractor" /> <ref bean="ffmpegMetadataExtractor" /> <ref bean="imagemagickExtractor" /> <ref bean="ocrExtractor" /> </list> </property> </bean> 
		<bean id="imagemagickExtractor" class="org.thoughtframe.testbench.extractors.ImageMagickMetadataExtractor" > <property name="exec"> <ref bean="exec" /> </property> <property name="scriptManager"> <ref bean="scriptManager" /> </property> </bean> -->
	<bean id="questionFilter" class="org.thoughtframe.testbench.strainer.QuestionFilter" scope="prototype" />
	<bean id="testFilter" class="org.thoughtframe.testbench.strainer.TestFilter" scope="prototype" />
	<bean id="TestbenchPermissionModule" class="org.thoughtframe.testbench.strainer.TestbenchPermissionModule" />
	<bean id="classificationManager" class="org.thoughtframe.analyzer.ClassificationManager" scope="singleton">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="cacheManager">
			<ref bean="systemCacheManager" />
		</property>
	</bean>
	<bean id="bayesClassifier" class="org.thoughtframe.analyzer.bayes.BayesClassifier">
		<property name="preProcessor">
			<ref bean="stopWordPreProcessor" />
		</property>
		<property name="memoryCapacity">
			<value>5000</value>
		</property>
	</bean>
	<bean id="stopWordPreProcessor" class="org.thoughtframe.analyzer.bayes.StopWordPreprocessor">
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
	</bean>
	<bean id="learningEventHandler" class="org.thoughtframe.event.WebEventCompositeHandler">
		<property name="webEventListeners">
			<list>
				<ref bean="pathEventHandler" />
			</list>
		</property>
	</bean>
	<bean id="StripeModule" class="org.thoughtframe.testbench.modules.StripeModule">
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
	</bean>

	<bean id="LemonModule" class="org.thoughtframe.testbench.modules.LemonModule">
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
	</bean>

	<bean id="BenchReportModule" name="BenchReportModule" class="org.thoughtframe.reporting.BenchReportModule" abstract="false" scope="singleton" lazy-init="default" autowire="default" dependency-check="default">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	<bean id="orderReport" class="org.thoughtframe.reporting.OrderReport">
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
	</bean>
	<bean id="learninggroupReport" class="org.thoughtframe.reporting.LearningGroupReport">
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
	</bean>
	<bean id="PDFModule" name="PDFModule" class="org.thoughtframe.pdf.PDFModule" abstract="false" lazy-init="default" autowire="default" dependency-check="default">
		<property name="requestUtils">
			<ref bean="requestUtils" />
		</property>
	</bean>
	<bean id="htmlPdfGenerator" class="org.thoughtframe.reporting.HtmlPdfGenerator">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="requestUtils">
			<ref bean="requestUtils" />
		</property>
	</bean>
	<bean id="gitVersionRepository" class="org.thoughtframe.repository.GitVersionRepository" scope="prototype" />
	<bean id="sportforge" class="org.thoughtframe.sportforge.SportForge" scope="prototype">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
	</bean>
	<bean id="SmsModule" class="org.thoughtframe.sms.SmsModule" abstract="false" lazy-init="default" autowire="default" dependency-check="default">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="rootDirectory">
			<ref bean="root" />
		</property>
	</bean>
	<!-- Money -->
	<bean id="CartModule" class="org.thoughtframe.store.modules.CartModule">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
	</bean>
	<bean id="StoreSearchModule" class="org.thoughtframe.store.modules.StoreSearchModule">
		<property name="searchQueryArchive">
			<ref bean="searchQueryArchive" />
		</property>
	</bean>
	<bean id="FolderModule" class="org.thoughtframe.store.modules.FolderModule">
	</bean>
	<bean id="storeOrderSearcher" class="org.thoughtframe.store.orders.OrderSearcher" scope="prototype">
		<property name="rootDirectory">
			<ref bean="root" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="storeArchive">
			<ref bean="storeArchive" />
		</property>
		<property name="elasticNodeManager">
			<ref bean="elasticNodeManager" />
		</property>
	</bean>
	<bean id="productSearcher" class="org.thoughtframe.store.search.ProductSearcher" scope="prototype">
		<property name="rootDirectory">
			<ref bean="root" />
		</property>
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="storeArchive">
			<ref bean="storeArchive" />
		</property>
		<property name="elasticNodeManager">
			<ref bean="elasticNodeManager" />
		</property>
	</bean>
	<bean id="CatalogModule" class="org.thoughtframe.store.modules.CatalogModule">
		<property name="requestUtils">
			<ref bean="requestUtils" />
		</property>
	</bean>
	<bean id="CatalogEditModule" class="org.thoughtframe.store.modules.CatalogEditModule">
	</bean>
	<bean id="StoreOrderModule" class="org.thoughtframe.store.modules.OrderModule">
		<property name="emailOrderProcessor">
			<ref bean="emailOrderProcessor" />
		</property>
	</bean>
	<bean id="ProductControlModule" class="org.thoughtframe.store.modules.ProductControlModule">
	</bean>
	<bean id="storeArchive" class="org.thoughtframe.store.xmldb.XmlStoreArchive">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="scriptManager">
			<ref bean="scriptManager" />
		</property>
	</bean>
	<bean id="store" class="org.thoughtframe.store.Store" scope="prototype">
		<property name="rootDirectory">
			<ref bean="root" />
		</property>
		<property name="eventManager">
			<ref bean="eventManager" />
		</property>
		<property name="xmlArchive">
			<ref bean="xmlArchive" />
		</property>
		<property name="orderProcessor">
			<ref bean="compositeOrderProcessor" />
		</property>
		<property name="orderGenerator">
			<ref bean="baseOrderGenerator" />
		</property>
		<property name="electronicOrderManager">
			<ref bean="electronicOrderManager" />
		</property>
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
		<property name="storeMediaManager">
			<ref bean="storeMediaManager" />
		</property>
		<property name="productSecurityArchive">
			<ref bean="productSecurityArchive" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
	</bean>
	<bean id="productArchive" class="org.thoughtframe.store.xmldb.XmlProductArchive" scope="prototype">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="xmlUtil">
			<ref bean="xmlUtil" />
		</property>
		<property name="storeArchive">
			<ref bean="storeArchive" />
		</property>
		<property name="cacheManager">
			<ref bean="systemCacheManager" />
		</property>
		<property name="webEventListener">
			<ref bean="pathEventHandler" />
		</property>
	</bean>
	<bean id="storeCategoryArchive" class="org.thoughtframe.store.xmldb.XmlCategoryArchive" scope="prototype">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="xmlUtil">
			<ref bean="xmlUtil" />
		</property>
	</bean>
	<bean id="priceBasedShipping" class="org.thoughtframe.store.shipping.PriceBasedShippingMethod" scope="prototype" />
	<bean id="weightBasedShipping" class="org.thoughtframe.store.shipping.WeightBasedShippingMethod" scope="prototype" />
	<bean id="CatalogLinkLoader" class="org.thoughtframe.store.links.XmlCatalogLinkLoader" scope="prototype">
		<property name="xmlUtil">
			<ref bean="xmlUtil" />
		</property>
	</bean>
	<bean id="StoreLinkModule" class="org.thoughtframe.store.links.StoreLinkModule" init-method="init">
	</bean>
	<bean id="customerArchive" class="org.thoughtframe.store.xmldb.XmlCustomerArchive" scope="prototype">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	<bean id="compositeOrderProcessor" class="org.thoughtframe.store.orders.CompositeOrderProcessor">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="orderProcessors">
			<list>
				<value>virtualcreditOrderProcessor</value>
				<value>stripeOrderProcessor</value>
				<value>directPaymentProcessor</value>
				<value>paypalOrderProcessor</value>
				<value>electronicGoodsOrderProcessor</value>
				<value>scriptedOrderProcessor</value>
				<value>emailOrderProcessor</value>
			</list>
		</property>
	</bean>
	<bean id="scriptedOrderProcessor" class="org.thoughtframe.store.gateway.ScriptedOrderProcessor">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="scriptManager">
			<ref bean="scriptManager" />
		</property>
	</bean>
	<bean id="elevonOrderProcessor" class="org.thoughtframe.store.gateway.ElevonOrderProcessor">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
	</bean>
	<bean id="directPaymentProcessor" class="org.thoughtframe.cart.paypal.DirectPaymentsProcessor">
		<property name="userManager">
			<ref bean="userManager" />
		</property>
	</bean>
	<bean id="storeCatalogImportConverter" class="org.thoughtframe.store.convert.CompositeConverter">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="catalogConverters">
			<list>
				<value>csvConverter</value>
				<value>genericConverter</value>
				<value>mainFrameConverter</value>
			</list>
		</property>
	</bean>
	<bean id="baseOrderGenerator" class="org.thoughtframe.store.orders.BaseOrderGenerator" />
	<bean id="orderArchive" class="org.thoughtframe.store.XmlOrderArchive">
		<property name="postMail">
			<ref bean="postMail" />
		</property>
		<property name="stringEncryption">
			<ref bean="stringEncryption" />
		</property>
	</bean>
	<bean id="emailOrderProcessor" class="org.thoughtframe.store.orders.EmailOrderProcessor">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="postMail">
			<ref bean="postMail" />
		</property>
	</bean>
	<bean id="paypalOrderProcessor" class="org.thoughtframe.cart.paypal.PaypalOrderProcessor">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="postMail">
			<ref bean="postMail" />
		</property>
	</bean>
	<bean id="authorizeNetOrderProcessor" class="org.thoughtframe.store.gateway.AuthorizeNetOrderProcessor">
	</bean>
	<bean id="virtualCreditAccount" class="org.thoughtframe.cart.virtualcredit.VirtualCreditAccount">
	</bean>
	<bean id="virtualcreditOrderProcessor" class="org.thoughtframe.cart.virtualcredit.VirtualCreditOrderProcessor">
		<property name="virtualCreditAccount">
			<ref bean="virtualCreditAccount" />
		</property>
	</bean>
	<bean id="freshbooksOrderProcessor" class="org.thoughtframe.cart.freshbooks.FreshbooksOrderProcessor">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="userManager">
			<ref bean="userManager" />
		</property>
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
	</bean>
	<bean id="monerisOrderProcessor" class="org.thoughtframe.store.gateway.MonerisOrderProcessor">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
		<property name="userManager">
			<ref bean="userManager" />
		</property>
	</bean>
	<bean id="stripeOrderProcessor" class="org.thoughtframe.store.gateway.StripeOrderProcessor">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="userManager">
			<ref bean="userManager" />
		</property>
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
	</bean>
	<bean id="freshbooksManager" class="org.thoughtframe.cart.freshbooks.FreshbooksManager">
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
	</bean>
	<bean id="electronicGoodsOrderProcessor" class="org.thoughtframe.store.orders.ElectronicGoodsOrderProcessor">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	<bean id="ProductAdder" class="org.thoughtframe.store.ProductAdder">
	</bean>
	<bean id="PaypalModule" class="org.thoughtframe.store.modules.PaypalModule">
	</bean>
	<bean id="VotingModule" class="org.thoughtframe.store.modules.VotingModule">
	</bean>
	<bean id="genericConverter" class="org.thoughtframe.store.excelconvert.GenericExcelConvert" />
	<bean id="csvConverter" class="org.thoughtframe.store.convert.CsvConverter" />
	<bean id="mainFrameConverter" class="org.thoughtframe.store.convert.MainFrameConverter" />
	<bean id="electronicOrderManager" class="org.thoughtframe.store.process.ElectronicOrderManager">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
	</bean>
	<bean id="productSecurityArchive" class="org.thoughtframe.store.search.XmlProductSecurityArchive">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
	</bean>
	<bean id="editLogSearcher" class="org.thoughtframe.logger.LuceneLogSearcher" scope="prototype">
		<property name="rootDirectory">
			<bean class="java.io.File">
				<constructor-arg>
					<ref bean="root" />
				</constructor-arg>
				<constructor-arg>
					<value>/WEB-INF/logs</value>
				</constructor-arg>
			</bean>
		</property>
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
	</bean>
	<bean id="storeMediaManager" class="org.thoughtframe.store.StoreMediaManager" scope="prototype">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	<bean id="DistributorModule" class="org.thoughtframe.store.modules.DistributorModule">
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
	</bean>
	<bean id="AdModule" class="org.thoughtframe.testbench.modules.AdModule">
	</bean>
	<bean id="VideoModule" class="org.thoughtframe.testbench.modules.VideoModule">
	</bean>
	<bean id="address" class="org.thoughtframe.store.customer.Address" scope="prototype">
	</bean>
	<bean id="fbSearcher" class="org.thoughtframe.cart.fresshbooks.FreshbooksSearcher" scope="prototype">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="xmlArchive">
			<ref bean="xmlArchive" />
		</property>
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
		<property name="elasticNodeManager">
			<ref bean="elasticNodeManager" />
		</property>
	</bean>
	<bean id="beanstreamUtil" class="org.thoughtframe.store.gateway.BeanstreamUtil" scope="prototype">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="userManager">
			<ref bean="userManager" />
		</property>
	</bean>
	<bean id="discountCalculator" class="org.thoughtframe.store.DiscountCalculator" scope="prototype">
	</bean>
	<bean id="ecwidManager" class="org.thoughtframe.integration.ecwid.EcwidManager" scope="prototype">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	<bean id="blogpostSearchSecurity" class="org.thoughtframe.blog.BlogPostSearchSecurity">
	</bean>
	<bean id="blogpostSearchSecurity" class="org.thoughtframe.blog.BlogPostSearchSecurity">
	</bean>
	<bean id="testSearchSecurity" class="org.thoughtframe.testbench.TestSearchSecurity">
	</bean>

	<bean id="userSearchSecurity" class="org.thoughtframe.testbench.UserSearchSecurity">
	</bean>
	<bean id="productSearchSecurity" class="org.thoughtframe.testbench.ProductSearchSecurity">
	</bean>



	<bean id="storeOrderSearchSecurity" class="org.thoughtframe.testbench.StoreOrderSearchSecurity">
	</bean>
	


	<bean id="tideUtil" class="org.thoughtframe.marine.TideUtil" scope="prototype">
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	
	<bean id="benchAnalytics" class="org.thoughtframe.tincan.BenchAnalytics" scope="prototype">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="cacheManager">
			<ref bean="systemCacheManager" />
		</property>
	</bean>

	<bean id="remoteSearcher" class="org.evolved.core.shared.RemoteEntermediaSearcher" scope="prototype">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
	</bean>
	<bean id="htmlUtil" class="org.thoughtframe.testbench.util.HtmlUtil">
	</bean>
	<bean id="twilioManager" class="org.thoughtframe.twilio.TwilioManager" scope="prototype">
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	<bean id="ConferenceModule" class="org.thoughtframe.testbench.modules.ConferenceModule">
	</bean>
	<bean id="dacastManager" class="org.thoughtframe.dacast.DacastManager" scope="prototype">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	<bean id="benchServer" class="org.thoughtframe.websocket.BenchServer" scope="singleton">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	<bean id="LiveTestModule" class="org.thoughtframe.testbench.modules.LiveTestModule">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="requestUtils">
			<ref bean="requestUtils" />
		</property>
	</bean>
	<bean id="liveTestManager" class="org.thoughtframe.testbench.livetest.LiveTestManager" scope="prototype">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	<bean id="BenchAssetSearchSecurity" class="org.thoughtframe.testbench.BenchAssetSearchSecurity" lazy-init="default">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	<bean id="assetSearchSecurity" class="org.thoughtframe.testbench.BenchAssetSearchSecurity" lazy-init="default">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	<bean id="LoadTestModule" class="org.thoughtframe.testbench.loadtest.LoadTestModule">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	<bean id="loadTestManager" class="org.thoughtframe.testbench.loadtest.LoadTestManager">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	<bean id="LinkModule" class="org.thoughtframe.testbench.modules.LinkModule">
		<property name="moduleManager">
			<ref bean="moduleManager" />
			<property name="workFlow">
				<ref bean="workFlowBean" />
			</property>
		</property>
	</bean>
	<bean id="positionSearch" class="org.thoughtframe.geocode.PositionSearch" scope="prototype">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	<bean id="LiveStreamModule" class="org.thoughtframe.live.streams.LiveStreamModule">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	<bean id="liveStreamManager" class="org.thoughtframe.live.streams.LiveStreamManager" scope="prototype">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="exec">
			<ref bean="exec" />
		</property>
	</bean>
	<bean id="rtmpStreamer" class="org.thoughtframe.live.streams.RtmpStreamer" scope="prototype">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="exec">
			<ref bean="exec" />
		</property>
	</bean>
	<bean id="EmbedModule" class="org.thoughtframe.testbench.modules.EmbedModule">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	<bean id="pyScriptRunner" class="org.thoughtframe.python.PythonScriptRunner">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="exec">
			<ref bean="exec" />
		</property>
	</bean>


	
	<bean id="chatSearcher" class="org.thoughtframe.ai.ChatSearcher" scope="prototype">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
		<property name="rootDirectory">
			<ref bean="root" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="elasticNodeManager">
			<ref bean="elasticNodeManager" />
		</property>
	</bean>




	<bean id="scriptTranscoder" class="org.thoughtframe.transcoders.ScriptTranscoder">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="scriptManager">
			<ref bean="scriptManager" />
		</property>
		<property name="exec">
			<ref bean="exec" />
		</property>

	</bean>

	<bean id="popplerTranscoder" class="org.thoughtframe.transcoders.PopplerTranscoder">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="exec">
			<ref bean="exec" />
		</property>
	</bean>

	<bean id="stripeManager" class="org.thoughtframe.testbench.modules.StripeManager">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>

	</bean>



	<!-- <bean id="gsTranscoder" class="org.thoughtframe.transcoders.PopplerTranscoder" > <property name="pageManager"><ref bean="pageManager" /></property> <property name="exec"><ref bean="exec" /></property> </bean> -->

	<bean id="GptModule" class="org.thoughtframe.ai.GptModule">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	<!-- Moved to EnterMedia <bean id="gptManager" class="org.thoughtframe.ai.GptManager"> <property name="moduleManager"> <ref bean="moduleManager" /> </property> </bean> -->
	<bean id="learningManager" class="org.thoughtframe.workflow.LearningManager">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>

	<bean id="SignalKModule" class="org.thoughtframe.signalk.SignalKModule">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>

	<bean id="signalkManager" class="org.thoughtframe.signalk.SignalKManager">

	</bean>



	<bean id="jsonApiGenerator" class="org.thoughtframe.api.JsonApiGenerator">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="requestUtils">
			<ref bean="requestUtils" />
		</property>
	</bean>

	
	<bean id="questionSorter" class="org.thoughtframe.testbench.QuestionHistoryQuestionSorter">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>



	<bean id="SpacesModule" class="org.thoughtframe.spaces.SpacesModule">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>


	<bean id="spacesManager" class="org.thoughtframe.spaces.SpacesManager">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>

	<bean id="PdfPrintModule" name="PdfPrintModule" class="org.thoughtframe.cheesemonger.PdfPrintModule" abstract="false" lazy-init="default" autowire="default" dependency-check="default">
		<property name="requestUtils">
			<ref bean="requestUtils" />
		</property>
	</bean>


	<bean id="WorksheetModule" class="org.thoughtframe.cheesemonger.WorksheetModule" abstract="false" lazy-init="default" autowire="default" dependency-check="default">

	</bean>

	<bean id="ProductEditModule" class="org.thoughtframe.store.modules.ProductEditModule" abstract="false" lazy-init="default" autowire="default" dependency-check="default">

	</bean>


	<bean id="StoreOrderEditModule" class="org.thoughtframe.store.modules.StoreOrderEditModule" abstract="false" lazy-init="default" autowire="default" dependency-check="default">

	</bean>

	<bean id="gitRepository" class="org.thoughtframe.git.GitRepository">
		<property name="gitManager">
			<ref bean="gitManager" />
		</property>
	</bean>


	<!-- Stripe handlers -->

	<bean id="paymentStripeHandler" class="org.thoughtframe.stripe.PaymentHandler">
	</bean>

	<bean id="payment_intentStripeHandler" class="org.thoughtframe.stripe.PaymentIntentHandler">
	</bean>

	<bean id="chargeStripeHandler" class="org.thoughtframe.stripe.ChargeHandler">
	</bean>

	<bean id="checkoutStripeHandler" class="org.thoughtframe.stripe.CheckoutHandler">
	</bean>

	<bean id="GitModule" class="org.thoughtframe.git.GitModule">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="gitManager">
			<ref bean="gitManager" />
		</property>
	</bean>

	



	<bean id="DataUtilModule" class="org.thoughtframe.modules.DataUtilModule">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>

	</bean>

	<bean id="LearningFlowModule" class="org.thoughtframe.workflow.LearningFlowModule">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="gitManager">
			<ref bean="gitManager" />
		</property>
		<property name="scriptManager">
			<ref bean="scriptManager" />
		</property>
	</bean>


	<bean id="gitManager" class="org.thoughtframe.git.GitManager">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
	</bean>

	<bean id="gitrepositorySearcher" class="org.thoughtframe.git.GitRepositorySearcher" scope="prototype">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
		<property name="rootDirectory">
			<ref bean="root" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="elasticNodeManager">
			<ref bean="elasticNodeManager" />
		</property>
	</bean>


	<bean id="oneliveweb" class="org.entermediadb.asset.generators.ToolbarGenerator">
		<property name="headerPath">
			<value>/oneliveweb/components/toolbar/toolbar.html</value>
		</property>
		<property name="footerPath">
			<value>/oneliveweb/components/toolbar/footer.html</value>
		</property>
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="wraps">
			<ref bean="velocityGenerator" />
		</property>
	</bean>
	<bean id="gradleScriptRunner" class="org.thoughtframe.gradle.GradleScriptRunner">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>

	</bean>
	<bean id="ValidationModule" class="org.thoughtframe.validation.ValidationModule">
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
		<property name="validator">
			<ref bean="validator" />
		</property>
	</bean>

	<bean id="BlockchainModule" class="org.thoughtframe.blockchain.BlockchainModule">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>

	</bean>
<bean id="WebRtcModule" class="org.thoughtframe.testbench.modules.WebRtcModule">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>

	</bean>
	<bean id="chainManager" class="org.thoughtframe.blockchain.ChainManager">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="analyzer">
			<ref bean="compositeChainAnalyzer" />
		</property>
	</bean>

	<bean id="newTokenAnalyzer" class="org.thoughtframe.blockchain.analyzers.NewTokenAnalyzer">
	</bean>

	<bean id="liquidityAnalyzer" class="org.thoughtframe.blockchain.analyzers.LiquidityAnalyzer">
	</bean>

	<bean id="aaveV3Analyzer" class="org.thoughtframe.blockchain.analyzers.AaveV3Analyzer">
	</bean>


	<bean id="whaleEthTransferAnalyzer" class="org.thoughtframe.blockchain.analyzers.WhaleEthTransferAnalyzer">
	</bean>

	<bean id="bitcoinAnalyzer" class="org.thoughtframe.blockchain.analyzers.BitcoinAnalyzer">
	</bean>

	<bean id="compositeChainAnalyzer" class="org.thoughtframe.blockchain.CompositeTransactionAnalyzer">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="analyzers">
			<list>
				<ref bean="newTokenAnalyzer" />
				<ref bean="liquidityAnalyzer" />
			</list>
		</property>
	</bean>


	<bean id="validator" class="org.thoughtframe.validation.Validator" />
	<bean id="jtmxTreeRenderer" class="org.thoughtframe.ai.JtmxTreeRenderer" scope="prototype">
	</bean>

	<bean id="groqManager" class="org.thoughtframe.ai.GroqManager">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
	</bean>
	<!-- DeepSeek over its OpenAI-compatible chat completions API. Registered like the other
	     providers so TestBench.loadLLM("deepseek") resolves it, and usable from frames, the web
	     chat and the CLI alike. Settings are testbench settings (deepseek-key, deepseek-endpoint,
	     deepseek-model); see frames/tui/README.md. -->
	<bean id="deepseekManager" class="org.thoughtframe.llm.deepseek.DeepSeekManager" scope="prototype">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="catalogId">
			<value>thoughtframe/system</value>
		</property>
	</bean>

	<!-- The TUI's request-level entry points. Callable from an xconf as
	     <path-action name="TuiModule.ask"/>. -->
	<bean id="TuiModule" class="org.thoughtframe.tui.TuiModule" scope="prototype">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>

	<bean id="audioTextExtractor" class="org.thoughtframe.ai.AudioTextExtractor">
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="exec">
			<ref bean="exec" />
		</property>
	</bean>

	<bean id="gptManager" class="org.thoughtframe.llm.GptManager">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
	</bean>

	<bean id="openaiManager" class="org.thoughtframe.llm.GptManager">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
	</bean>
	<bean id="geminiManager" class="org.thoughtframe.llm.GeminiManager">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
	</bean>

	<bean id="ollamaManager" class="org.thoughtframe.llm.OllamaManager">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
	</bean>
	
	<bean id="llamaManager" class="org.thoughtframe.llm.llama.LlamaManager">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
	</bean>

	<bean id="velocityRenderUtil" class="org.thoughtframe.llm.VelocityRenderUtil">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="pageManager">
			<ref bean="pageManager" />
		</property>
		<property name="velocityGenerator">
			<ref bean="velocityGenerator" />
		</property>
	</bean>

	<bean id="frameSearcher" class="org.thoughtframe.fsm.ElasticFrameSearcher" scope="prototype">
		<property name="elasticNodeManager">
			<ref bean="elasticNodeManager" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
		<property name="newDataName">
			<value>thoughtframe</value>
		</property>
		<property name="checkVersions">
			<value>false</value>
		</property>

	</bean>
	
	
	<bean id="thoughtSearcher" class="org.thoughtframe.fsm.ThoughtSearcher" scope="prototype">
		<property name="elasticNodeManager">
			<ref bean="elasticNodeManager" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
		
		<property name="checkVersions">
			<value>false</value>
		</property>

	</bean>

<bean id="frameMemorySearcher" class="org.thoughtframe.fsm.FrameMemorySearcher" scope="prototype">
		<property name="elasticNodeManager">
			<ref bean="elasticNodeManager" />
		</property>
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="searcherManager">
			<ref bean="searcherManager" />
		</property>
		
		<property name="checkVersions">
			<value>false</value>
		</property>

	</bean>

	<bean id="thoughtframe" class="org.thoughtframe.fsm.ThoughtFrame" scope="prototype">

	</bean>
	<bean id="frameManager" class="org.thoughtframe.fsm.FrameManager">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>

	</bean>

	<bean id="frameEventHandler" class="org.thoughtframe.fsm.FrameEventHandler" scope="singleton">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	
	<bean id="frameAnalyzer" class="org.thoughtframe.dsl.GroovyFrameAnalyzer" scope="singleton">
		
	</bean>
	
	
	
	<bean id="FrameModule" class="org.thoughtframe.fsm.FrameModule">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	
		<property name="scriptManager">
			<ref bean="scriptManager" />
		</property>
	</bean>
	
	<bean id="RagModule" class="org.thoughtframe.ai.RagModule">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	
		
	</bean>
	<!-- DSP -->
	
	
	<bean id="dspManager" class="org.thoughtframe.dsp.DspManager" scope="prototype">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		
	</bean>
	
	<bean id="dspSignalGenerator" class="org.thoughtframe.dsp.DspAudioGenerator" scope="prototype">
	<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>
	
	<bean id="DspModule" class="org.thoughtframe.dsp.DspModule" scope="prototype">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>

	<!-- The host workspace bridge. Defaults to a no-op so headless and web runs behave
	     exactly as before; a host (the Eclipse plugin) registers its own instance over
	     this one at boot via BeanLoader.registerSingleton("workspaceBridge", ...). -->
	<bean id="workspaceBridge" class="org.thoughtframe.runtime.NoOpWorkspaceBridge" scope="singleton" />

	<!-- Frames reach the host through these:
	     <path-action name="WorkspaceModule.captureContext"/>                    -> $workspace / $workspacejson
	     <path-action name="WorkspaceModule.invokeAction"/> name=.. args={..}    -> $actionresult / $error -->
	<bean id="WorkspaceModule" class="org.thoughtframe.workspace.WorkspaceModule" scope="prototype">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
		<property name="bridge">
			<ref bean="workspaceBridge" />
		</property>
	</bean>


	<!-- Web search: one WebSearcher per provider, selected by WebSearchModule.
	     Mirrors the LLM managers (interface + a bean per backend). -->
	<bean id="tavilyWebSearcher" class="org.thoughtframe.search.TavilyWebSearcher" scope="prototype" />
	<bean id="WebSearchModule" class="org.thoughtframe.search.WebSearchModule" scope="prototype">
		<property name="moduleManager">
			<ref bean="moduleManager" />
		</property>
	</bean>

</beans>