Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.unit.dp
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.ai.assistance.operit.core.tools.packTool.ToolPkgComposeDslNode
import com.ai.assistance.operit.core.tools.packTool.uidsl.ToolPkgComposeDslNode
import org.junit.Assert.assertNotNull
import org.junit.Assert.assertTrue
import org.junit.Rule
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,9 @@ class ToolCardStreamBoundaryAndroidTest {
@get:Rule val composeRule = createComposeRule()

private fun chars(text: String): Stream<Char> = stream { text.forEach { emit(it) } }
// XML 属性含双引号,使用原始字符串避免测试样例被误解析为 Kotlin 代码。
private fun tool(value: String): String =
"<tool name="create_file"><param name="new">$value</param></tool>"
"""<tool name="create_file"><param name="new">$value</param></tool>"""

private fun render(prefix: String?, tail: String): StreamMarkdownRendererState {
val state = StreamMarkdownRendererState()
Expand All @@ -52,13 +53,13 @@ class ToolCardStreamBoundaryAndroidTest {

@Test fun closedToolPrefixKeepsFollowingRequestAndResultSeparate() {
val first = tool("首次")
val result = "<tool_result name="create_file" status="success"><content>已创建</content></tool_result>"
val result = """<tool_result name="create_file" status="success"><content>已创建</content></tool_result>"""
val next = tool("第二次")
assertBlocks(render(first, result + next), listOf(first, result, next))
}

@Test fun unfinishedToolContinuesOnceAndNewToolsStartNewCards() {
val prefix = "<tool name="create_file"><param name="new">开始"
val prefix = """<tool name="create_file"><param name="new">开始"""
val close = "继续</param></tool>"
val next = listOf(tool("第二次"), tool("第三次"))
assertBlocks(render(prefix, close + next.joinToString("")), listOf(prefix + close) + next)
Expand Down Expand Up @@ -96,7 +97,7 @@ class ToolCardStreamBoundaryAndroidTest {
}

@Test fun xmlReplayIncludesRestoredPrefixAndEndsBeforeMessageCompletion() {
val prefix = "<tool name="create_file"><param name="new">开始"
val prefix = """<tool name="create_file"><param name="new">开始"""
val body = "继续"
val end = "</param></tool>"
val source = MutableSharedStreamImpl<Char>(replay = Int.MAX_VALUE)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const {
runSuite,
} = require('./common');

const AndroidShellExecutor = Java.com.ai.assistance.operit.core.tools.system.AndroidShellExecutor;
const AndroidShellExecutor = Java.com.ai.assistance.operit.core.tools.system.shell.AndroidShellExecutor;
const StandardActionListener = Java.com.ai.assistance.operit.core.tools.system.action.StandardActionListener;
const StreamBuildersKt = Java.type('com.ai.assistance.operit.util.stream.StreamBuildersKt');

Expand All @@ -28,7 +28,7 @@ function assertCommandResultProxy(result, label) {
assert(result && typeof result === 'object', (label || 'result') + ' should be an object');
assertEq(
String(result.className),
'com.ai.assistance.operit.core.tools.system.AndroidShellExecutor$CommandResult',
'com.ai.assistance.operit.core.tools.system.shell.AndroidShellExecutor$CommandResult',
(label || 'result') + ' className mismatch'
);
assertEq(typeof result.success, 'boolean', (label || 'result') + ' success should be boolean');
Expand All @@ -51,7 +51,7 @@ exports.run = async function run() {
test('Java.callSuspend awaits companion suspend method and returns proxy result', async () => {
const result = await withTimeout(
Java.callSuspend(
'com.ai.assistance.operit.core.tools.system.AndroidShellExecutor',
'com.ai.assistance.operit.core.tools.system.shell.AndroidShellExecutor',
'executeShellCommand',
'echo bridge-contract-suspend-top-level'
),
Expand Down
8 changes: 4 additions & 4 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -120,15 +120,15 @@
tools:node="remove" />

<activity
android:name=".core.tools.defaultTool.websession.browser.WebSessionPermissionRequestActivity"
android:name=".core.tools.builtin.web.session.browser.WebSessionPermissionRequestActivity"
android:excludeFromRecents="true"
android:exported="false"
android:finishOnTaskLaunch="true"
android:noHistory="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />

<activity
android:name=".core.tools.defaultTool.websession.userscript.install.UserscriptImportPickerActivity"
android:name=".core.tools.builtin.web.session.userscript.install.UserscriptImportPickerActivity"
android:excludeFromRecents="true"
android:exported="false"
android:finishOnTaskLaunch="true"
Expand Down Expand Up @@ -314,7 +314,7 @@
</activity>

<activity
android:name=".core.tools.system.ScreenCaptureActivity"
android:name=".core.tools.system.capture.ScreenCaptureActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:excludeFromRecents="true"
android:exported="false" />
Expand All @@ -327,7 +327,7 @@
android:foregroundServiceType="dataSync" />

<service
android:name=".core.tools.system.ScreenCaptureService"
android:name=".core.tools.system.capture.ScreenCaptureService"
android:enabled="true"
android:exported="false"
android:foregroundServiceType="mediaProjection" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@ import com.ai.assistance.operit.core.chat.hooks.mergeAdjacentTurns
import com.ai.assistance.operit.core.chat.hooks.toPromptTurns
import com.ai.assistance.operit.core.chat.hooks.toRoleContentPairs
import com.ai.assistance.operit.core.application.ActivityLifecycleManager
import com.ai.assistance.operit.core.tools.AIToolHandler
import com.ai.assistance.operit.core.tools.runtime.AIToolHandler
import com.ai.assistance.operit.core.tools.StringResultData
import com.ai.assistance.operit.core.tools.climode.CliToolModeSupport
import com.ai.assistance.operit.core.tools.climode.ToolExposureMode
import com.ai.assistance.operit.core.tools.packTool.PackageManager
import com.ai.assistance.operit.core.tools.packTool.runtime.PackageManager
import com.ai.assistance.operit.core.tools.permissions.PermissionCapabilitySession
import com.ai.assistance.operit.data.model.FunctionType
import com.ai.assistance.operit.data.model.InputProcessingState
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ import com.ai.assistance.operit.plugins.lifecycle.AppLifecycleEvent
import com.ai.assistance.operit.plugins.lifecycle.AppLifecycleHookParams
import com.ai.assistance.operit.plugins.lifecycle.AppLifecycleHookPluginRegistry
import com.ai.assistance.operit.core.config.SystemPromptConfig
import com.ai.assistance.operit.core.tools.AIToolHandler
import com.ai.assistance.operit.core.tools.system.AndroidShellExecutor
import com.ai.assistance.operit.core.tools.system.Terminal
import com.ai.assistance.operit.core.tools.runtime.AIToolHandler
import com.ai.assistance.operit.core.tools.system.shell.AndroidShellExecutor
import com.ai.assistance.operit.core.tools.system.terminal.Terminal
import com.ai.assistance.operit.core.workflow.WorkflowSchedulerInitializer
import com.ai.assistance.operit.data.backup.RoomDatabaseBackupPreferences
import com.ai.assistance.operit.data.backup.RoomDatabaseBackupScheduler
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ import com.ai.assistance.operit.core.chat.hooks.PromptTurnKind
import com.ai.assistance.operit.core.chat.plugins.MessageProcessingController
import com.ai.assistance.operit.core.chat.plugins.MessageProcessingHookParams
import com.ai.assistance.operit.core.chat.plugins.MessageProcessingPluginRegistry
import com.ai.assistance.operit.core.tools.AIToolHandler
import com.ai.assistance.operit.core.tools.runtime.AIToolHandler
import com.ai.assistance.operit.core.tools.MemoryQueryResultData
import com.ai.assistance.operit.core.tools.packTool.PackageManager
import com.ai.assistance.operit.core.tools.packTool.runtime.PackageManager
import com.ai.assistance.operit.data.model.AITool
import com.ai.assistance.operit.data.model.AttachmentInfo
import com.ai.assistance.operit.data.model.ChatMessage
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ import com.ai.assistance.operit.core.chat.hooks.toPromptTurns
import com.ai.assistance.operit.core.config.SystemPromptConfig
import com.ai.assistance.operit.core.tools.climode.ToolExposureMode
import com.ai.assistance.operit.R
import com.ai.assistance.operit.core.tools.AIToolHandler
import com.ai.assistance.operit.core.tools.packTool.PackageManager
import com.ai.assistance.operit.core.tools.runtime.AIToolHandler
import com.ai.assistance.operit.core.tools.packTool.runtime.PackageManager
import com.ai.assistance.operit.data.model.AITool
import com.ai.assistance.operit.data.model.ConversationSummaryConfig
import com.ai.assistance.operit.data.model.FunctionType
Expand All @@ -47,7 +47,7 @@ import com.ai.assistance.operit.util.stream.TextStreamEventType
import com.ai.assistance.operit.util.stream.TextStreamRevisionTracker
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.launch
import com.ai.assistance.operit.core.tools.ToolProgressBus
import com.ai.assistance.operit.core.tools.runtime.ToolProgressBus
import com.ai.assistance.operit.util.streamnative.NativeXmlSplitter
import com.github.difflib.DiffUtils
import com.github.difflib.UnifiedDiffUtils
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.ai.assistance.operit.core.chat.protocol
import android.content.Context
import com.ai.assistance.operit.R
import com.ai.assistance.operit.core.chat.media.MediaLinkParser
import com.ai.assistance.operit.core.tools.ToolExecutionLimits
import com.ai.assistance.operit.core.tools.runtime.ToolExecutionLimits
import com.ai.assistance.operit.core.chat.protocol.ChatMarkupRegex
import com.ai.assistance.operit.util.media.ImagePoolManager
import com.ai.assistance.operit.data.model.ToolResult
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@ import com.ai.assistance.operit.ui.common.a2ui.CardFences
import android.content.Context
import com.ai.assistance.operit.R
import com.ai.assistance.operit.util.logging.AppLogger
import com.ai.assistance.operit.core.tools.AIToolHandler
import com.ai.assistance.operit.core.tools.AIToolHookDecision
import com.ai.assistance.operit.core.tools.runtime.AIToolHandler
import com.ai.assistance.operit.core.tools.runtime.AIToolHookDecision
import com.ai.assistance.operit.core.chat.protocol.toolFailurePayload
import com.ai.assistance.operit.core.tools.StringResultData
import com.ai.assistance.operit.core.tools.ToolExecutor
import com.ai.assistance.operit.core.tools.runtime.ToolExecutor
import com.ai.assistance.operit.core.tools.climode.CliToolModeSupport
import com.ai.assistance.operit.core.tools.climode.ToolExposureMode
import com.ai.assistance.operit.data.model.ToolInvocation
import com.ai.assistance.operit.data.model.ToolResult
import com.ai.assistance.operit.core.tools.packTool.PackageManager
import com.ai.assistance.operit.core.tools.packTool.runtime.PackageManager
import com.ai.assistance.operit.core.tools.permissions.PermissionCapabilityResolver
import com.ai.assistance.operit.core.tools.permissions.PermissionCapabilitySession
import com.ai.assistance.operit.util.stream.StreamCollector
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import com.ai.assistance.operit.core.chat.hooks.PromptHookContext
import com.ai.assistance.operit.core.chat.hooks.PromptHookRegistry
import com.ai.assistance.operit.core.tools.climode.CliToolModeSupport
import com.ai.assistance.operit.core.tools.climode.ToolExposureMode
import com.ai.assistance.operit.core.tools.packTool.PackageManager
import com.ai.assistance.operit.core.tools.packTool.runtime.PackageManager
import com.ai.assistance.operit.data.preferences.ApiPreferences
import com.ai.assistance.operit.data.skill.SkillRepository
import com.ai.assistance.operit.ui.features.conversation.chat.webview.workspace.process.WorkspaceRuleFileReader
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import com.ai.assistance.operit.core.chat.hooks.PromptHookRegistry
import com.ai.assistance.operit.data.model.SystemToolPromptCategory
import com.ai.assistance.operit.data.model.ToolPrompt
import com.ai.assistance.operit.data.model.ToolParameterSchema
import com.ai.assistance.operit.core.tools.defaultTool.a2ui.A2uiToolDefinitions
import com.ai.assistance.operit.core.tools.builtin.a2ui.A2uiToolDefinitions

/**
* 系统工具提示词管理器
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import android.content.Context
import com.ai.assistance.operit.R
import com.ai.assistance.operit.data.memory.resolveChatMemorySpaceId
import com.ai.assistance.operit.api.chat.EnhancedAIService
import com.ai.assistance.operit.core.tools.AIToolHandler
import com.ai.assistance.operit.core.tools.runtime.AIToolHandler
import com.ai.assistance.operit.data.model.ChatHistory
import com.ai.assistance.operit.data.model.FunctionType
import com.ai.assistance.operit.data.preferences.CharacterCardManager
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import com.ai.assistance.operit.core.chat.protocol.ChatMarkupRegex
import com.ai.assistance.operit.core.chat.protocol.ThinkingMarkup
import com.ai.assistance.operit.R
import com.ai.assistance.operit.api.chat.AIService
import com.ai.assistance.operit.core.tools.AIToolHandler
import com.ai.assistance.operit.core.tools.runtime.AIToolHandler
import com.ai.assistance.operit.data.model.Memory
import com.ai.assistance.operit.data.preferences.ApiPreferences
import com.ai.assistance.operit.data.preferences.MemorySearchSettingsPreferences
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package com.ai.assistance.operit.core.memory.extraction

import android.content.Context
import com.ai.assistance.operit.api.chat.EnhancedAIService
import com.ai.assistance.operit.core.tools.AIToolHandler
import com.ai.assistance.operit.core.tools.runtime.AIToolHandler
import com.ai.assistance.operit.data.db.AppDatabase
import com.ai.assistance.operit.data.model.FunctionType
import com.ai.assistance.operit.data.model.MemoryAutoSaveCandidate
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import android.os.Process
import android.os.SystemClock
import android.system.Os
import android.system.OsConstants
import com.ai.assistance.operit.core.tools.packTool.PackageManager
import com.ai.assistance.operit.core.tools.packTool.runtime.PackageManager
import com.ai.assistance.operit.terminal.TerminalManager
import com.ai.assistance.operit.util.logging.AppLogger
import java.io.File
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.ai.assistance.operit.core.tools
import android.content.Context
import android.os.Build
import com.ai.assistance.operit.core.tools.javascript.JsToolManager
import com.ai.assistance.operit.core.tools.packTool.PackageManager
import com.ai.assistance.operit.core.tools.packTool.runtime.PackageManager
import com.ai.assistance.operit.data.model.AITool
import com.ai.assistance.operit.data.model.ToolResult
import com.ai.assistance.operit.data.model.ToolValidationResult
Expand Down Expand Up @@ -32,6 +32,7 @@ import kotlinx.serialization.json.JsonPrimitive
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.flow.last
import java.util.Locale
import com.ai.assistance.operit.core.tools.runtime.ToolExecutor

/**
* Represents a package of tools that can be imported by the AI
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ import androidx.core.content.FileProvider
import com.ai.assistance.operit.R
import com.ai.assistance.operit.api.chat.AIService
import com.ai.assistance.operit.core.chat.hooks.toPromptTurns
import com.ai.assistance.operit.core.tools.AIToolHandler
import com.ai.assistance.operit.core.tools.runtime.AIToolHandler
import com.ai.assistance.operit.core.tools.AppListData
import com.ai.assistance.operit.core.tools.defaultTool.standard.StandardUITools
import com.ai.assistance.operit.core.tools.builtin.ui.StandardUITools
import com.ai.assistance.operit.core.tools.permissions.PermissionCapabilityResolver
import com.ai.assistance.operit.core.tools.system.AndroidPermissionLevel
import com.ai.assistance.operit.core.tools.permissions.AndroidPermissionLevel
import com.ai.assistance.operit.data.model.AITool
import com.ai.assistance.operit.data.model.ToolParameter
import com.ai.assistance.operit.data.model.ToolResult
Expand Down
Loading