agentworkshop 0.7.11 → 0.7.13

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 (84) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/CXutoGrn.js +14 -0
  3. package/.output/public/_nuxt/{BLzCac9K2.js → CcwJ2mrD2.js} +1 -1
  4. package/.output/public/_nuxt/{CGx-mtWf.js → D8xY-Yjc.js} +1 -1
  5. package/.output/public/_nuxt/DGVAuScD.js +1 -0
  6. package/.output/public/_nuxt/DVoWWlUW.js +1 -0
  7. package/.output/public/_nuxt/DaE5saZg.js +1 -0
  8. package/.output/public/_nuxt/Dsdy4Ua-.js +1 -0
  9. package/.output/public/_nuxt/{B8WV7GzS.js → E88a-JCG.js} +1 -1
  10. package/.output/public/_nuxt/bAFueD6a.js +1 -0
  11. package/.output/public/_nuxt/builds/latest.json +1 -1
  12. package/.output/public/_nuxt/builds/meta/bf43874b-06d3-4e20-a84d-e5b0d09e8a27.json +1 -0
  13. package/.output/public/_nuxt/dcw.rpqpOYQ8.css +1 -0
  14. package/.output/public/_nuxt/entry.Bv_GCmPP.css +1 -0
  15. package/.output/public/_nuxt/logs.BarkrvUp.css +1 -0
  16. package/.output/public/_nuxt/pages.BkE-AfIb.css +1 -0
  17. package/.output/public/_nuxt/permissions.DTRtZeTw.css +1 -0
  18. package/.output/public/_nuxt/plugins.BcSEwwGb.css +1 -0
  19. package/.output/public/_nuxt/tokens.BVXU1jOK.css +1 -0
  20. package/.output/public/_nuxt/workshop.CbymC2LY.css +1 -0
  21. package/.output/server/chunks/_/nitro.mjs +610 -609
  22. package/.output/server/chunks/_/user.schema.mjs +1 -1
  23. package/.output/server/chunks/_/user.schema.mjs.map +1 -1
  24. package/.output/server/chunks/build/{dcw-DqjHrl5Z.mjs → dcw-B0dtiHFG.mjs} +43 -43
  25. package/.output/server/chunks/build/dcw-B0dtiHFG.mjs.map +1 -0
  26. package/.output/server/chunks/build/{default-YcUHc1Ev.mjs → default-DdV642BY.mjs} +23 -2
  27. package/.output/server/chunks/build/{default-YcUHc1Ev.mjs.map → default-DdV642BY.mjs.map} +1 -1
  28. package/.output/server/chunks/build/{logs-Co854R4y.mjs → logs-UWXeNKy_.mjs} +34 -34
  29. package/.output/server/chunks/build/{logs-Co854R4y.mjs.map → logs-UWXeNKy_.mjs.map} +1 -1
  30. package/.output/server/chunks/build/{pages-DPC1Vp6w.mjs → pages-BmRUbGUi.mjs} +28 -18
  31. package/.output/server/chunks/build/pages-BmRUbGUi.mjs.map +1 -0
  32. package/.output/server/chunks/build/{permissions-Eu9e6hfZ.mjs → permissions-CxEgXic0.mjs} +12 -12
  33. package/.output/server/chunks/build/{permissions-Eu9e6hfZ.mjs.map → permissions-CxEgXic0.mjs.map} +1 -1
  34. package/.output/server/chunks/build/{plugins-D84mvK9G.mjs → plugins-wLIKHcIE.mjs} +17 -17
  35. package/.output/server/chunks/build/plugins-wLIKHcIE.mjs.map +1 -0
  36. package/.output/server/chunks/build/{tokens-CZpnEDVf.mjs → tokens-Dxnuw96_.mjs} +44 -75
  37. package/.output/server/chunks/build/tokens-Dxnuw96_.mjs.map +1 -0
  38. package/.output/server/chunks/build/{workshop-Crsai2Y9.mjs → workshop-CTcYDq2i.mjs} +21 -16
  39. package/.output/server/chunks/build/{workshop-Crsai2Y9.mjs.map → workshop-CTcYDq2i.mjs.map} +1 -1
  40. package/.output/server/chunks/routes/renderer.mjs +1 -1
  41. package/.output/server/chunks/virtual/entry.mjs +14 -12
  42. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  43. package/.output/server/package.json +1 -1
  44. package/app/assets/css/main.css +161 -0
  45. package/app/components/AwChart.vue +12 -2
  46. package/app/composables/useRouteMeta.ts +8 -1
  47. package/app/pages/dcw/index.vue +1079 -1079
  48. package/app/pages/index.vue +7 -2
  49. package/app/pages/logs/index.vue +623 -621
  50. package/app/pages/permissions/index.vue +330 -327
  51. package/app/pages/plugins/index.vue +6 -3
  52. package/app/pages/tokens.vue +11 -13
  53. package/app/pages/workshop/index.vue +3 -1
  54. package/i18n/locales/en.ts +1944 -1943
  55. package/i18n/locales/zh-CN.ts +1943 -1942
  56. package/package.json +1 -1
  57. package/scripts/_dbg-kicker-check.mjs +11 -0
  58. package/scripts/_dbg-perms-e2e.mjs +3 -3
  59. package/scripts/_dbg-plugins-e2e.mjs +1 -1
  60. package/scripts/_dbg-swatch-check.mjs +10 -0
  61. package/scripts/_dbg-ui-shots.mjs +28 -0
  62. package/server/data/dcw-rollback.json +6 -6
  63. package/server/data/dcws.json +345 -345
  64. package/server/repositories/user.repository.ts +4 -3
  65. package/server/schemas/user.schema.ts +2 -2
  66. package/.output/public/_nuxt/B5CYgFAD.js +0 -14
  67. package/.output/public/_nuxt/Bckshc9V.js +0 -1
  68. package/.output/public/_nuxt/D7jiode2.js +0 -1
  69. package/.output/public/_nuxt/DEaY_uvR.js +0 -1
  70. package/.output/public/_nuxt/builds/meta/88479a5b-ce6a-400f-9737-1cc9f54b1fe5.json +0 -1
  71. package/.output/public/_nuxt/d_Sz9KGm.js +0 -1
  72. package/.output/public/_nuxt/dcw.DcDjwvqv.css +0 -1
  73. package/.output/public/_nuxt/entry.B03HBJGC.css +0 -1
  74. package/.output/public/_nuxt/logs.BO-BSyjm.css +0 -1
  75. package/.output/public/_nuxt/pages.CytEOfUs.css +0 -1
  76. package/.output/public/_nuxt/permissions.CwZo6t1V.css +0 -1
  77. package/.output/public/_nuxt/plugins.Clsky_kl.css +0 -1
  78. package/.output/public/_nuxt/tJuVvBSl.js +0 -1
  79. package/.output/public/_nuxt/tokens.BPLe9ioQ.css +0 -1
  80. package/.output/public/_nuxt/workshop.BIdoGfoC.css +0 -1
  81. package/.output/server/chunks/build/dcw-DqjHrl5Z.mjs.map +0 -1
  82. package/.output/server/chunks/build/pages-DPC1Vp6w.mjs.map +0 -1
  83. package/.output/server/chunks/build/plugins-D84mvK9G.mjs.map +0 -1
  84. package/.output/server/chunks/build/tokens-CZpnEDVf.mjs.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentworkshop",
