@templmf/temp-solf-lmf 0.0.55 → 0.0.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/package.json +1 -1
  2. package//345/242/236/351/207/217/351/234/200/346/261/202prompt +72 -0
  3. package/guanwang/README.md +0 -95
  4. package/guanwang/docs/changelog.md +0 -145
  5. package/guanwang/docs/doc-maintenance.md +0 -229
  6. package/guanwang/docs/product.md +0 -181
  7. package/guanwang/docs/test-cases.md +0 -395
  8. package/guanwang/docs/usage.md +0 -291
  9. package/guanwang/env.example +0 -27
  10. package/guanwang/index.html +0 -13
  11. package/guanwang/package-lock.json +0 -3825
  12. package/guanwang/package.json +0 -32
  13. package/guanwang/public/favicon.svg +0 -4
  14. package/guanwang/public/react-runtime/babel.min.js +0 -4
  15. package/guanwang/public/react-runtime/react-dom.min.js +0 -267
  16. package/guanwang/public/react-runtime/react.min.js +0 -31
  17. package/guanwang/public/vue-repl-assets/compiler-sfc.esm-browser.js +0 -50795
  18. package/guanwang/public/vue-repl-assets/runtime-dom.esm-browser.js +0 -12758
  19. package/guanwang/public/vue-repl-assets/server-renderer.esm-browser.js +0 -8600
  20. package/guanwang/public/vue-repl-assets/vue.esm-browser.js +0 -18672
  21. package/guanwang/src/App.vue +0 -61
  22. package/guanwang/src/chat-sdk/core/components/ChatBox.vue +0 -305
  23. package/guanwang/src/chat-sdk/core/components/ChatSidebar.vue +0 -84
  24. package/guanwang/src/chat-sdk/core/components/InputBar.vue +0 -354
  25. package/guanwang/src/chat-sdk/core/components/MessageBubble.vue +0 -703
  26. package/guanwang/src/chat-sdk/core/useTheme.js +0 -31
  27. package/guanwang/src/chat-sdk/features/artifact/ArtifactCard.vue +0 -172
  28. package/guanwang/src/chat-sdk/features/artifact/ArtifactPanel.vue +0 -963
  29. package/guanwang/src/chat-sdk/features/artifact/index.js +0 -13
  30. package/guanwang/src/chat-sdk/features/artifact/useArtifactStore.js +0 -275
  31. package/guanwang/src/chat-sdk/features/codepreview/CodePreview.vue +0 -523
  32. package/guanwang/src/chat-sdk/features/codepreview/index.js +0 -7
  33. package/guanwang/src/chat-sdk/features/markdown/index.js +0 -13
  34. package/guanwang/src/chat-sdk/features/markdown/useMarkdown.js +0 -724
  35. package/guanwang/src/chat-sdk/features/mermaid/MermaidZoom.vue +0 -254
  36. package/guanwang/src/chat-sdk/features/upload/FileAttachment.vue +0 -142
  37. package/guanwang/src/chat-sdk/features/upload/index.js +0 -17
  38. package/guanwang/src/chat-sdk/features/upload/useFileHandler.js +0 -336
  39. package/guanwang/src/chat-sdk/headless/api/adapters/openai.js +0 -76
  40. package/guanwang/src/chat-sdk/headless/api/chatApi.js +0 -126
  41. package/guanwang/src/chat-sdk/headless/buildSystemPrompt.js +0 -351
  42. package/guanwang/src/chat-sdk/headless/index.js +0 -15
  43. package/guanwang/src/chat-sdk/headless/useChat.js +0 -77
  44. package/guanwang/src/chat-sdk/headless/useChatDB.js +0 -147
  45. package/guanwang/src/chat-sdk/headless/useChatStore.js +0 -529
  46. package/guanwang/src/chat-sdk/index.js +0 -79
  47. package/guanwang/src/chat-sdk/modes/architect.js +0 -27
  48. package/guanwang/src/chat-sdk/modes/ask.js +0 -26
  49. package/guanwang/src/chat-sdk/modes/code.js +0 -25
  50. package/guanwang/src/chat-sdk/modes/index.js +0 -36
  51. package/guanwang/src/chat-sdk/modes/requirements.js +0 -175
  52. package/guanwang/src/chat-sdk/settings/SettingsPanel.vue +0 -170
  53. package/guanwang/src/chat-sdk/settings/index.js +0 -9
  54. package/guanwang/src/chat-sdk/settings/useSettings.js +0 -122
  55. package/guanwang/src/chat-sdk/tools/defaults.js +0 -89
  56. package/guanwang/src/chat-sdk/tools/index.js +0 -16
  57. package/guanwang/src/chat-sdk/tools/parser.js +0 -116
  58. package/guanwang/src/components/CustomCursor.vue +0 -69
  59. package/guanwang/src/components/Footer.vue +0 -24
  60. package/guanwang/src/components/LoginModal.vue +0 -109
  61. package/guanwang/src/components/Navbar.vue +0 -193
  62. package/guanwang/src/components/ThemeToggle.vue +0 -25
  63. package/guanwang/src/composables/useArtifactStore.js +0 -253
  64. package/guanwang/src/composables/useAuth.js +0 -88
  65. package/guanwang/src/composables/useChatDB.js +0 -147
  66. package/guanwang/src/composables/useCountUp.js +0 -24
  67. package/guanwang/src/composables/useFileHandler.js +0 -345
  68. package/guanwang/src/composables/useTheme.js +0 -31
  69. package/guanwang/src/config/api.js +0 -71
  70. package/guanwang/src/main.js +0 -23
  71. package/guanwang/src/router/index.js +0 -23
  72. package/guanwang/src/services/authApi.js +0 -27
  73. package/guanwang/src/services/chatApi.js +0 -66
  74. package/guanwang/src/styles/global.css +0 -478
  75. package/guanwang/src/tracker/analyze.js +0 -73
  76. package/guanwang/src/tracker/config.js +0 -82
  77. package/guanwang/src/tracker/index.js +0 -18
  78. package/guanwang/src/tracker/service.js +0 -102
  79. package/guanwang/src/tracker/useChatTracker.js +0 -179
  80. package/guanwang/src/tracker/useTracker.js +0 -45
  81. package/guanwang/src/views/ChatView.vue +0 -65
  82. package/guanwang/src/views/HomeView.vue +0 -156
  83. package/guanwang/src/views/MarketView.vue +0 -143
  84. package/guanwang/src/views/PracticesView.vue +0 -190
  85. package/guanwang/src/views/SkillsView.vue +0 -129
  86. package/guanwang/temp +0 -19
  87. package/guanwang/vite.config.js +0 -6
