just-ai / jaicf-plugin Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
IDEA can suggest uninstalled plugins based on project dependencies. It shows a balloon notification with the following text "Recommended plugin available for dependencies '...'".
Use the com.intellij.dependencySupport extension point to do this.
Plugin doesn't work with IDEA 2022.
Now, if a project contains several appends with context, all transitions refer to the first of them.
Example:
val aScenario = Scenario {
append("inner2", Scenario { state("opo") })
fallback { reactions.go("/inner/opo") }
}
val bScenario = Scenario {
append("inner", Scenario { state("opo") })
fallback { reactions.go("/inner/opo") }
}
Stacktrace:
java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.collections.CollectionsKt__MutableCollectionsKt.addAll, parameter elements
at kotlin.collections.CollectionsKt__MutableCollectionsKt.addAll(MutableCollections.kt)
at kotlin.collections.CollectionsKt__IterablesKt.flatten(Iterables.kt:72)
at com.justai.jaicf.plugin.scenarios.psi.ScenarioDataService.getScenarios(ScenarioDataService.kt:39)
at com.justai.jaicf.plugin.scenarios.linker.LinkerKt.getAppendingStates(Linker.kt:31)
at com.justai.jaicf.plugin.scenarios.transition.TransitionService.transit(TransitionService.kt:33)
at com.justai.jaicf.plugin.scenarios.transition.TransitionServiceKt.transit(TransitionService.kt:85)
at com.justai.jaicf.plugin.inspections.DuplicateStateInspection$DuplicateStateVisitor.visitState(DuplicateStateInspection.kt:25)
at com.justai.jaicf.plugin.inspections.StateVisitor.recursiveEntryIntoState(Visitors.kt:40)
at com.justai.jaicf.plugin.inspections.StateVisitor.visitFile(Visitors.kt:35)
at org.jetbrains.kotlin.psi.KtFile.accept(KtFile.kt:232)
at com.intellij.codeInspection.InspectionEngine.acceptElements(InspectionEngine.java:64)
at com.intellij.codeInspection.InspectionEngine.createVisitorAndAcceptElements(InspectionEngine.java:55)
at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.runToolOnElements(LocalInspectionsPass.java:326)
at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.lambda$visitPriorityElementsAndInit$4(LocalInspectionsPass.java:285)
at com.intellij.util.AstLoadingFilter.forceAllowTreeLoading(AstLoadingFilter.java:159)
at com.intellij.util.AstLoadingFilter.forceAllowTreeLoading(AstLoadingFilter.java:151)
at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.lambda$visitPriorityElementsAndInit$5(LocalInspectionsPass.java:283)
at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:130)
at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:119)
at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.lambda$visitPriorityElementsAndInit$6(LocalInspectionsPass.java:283)
at com.intellij.concurrency.ApplierCompleter.execAndForkSubTasks(ApplierCompleter.java:136)
at com.intellij.concurrency.ApplierCompleter.execAndForkSubTasks(ApplierCompleter.java:149)
at com.intellij.concurrency.ApplierCompleter.execAndForkSubTasks(ApplierCompleter.java:149)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1078)
at com.intellij.concurrency.ApplierCompleter.lambda$wrapInReadActionAndIndicator$1(ApplierCompleter.java:92)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:705)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:647)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:63)
at com.intellij.concurrency.ApplierCompleter.wrapInReadActionAndIndicator(ApplierCompleter.java:104)
at com.intellij.concurrency.ApplierCompleter.lambda$compute$0(ApplierCompleter.java:83)
at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:174)
at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:183)
at com.intellij.concurrency.ApplierCompleter.compute(ApplierCompleter.java:83)
at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:746)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
How to reproduce:
Start refactoring the project with IDEA tools: change the location of the class through packages.
Need to support 213 version of IDEA.
The code below is not currently supported, but it must work just as if it were append(AppendTestScenario)
class AppScenario(private val entryPoint: Scenario = AppendTestScenario) : Scenario {
override val model by Scenario {
append(entryPoint)
}
}
Now the expression @PathValue bye
, where bye is const val, does not work.
Now the inspection highlights reactions.chatapi?.buttons(" toState "./"), but ChatApiReactions overrides reaction buttons, so this is incorrect behavior.
Add indicator to status bar to show when plugin updates caches etc.
java.lang.Throwable: Must be executed under progress indicator: com.intellij.openapi.progress.EmptyProgressIndicator@2157ebe9. Please see e.g. ProgressManager.runProcess()
at com.intellij.openapi.diagnostic.Logger.error(Logger.java:182)
at com.intellij.openapi.progress.impl.CoreProgressManager.assertUnderProgress(CoreProgressManager.java:996)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processFilesConcurrentlyDespiteWriteActions(PsiSearchHelperImpl.java:428)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.lambda$processPsiFileRoots$8(PsiSearchHelperImpl.java:397)
at com.intellij.psi.impl.PsiManagerImpl.runInBatchFilesMode(PsiManagerImpl.java:451)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processPsiFileRoots(PsiSearchHelperImpl.java:393)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processCandidates(PsiSearchHelperImpl.java:908)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processGlobalRequests(PsiSearchHelperImpl.java:892)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processGlobalRequestsOptimized(PsiSearchHelperImpl.java:844)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processRequests(PsiSearchHelperImpl.java:769)
at com.intellij.psi.search.SearchRequestQuery.processResults(SearchRequestQuery.java:24)
at com.intellij.util.AbstractQuery.doProcessResults(AbstractQuery.java:91)
at com.intellij.util.AbstractQuery.delegateProcessResults(AbstractQuery.java:108)
at com.intellij.util.MergeQuery.processResults(MergeQuery.java:22)
at com.intellij.util.AbstractQuery.doProcessResults(AbstractQuery.java:91)
at com.intellij.util.AbstractQuery.delegateProcessResults(AbstractQuery.java:108)
at com.intellij.util.UniqueResultsQuery.processResults(UniqueResultsQuery.java:37)
at com.intellij.util.AbstractQuery.doProcessResults(AbstractQuery.java:91)
at com.intellij.util.AbstractQuery.forEach(AbstractQuery.java:83)
at com.intellij.util.AbstractQuery.findAll(AbstractQuery.java:28)
at com.justai.jaicf.plugin.scenarios.psi.ReferencesSearcherKt.search(ReferencesSearcher.kt:22)
at com.justai.jaicf.plugin.scenarios.psi.ScenarioDataService$scenariosMap$1.invoke(ScenarioDataService.kt:27)
at com.justai.jaicf.plugin.scenarios.psi.ScenarioDataService$scenariosMap$1.invoke(ScenarioDataService.kt:25)
at com.justai.jaicf.plugin.utils.LiveMapByFiles.createCachedValue$lambda-1(CachedValues.kt:58)
at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:39)
at com.intellij.util.CachedValueBase.lambda$getValueWithLock$3(CachedValueBase.java:227)
at com.intellij.util.CachedValueBase.computeData(CachedValueBase.java:42)
at com.intellij.util.CachedValueBase.lambda$getValueWithLock$4(CachedValueBase.java:227)
at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:114)
at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:44)
at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:228)
at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:28)
at com.justai.jaicf.plugin.utils.LiveMapByFiles.get(CachedValues.kt:52)
at com.justai.jaicf.plugin.scenarios.psi.ScenarioDataService.getScenarios(ScenarioDataService.kt:35)
at com.justai.jaicf.plugin.scenarios.linker.LocatorKt.getFramingState(Locator.kt:16)
at com.justai.jaicf.plugin.providers.StateIdentifierReferenceProvider$getReferencesByElement$1.invoke(StateIdentifierReferenceContributor.kt:50)
at com.justai.jaicf.plugin.providers.StateIdentifierReferenceProvider$getReferencesByElement$1.invoke(StateIdentifierReferenceContributor.kt:48)
at com.justai.jaicf.plugin.providers.MultiPsiReference.resolve(StateIdentifierReferenceContributor.kt:67)
at com.justai.jaicf.plugin.providers.MultiPsiReference.resolve(StateIdentifierReferenceContributor.kt:57)
at com.intellij.codeInsight.TargetElementUtilBase.getReferencedElement(TargetElementUtilBase.java:177)
at com.intellij.codeInsight.TargetElementUtilBase.doGetReferenceOrReferencedElement(TargetElementUtilBase.java:165)
at com.intellij.codeInsight.TargetElementUtilBase.getReferenceOrReferencedElement(TargetElementUtilBase.java:210)
at com.intellij.codeInsight.TargetElementUtilBase.getReferencedElement(TargetElementUtilBase.java:254)
at com.intellij.codeInsight.TargetElementUtilBase.doFindTargetElement(TargetElementUtilBase.java:233)
at com.intellij.codeInsight.TargetElementUtilBase.findTargetElement(TargetElementUtilBase.java:298)
at com.intellij.codeInsight.TargetElementUtil.findTargetElement(TargetElementUtil.java:147)
at com.intellij.model.psi.impl.TargetsKt.fromTargetEvaluator(targets.kt:173)
at com.intellij.model.psi.impl.TargetsKt.declarationsOrReferences(targets.kt:134)
at com.intellij.model.psi.impl.TargetsKt.declaredReferencedData(targets.kt:41)
at com.intellij.codeInsight.navigation.impl.GtduKt.fromTargetData(gtdu.kt:60)
at com.intellij.codeInsight.navigation.impl.GtduKt.gotoDeclarationOrUsagesInner(gtdu.kt:56)
at com.intellij.codeInsight.navigation.impl.GtduKt.access$gotoDeclarationOrUsagesInner(gtdu.kt:1)
at com.intellij.codeInsight.navigation.impl.GtduKt$gotoDeclarationOrUsages$1.invoke(gtdu.kt:19)
at com.intellij.codeInsight.navigation.impl.GtduKt$gotoDeclarationOrUsages$1.invoke(gtdu.kt)
at com.intellij.codeInsight.navigation.impl.CommonKt.processInjectionThenHost(common.kt:14)
at com.intellij.codeInsight.navigation.impl.GtduKt.gotoDeclarationOrUsages(gtdu.kt:19)
at com.intellij.codeInsight.navigation.actions.GotoDeclarationOrUsageHandler2.gotoDeclarationOrUsages(GotoDeclarationOrUsageHandler2.kt:31)
at com.intellij.codeInsight.navigation.actions.GotoDeclarationOrUsageHandler2.getCtrlMouseData(GotoDeclarationOrUsageHandler2.kt:41)
at com.intellij.codeInsight.navigation.actions.GotoDeclarationAction.getCtrlMouseData(GotoDeclarationAction.java:95)
at com.intellij.codeInsight.navigation.CtrlMouseHandler2$computeInReadAction$1.invoke(CtrlMouseHandler.kt:235)
at com.intellij.codeInsight.navigation.CtrlMouseHandler2$computeInReadAction$1.invoke(CtrlMouseHandler.kt:77)
at com.intellij.lang.documentation.ide.impl.DocumentationTargetHoverInfoKt.injectedThenHost(DocumentationTargetHoverInfo.kt:76)
at com.intellij.codeInsight.navigation.CtrlMouseHandler2.computeInReadAction(CtrlMouseHandler.kt:234)
at com.intellij.codeInsight.navigation.CtrlMouseHandler2.access$computeInReadAction(CtrlMouseHandler.kt:77)
at com.intellij.codeInsight.navigation.CtrlMouseHandler2$compute$2$1.invoke(CtrlMouseHandler.kt:222)
at com.intellij.codeInsight.navigation.CtrlMouseHandler2$compute$2$1.invoke(CtrlMouseHandler.kt:77)
at com.intellij.openapi.application.rw.InternalReadAction.insideReadAction(InternalReadAction.kt:96)
at com.intellij.openapi.application.rw.InternalReadAction.access$insideReadAction(InternalReadAction.kt:13)
at com.intellij.openapi.application.rw.InternalReadAction$tryReadCancellable$1.invoke(InternalReadAction.kt:81)
at com.intellij.openapi.application.rw.InternalReadAction$tryReadCancellable$1.invoke(InternalReadAction.kt:13)
at com.intellij.openapi.progress.CancellationKt$sam$com_intellij_openapi_util_ThrowableComputable$0.compute(cancellation.kt)
at com.intellij.openapi.progress.Cancellation.withJob(Cancellation.java:60)
at com.intellij.openapi.progress.CancellationKt.withJob(cancellation.kt:14)
at com.intellij.openapi.progress.CancellationKt.executeWithJobAndCompleteIt(cancellation.kt:111)
at com.intellij.openapi.application.rw.CancellableReadActionKt$cancellableReadActionInternal$2$1.run(cancellableReadAction.kt:34)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1152)
at com.intellij.openapi.application.rw.CancellableReadActionKt$cancellableReadActionInternal$2.run(cancellableReadAction.kt:32)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:158)
at com.intellij.openapi.application.rw.CancellableReadActionKt.cancellableReadActionInternal(cancellableReadAction.kt:30)
at com.intellij.openapi.application.rw.InternalReadAction.tryReadCancellable(InternalReadAction.kt:80)
at com.intellij.openapi.application.rw.InternalReadAction.access$tryReadCancellable(InternalReadAction.kt:13)
at com.intellij.openapi.application.rw.InternalReadAction$tryReadAction$2.invoke(InternalReadAction.kt:66)
at com.intellij.openapi.application.rw.InternalReadAction$tryReadAction$2.invoke(InternalReadAction.kt:13)
at com.intellij.openapi.progress.CancellationKt$sam$com_intellij_openapi_util_ThrowableComputable$0.compute(cancellation.kt)
at com.intellij.openapi.progress.Cancellation.withJob(Cancellation.java:60)
at com.intellij.openapi.progress.CancellationKt.withJob(cancellation.kt:14)
at com.intellij.openapi.progress.CoroutinesKt.blockingContext(coroutines.kt:138)
at com.intellij.openapi.application.rw.InternalReadAction.tryReadAction(InternalReadAction.kt:61)
at com.intellij.openapi.application.rw.InternalReadAction.readLoop(InternalReadAction.kt:53)
at com.intellij.openapi.application.rw.InternalReadAction.access$readLoop(InternalReadAction.kt:13)
at com.intellij.openapi.application.rw.InternalReadAction$runReadAction$4.invokeSuspend(InternalReadAction.kt:33)
at com.intellij.openapi.application.rw.InternalReadAction$runReadAction$4.invoke(InternalReadAction.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:264)
at com.intellij.openapi.application.rw.InternalReadAction.runReadAction(InternalReadAction.kt:32)
at com.intellij.openapi.application.rw.PlatformReadActionSupport.executeReadAction(PlatformReadActionSupport.kt:24)
at com.intellij.openapi.application.CoroutinesKt.constrainedReadAction(coroutines.kt:50)
at com.intellij.codeInsight.navigation.CtrlMouseHandler2$compute$2.invokeSuspend(CtrlMouseHandler.kt:221)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Now the plugin is fast for small and medium projects, but for large projects it is slow.
My suggestion is to replace jetbrains CacheValues with proprietary ones and not clear the cache in unnecessary cases.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.