3
- "version": "0.7.11",
3
+ "version": "0.7.13",
4
4
  "type": "module",
5
5
  "description": "AgentWorkShop 软件开发系统 - 基于 Nuxt 4 的配置驱动运行范式",
6
6
  "license": "PolyForm-Noncommercial-1.0.0",
@@ -0,0 +1,11 @@
1
+ import puppeteer from 'puppeteer-core'
2
+ const browser = await puppeteer.launch({ executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', headless: 'new', args: ['--no-sandbox', '--no-proxy-server'] })
3
+ const page = await browser.newPage()
4
+ const login = await fetch('http://127.0.0.1:3001/api/users/login', { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ email: 'admin@awshop.local', password: 'admin123' }) }).then(r => r.json())
5
+ await page.setCookie({ name: 'token', value: login.data.token, domain: '127.0.0.1', path: '/' })
6
+ await page.goto('http://127.0.0.1:3001/tokens', { waitUntil: 'networkidle2' })
7
+ await new Promise(r => setTimeout(r, 2000))
8
+ console.log('kicker count:', await page.evaluate(() => document.querySelectorAll('.aw-kicker').length))
9
+ console.log('kicker texts:', await page.evaluate(() => [...document.querySelectorAll('.aw-kicker')].map(e => e.textContent.trim()).join(' | ')))
10
+ console.log('tokens h2:', await page.evaluate(() => [...document.querySelectorAll('h2')].map(e => e.textContent.trim()).join(' | ')))
11
+ await browser.close()
@@ -25,9 +25,9 @@ const adminTok = await login('admin@awshop.local', ADMIN_PASS)
25
25
  ok('admin 登录', Boolean(adminTok))
