diff --git a/manifest.json b/manifest.json index 3035233..55df52e 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "istart-note-ai", "name": "IStart-Note-AI", - "version": "1.6.1", + "version": "1.7.0", "minAppVersion": "1.4.0", "description": "Generate structured knowledge notes from questions and selected text using DeepSeek AI, with automatic concept pages, bidirectional links, and a question graph.", "author": "Yan", diff --git a/package.json b/package.json index 891dbbc..f33a2e7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "istart-note-ai", - "version": "1.6.1", + "version": "1.7.0", "description": "IStart-Note-AI: DeepSeek-powered knowledge graph plugin for Obsidian", "main": "main.js", "scripts": { diff --git a/src/ConceptCompleter.ts b/src/ai/ConceptCompleter.ts similarity index 99% rename from src/ConceptCompleter.ts rename to src/ai/ConceptCompleter.ts index aa6bc07..18dcc81 100644 --- a/src/ConceptCompleter.ts +++ b/src/ai/ConceptCompleter.ts @@ -1,5 +1,5 @@ import { requestUrl } from "obsidian"; -import { DeepSeekSettings, CompletionDepth, ConceptCompletionResult } from "./types"; +import { DeepSeekSettings, CompletionDepth, ConceptCompletionResult } from "../types"; const LIGHT_PROMPT = `你是一个个人知识图谱助手。请为以下概念生成简明的定义和关联概念。 diff --git a/src/ContextQAClient.ts b/src/ai/ContextQAClient.ts similarity index 99% rename from src/ContextQAClient.ts rename to src/ai/ContextQAClient.ts index 8c54171..065d75f 100644 --- a/src/ContextQAClient.ts +++ b/src/ai/ContextQAClient.ts @@ -1,5 +1,5 @@ import { requestUrl } from "obsidian"; -import { DeepSeekSettings, ContextQAInput, ContextQAResponse, Relation } from "./types"; +import { DeepSeekSettings, ContextQAInput, ContextQAResponse, Relation } from "../types"; const buildPrompt = (input: ContextQAInput): string => `请基于以下上下文回答问题。 diff --git a/src/DeepSeekClient.ts b/src/ai/DeepSeekClient.ts similarity index 97% rename from src/DeepSeekClient.ts rename to src/ai/DeepSeekClient.ts index cce4591..ce27d98 100644 --- a/src/DeepSeekClient.ts +++ b/src/ai/DeepSeekClient.ts @@ -1,5 +1,5 @@ import { requestUrl } from "obsidian"; -import { DeepSeekSettings, DeepSeekResponse } from "./types"; +import { DeepSeekSettings, DeepSeekResponse } from "../types"; const SYSTEM_PROMPT = `你是一个知识图谱构建助手。用户会向你提问,你需要: 1. 给出清晰的回答 diff --git a/src/DiagramGenerator.ts b/src/ai/DiagramGenerator.ts similarity index 99% rename from src/DiagramGenerator.ts rename to src/ai/DiagramGenerator.ts index 85d5565..d405afb 100644 --- a/src/DiagramGenerator.ts +++ b/src/ai/DiagramGenerator.ts @@ -1,5 +1,5 @@ import { requestUrl } from "obsidian"; -import { DeepSeekSettings } from "./types"; +import { DeepSeekSettings } from "../types"; export type DiagramType = | "auto" diff --git a/src/QuestionClassifier.ts b/src/ai/QuestionClassifier.ts similarity index 97% rename from src/QuestionClassifier.ts rename to src/ai/QuestionClassifier.ts index cd4a072..0ec5e6d 100644 --- a/src/QuestionClassifier.ts +++ b/src/ai/QuestionClassifier.ts @@ -1,5 +1,5 @@ import { requestUrl } from "obsidian"; -import { DeepSeekSettings, QuestionClassification } from "./types"; +import { DeepSeekSettings, QuestionClassification } from "../types"; const CLASSIFY_PROMPT = `你是一个知识图谱助手,负责对用户的问题进行分类和关联。 diff --git a/src/SectionAppender.ts b/src/ai/SectionAppender.ts similarity index 99% rename from src/SectionAppender.ts rename to src/ai/SectionAppender.ts index 5468e32..ddb6f18 100644 --- a/src/SectionAppender.ts +++ b/src/ai/SectionAppender.ts @@ -1,5 +1,5 @@ import { App, TFile, requestUrl } from "obsidian"; -import { DeepSeekSettings } from "./types"; +import { DeepSeekSettings } from "../types"; export interface SectionAppendResult { items: string[]; // 新增条目列表 diff --git a/src/ConceptCompletionModal.ts b/src/features/concept/ConceptCompletionModal.ts similarity index 99% rename from src/ConceptCompletionModal.ts rename to src/features/concept/ConceptCompletionModal.ts index 2541637..7d72735 100644 --- a/src/ConceptCompletionModal.ts +++ b/src/features/concept/ConceptCompletionModal.ts @@ -1,5 +1,5 @@ import { App, Modal, Setting, MarkdownRenderer, Component } from "obsidian"; -import { CompletionDepth } from "./types"; +import { CompletionDepth } from "../../types"; export class DepthSelectModal extends Modal { private depth: CompletionDepth = "standard"; diff --git a/src/ConceptPageManager.ts b/src/features/concept/ConceptPageManager.ts similarity index 99% rename from src/ConceptPageManager.ts rename to src/features/concept/ConceptPageManager.ts index c0edb9a..fba1ac8 100644 --- a/src/ConceptPageManager.ts +++ b/src/features/concept/ConceptPageManager.ts @@ -1,5 +1,5 @@ import { App, TFile, parseYaml, stringifyYaml, normalizePath } from "obsidian"; -import { ConceptCompletionResult, CompletionDepth, DeepSeekSettings } from "./types"; +import { ConceptCompletionResult, CompletionDepth, DeepSeekSettings } from "../../types"; export interface ConceptPageInfo { file: TFile; diff --git a/src/ContextQAModal.ts b/src/features/context-qa/ContextQAModal.ts similarity index 100% rename from src/ContextQAModal.ts rename to src/features/context-qa/ContextQAModal.ts diff --git a/src/DiagramModal.ts b/src/features/diagram/DiagramModal.ts similarity index 97% rename from src/DiagramModal.ts rename to src/features/diagram/DiagramModal.ts index 1e8c441..7911bc6 100644 --- a/src/DiagramModal.ts +++ b/src/features/diagram/DiagramModal.ts @@ -1,5 +1,5 @@ import { App, Modal, Setting, MarkdownRenderer, Component } from "obsidian"; -import { DiagramType, DiagramResult, DiagramGenerator } from "./DiagramGenerator"; +import { DiagramType, DiagramResult, DiagramGenerator } from "../../ai/DiagramGenerator"; /** * 图表类型选择弹窗 diff --git a/src/QuestionClassifyModal.ts b/src/features/question/QuestionClassifyModal.ts similarity index 97% rename from src/QuestionClassifyModal.ts rename to src/features/question/QuestionClassifyModal.ts index 21321c2..f78b79d 100644 --- a/src/QuestionClassifyModal.ts +++ b/src/features/question/QuestionClassifyModal.ts @@ -1,5 +1,5 @@ import { App, Modal, Setting } from "obsidian"; -import { QuestionClassification, QuestionCategory } from "./types"; +import { QuestionClassification, QuestionCategory } from "../../types"; const CATEGORY_LABELS: Record = { new: "🆕 新问题", diff --git a/src/QuestionGraphManager.ts b/src/features/question/QuestionGraphManager.ts similarity index 99% rename from src/QuestionGraphManager.ts rename to src/features/question/QuestionGraphManager.ts index 622fbd9..356232e 100644 --- a/src/QuestionGraphManager.ts +++ b/src/features/question/QuestionGraphManager.ts @@ -1,5 +1,5 @@ import { App, TFile, normalizePath, stringifyYaml } from "obsidian"; -import { DeepSeekSettings, QuestionClassification } from "./types"; +import { DeepSeekSettings, QuestionClassification } from "../../types"; export interface QuestionMeta { file: TFile; diff --git a/src/QuestionModal.ts b/src/features/question/QuestionModal.ts similarity index 100% rename from src/QuestionModal.ts rename to src/features/question/QuestionModal.ts diff --git a/src/SectionAppendModal.ts b/src/features/section/SectionAppendModal.ts similarity index 100% rename from src/SectionAppendModal.ts rename to src/features/section/SectionAppendModal.ts diff --git a/src/BaiduAuthModal.ts b/src/features/sync/BaiduAuthModal.ts similarity index 98% rename from src/BaiduAuthModal.ts rename to src/features/sync/BaiduAuthModal.ts index 5adba82..998e8b0 100644 --- a/src/BaiduAuthModal.ts +++ b/src/features/sync/BaiduAuthModal.ts @@ -1,6 +1,6 @@ import { App, Modal, Notice, Setting } from "obsidian"; import { BaiduPanClient } from "./BaiduPanClient"; -import { BaiduSyncConfig } from "./types"; +import { BaiduSyncConfig } from "../../types"; export class BaiduAuthModal extends Modal { private code = ""; diff --git a/src/BaiduPanClient.ts b/src/features/sync/BaiduPanClient.ts similarity index 99% rename from src/BaiduPanClient.ts rename to src/features/sync/BaiduPanClient.ts index 4ed8791..ca33162 100644 --- a/src/BaiduPanClient.ts +++ b/src/features/sync/BaiduPanClient.ts @@ -9,8 +9,8 @@ */ import { requestUrl } from "obsidian"; -import { BaiduSyncConfig } from "./types"; -import { md5 } from "./md5"; +import { BaiduSyncConfig } from "../../types"; +import { md5 } from "../../util/md5"; const PAN_API = "https://pan.baidu.com/rest/2.0/xpan"; const UPLOAD_API = "https://d.pcs.baidu.com/rest/2.0/pcs/superfile2"; diff --git a/src/BaiduSyncMeta.ts b/src/features/sync/BaiduSyncMeta.ts similarity index 100% rename from src/BaiduSyncMeta.ts rename to src/features/sync/BaiduSyncMeta.ts diff --git a/src/BaiduSyncModal.ts b/src/features/sync/BaiduSyncModal.ts similarity index 99% rename from src/BaiduSyncModal.ts rename to src/features/sync/BaiduSyncModal.ts index 8222936..36d9772 100644 --- a/src/BaiduSyncModal.ts +++ b/src/features/sync/BaiduSyncModal.ts @@ -1,6 +1,6 @@ import { App, Modal, Notice, Setting } from "obsidian"; import { BaiduSyncService } from "./BaiduSyncService"; -import { BaiduSyncConfig } from "./types"; +import { BaiduSyncConfig } from "../../types"; type SyncMode = "sync" | "backup" | "restore"; type ConflictStrategy = "local" | "remote" | "keep-both"; diff --git a/src/BaiduSyncService.ts b/src/features/sync/BaiduSyncService.ts similarity index 99% rename from src/BaiduSyncService.ts rename to src/features/sync/BaiduSyncService.ts index 8a83e0c..8d3ec29 100644 --- a/src/BaiduSyncService.ts +++ b/src/features/sync/BaiduSyncService.ts @@ -1,5 +1,5 @@ import { App, Notice, TFile } from "obsidian"; -import { BaiduSyncConfig, DeepSeekSettings, SyncableConfig } from "./types"; +import { BaiduSyncConfig, DeepSeekSettings, SyncableConfig } from "../../types"; import { BaiduPanClient } from "./BaiduPanClient"; import { BaiduSyncMeta, SyncAction, SyncPlan } from "./BaiduSyncMeta"; diff --git a/src/BaiduSyncView.ts b/src/features/sync/BaiduSyncView.ts similarity index 99% rename from src/BaiduSyncView.ts rename to src/features/sync/BaiduSyncView.ts index 135dd73..e5fdc54 100644 --- a/src/BaiduSyncView.ts +++ b/src/features/sync/BaiduSyncView.ts @@ -2,7 +2,7 @@ import { ItemView, Notice, TFile, WorkspaceLeaf } from "obsidian"; import { BaiduSyncService } from "./BaiduSyncService"; import { BaiduSyncMeta, SyncAction } from "./BaiduSyncMeta"; import { BaiduPanClient } from "./BaiduPanClient"; -import type DeepSeekPlugin from "./main"; +import type DeepSeekPlugin from "../../main"; export const SYNC_VIEW_TYPE = "istart-baidu-sync-view"; diff --git a/src/main.ts b/src/main.ts index b5e0d73..6055e0b 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,26 +1,26 @@ import { Notice, Plugin, TFile, normalizePath } from "obsidian"; import { DeepSeekSettings, DEFAULT_SETTINGS, CompletionDepth } from "./types"; -import { DeepSeekClient } from "./DeepSeekClient"; -import { VaultWriter } from "./VaultWriter"; -import { QuestionModal } from "./QuestionModal"; -import { DeepSeekSettingsTab } from "./SettingsTab"; -import { ConceptCompleter } from "./ConceptCompleter"; -import { ConceptPageManager } from "./ConceptPageManager"; -import { DepthSelectModal, PreviewModal, BatchScanModal } from "./ConceptCompletionModal"; -import { QuestionClassifier } from "./QuestionClassifier"; -import { QuestionGraphManager } from "./QuestionGraphManager"; -import { QuestionClassifyModal } from "./QuestionClassifyModal"; -import { ContextQAClient } from "./ContextQAClient"; -import { ContextQAModal } from "./ContextQAModal"; -import { SectionAppender } from "./SectionAppender"; -import { SectionAppendModal, SectionPreviewModal } from "./SectionAppendModal"; -import { BaiduSyncService } from "./BaiduSyncService"; -import { BaiduAuthModal } from "./BaiduAuthModal"; -import { BaiduSyncModal } from "./BaiduSyncModal"; +import { DeepSeekClient } from "./ai/DeepSeekClient"; +import { VaultWriter } from "./vault/VaultWriter"; +import { QuestionModal } from "./features/question/QuestionModal"; +import { DeepSeekSettingsTab } from "./settings/SettingsTab"; +import { ConceptCompleter } from "./ai/ConceptCompleter"; +import { ConceptPageManager } from "./features/concept/ConceptPageManager"; +import { DepthSelectModal, PreviewModal, BatchScanModal } from "./features/concept/ConceptCompletionModal"; +import { QuestionClassifier } from "./ai/QuestionClassifier"; +import { QuestionGraphManager } from "./features/question/QuestionGraphManager"; +import { QuestionClassifyModal } from "./features/question/QuestionClassifyModal"; +import { ContextQAClient } from "./ai/ContextQAClient"; +import { ContextQAModal } from "./features/context-qa/ContextQAModal"; +import { SectionAppender } from "./ai/SectionAppender"; +import { SectionAppendModal, SectionPreviewModal } from "./features/section/SectionAppendModal"; +import { BaiduSyncService } from "./features/sync/BaiduSyncService"; +import { BaiduAuthModal } from "./features/sync/BaiduAuthModal"; +import { BaiduSyncModal } from "./features/sync/BaiduSyncModal"; import { DEFAULT_BAIDU_SYNC_CONFIG } from "./types"; -import { BaiduSyncView, SYNC_VIEW_TYPE } from "./BaiduSyncView"; -import { DiagramGenerator, DiagramType } from "./DiagramGenerator"; -import { DiagramTypeModal, DiagramPreviewModal } from "./DiagramModal"; +import { BaiduSyncView, SYNC_VIEW_TYPE } from "./features/sync/BaiduSyncView"; +import { DiagramGenerator, DiagramType } from "./ai/DiagramGenerator"; +import { DiagramTypeModal, DiagramPreviewModal } from "./features/diagram/DiagramModal"; export default class DeepSeekPlugin extends Plugin { settings: DeepSeekSettings; diff --git a/src/SettingsTab.ts b/src/settings/SettingsTab.ts similarity index 98% rename from src/SettingsTab.ts rename to src/settings/SettingsTab.ts index 76d95e4..64b4a0a 100644 --- a/src/SettingsTab.ts +++ b/src/settings/SettingsTab.ts @@ -1,6 +1,6 @@ import { App, PluginSettingTab, Setting } from "obsidian"; -import type DeepSeekPlugin from "./main"; -import { BaiduAuthModal } from "./BaiduAuthModal"; +import type DeepSeekPlugin from "../main"; +import { BaiduAuthModal } from "../features/sync/BaiduAuthModal"; export class DeepSeekSettingsTab extends PluginSettingTab { constructor(app: App, private plugin: DeepSeekPlugin) { diff --git a/src/md5.ts b/src/util/md5.ts similarity index 100% rename from src/md5.ts rename to src/util/md5.ts diff --git a/src/VaultWriter.ts b/src/vault/VaultWriter.ts similarity index 99% rename from src/VaultWriter.ts rename to src/vault/VaultWriter.ts index 0793364..d30bf06 100644 --- a/src/VaultWriter.ts +++ b/src/vault/VaultWriter.ts @@ -1,5 +1,5 @@ import { App, TFile, normalizePath } from "obsidian"; -import { DeepSeekResponse, DeepSeekSettings, ContextQAInput, ContextQAResponse } from "./types"; +import { DeepSeekResponse, DeepSeekSettings, ContextQAInput, ContextQAResponse } from "../types"; export class VaultWriter { constructor(private app: App, private settings: DeepSeekSettings) {} diff --git a/versions.json b/versions.json index df84d87..eec70cc 100644 --- a/versions.json +++ b/versions.json @@ -9,5 +9,6 @@ "1.5.6": "1.4.0", "1.5.7": "1.4.0", "1.6.0": "1.4.0", - "1.6.1": "1.4.0" + "1.6.1": "1.4.0", + "1.7.0": "1.4.0" }