Expand onboarding and adaptive keyboard intelligence

Add resilient usage analytics, OOBE gateway flows, clipboard semantic ranking, purchase recovery, style learning, and managed current-information search.
This commit is contained in:
Rocky
2026-08-22 16:33:18 +08:00
parent ac374631ae
commit e5a83843db
162 changed files with 23574 additions and 1013 deletions
@@ -116,10 +116,10 @@ final class AIHintKeywordExtractorTests: XCTestCase {
}
final class AIClipboardSkillTests: XCTestCase {
func testVisibleDefaultsAreReplySummarizeTranslate() {
func testVisibleDefaultsContainEveryBuiltInSkill() {
XCTAssertEqual(
AIClipboardSkillCatalog.visible().map(\.id),
["reply", "summarize", "translate"]
AIClipboardSkillCatalog.catalog.map(\.id)
)
}
@@ -236,6 +236,30 @@ final class AIClipboardSkillTests: XCTestCase {
XCTAssertTrue(prompt.contains("不要改写成可发送的短消息"))
}
func testSemanticReplySkillsHaveDistinctInstructions() {
let ids = [
AIClipboardSkillCatalog.replyInSourceLanguageID,
AIClipboardSkillCatalog.acceptInvitationID,
AIClipboardSkillCatalog.declineInvitationID,
AIClipboardSkillCatalog.acceptTaskID,
AIClipboardSkillCatalog.clarifyRequestID,
AIClipboardSkillCatalog.empathyReplyID,
AIClipboardSkillCatalog.askForDetailsID,
AIClipboardSkillCatalog.businessReplyID,
AIClipboardSkillCatalog.extractConclusionsID,
AIClipboardSkillCatalog.organizeListID
]
let prompts = ids.map {
AIClipboardSkillCatalog.instruction(
skillID: $0,
locale: "zh",
translationTargetLocaleId: TranslationLanguageCatalog.offLocaleId
)
}
XCTAssertEqual(Set(prompts).count, ids.count)
XCTAssertFalse(prompts.contains { $0.contains("用户选择的操作") })
}
func testExtractTodosAsksForNONEWhenEmpty() {
let prompt = AIClipboardSkillCatalog.instruction(
skillID: AIClipboardSkillCatalog.extractTodosID,