26
26
  const ov = await api('/api/workshop/permissions', {}, adminTok)
27
27
  ok('admin 权限总览(lines+users)', ov.status === 200 && ov.body?.data?.lines?.length > 0 && ov.body?.data?.users?.length > 0, `lines=${ov.body?.data?.lines?.length} users=${ov.body?.data?.users?.length}`)
28
- const LINE1 = ov.body.data.lines.find(l => l.name.includes('1号'))?.id
29
- const LINE2 = ov.body.data.lines.find(l => l.name.includes('2号'))?.id
30
- ok('找到 1号/2号产线', Boolean(LINE1 && LINE2), `${LINE1} / ${LINE2}`)
28
+ const LINE1 = ov.body.data.lines[0]?.id
29
+ const LINE2 = ov.body.data.lines[1]?.id
30
+ ok('找到两条目标产线', Boolean(LINE1 && LINE2), `${LINE1} / ${LINE2}`)
31
31
 
32
32
  // ---- plain 用户(注册即 user 角色) ----
33
33
  const stamp = Date.now().toString(36)
@@ -8,7 +8,7 @@ import puppeteer from 'puppeteer-core'
8
8
  import { mkdirSync } from 'node:fs'
9
9
 
10
10
  const BASE = process.argv[2] ?? 'http://127.0.0.1:3021'
11
- const ADMIN = { email: 'admin@awshop.local', password: 'Awshop2026' }
11
+ const ADMIN = { email: 'admin@awshop.local', password: process.argv[3] ?? 'admin123' }
12
12
  const PLAIN = { name: `plain-${Date.now().toString(36)}`, email: `plain-${Date.now().toString(36)}@awshop.local`, password: 'Plain2026' }
13
13
  const SHOT_DIR = '.e2e-shots'
14
14
  mkdirSync(SHOT_DIR, { recursive: true })
@@ -0,0 +1,10 @@
1
+ import puppeteer from 'puppeteer-core'
2
+ const browser = await puppeteer.launch({ executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', headless: 'new', args: ['--no-sandbox', '--no-proxy-server'] })
3
+ const page = await browser.newPage()
4
+ await page.setViewport({ width: 1600, height: 1000, deviceScaleFactor: 1.25 })
5
+ const login = await fetch('http://127.0.0.1:3001/api/users/login', { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ email: 'admin@awshop.local', password: 'admin123' }) }).then(r => r.json())
6
+ await page.setCookie({ name: 'token', value: login.data.token, domain: '127.0.0.1', path: '/' })
7
+ await page.goto('http://127.0.0.1:3001/settings', { waitUntil: 'networkidle2' })
8
+ await new Promise(r => setTimeout(r, 2000))
9
+ console.log('swatch labels:', await page.evaluate(() => [...document.querySelectorAll('.swatch-label')].map(e => e.textContent.trim()).join(' | ')))
10
+ await browser.close()
@@ -0,0 +1,28 @@
1
+ // 全页面基线/对比截图
2
+ import puppeteer from 'puppeteer-core'
3
+ const BASE = process.argv[2] ?? 'http://127.0.0.1:3001'
4
+ const TAG = process.argv[3] ?? 'base'
5
+ const PAGES = [
6
+ ['dashboard', '/'],
7
+ ['workshop', '/workshop'],
8
+ ['daq', '/daq'],
9
+ ['dcw', '/dcw'],
10
+ ['tokens', '/tokens'],
11
+ ['permissions', '/permissions'],
12
+ ['plugins', '/plugins'],
13
+ ['logs', '/logs'],
14
+ ['monitor', '/monitor'],
15
+ ['settings', '/settings'],
16
+ ]
17
+ const browser = await puppeteer.launch({ executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', headless: 'new', args: ['--no-sandbox', '--disable-gpu', '--no-proxy-server', '--window-size=1600,1000'] })
18
+ const page = await browser.newPage()
19
+ await page.setViewport({ width: 1600, height: 1000, deviceScaleFactor: 1.25 })
20
+ const login = await fetch(`${BASE}/api/users/login`, { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ email: 'admin@awshop.local', password: 'admin123' }) }).then(r => r.json())
21
+ await page.setCookie({ name: 'token', value: login.data.token, domain: new URL(BASE).hostname, path: '/' })
22
+ for (const [name, path] of PAGES) {
23
+ await page.goto(`${BASE}${path}`, { waitUntil: 'networkidle2', timeout: 60000 }).catch(() => {})
24
+ await new Promise(r => setTimeout(r, 2500))
25
+ await page.screenshot({ path: `.e2e-shots/ui-${TAG}-${name}.png` })
26
+ console.log(`📷 ${TAG}-${name}`)
27
+ }
28
+ await browser.close()
@@ -5120,7 +5120,7 @@
5120
5120
  "channels": [],
