@pactor-app/skills 1.24.0

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 (80) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +40 -0
  3. package/package.json +26 -0
  4. package/pactor/SKILL.md +373 -0
  5. package/pactor/references/dsl-authoring.md +448 -0
  6. package/prd-to-app/SKILL.md +75 -0
  7. package/prd-to-app/references/acceptance-checklist.md +47 -0
  8. package/prd-to-app/references/component-mapping.md +41 -0
  9. package/prd-to-app/references/mock-data-routes.md +66 -0
  10. package/prd-to-app/references/page-templates.md +274 -0
  11. package/prd-to-app/references/project-structure.md +89 -0
  12. package/prd-to-app/references/theme-and-style.md +41 -0
  13. package/prd-to-app/template/README.md +26 -0
  14. package/prd-to-app/template/app/[[...slug]]/page.tsx +7 -0
  15. package/prd-to-app/template/app/api/auth/login/route.ts +32 -0
  16. package/prd-to-app/template/app/api/auth/logout/route.ts +22 -0
  17. package/prd-to-app/template/app/api/data/[...parts]/route.ts +118 -0
  18. package/prd-to-app/template/app/api/public/pages/[id]/route.ts +40 -0
  19. package/prd-to-app/template/app/api/sitemap/route.ts +21 -0
  20. package/prd-to-app/template/app/api/users/route.ts +57 -0
  21. package/prd-to-app/template/app/favicon.ico +0 -0
  22. package/prd-to-app/template/app/globals.css +248 -0
  23. package/prd-to-app/template/app/layout.tsx +49 -0
  24. package/prd-to-app/template/app/login.css +122 -0
  25. package/prd-to-app/template/eslint.config.mjs +18 -0
  26. package/prd-to-app/template/next-env.d.ts +7 -0
  27. package/prd-to-app/template/next.config.js +32 -0
  28. package/prd-to-app/template/package.json +34 -0
  29. package/prd-to-app/template/pnpm-lock.yaml +6854 -0
  30. package/prd-to-app/template/pnpm-workspace.yaml +7 -0
  31. package/prd-to-app/template/postcss.config.mjs +7 -0
  32. package/prd-to-app/template/public/file.svg +1 -0
  33. package/prd-to-app/template/public/globe.svg +1 -0
  34. package/prd-to-app/template/public/next.svg +1 -0
  35. package/prd-to-app/template/public/skins/chenwunaifu.css +111 -0
  36. package/prd-to-app/template/public/skins/taijingshenlin.css +109 -0
  37. package/prd-to-app/template/public/skins/xuanzhimoyun.css +110 -0
  38. package/prd-to-app/template/public/vercel.svg +1 -0
  39. package/prd-to-app/template/public/window.svg +1 -0
  40. package/prd-to-app/template/scripts/build.mjs +35 -0
  41. package/prd-to-app/template/src/pactor/App.tsx +55 -0
  42. package/prd-to-app/template/src/pactor/actions.ts +438 -0
  43. package/prd-to-app/template/src/pactor/components/card-links.tsx +86 -0
  44. package/prd-to-app/template/src/pactor/components/chip-filter.tsx +89 -0
  45. package/prd-to-app/template/src/pactor/components/chip-node.tsx +46 -0
  46. package/prd-to-app/template/src/pactor/components/debug-chat.tsx +189 -0
  47. package/prd-to-app/template/src/pactor/components/index.ts +28 -0
  48. package/prd-to-app/template/src/pactor/components/log-status.tsx +64 -0
  49. package/prd-to-app/template/src/pactor/components/status-badge.tsx +46 -0
  50. package/prd-to-app/template/src/pactor/components/theme-switcher.tsx +136 -0
  51. package/prd-to-app/template/src/pactor/config.ts +28 -0
  52. package/prd-to-app/template/src/pactor/mocks/audit-mock.ts +403 -0
  53. package/prd-to-app/template/src/pactor/mocks/call-logs-mock.ts +875 -0
  54. package/prd-to-app/template/src/pactor/mocks/client-debug-mock.ts +188 -0
  55. package/prd-to-app/template/src/pactor/mocks/client-templates-mock.ts +497 -0
  56. package/prd-to-app/template/src/pactor/mocks/clients-mock.ts +483 -0
  57. package/prd-to-app/template/src/pactor/mocks/costs-mock.ts +406 -0
  58. package/prd-to-app/template/src/pactor/mocks/dashboard-mock.ts +192 -0
  59. package/prd-to-app/template/src/pactor/mocks/model-debug-mock.ts +144 -0
  60. package/prd-to-app/template/src/pactor/mocks/models-mock.ts +799 -0
  61. package/prd-to-app/template/src/pactor/mocks/ops-usage-mock.ts +806 -0
  62. package/prd-to-app/template/src/pactor/mocks/providers-mock.ts +424 -0
  63. package/prd-to-app/template/src/pactor/mocks/routes-mock.ts +604 -0
  64. package/prd-to-app/template/src/pactor/services.ts +185 -0
  65. package/prd-to-app/template/src/pactor/skin.ts +52 -0
  66. package/prd-to-app/template/src/server/accounts.ts +63 -0
  67. package/prd-to-app/template/src/server/cors.ts +34 -0
  68. package/prd-to-app/template/src/server/sitemap.ts +176 -0
  69. package/prd-to-app/template/src/server/yaml/common/dashboard.yaml +498 -0
  70. package/prd-to-app/template/src/server/yaml/common/login.yaml +84 -0
  71. package/prd-to-app/template/src/server/yaml/provider/provider-create.yaml +340 -0
  72. package/prd-to-app/template/src/server/yaml/provider/provider-detail.yaml +780 -0
  73. package/prd-to-app/template/src/server/yaml/provider/provider-edit.yaml +366 -0
  74. package/prd-to-app/template/src/server/yaml/provider/provider-list.yaml +1989 -0
  75. package/prd-to-app/template/src/server/yaml/route/route-create.yaml +511 -0
  76. package/prd-to-app/template/src/server/yaml/route/route-detail.yaml +610 -0
  77. package/prd-to-app/template/src/server/yaml/route/route-edit.yaml +809 -0
  78. package/prd-to-app/template/src/server/yaml/route/route-list.yaml +1793 -0
  79. package/prd-to-app/template/src/server/yaml/sitemap.yaml +250 -0
  80. package/prd-to-app/template/tsconfig.json +34 -0