@@ -1,31 +0,0 @@
1
- /**
2
- * useTheme.js
3
- * 主题(深色/浅色)管理,provide/inject 模式
4
- */
5
- import { ref, watch, provide, inject } from 'vue'
6
-
7
- const THEME_KEY = Symbol('theme')
8
-
9
- export function createTheme() {
10
- const theme = ref('light')
11
-
12
- watch(theme, val => {
13
- document.documentElement.setAttribute('data-theme', val)
14
- }, { immediate: true })
15
-
16
- function toggleTheme() {
17
- theme.value = theme.value === 'dark' ? 'light' : 'dark'
18
- }
19
-
20
- return { theme, toggleTheme }
21
- }
22
-
23
- export function provideTheme() {
24
- const themeStore = createTheme()
25
- provide(THEME_KEY, themeStore)
26
- return themeStore
27
- }
28
-
29
- export function useTheme() {
30
- return inject(THEME_KEY)
31
- }
@@ -1,172 +0,0 @@
1
- <template>
2
- <!--
3
- 轻量卡片:替代消息气泡里的完整代码块
4
- 只显示图标 + 文件名 + 语言标识 + 行数,点击打开右侧面板
5
- -->
6
- <div
7
- class="artifact-card"
8
- :class="{ 'is-active': isActive, 'is-streaming': artifact.streaming }"
9
- @click="store.open(artifact.id)"
10
- >
11
- <!-- 左侧:图标 + 文件信息 -->
12
- <div class="artifact-card__icon">
13
- <component :is="langIcon" :size="18" color="var(--brand-400)" :stroke-width="1.5" />
14
- </div>
15
-
16
- <div class="artifact-card__info">
17
- <span class="artifact-card__name">{{ artifact.fileName }}</span>
18
- <span class="artifact-card__meta">
19
- {{ langLabel }}
20
- <template v-if="!artifact.streaming">
21
- &nbsp;·&nbsp;{{ artifact.lines }} 行
22
- </template>
23
- <template v-else>
24
- &nbsp;·&nbsp;<span class="streaming-dot-wrap"><span class="streaming-dot" />生成中</span>
25
- </template>
26
- </span>
27
- </div>
28
-
29
- <!-- 右侧:操作区 -->
30
- <div class="artifact-card__actions" @click.stop>
31
- <button class="art-btn" @click="copyCode" :disabled="artifact.streaming" title="复制代码">
32
- <Check v-if="copied" :size="13" color="#4ade80" />
33
- <Copy v-else :size="13" />
34
- </button>
35
- <button class="art-btn art-btn--primary" @click="store.open(artifact.id)">
36
- <ExternalLink :size="13" />
37
- {{ isActive ? '已展开' : '展开' }}
38
- </button>
39
- </div>
40
- </div>
41
- </template>
42
-
43
- <script setup>
44
- import { ref, computed } from 'vue'
45
- import {
46
- FileCode, FileText, Globe, Layers, BarChart2,
47
- Braces, Terminal, Copy, Check, ExternalLink,
48
- } from 'lucide-vue-next'
49
- import { useArtifactStore } from './useArtifactStore.js'
50
-
51
- const props = defineProps({
52
- artifact: { type: Object, required: true },
53
- })
54
-
55
- const store = useArtifactStore()
56
- const copied = ref(false)
57
- const isActive = computed(() => store.activeId.value === props.artifact.id)
58
-
59
- const langLabel = computed(() =>
60
- store.LANG_LABEL[props.artifact.lang] || props.artifact.lang?.toUpperCase() || 'Code'
61
- )
62
-
63
- // 语言 → 图标
64
- const ICON_MAP = {
65
- vue: Layers, html: Globe, jsx: Layers, tsx: Layers,
66
- javascript: FileCode, js: FileCode, typescript: FileCode, ts: FileCode,
67
- python: FileCode, go: FileCode, rust: FileCode, java: FileCode,
68
- css: Braces, scss: Braces, sass: Braces,
69
- bash: Terminal, sh: Terminal, shell: Terminal,
70
- sql: Braces, json: Braces, yaml: Braces,
71
- mermaid: BarChart2, svg: Globe,
72
- math: FileText, latex: FileText,
73
- }
74
- const langIcon = computed(() => ICON_MAP[props.artifact.lang] || FileCode)
75
-
76
- function copyCode() {
77
- navigator.clipboard?.writeText(props.artifact.code).catch(() => {})
78
- copied.value = true
79
- setTimeout(() => { copied.value = false }, 2000)
80
- }
81
- </script>
82
-
83
- <style scoped>
84
- .artifact-card {
85
- display: flex;
86
- align-items: center;
87
- gap: 10px;
88
- padding: 10px 12px;
89
- margin: 8px 0;
90
- border-radius: 10px;
91
- border: 1px solid var(--border-default);
92
- background: var(--bg-card);
93
- cursor: pointer;
94
- transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
95
- user-select: none;
96
- }
97
- .artifact-card:hover {
98
- border-color: rgba(26,111,196,0.45);
99
- background: var(--bg-card-hover);
100
- box-shadow: 0 2px 12px rgba(0,0,0,0.1);
101
- }
102
- .artifact-card.is-active {
103
- border-color: var(--brand-500);
104
- background: var(--tag-bg);
105
- box-shadow: 0 0 0 2px rgba(26,111,196,0.15);
106
- }
107
- /* streaming时呼吸边框动画 */
108
- .artifact-card.is-streaming {
109
- animation: card-breathe 1.8s ease-in-out infinite;
110
- }
111
- @keyframes card-breathe {
112
- 0%, 100% { border-color: rgba(26,111,196,0.25); box-shadow: none; }
113
- 50% { border-color: rgba(26,111,196,0.6); box-shadow: 0 0 0 2px rgba(26,111,196,0.12); }
114
- }
115
-
116
- .artifact-card__icon {
117
- width: 36px; height: 36px; flex-shrink: 0;
118
- border-radius: 8px;
119
- background: var(--tag-bg);
120
- border: 1px solid var(--tag-border);
121
- display: flex; align-items: center; justify-content: center;
122
- }
123
-
124
- .artifact-card__info {
125
- flex: 1; min-width: 0;
126
- display: flex; flex-direction: column; gap: 2px;
127
- }
128
- .artifact-card__name {
129
- font-size: 13px; font-weight: 500;
130
- font-family: 'Cascadia Code', 'Consolas', monospace;
131
- color: var(--text-primary);
132
- white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
133
- }
134
- .artifact-card__meta {
135
- font-size: 11px;
136
- font-family: Inter, 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', '微软雅黑', Arial, sans-serif;
137
- color: var(--text-muted);
138
- display: flex; align-items: center; gap: 2px;
139
- }
140
-
141
- .artifact-card__actions {
142
- display: flex; align-items: center; gap: 6px; flex-shrink: 0;
143
- }
144
- .art-btn {
145
- display: inline-flex; align-items: center; gap: 4px;
146
- padding: 4px 8px; font-size: 11px;
147
- font-family: Inter, 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', '微软雅黑', Arial, sans-serif;
148
- border: 1px solid var(--border-default);
149
- border-radius: 6px; background: transparent;
150
- color: var(--text-muted); cursor: pointer; transition: all 0.15s;
151
- }
152
- .art-btn:hover { border-color: rgba(26,111,196,0.4); color: var(--brand-400); background: var(--tag-bg); }
153
- .art-btn:disabled { opacity: 0.4; cursor: not-allowed; }
154
- .art-btn--primary {
155
- background: var(--brand-500); color: white; border-color: var(--brand-500);
156
- }
157
- .art-btn--primary:hover { background: var(--brand-600); border-color: var(--brand-600); color: white; }
158
-
159
- .streaming-dot-wrap {
160
- display: inline-flex; align-items: center; gap: 4px;
161
- color: var(--brand-400);
162
- }
163
- .streaming-dot {
164
- width: 5px; height: 5px; border-radius: 50%;
165
- background: #4ade80;
166
- animation: pulseSlow 1.2s ease infinite;
167
- }
168
- @keyframes pulseSlow {
169
- 0%, 100% { opacity: 1; transform: scale(1); }
170
- 50% { opacity: 0.4; transform: scale(0.75); }
171
- }
172
- </style>