5121
5121
  "degraded": true
5122
5122
  },
5123
- "evaluatedAt": "2026-09-06T14:28:45.439+08:00",
5123
+ "evaluatedAt": "2026-09-06T15:27:48.724+08:00",
5124
5124
  "windowAgg": {
5125
5125
  "at": "2026-08-31T16:25:17.398Z",
5126
5126
  "fromMs": 1788193396897,
@@ -11569,7 +11569,7 @@
11569
11569
  }
11570
11570
  ]
11571
11571
  },
11572
- "evaluatedAt": "2026-09-06T14:28:45.439+08:00",
11572
+ "evaluatedAt": "2026-09-06T15:27:48.724+08:00",
11573
11573
  "windowAgg": {
11574
11574
  "at": "2026-09-05T02:07:03.383Z",
11575
11575
  "fromMs": 1788573903195,
@@ -11630,7 +11630,7 @@
11630
11630
  }
11631
11631
  ]
11632
11632
  },
11633
- "evaluatedAt": "2026-09-06T14:28:45.439+08:00",
11633
+ "evaluatedAt": "2026-09-06T15:27:48.724+08:00",
11634
11634
  "windowAgg": {
11635
11635
  "at": "2026-09-05T02:44:52.815Z",
11636
11636
  "fromMs": 1788576172595,
@@ -11690,7 +11690,7 @@
11690
11690
  }
11691
11691
  ]
11692
11692
  },
11693
- "evaluatedAt": "2026-09-06T14:28:45.439+08:00",
11693
+ "evaluatedAt": "2026-09-06T15:27:48.724+08:00",
11694
11694
  "windowAgg": {
11695
11695
  "at": "2026-09-05T03:09:49.742Z",
11696
11696
  "fromMs": 1788577669697,
@@ -11750,7 +11750,7 @@
11750
11750
  }
11751
11751
  ]
11752
11752
  },
11753
- "evaluatedAt": "2026-09-06T14:28:45.439+08:00",
11753
+ "evaluatedAt": "2026-09-06T15:27:48.724+08:00",
11754
11754
  "windowAgg": {
11755
11755
  "at": "2026-09-05T03:34:32.268Z",
11756
11756
  "fromMs": 1788579151974,
@@ -11799,7 +11799,7 @@
11799
11799
  "channels": [],
11800
11800
  "degraded": true
11801
11801
  },
11802
- "evaluatedAt": "2026-09-06T14:28:45.439+08:00",
11802
+ "evaluatedAt": "2026-09-06T15:27:48.724+08:00",
11803
11803
  "windowAgg": {
11804
11804
  "at": "2026-09-05T09:01:07.414Z",
11805
11805
  "fromMs": 1788598747074,