@templmf/temp-solf-lmf 0.0.55 → 0.0.57

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 (89) hide show
  1. package/fe-flow.md +348 -0
  2. package/package.json +1 -1
  3. package/ui-parse.md +308 -0
  4. package//345/242/236/351/207/217/351/234/200/346/261/202prompt +72 -0
  5. package/guanwang/README.md +0 -95
  6. package/guanwang/docs/changelog.md +0 -145
  7. package/guanwang/docs/doc-maintenance.md +0 -229
  8. package/guanwang/docs/product.md +0 -181
  9. package/guanwang/docs/test-cases.md +0 -395
  10. package/guanwang/docs/usage.md +0 -291
  11. package/guanwang/env.example +0 -27
  12. package/guanwang/index.html +0 -13
  13. package/guanwang/package-lock.json +0 -3825
  14. package/guanwang/package.json +0 -32
  15. package/guanwang/public/favicon.svg +0 -4
  16. package/guanwang/public/react-runtime/babel.min.js +0 -4
  17. package/guanwang/public/react-runtime/react-dom.min.js +0 -267
  18. package/guanwang/public/react-runtime/react.min.js +0 -31
  19. package/guanwang/public/vue-repl-assets/compiler-sfc.esm-browser.js +0 -50795
  20. package/guanwang/public/vue-repl-assets/runtime-dom.esm-browser.js +0 -12758
  21. package/guanwang/public/vue-repl-assets/server-renderer.esm-browser.js +0 -8600
  22. package/guanwang/public/vue-repl-assets/vue.esm-browser.js +0 -18672
  23. package/guanwang/src/App.vue +0 -61
  24. package/guanwang/src/chat-sdk/core/components/ChatBox.vue +0 -305
  25. package/guanwang/src/chat-sdk/core/components/ChatSidebar.vue +0 -84
  26. package/guanwang/src/chat-sdk/core/components/InputBar.vue +0 -354
  27. package/guanwang/src/chat-sdk/core/components/MessageBubble.vue +0 -703
  28. package/guanwang/src/chat-sdk/core/useTheme.js +0 -31
  29. package/guanwang/src/chat-sdk/features/artifact/ArtifactCard.vue +0 -172
  30. package/guanwang/src/chat-sdk/features/artifact/ArtifactPanel.vue +0 -963
  31. package/guanwang/src/chat-sdk/features/artifact/index.js +0 -13
  32. package/guanwang/src/chat-sdk/features/artifact/useArtifactStore.js +0 -275
  33. package/guanwang/src/chat-sdk/features/codepreview/CodePreview.vue +0 -523
  34. package/guanwang/src/chat-sdk/features/codepreview/index.js +0 -7
  35. package/guanwang/src/chat-sdk/features/markdown/index.js +0 -13
  36. package/guanwang/src/chat-sdk/features/markdown/useMarkdown.js +0 -724
  37. package/guanwang/src/chat-sdk/features/mermaid/MermaidZoom.vue +0 -254
  38. package/guanwang/src/chat-sdk/features/upload/FileAttachment.vue +0 -142
  39. package/guanwang/src/chat-sdk/features/upload/index.js +0 -17
  40. package/guanwang/src/chat-sdk/features/upload/useFileHandler.js +0 -336
  41. package/guanwang/src/chat-sdk/headless/api/adapters/openai.js +0 -76
  42. package/guanwang/src/chat-sdk/headless/api/chatApi.js +0 -126
  43. package/guanwang/src/chat-sdk/headless/buildSystemPrompt.js +0 -351
  44. package/guanwang/src/chat-sdk/headless/index.js +0 -15
  45. package/guanwang/src/chat-sdk/headless/useChat.js +0 -77
  46. package/guanwang/src/chat-sdk/headless/useChatDB.js +0 -147
  47. package/guanwang/src/chat-sdk/headless/useChatStore.js +0 -529
  48. package/guanwang/src/chat-sdk/index.js +0 -79
  49. package/guanwang/src/chat-sdk/modes/architect.js +0 -27
  50. package/guanwang/src/chat-sdk/modes/ask.js +0 -26
  51. package/guanwang/src/chat-sdk/modes/code.js +0 -25
  52. package/guanwang/src/chat-sdk/modes/index.js +0 -36
  53. package/guanwang/src/chat-sdk/modes/requirements.js +0 -175
  54. package/guanwang/src/chat-sdk/settings/SettingsPanel.vue +0 -170
  55. package/guanwang/src/chat-sdk/settings/index.js +0 -9
  56. package/guanwang/src/chat-sdk/settings/useSettings.js +0 -122
  57. package/guanwang/src/chat-sdk/tools/defaults.js +0 -89
  58. package/guanwang/src/chat-sdk/tools/index.js +0 -16
  59. package/guanwang/src/chat-sdk/tools/parser.js +0 -116
  60. package/guanwang/src/components/CustomCursor.vue +0 -69
  61. package/guanwang/src/components/Footer.vue +0 -24
  62. package/guanwang/src/components/LoginModal.vue +0 -109
  63. package/guanwang/src/components/Navbar.vue +0 -193
  64. package/guanwang/src/components/ThemeToggle.vue +0 -25
  65. package/guanwang/src/composables/useArtifactStore.js +0 -253
  66. package/guanwang/src/composables/useAuth.js +0 -88
  67. package/guanwang/src/composables/useChatDB.js +0 -147
  68. package/guanwang/src/composables/useCountUp.js +0 -24
  69. package/guanwang/src/composables/useFileHandler.js +0 -345
  70. package/guanwang/src/composables/useTheme.js +0 -31
  71. package/guanwang/src/config/api.js +0 -71
  72. package/guanwang/src/main.js +0 -23
  73. package/guanwang/src/router/index.js +0 -23
  74. package/guanwang/src/services/authApi.js +0 -27
  75. package/guanwang/src/services/chatApi.js +0 -66
  76. package/guanwang/src/styles/global.css +0 -478
  77. package/guanwang/src/tracker/analyze.js +0 -73
  78. package/guanwang/src/tracker/config.js +0 -82
  79. package/guanwang/src/tracker/index.js +0 -18
  80. package/guanwang/src/tracker/service.js +0 -102
  81. package/guanwang/src/tracker/useChatTracker.js +0 -179
  82. package/guanwang/src/tracker/useTracker.js +0 -45
  83. package/guanwang/src/views/ChatView.vue +0 -65
  84. package/guanwang/src/views/HomeView.vue +0 -156
  85. package/guanwang/src/views/MarketView.vue +0 -143
  86. package/guanwang/src/views/PracticesView.vue +0 -190
  87. package/guanwang/src/views/SkillsView.vue +0 -129
  88. package/guanwang/temp +0 -19
  89. 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>