@@ -0,0 +1,250 @@
1
+ # Sitemap 入口数据:元数据 + 布局 + 页面 + 菜单全量。
2
+ # 本文件是会话无关的超集;可见性由 src/server/sitemap.ts 按会话裁剪:
3
+ # public: true → 匿名可见(登录页)
4
+ # permission: x → 需登录且具备对应权限
5
+ # 无标记 → 需登录
6
+ # 页面 DSL 按模块分目录存放(yaml/<模块>/<id>.yaml,页面 id = 文件名),
7
+ # 由 sitemap.ts 递归收集建索引;lazy: true 不随 sitemap 内联下发,
8
+ # 客户端经 /api/public/pages/{id} 懒加载。
9
+ # updatedAt / user / permissions 为会话动态字段,由服务端在响应时注入。
10
+
11
+ id: site
12
+ resourceType: sitemap
13
+ version: 1
14
+ dslVersion: "1.0"
15
+ app: { name: Pactor Console }
16
+ auth: { loginPath: /login }
17
+
18
+ pages:
19
+ - { id: login, path: /login, title: 登录, version: 1, public: true }
20
+ - { id: dashboard, path: /, title: 仪表盘, version: 1, lazy: true }
21
+ # 模块一:模型资产 / 供应商(卡片式列表 + 详情 + 新增/编辑)
22
+ - {
23
+ id: provider-list,
24
+ path: /providers,
25
+ title: 供应商,
26
+ version: 1,
27
+ lazy: true,
28
+ }
29
+ - {
30
+ id: provider-create,
31
+ path: /providers/new,
32
+ title: 新增 Provider,
33
+ version: 1,
34
+ lazy: true,
35
+ }
36
+ - {
37
+ id: provider-detail,
38
+ path: /providers/:code,
39
+ title: Provider 详情,
40
+ version: 1,
41
+ lazy: true,
42
+ }
43
+ - {
44
+ id: provider-edit,
45
+ path: /providers/:code/edit,
46
+ title: 编辑 Provider,
47
+ version: 1,
48
+ lazy: true,
49
+ }
50
+ # 模块二:模型路由 / 路由(卡片式列表 + 单页纵向详情 + 单页表单)
51
+ - { id: route-list, path: /routes, title: 路由, version: 1, lazy: true }
52
+ - {
53
+ id: route-create,
54
+ path: /routes/new,
55
+ title: 新增路由,
56
+ version: 1,
57
+ lazy: true,
58
+ }
59
+ - {
60
+ id: route-detail,
61
+ path: /routes/:code,
62
+ title: 路由详情,
63
+ version: 1,
64
+ lazy: true,
65
+ }
66
+ - {
67
+ id: route-edit,
68
+ path: /routes/:code/edit,
69
+ title: 编辑路由,
70
+ version: 1,
71
+ lazy: true,
72
+ }
73
+
74
+ menus:
75
+ - {
76
+ id: login,
77
+ type: page,
78
+ pageId: login,
79
+ title: 登录,
80
+ layout: login,
81
+ public: true,
82
+ hidden: true,
83
+ }
84
+ - {
85
+ id: home,
86
+ type: page,
87
+ pageId: dashboard,
88
+ title: 首页,
89
+ icon: home,
90
+ layout: admin,
91
+ order: 1,
92
+ }
93
+ - id: assets
94
+ type: group
95
+ title: 模型资产
96
+ icon: package
97
+ order: 2
98
+ children:
99
+ - {
100
+ id: providers,
101
+ type: page,
102
+ pageId: provider-list,
103
+ title: 供应商,
104
+ layout: admin,
105
+ }
106
+ - id: routing
107
+ type: group
108
+ title: 模型路由
109
+ icon: share
110
+ order: 3
111
+ children:
112
+ - {
113
+ id: routes,
114
+ type: page,
115
+ pageId: route-list,
116
+ title: 路由,
117
+ layout: admin,
118
+ }
119
+ # 隐藏页(不出现在菜单,经列表页跳转进入;activeMenu 保持所属菜单高亮)
120
+ - {
121
+ id: provider-create,
122
+ type: page,
123
+ pageId: provider-create,
124
+ layout: admin,
125
+ hidden: true,
126
+ activeMenu: providers,
127
+ }
128
+ - {
129
+ id: provider-detail,
130
+ type: page,
131
+ pageId: provider-detail,
132
+ layout: admin,
133
+ hidden: true,
134
+ activeMenu: providers,
135
+ }
136
+ - {
137
+ id: provider-edit,
138
+ type: page,
139
+ pageId: provider-edit,
140
+ layout: admin,
141
+ hidden: true,
142
+ activeMenu: providers,
143
+ }
144
+ - {
145
+ id: route-create,
146
+ type: page,
147
+ pageId: route-create,
148
+ layout: admin,
149
+ hidden: true,
150
+ activeMenu: routes,
151
+ }
152
+ - {
153
+ id: route-detail,
154
+ type: page,
155
+ pageId: route-detail,
156
+ layout: admin,
157
+ hidden: true,
158
+ activeMenu: routes,
159
+ }
160
+ - {
161
+ id: route-edit,
162
+ type: page,
163
+ pageId: route-edit,
164
+ layout: admin,
165
+ hidden: true,
166
+ activeMenu: routes,
167
+ }
168
+
169
+ # 布局 DSL(PageOutlet 为页面内容出口)。
170
+ # 布局 body 内 ${data.session.*} 由客户端注入的 session dataSource 提供
171
+ #(user / app / menus)。登录 / 登出是普通 HTTP 调用,DSL 用内置 request
172
+ # 动作表达(跨域绝对地址,客户端 httpHooks 自动改写进项目内代理前缀)。
173
+ layouts:
174
+ # 管理端外壳:Sidebar(品牌 + SitemapMenu 导航)> Header(ThemeSwitcher
175
+ # 换肤 + 语言 + 用户菜单)+ Content(PageOutlet 页面出口)
176
+ admin:
177
+ dsl: "1.0"
178
+ body:
179
+ type: Layout
180
+ props: { className: shell-root }
181
+ children:
182
+ - type: Sidebar
183
+ props:
184
+ className: shell-main
185
+ brand: { title: Pactor Console, logo: /next.svg }
186
+ collapsible: true
187
+ content:
188
+ type: SitemapMenu
189
+ props:
190
+ items: ${data.session.menus}
191
+ collapsible: true
192
+ className: shell-menu
193
+ events:
194
+ onSelect:
195
+ - action: navigate
196
+ params: { to: "${event}" }
197
+ children:
198
+ - type: Header
199
+ props:
200
+ className: shell-header
201
+ locales:
202
+ - { label: 中文, value: zh-CN }
203
+ - { label: English, value: en-US }
204
+ user:
205
+ name: ${data.session.user.name}
206
+ items:
207
+ - { label: 个人中心, value: profile, icon: user }
208
+ - { label: 退出登录, value: logout, icon: log-out }
209
+ events:
210
+ onUserSelect:
211
+ - action: if
212
+ params:
213
+ condition: ${event == 'logout'}
214
+ then:
215
+ - action: request
216
+ params:
217
+ method: POST
218
+ url: http://localhost:9011/api/auth/logout
219
+ - action: app.reload
220
+ params: { to: /login }
221
+ else:
222
+ - action: message
223
+ params:
224
+ messageType: info
225
+ text: 打开个人中心(演示)
226
+ onLocaleChange:
227
+ - action: message
228
+ params:
229
+ messageType: info
230
+ text: 语言切换为 ${event}(演示:应用层桥接后整页生效)
231
+ children:
232
+ - type: ThemeSwitcher
233
+ - type: Content
234
+ props: { className: shell-content }
235
+ children:
236
+ - type: PageOutlet
237
+ # 登录页外壳:login-page 全屏渐变容器,样式见 app/login.css
238
+ login:
239
+ dsl: "1.0"
240
+ body:
241
+ type: Flex
242
+ props:
243
+ className: login-page
244
+ children:
245
+ - type: PageOutlet
246
+ # 裸布局:无外壳,页面铺满
247
+ blank:
248
+ dsl: "1.0"
249
+ body:
250
+ type: PageOutlet
@@ -0,0 +1,34 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2017",
4
+ "lib": ["dom", "dom.iterable", "esnext"],
5
+ "allowJs": true,
6
+ "skipLibCheck": true,
7
+ "strict": true,
8
+ "noEmit": true,
9
+ "esModuleInterop": true,
10
+ "module": "esnext",
11
+ "moduleResolution": "bundler",
12
+ "resolveJsonModule": true,
13
+ "isolatedModules": true,
14
+ "jsx": "react-jsx",
15
+ "incremental": true,
16
+ "plugins": [
17
+ {
18
+ "name": "next"
19
+ }
20
+ ],
21
+ "paths": {
22
+ "@/*": ["./src/*"]
23
+ }
24
+ },
25
+ "include": [
26
+ "next-env.d.ts",
27
+ "**/*.ts",
28
+ "**/*.tsx",
29
+ ".next/types/**/*.ts",
30
+ ".next/dev/types/**/*.ts",
31
+ "**/*.mts"
32
+ ],
33
+ "exclude": ["node_modules"]
34
+ }