@h-ai/cli 0.1.0-alpha9 → 1.0.0-beta.2

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 (438) hide show
  1. package/README.en.md +229 -0
  2. package/README.ja.md +229 -0
  3. package/README.md +175 -113
  4. package/dist/chunk-AKV2CQZV.js +1497 -0
  5. package/dist/chunk-AKV2CQZV.js.map +1 -0
  6. package/dist/chunk-EF7WOFWZ.js +7557 -0
  7. package/dist/chunk-EF7WOFWZ.js.map +1 -0
  8. package/dist/chunk-MUHRBJSW.js +29272 -0
  9. package/dist/chunk-MUHRBJSW.js.map +1 -0
  10. package/dist/chunk-ZSDEVXZ7.js +38 -0
  11. package/dist/{chunk-2H7UOFLK.js.map → chunk-ZSDEVXZ7.js.map} +1 -1
  12. package/dist/cli-config-templates-HHFHNXBN.js +5 -0
  13. package/dist/cli-config-templates-HHFHNXBN.js.map +1 -0
  14. package/dist/cli-skill-templates-PN4FLGBC.js +5 -0
  15. package/dist/cli-skill-templates-PN4FLGBC.js.map +1 -0
  16. package/dist/index.js +4444 -554
  17. package/dist/index.js.map +1 -1
  18. package/dist/metafile-esm.json +1 -0
  19. package/dist/src-TEBHR5I5.js +5 -0
  20. package/dist/src-TEBHR5I5.js.map +1 -0
  21. package/package.json +35 -15
  22. package/templates/README.md +56 -114
  23. package/templates/apps/admin/messages/en-US.json +7 -0
  24. package/templates/apps/admin/messages/ja-JP.json +40 -0
  25. package/templates/apps/admin/messages/zh-CN.json +7 -0
  26. package/templates/apps/admin/src/routes/+layout.svelte.hbs +65 -8
  27. package/templates/apps/admin/src/routes/+page.svelte.hbs +35 -14
  28. package/templates/apps/admin/src/routes/admin/+layout.svelte.hbs +54 -22
  29. package/templates/apps/admin/src/routes/admin/+page.svelte.hbs +33 -24
  30. package/templates/apps/admin/src/routes/admin/settings/+page.svelte.hbs +16 -13
  31. package/templates/apps/api/.dockerignore.hbs +25 -0
  32. package/templates/apps/api/.gitignore.hbs +22 -0
  33. package/templates/apps/api/.npmrc.hbs +1 -0
  34. package/templates/apps/api/apps/{{projectName}}-contract/README.md.hbs +39 -0
  35. package/templates/apps/api/apps/{{projectName}}-contract/package.json.hbs +41 -0
  36. package/templates/apps/api/apps/{{projectName}}-contract/src/app-contract.ts.hbs +27 -0
  37. package/templates/apps/api/apps/{{projectName}}-contract/src/app-schemas.ts.hbs +28 -0
  38. package/templates/apps/api/apps/{{projectName}}-contract/src/index.ts.hbs +5 -0
  39. package/templates/apps/api/apps/{{projectName}}-contract/src/{{projectName}}-contract.ts.hbs +16 -0
  40. package/templates/apps/api/apps/{{projectName}}-contract/tests/contract.test.ts.hbs +18 -0
  41. package/templates/apps/api/apps/{{projectName}}-contract/tsconfig.json.hbs +12 -0
  42. package/templates/apps/api/apps/{{projectName}}-contract/tsup.config.ts.hbs +11 -0
  43. package/templates/apps/api/apps/{{projectName}}-contract/vitest.config.ts.hbs +9 -0
  44. package/templates/apps/api/apps/{{projectName}}-serv/README.md.hbs +60 -0
  45. package/templates/apps/api/apps/{{projectName}}-serv/config/_core.yml.hbs +17 -0
  46. package/templates/apps/api/apps/{{projectName}}-serv/config/_serv.yml.hbs +54 -0
  47. package/templates/apps/api/apps/{{projectName}}-serv/data/.gitkeep.hbs +1 -0
  48. package/templates/apps/api/apps/{{projectName}}-serv/package.json.hbs +66 -0
  49. package/templates/apps/api/apps/{{projectName}}-serv/src/app.ts.hbs +119 -0
  50. package/templates/apps/api/apps/{{projectName}}-serv/src/build-metadata.ts.hbs +7 -0
  51. package/templates/apps/api/apps/{{projectName}}-serv/src/index.ts.hbs +41 -0
  52. package/templates/apps/api/apps/{{projectName}}-serv/src/lib/server/init.ts.hbs +165 -0
  53. package/templates/apps/api/apps/{{projectName}}-serv/src/server/procedures/app-procedures.ts.hbs +57 -0
  54. package/templates/apps/api/apps/{{projectName}}-serv/src/server/procedures/index.ts.hbs +41 -0
  55. package/templates/apps/api/apps/{{projectName}}-serv/tests/service.test.ts.hbs +176 -0
  56. package/templates/apps/api/apps/{{projectName}}-serv/tsconfig.json.hbs +16 -0
  57. package/templates/apps/api/apps/{{projectName}}-serv/tsup.config.ts.hbs +20 -0
  58. package/templates/apps/api/apps/{{projectName}}-serv/vitest.config.ts.hbs +12 -0
  59. package/templates/apps/api/e2e/api-serv.spec.ts.hbs +113 -0
  60. package/templates/apps/api/e2e/capture-evidence.ts.hbs +23 -0
  61. package/templates/apps/api/eslint.config.js.hbs +30 -0
  62. package/templates/apps/api/hai.json.hbs +4 -0
  63. package/templates/apps/api/images/serv.Dockerfile.hbs +37 -0
  64. package/templates/apps/api/package.json.hbs +53 -0
  65. package/templates/apps/api/playwright.config.ts.hbs +67 -0
  66. package/templates/apps/api/pnpm-workspace.yaml.hbs +40 -0
  67. package/templates/apps/api/tsconfig.base.json +14 -0
  68. package/templates/apps/fullstack/.dockerignore.hbs +25 -0
  69. package/templates/apps/fullstack/.gitignore.hbs +38 -0
  70. package/templates/apps/fullstack/.npmrc.hbs +1 -0
  71. package/templates/apps/fullstack/apps/{{projectName}}-app/.env.example.hbs +10 -0
  72. package/templates/apps/fullstack/apps/{{projectName}}-app/README.md.hbs +67 -0
  73. package/templates/apps/fullstack/apps/{{projectName}}-app/capacitor.config.ts.hbs +20 -0
  74. package/templates/apps/fullstack/apps/{{projectName}}-app/eslint.config.js.hbs +20 -0
  75. package/templates/apps/fullstack/apps/{{projectName}}-app/index.html.hbs +22 -0
  76. package/templates/apps/fullstack/apps/{{projectName}}-app/messages/en-US.json.hbs +7 -0
  77. package/templates/apps/fullstack/apps/{{projectName}}-app/messages/ja-JP.json.hbs +7 -0
  78. package/templates/apps/fullstack/apps/{{projectName}}-app/messages/zh-CN.json.hbs +7 -0
  79. package/templates/apps/fullstack/apps/{{projectName}}-app/package.json.hbs +86 -0
  80. package/templates/apps/fullstack/apps/{{projectName}}-app/project.inlang/settings.json.hbs +17 -0
  81. package/templates/apps/fullstack/apps/{{projectName}}-app/public/runtime-config.js.hbs +4 -0
  82. package/templates/apps/fullstack/apps/{{projectName}}-app/src/App.svelte.hbs +59 -0
  83. package/templates/apps/fullstack/apps/{{projectName}}-app/src/app.css.hbs +20 -0
  84. package/templates/apps/fullstack/apps/{{projectName}}-app/src/app.d.ts.hbs +8 -0
  85. package/templates/apps/fullstack/apps/{{projectName}}-app/src/build-metadata.ts.hbs +9 -0
  86. package/templates/apps/fullstack/apps/{{projectName}}-app/src/lib/capacitor.ts.hbs +19 -0
  87. package/templates/apps/fullstack/apps/{{projectName}}-app/src/main.ts.hbs +21 -0
  88. package/templates/apps/fullstack/apps/{{projectName}}-app/svelte.config.js.hbs +16 -0
  89. package/templates/apps/fullstack/apps/{{projectName}}-app/tsconfig.json.hbs +23 -0
  90. package/templates/apps/fullstack/apps/{{projectName}}-app/vite.config.ts.hbs +74 -0
  91. package/templates/apps/fullstack/apps/{{projectName}}-desktop/.env.example.hbs +6 -0
  92. package/templates/apps/fullstack/apps/{{projectName}}-desktop/README.md.hbs +64 -0
  93. package/templates/apps/fullstack/apps/{{projectName}}-desktop/eslint.config.js.hbs +20 -0
  94. package/templates/apps/fullstack/apps/{{projectName}}-desktop/index.html.hbs +20 -0
  95. package/templates/apps/fullstack/apps/{{projectName}}-desktop/messages/en-US.json.hbs +7 -0
  96. package/templates/apps/fullstack/apps/{{projectName}}-desktop/messages/ja-JP.json.hbs +7 -0
  97. package/templates/apps/fullstack/apps/{{projectName}}-desktop/messages/zh-CN.json.hbs +7 -0
  98. package/templates/apps/fullstack/apps/{{projectName}}-desktop/package.json.hbs +66 -0
  99. package/templates/apps/fullstack/apps/{{projectName}}-desktop/project.inlang/settings.json.hbs +17 -0
  100. package/templates/apps/fullstack/apps/{{projectName}}-desktop/src/App.svelte.hbs +25 -0
  101. package/templates/apps/fullstack/apps/{{projectName}}-desktop/src/app.css.hbs +18 -0
  102. package/templates/apps/fullstack/apps/{{projectName}}-desktop/src/app.d.ts.hbs +8 -0
  103. package/templates/apps/fullstack/apps/{{projectName}}-desktop/src/build-metadata.ts.hbs +9 -0
  104. package/templates/apps/fullstack/apps/{{projectName}}-desktop/src/main.ts.hbs +20 -0
  105. package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/Cargo.toml.hbs +33 -0
  106. package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/build.rs.hbs +6 -0
  107. package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/capabilities/default.json.hbs +16 -0
  108. package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/icons/128x128.png +0 -0
  109. package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/icons/128x128@2x.png +0 -0
  110. package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/icons/32x32.png +0 -0
  111. package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/icons/icon.icns +0 -0
  112. package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/icons/icon.ico +0 -0
  113. package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/src/lib.rs.hbs +91 -0
  114. package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/src/main.rs.hbs +8 -0
  115. package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/tauri.conf.json.hbs +46 -0
  116. package/templates/apps/fullstack/apps/{{projectName}}-desktop/svelte.config.js.hbs +14 -0
  117. package/templates/apps/fullstack/apps/{{projectName}}-desktop/tsconfig.json.hbs +22 -0
  118. package/templates/apps/fullstack/apps/{{projectName}}-desktop/vite.config.ts.hbs +89 -0
  119. package/templates/apps/fullstack/apps/{{projectName}}-miniapp/README.md.hbs +25 -0
  120. package/templates/apps/fullstack/apps/{{projectName}}-miniapp/messages/en-US.json.hbs +12 -0
  121. package/templates/apps/fullstack/apps/{{projectName}}-miniapp/messages/ja-JP.json.hbs +12 -0
  122. package/templates/apps/fullstack/apps/{{projectName}}-miniapp/messages/zh-CN.json.hbs +12 -0
  123. package/templates/apps/fullstack/apps/{{projectName}}-miniapp/project.inlang/settings.json.hbs +17 -0
  124. package/templates/apps/fullstack/apps/{{projectName}}-web/README.md.hbs +54 -0
  125. package/templates/apps/fullstack/apps/{{projectName}}-web/eslint.config.js.hbs +20 -0
  126. package/templates/apps/fullstack/apps/{{projectName}}-web/index.html.hbs +21 -0
  127. package/templates/apps/fullstack/apps/{{projectName}}-web/messages/en-US.json.hbs +7 -0
  128. package/templates/apps/fullstack/apps/{{projectName}}-web/messages/ja-JP.json.hbs +7 -0
  129. package/templates/apps/fullstack/apps/{{projectName}}-web/messages/zh-CN.json.hbs +7 -0
  130. package/templates/apps/fullstack/apps/{{projectName}}-web/package.json.hbs +53 -0
  131. package/templates/apps/fullstack/apps/{{projectName}}-web/project.inlang/settings.json.hbs +17 -0
  132. package/templates/apps/fullstack/apps/{{projectName}}-web/public/runtime-config.js.hbs +1 -0
  133. package/templates/apps/fullstack/apps/{{projectName}}-web/src/App.svelte.hbs +18 -0
  134. package/templates/apps/fullstack/apps/{{projectName}}-web/src/app.css.hbs +18 -0
  135. package/templates/apps/fullstack/apps/{{projectName}}-web/src/app.d.ts.hbs +8 -0
  136. package/templates/apps/fullstack/apps/{{projectName}}-web/src/build-metadata.ts.hbs +9 -0
  137. package/templates/apps/fullstack/apps/{{projectName}}-web/src/main.ts.hbs +14 -0
  138. package/templates/apps/fullstack/apps/{{projectName}}-web/svelte.config.js.hbs +16 -0
  139. package/templates/apps/fullstack/apps/{{projectName}}-web/tsconfig.json.hbs +23 -0
  140. package/templates/apps/fullstack/apps/{{projectName}}-web/vite.config.ts.hbs +76 -0
  141. package/templates/apps/fullstack/docs/security-configuration.md.hbs +349 -0
  142. package/templates/apps/fullstack/e2e/fullstack.spec.ts.hbs +988 -0
  143. package/templates/apps/fullstack/e2e/session-close.spec.ts.hbs +119 -0
  144. package/templates/apps/fullstack/eslint.config.js.hbs +41 -0
  145. package/templates/apps/fullstack/hai.json.hbs +11 -0
  146. package/templates/apps/fullstack/images/serv.Dockerfile.hbs +38 -0
  147. package/templates/apps/fullstack/images/web/19-runtime-config.envsh.hbs +5 -0
  148. package/templates/apps/fullstack/images/web/nginx.conf.hbs +24 -0
  149. package/templates/apps/fullstack/images/web/runtime-config.js.template.hbs +3 -0
  150. package/templates/apps/fullstack/images/web.Dockerfile.hbs +37 -0
  151. package/templates/apps/fullstack/package.json.hbs +61 -0
  152. package/templates/apps/fullstack/packages/{{projectName}}-contract/README.md.hbs +40 -0
  153. package/templates/apps/fullstack/packages/{{projectName}}-contract/package.json.hbs +30 -0
  154. package/templates/apps/fullstack/packages/{{projectName}}-contract/src/admin-contract.ts.hbs +78 -0
  155. package/templates/apps/fullstack/packages/{{projectName}}-contract/src/admin-schemas.ts.hbs +134 -0
  156. package/templates/apps/fullstack/packages/{{projectName}}-contract/src/app-contract.ts.hbs +20 -0
  157. package/templates/apps/fullstack/packages/{{projectName}}-contract/src/app-schemas.ts.hbs +35 -0
  158. package/templates/apps/fullstack/packages/{{projectName}}-contract/src/index.ts.hbs +7 -0
  159. package/templates/apps/fullstack/packages/{{projectName}}-contract/src/{{projectName}}-contract.ts.hbs +23 -0
  160. package/templates/apps/fullstack/packages/{{projectName}}-contract/tests/contract.test.ts.hbs +31 -0
  161. package/templates/apps/fullstack/packages/{{projectName}}-contract/tsconfig.json.hbs +9 -0
  162. package/templates/apps/fullstack/packages/{{projectName}}-contract/tsup.config.ts.hbs +9 -0
  163. package/templates/apps/fullstack/packages/{{projectName}}-serv/README.md.hbs +84 -0
  164. package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_ai.yml.hbs +1 -0
  165. package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_audit.yml.hbs +1 -0
  166. package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_cache.yml.hbs +1 -0
  167. package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_core.yml.hbs +22 -0
  168. package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_db.yml.hbs +1 -0
  169. package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_feedback.yml.hbs +1 -0
  170. package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_iam.yml.hbs +1 -0
  171. package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_payment.yml.hbs +1 -0
  172. package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_reach.yml.hbs +60 -0
  173. package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_scheduler.yml.hbs +1 -0
  174. package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_serv.yml.hbs +64 -0
  175. package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_storage.yml.hbs +1 -0
  176. package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_vecdb.yml.hbs +1 -0
  177. package/templates/apps/fullstack/packages/{{projectName}}-serv/data/.gitkeep.hbs +1 -0
  178. package/templates/apps/fullstack/packages/{{projectName}}-serv/package.json.hbs +62 -0
  179. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/app-server.ts.hbs +115 -0
  180. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/build-metadata.ts.hbs +7 -0
  181. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/index.ts.hbs +40 -0
  182. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/admin-service.ts.hbs +294 -0
  183. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/audit-jobs.ts.hbs +28 -0
  184. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/business-settings.ts.hbs +50 -0
  185. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/messages.ts.hbs +50 -0
  186. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/procedures/admin-procedures.ts.hbs +106 -0
  187. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/procedures/app-procedures.ts.hbs +49 -0
  188. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/procedures/index.ts.hbs +34 -0
  189. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/runtime.ts.hbs +159 -0
  190. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/security-roles.ts.hbs +73 -0
  191. package/templates/apps/fullstack/packages/{{projectName}}-serv/tests/app-server.test.ts.hbs +505 -0
  192. package/templates/apps/fullstack/packages/{{projectName}}-serv/tests/runtime.test.ts.hbs +72 -0
  193. package/templates/apps/fullstack/packages/{{projectName}}-serv/tests/security.test.ts.hbs +183 -0
  194. package/templates/apps/fullstack/packages/{{projectName}}-serv/tsconfig.json.hbs +10 -0
  195. package/templates/apps/fullstack/packages/{{projectName}}-serv/tsup.config.ts.hbs +18 -0
  196. package/templates/apps/fullstack/packages/{{projectName}}-serv/vitest.config.ts.hbs +12 -0
  197. package/templates/apps/fullstack/packages/{{projectName}}-shared/.gitignore.hbs +10 -0
  198. package/templates/apps/fullstack/packages/{{projectName}}-shared/README.md.hbs +97 -0
  199. package/templates/apps/fullstack/packages/{{projectName}}-shared/messages/en-US.json.hbs +164 -0
  200. package/templates/apps/fullstack/packages/{{projectName}}-shared/messages/ja-JP.json.hbs +164 -0
  201. package/templates/apps/fullstack/packages/{{projectName}}-shared/messages/zh-CN.json.hbs +164 -0
  202. package/templates/apps/fullstack/packages/{{projectName}}-shared/package.json.hbs +55 -0
  203. package/templates/apps/fullstack/packages/{{projectName}}-shared/project.inlang/settings.json.hbs +11 -0
  204. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/index.ts.hbs +7 -0
  205. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/api/api-client.ts.hbs +94 -0
  206. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/api/feedback-client.ts.hbs +36 -0
  207. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/api/sensitive-actions.svelte.ts.hbs +16 -0
  208. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/api/session-recovery.svelte.ts.hbs +4 -0
  209. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/components/AdminWorkspace.svelte.hbs +122 -0
  210. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/components/AppShell.svelte.hbs +90 -0
  211. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/components/FeedbackEntry.svelte.hbs +86 -0
  212. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/audit.svelte.hbs +94 -0
  213. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/configuration.svelte.hbs +25 -0
  214. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/feedback.svelte.hbs +157 -0
  215. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/roles.svelte.hbs +77 -0
  216. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/settings.svelte.hbs +44 -0
  217. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/users.svelte.hbs +216 -0
  218. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/security/role-label.ts.hbs +12 -0
  219. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/stores/guide-store.ts.hbs +55 -0
  220. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/stores/management-store.svelte.ts.hbs +614 -0
  221. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/stores/theme-store.svelte.ts.hbs +23 -0
  222. package/templates/apps/fullstack/packages/{{projectName}}-shared/svelte.config.js.hbs +1 -0
  223. package/templates/apps/fullstack/packages/{{projectName}}-shared/tests/api-client.test.ts.hbs +150 -0
  224. package/templates/apps/fullstack/packages/{{projectName}}-shared/tests/management-store.test.ts.hbs +253 -0
  225. package/templates/apps/fullstack/packages/{{projectName}}-shared/tsconfig.json.hbs +17 -0
  226. package/templates/apps/fullstack/packages/{{projectName}}-shared/vitest.config.ts.hbs +7 -0
  227. package/templates/apps/fullstack/playwright.config.ts.hbs +114 -0
  228. package/templates/apps/fullstack/playwright.session-close.config.ts.hbs +18 -0
  229. package/templates/apps/fullstack/pnpm-workspace.yaml.hbs +38 -0
  230. package/templates/apps/fullstack/tsconfig.base.json +14 -0
  231. package/templates/apps/h5/messages/en-US.json +3 -0
  232. package/templates/apps/h5/messages/ja-JP.json +40 -0
  233. package/templates/apps/h5/messages/zh-CN.json +3 -0
  234. package/templates/apps/h5/src/routes/+layout.svelte.hbs +85 -30
  235. package/templates/apps/h5/src/routes/+page.svelte.hbs +20 -8
  236. package/templates/apps/h5/src/routes/discover/+page.svelte.hbs +17 -6
  237. package/templates/apps/h5/src/routes/profile/+page.svelte.hbs +17 -6
  238. package/templates/apps/mobile-app/.env.hbs +3 -0
  239. package/templates/apps/{android-app → mobile-app}/capacitor.config.ts.hbs +2 -2
  240. package/templates/apps/mobile-app/index.html.hbs +14 -0
  241. package/templates/apps/mobile-app/messages/en-US.json +36 -0
  242. package/templates/apps/mobile-app/messages/ja-JP.json +36 -0
  243. package/templates/apps/mobile-app/messages/zh-CN.json +36 -0
  244. package/templates/apps/mobile-app/public/runtime-config.js +1 -0
  245. package/templates/apps/mobile-app/src/App.svelte.hbs +153 -0
  246. package/templates/apps/mobile-app/src/lib/api.ts.hbs +213 -0
  247. package/templates/apps/mobile-app/src/lib/app-config.ts.hbs +14 -0
  248. package/templates/apps/{android-app → mobile-app}/src/lib/capacitor.ts +6 -7
  249. package/templates/apps/mobile-app/src/lib/pages/home.svelte.hbs +58 -0
  250. package/templates/apps/mobile-app/src/lib/pages/profile.svelte.hbs +13 -0
  251. package/templates/apps/mobile-app/src/lib/pages/tasks.svelte.hbs +16 -0
  252. package/templates/apps/mobile-app/src/main.ts.hbs +11 -0
  253. package/templates/apps/website/messages/en-US.json +4 -2
  254. package/templates/apps/website/messages/ja-JP.json +34 -0
  255. package/templates/apps/website/messages/zh-CN.json +4 -2
  256. package/templates/apps/website/scripts/static-website.mjs.hbs +67 -0
  257. package/templates/apps/website/src/routes/+layout.svelte.hbs +77 -26
  258. package/templates/apps/website/src/routes/+layout.ts +3 -0
  259. package/templates/apps/website/src/routes/+page.svelte.hbs +31 -12
  260. package/templates/apps/website/src/routes/about/+page.svelte.hbs +11 -6
  261. package/templates/apps/website/src/routes/api/health/+server.ts +3 -0
  262. package/templates/apps/website/src/routes/contact/+page.svelte.hbs +44 -34
  263. package/templates/apps/website/src/routes/services/+page.svelte.hbs +27 -40
  264. package/templates/base/.dockerignore.hbs +27 -0
  265. package/templates/base/.gitignore.hbs +41 -0
  266. package/templates/base/.npmrc.hbs +1 -0
  267. package/templates/base/e2e/app.spec.ts.hbs +213 -0
  268. package/templates/base/e2e/helpers.ts +1 -1
  269. package/templates/base/eslint-rules.js +45 -0
  270. package/templates/base/eslint.config.js.hbs +34 -0
  271. package/templates/base/hai.json.hbs +4 -0
  272. package/templates/base/images/web/nginx.conf.hbs +24 -0
  273. package/templates/base/images/web.Dockerfile.hbs +72 -0
  274. package/templates/base/package.json.hbs +125 -49
  275. package/templates/base/playwright.config.ts +44 -6
  276. package/templates/base/pnpm-workspace.yaml.hbs +40 -0
  277. package/templates/base/src/app.css.hbs +40 -0
  278. package/templates/base/src/app.d.ts.hbs +14 -1
  279. package/templates/base/src/app.html.hbs +13 -0
  280. package/templates/base/src/hooks.server.ts.hbs +115 -43
  281. package/templates/base/src/lib/build-metadata.ts.hbs +7 -0
  282. package/templates/base/src/lib/server/init.ts.hbs +125 -152
  283. package/templates/base/src/lib/server/kit-config.ts.hbs +40 -0
  284. package/templates/base/src/routes/+layout.server.ts.hbs +35 -0
  285. package/templates/base/static/favicon.png +0 -0
  286. package/templates/base/svelte.config.js.hbs +84 -5
  287. package/templates/base/tests/scaffold.test.ts.hbs +102 -0
  288. package/templates/base/tsconfig.json.hbs +50 -0
  289. package/templates/base/vite.config.ts.hbs +117 -12
  290. package/templates/base/vitest.config.ts.hbs +19 -0
  291. package/templates/features/ai/routes/api/chat/+server.ts +6 -7
  292. package/templates/features/iam/routes-admin/(auth)/+layout.svelte.hbs +3 -17
  293. package/templates/features/iam/routes-admin/(auth)/auth/forgot-password/+page.svelte.hbs +10 -0
  294. package/templates/features/iam/routes-admin/(auth)/auth/login/+page.svelte.hbs +9 -96
  295. package/templates/features/iam/routes-admin/(auth)/auth/register/+page.svelte.hbs +9 -122
  296. package/templates/features/iam/routes-admin/(auth)/auth/reset-password/+page.svelte.hbs +10 -0
  297. package/templates/features/iam/routes-h5/auth/forgot-password/+page.svelte.hbs +10 -0
  298. package/templates/features/iam/routes-h5/auth/login/+page.svelte.hbs +9 -96
  299. package/templates/features/iam/routes-h5/auth/register/+page.svelte.hbs +9 -112
  300. package/templates/features/iam/routes-h5/auth/reset-password/+page.svelte.hbs +10 -0
  301. package/templates/features/iam/routes-shared/api/auth/captcha/+server.ts.hbs +4 -0
  302. package/templates/features/iam/routes-shared/api/auth/config/+server.ts +4 -0
  303. package/templates/features/iam/routes-shared/api/auth/login/+server.ts +1 -29
  304. package/templates/features/iam/routes-shared/api/auth/login/ldap/+server.ts +4 -0
  305. package/templates/features/iam/routes-shared/api/auth/login/otp/+server.ts +4 -0
  306. package/templates/features/iam/routes-shared/api/auth/logout/+server.ts +13 -6
  307. package/templates/features/iam/routes-shared/api/auth/otp/send/+server.ts +4 -0
  308. package/templates/features/iam/routes-shared/api/auth/password/renew/+server.ts +5 -0
  309. package/templates/features/iam/routes-shared/api/auth/password-reset/confirm/+server.ts +4 -0
  310. package/templates/features/iam/routes-shared/api/auth/password-reset/request/+server.ts +4 -0
  311. package/templates/features/iam/routes-shared/api/auth/reauthenticate/+server.ts +5 -0
  312. package/templates/features/iam/routes-shared/api/auth/register/+server.ts +1 -23
  313. package/templates/features/iam/routes-shared/api/auth/session/close/+server.ts.hbs +4 -0
  314. package/templates/features/iam/routes-website/auth/forgot-password/+page.svelte.hbs +10 -0
  315. package/templates/features/iam/routes-website/auth/login/+page.svelte.hbs +11 -0
  316. package/templates/features/iam/routes-website/auth/register/+page.svelte.hbs +11 -0
  317. package/templates/features/iam/routes-website/auth/reset-password/+page.svelte.hbs +10 -0
  318. package/templates/features/payment/routes/api/v1/payment/create/+server.ts +25 -23
  319. package/templates/features/payment/routes/api/v1/payment/notify/[provider]/+server.ts +5 -2
  320. package/templates/features/storage/routes/api/upload/+server.ts +10 -8
  321. package/templates/i18n/project.inlang/settings.json +2 -2
  322. package/templates/shared/.gitattributes +11 -0
  323. package/templates/shared/build-metadata.ts +42 -0
  324. package/templates/shared/container-runtime-config.sh +30 -0
  325. package/templates/shared/e2e-env.ts +98 -0
  326. package/templates/shared/hash-router.svelte.ts +83 -0
  327. package/templates/shared/public-base-path.mjs +19 -0
  328. package/templates/shared/run-e2e.mjs +104 -0
  329. package/templates/shared/vite-runtime-config.ts +56 -0
  330. package/templates/skills/AGENTS.md +75 -16
  331. package/templates/skills/CLAUDE.md +0 -11
  332. package/templates/skills/bridges/admin/AGENTS.md +89 -0
  333. package/templates/skills/bridges/api/AGENTS.md +83 -0
  334. package/templates/skills/bridges/fullstack/AGENTS.md.hbs +102 -0
  335. package/templates/skills/bridges/h5/AGENTS.md +88 -0
  336. package/templates/skills/bridges/mobile-app/AGENTS.md +100 -0
  337. package/templates/skills/bridges/website/AGENTS.md +88 -0
  338. package/templates/skills/copilot-instructions.md +3 -59
  339. package/templates/skills/hai-ai/SKILL.md +44 -715
  340. package/templates/skills/hai-ai/guide.md +457 -0
  341. package/templates/skills/hai-ai/reference.md +292 -0
  342. package/templates/skills/hai-api-client/SKILL.md +26 -339
  343. package/templates/skills/hai-api-client/reference.md +180 -0
  344. package/templates/skills/hai-api-contract/SKILL.md +36 -0
  345. package/templates/skills/hai-api-contract/reference.md +280 -0
  346. package/templates/skills/hai-app-create/SKILL.md +38 -351
  347. package/templates/skills/hai-app-create/collaboration.md +52 -0
  348. package/templates/skills/hai-app-create/development.md +243 -0
  349. package/templates/skills/hai-app-create/reference.md +376 -0
  350. package/templates/skills/hai-app-review/SKILL.md +57 -126
  351. package/templates/skills/hai-app-review/differential.md +34 -0
  352. package/templates/skills/hai-app-tests/SKILL.md +34 -454
  353. package/templates/skills/hai-app-tests/reference.md +462 -0
  354. package/templates/skills/hai-app-tests/validation.md +42 -0
  355. package/templates/skills/hai-audit/SKILL.md +37 -122
  356. package/templates/skills/hai-audit/reference.md +184 -0
  357. package/templates/skills/hai-build/SKILL.md +62 -315
  358. package/templates/skills/hai-build/paths.md +30 -0
  359. package/templates/skills/hai-build/reference.md +353 -0
  360. package/templates/skills/hai-cache/SKILL.md +26 -175
  361. package/templates/skills/hai-cache/reference.md +229 -0
  362. package/templates/skills/hai-capacitor/SKILL.md +24 -364
  363. package/templates/skills/hai-capacitor/reference.md +358 -0
  364. package/templates/skills/hai-change-plan/SKILL.md +46 -0
  365. package/templates/skills/hai-ci/SKILL.md +114 -0
  366. package/templates/skills/hai-core/SKILL.md +31 -469
  367. package/templates/skills/hai-core/reference.md +557 -0
  368. package/templates/skills/hai-core/request-access.md +65 -0
  369. package/templates/skills/hai-crypto/SKILL.md +29 -180
  370. package/templates/skills/hai-crypto/reference.md +317 -0
  371. package/templates/skills/hai-datapipe/SKILL.md +24 -207
  372. package/templates/skills/hai-datapipe/reference.md +204 -0
  373. package/templates/skills/hai-deploy/SKILL.md +53 -178
  374. package/templates/skills/hai-deploy/credentials.md +19 -0
  375. package/templates/skills/hai-deploy/middleware.md +129 -0
  376. package/templates/skills/hai-feedback/SKILL.md +85 -0
  377. package/templates/skills/hai-framework-sync/SKILL.md +105 -0
  378. package/templates/skills/hai-framework-sync/sync.md +49 -0
  379. package/templates/skills/hai-iam/SKILL.md +53 -325
  380. package/templates/skills/hai-iam/reference.md +535 -0
  381. package/templates/skills/hai-kit/SKILL.md +33 -329
  382. package/templates/skills/hai-kit/reference.md +202 -0
  383. package/templates/skills/hai-payment/SKILL.md +28 -262
  384. package/templates/skills/hai-payment/reference.md +295 -0
  385. package/templates/skills/hai-pr-review/SKILL.md +41 -0
  386. package/templates/skills/hai-reach/SKILL.md +28 -300
  387. package/templates/skills/hai-reach/reference.md +363 -0
  388. package/templates/skills/hai-reldb/SKILL.md +28 -449
  389. package/templates/skills/hai-reldb/reference.md +500 -0
  390. package/templates/skills/hai-scheduler/SKILL.md +26 -174
  391. package/templates/skills/hai-scheduler/reference.md +216 -0
  392. package/templates/skills/hai-serv/SKILL.md +60 -0
  393. package/templates/skills/hai-serv/reference.md +792 -0
  394. package/templates/skills/hai-spec-implement/SKILL.md +50 -0
  395. package/templates/skills/hai-spec-implement/changes.md +67 -0
  396. package/templates/skills/hai-spec-implement/evaluation.md +18 -0
  397. package/templates/skills/hai-spec-implement/handoff.md +47 -0
  398. package/templates/skills/hai-spec-implement/templates.md +117 -0
  399. package/templates/skills/hai-spec-implement/workflow.md +56 -0
  400. package/templates/skills/hai-spec-review/SKILL.md +57 -0
  401. package/templates/skills/hai-spec-review/checklist.md +71 -0
  402. package/templates/skills/hai-storage/SKILL.md +31 -262
  403. package/templates/skills/hai-storage/reference.md +284 -0
  404. package/templates/skills/hai-ui/SKILL.md +62 -238
  405. package/templates/skills/hai-ui/guide.md +81 -0
  406. package/templates/skills/hai-ui/reference.md +705 -0
  407. package/templates/skills/hai-ui-design/SKILL.md +31 -0
  408. package/templates/skills/hai-ui-design/patterns.md +31 -0
  409. package/templates/skills/hai-ui-review/SKILL.md +32 -0
  410. package/templates/skills/hai-ui-review/checklist.md +29 -0
  411. package/templates/skills/hai-vecdb/SKILL.md +25 -267
  412. package/templates/skills/hai-vecdb/reference.md +325 -0
  413. package/templates/skills/opencode.json +0 -5
  414. package/dist/chunk-2H7UOFLK.js +0 -10
  415. package/dist/chunk-LANIDJC7.js +0 -659
  416. package/dist/chunk-LANIDJC7.js.map +0 -1
  417. package/dist/chunk-YV7WPUI6.js +0 -206
  418. package/dist/chunk-YV7WPUI6.js.map +0 -1
  419. package/dist/config-templates-S5RI2MC6.js +0 -5
  420. package/dist/config-templates-S5RI2MC6.js.map +0 -1
  421. package/dist/skill-templates-N5DU5FNX.js +0 -5
  422. package/dist/skill-templates-N5DU5FNX.js.map +0 -1
  423. package/dist/src-XJ6YXNAF.js +0 -15030
  424. package/dist/src-XJ6YXNAF.js.map +0 -1
  425. package/templates/apps/android-app/.env.hbs +0 -3
  426. package/templates/apps/android-app/messages/en-US.json +0 -24
  427. package/templates/apps/android-app/messages/zh-CN.json +0 -24
  428. package/templates/apps/android-app/src/lib/api.ts.hbs +0 -30
  429. package/templates/apps/android-app/src/routes/+layout.svelte.hbs +0 -42
  430. package/templates/apps/android-app/src/routes/+layout.ts +0 -7
  431. package/templates/apps/android-app/src/routes/+page.svelte.hbs +0 -27
  432. package/templates/apps/api/src/routes/+layout.svelte +0 -14
  433. package/templates/apps/api/src/routes/+page.svelte +0 -11
  434. package/templates/apps/api/src/routes/api/v1/health/+server.ts +0 -14
  435. package/templates/apps/api/src/routes/api/v1/items/+server.ts +0 -37
  436. package/templates/apps/api/src/routes/api/v1/items/[id]/+server.ts +0 -30
  437. package/templates/base/src/app.css +0 -2
  438. package/templates/base/tsconfig.json +0 -8
@@ -0,0 +1,164 @@
1
+ {{! @skipIfEmpty }}
2
+ {
3
+ "$schema": "https://inlang.com/schema/inlang-message-format",
4
+ "settings_title": "個人設定",
5
+ "settings_language": "言語",
6
+ "settings_theme": "テーマ",
7
+ "theme_high_contrast": "ハイコントラスト",
8
+ "theme_formal": "ビジネス(角丸なし)",
9
+ "home_refresh": "更新",
10
+ "home_loading": "読み込み中…",
11
+ "home_error": "APIサービスに接続できません",
12
+ "business_settings_title": "業務基本設定",
13
+ "business_notice_label": "公開業務のお知らせ",
14
+ "business_notice_hint": "すべてのユーザーに表示されます。機密情報を入力しないでください。",
15
+ "security_sensitive_operations": "重要操作",
16
+ "security_action_cancelled": "重要な操作をキャンセルしました。",
17
+ "account_type": "アカウント種別",
18
+ "account_permanent": "長期",
19
+ "account_temporary": "一時",
20
+ "account_state": "アカウント状態",
21
+ "account_active": "有効",
22
+ "account_dormant": "休眠",
23
+ "account_closed": "閉鎖",
24
+ "account_expires": "有効期限",
25
+ "account_last_login": "最終ログイン",
26
+ "invitation_title": "パスワード設定へ招待",
27
+ "invitation_hint": "初期パスワードを表示・共有せず、一度限りの設定リンクを送信します。",
28
+ "invitation_send": "招待を送信",
29
+ "invitation_check_existing": "再試行の前にユーザー一覧と送信記録を確認してください。アカウントが作成済みの場合があります。",
30
+ "invitation_default_role": "既定の業務操作者",
31
+ "invitation_phone": "電話番号",
32
+ "audit_category": "イベント分類",
33
+ "audit_outcome": "処理結果",
34
+ "audit_severity": "レベル",
35
+ "audit_category_system": "システムイベント",
36
+ "audit_category_business": "業務イベント",
37
+ "audit_success": "成功",
38
+ "audit_failure": "失敗",
39
+ "audit_denied": "拒否",
40
+ "audit_info": "情報",
41
+ "audit_warning": "警告",
42
+ "audit_error": "エラー",
43
+ "audit_critical": "重大",
44
+ "audit_all": "すべて",
45
+ "audit_backup_run": "監査を手動バックアップ",
46
+ "audit_backup_private_hint": "サーバーの非公開ストレージに保存しました。アーカイブキーで取得し検証できます。",
47
+ "audit_backup_retry_hint": "再試行では同じアーカイブIDを検証します。異なるIDで重複実行しないでください。",
48
+ "audit_stats_hint": "過去7日間を分類、結果、レベル、リソースで絞り込み、操作別に集計します。",
49
+ "audit_advanced_filters": "分類・並び替え・統計",
50
+ "audit_sort_direction": "並び順",
51
+ "audit_request_id": "リクエストID",
52
+ "audit_trace_id": "追跡ID",
53
+ "audit_scope": "業務範囲",
54
+ "audit_actor_snapshot": "イベント時の本人情報",
55
+ "audit_asc": "昇順",
56
+ "audit_desc": "降順",
57
+ "audit_sort": "並び替え項目",
58
+ "nav_users": "ユーザー",
59
+ "nav_roles": "ロール",
60
+ "nav_audit": "監査ログ",
61
+ "nav_feedback": "問題フィードバック",
62
+ "feedback_logs": "ログとリクエスト",
63
+ "feedback_export_pending": "問題パッケージを生成中です。しばらくしてから再試行してください。",
64
+ "navigation": "メインナビゲーション",
65
+ "open_menu": "ナビゲーションを開く",
66
+ "close_menu": "ナビゲーションを閉じる",
67
+ "logout": "ログアウト",
68
+ "login_title": "ログイン",
69
+ "login_description": "ログインしてアカウントとワークスペースを管理します",
70
+ "login_invalid": "アカウントまたはパスワードが正しくありません。再試行してください。",
71
+ "session_expired": "セッションの有効期限が切れています。再度ログインしてください。",
72
+ "saved": "変更を保存しました",
73
+ "save": "保存",
74
+ "edit": "編集",
75
+ "delete": "削除",
76
+ "cancel": "キャンセル",
77
+ "search": "検索",
78
+ "details": "詳細",
79
+ "created_at": "作成日時",
80
+ "all_statuses": "すべての状態",
81
+ "operation_failed": "操作を完了できませんでした。再試行してください。",
82
+ "network_error": "接続に失敗しました。ネットワークを確認して再試行してください。",
83
+ "forbidden": "この操作を行う権限がありません。",
84
+ "conflict": "このアカウントは既に存在するか、変更が現在のデータと競合しています。",
85
+ "validation_failed": "入力内容を確認して再試行してください。",
86
+ "settings_description": "プロフィール、環境設定、アカウントのセキュリティを管理します",
87
+ "profile_title": "プロフィール",
88
+ "preferences_title": "環境設定",
89
+ "preferences_description": "言語と外観の設定は、端末にかかわらずアカウントに適用されます。",
90
+ "password_title": "パスワードを変更",
91
+ "password_rules": "現在と異なるパスワードを選んでください。",
92
+ "password_changed": "パスワードを更新しました。新しいパスワードでログインしてください。",
93
+ "password_current_required": "変更する前に現在のパスワードを入力してください。",
94
+ "password_confirmation_mismatch": "新しいパスワードが一致しません。同じパスワードを再入力してください。",
95
+ "avatar_hint": "PNG、JPEG、WebPの画像をアップロードしてください。最大512KBです。",
96
+ "avatar_invalid": "512KB以下のPNG、JPEG、WebP画像を選択してください。",
97
+ "avatar_saved": "アバターを更新しました",
98
+ "avatar_upload": "アバターをアップロード",
99
+ "users_description": "アカウントの作成、ロールの割り当て、アクセスを管理します",
100
+ "users_search": "ユーザー名、名前、メールアドレスを検索",
101
+ "user_account": "アカウント",
102
+ "user_username": "ユーザー名",
103
+ "user_display_name": "表示名",
104
+ "user_email": "メールアドレス",
105
+ "user_password": "初期パスワード",
106
+ "user_role": "ロール",
107
+ "user_create": "ユーザーを追加",
108
+ "initial_password_rules": "{min}文字以上で入力してください。",
109
+ "users_empty": "一致するアカウントがありません。検索条件を変更するか、ユーザーを作成してください。",
110
+ "user_edit": "ユーザーを編集",
111
+ "user_deleted": "ユーザーを削除しました",
112
+ "user_delete_title": "ユーザーを削除",
113
+ "user_delete_confirm": "{name}を削除しますか?アカウントとアクセス権は完全に削除されます。",
114
+ "roles_description": "職責ごとに権限を分離します。ロールはユーザー管理から割り当ててください。",
115
+ "role_admin": "システム管理者",
116
+ "role_audit": "監査管理者",
117
+ "role_config": "設定管理者",
118
+ "role_audit_capabilities": "監査記録の参照、集計とバックアップを行い、アカウントと業務設定は管理しません。",
119
+ "role_config_capabilities": "業務基本設定のみ管理し、アカウントと監査は管理しません。",
120
+ "role_operator": "業務担当者",
121
+ "role_operator_capabilities": "業務処理を利用し、アカウント、監査、設定管理の権限は持ちません。",
122
+ "role_user": "一般ユーザー",
123
+ "role_admin_capabilities": "システムアカウントとロールを管理し、監査と業務設定の権限は持ちません。",
124
+ "role_user_capabilities": "プロフィール、アバター、言語、外観、パスワードを更新できます。",
125
+ "role_members": "メンバー{count}人",
126
+ "role_edit": "説明を編集",
127
+ "role_description": "説明",
128
+ "audit_description": "アカウントと管理操作の履歴を確認します",
129
+ "audit_actor": "実行者",
130
+ "audit_action": "操作",
131
+ "audit_resource": "リソース",
132
+ "audit_resource_id": "リソースID",
133
+ "audit_ip": "IPアドレス",
134
+ "audit_start": "開始",
135
+ "audit_end": "終了",
136
+ "audit_action_placeholder": "すべての操作",
137
+ "audit_resource_placeholder": "すべてのリソース",
138
+ "audit_system": "システム",
139
+ "audit_details": "監査ログの詳細",
140
+ "audit_date_invalid": "終了日は開始日以降にしてください。",
141
+ "api_not_configured": "サービスへの接続が設定されていません。管理者にお問い合わせください。",
142
+ "guide_overview_title": "管理ワークスペースを見てみましょう",
143
+ "guide_overview_description": "簡単な手順でワークスペース、個人設定、ヘルプを紹介します。いつでも終了でき、ヘルプセンターから再開できます。",
144
+ "guide_content_title": "ワークスペース",
145
+ "guide_content_description": "現在のページがここに表示されます。ナビゲーションで機能を切り替えます。利用できる操作は権限に応じて変わります。",
146
+ "guide_theme_title": "外観",
147
+ "guide_theme_description": "ライトとダークの表示を切り替えます。設定でさらに多くのテーマを選択できます。",
148
+ "guide_profile_title": "プロフィール",
149
+ "guide_profile_description": "アバターからプロフィールや設定を開き、個人情報やパスワードを管理できます。",
150
+ "guide_help_title": "ヘルプセンター",
151
+ "guide_help_description": "困ったときは、ここで説明を検索したり、製品ツアーを再生したりできます。",
152
+ "guide_profile_tour_title": "プロフィールを設定",
153
+ "guide_profile_tour_description": "個人情報、環境設定、パスワード設定の場所を紹介します。ツアーでは変更を送信しません。",
154
+ "guide_profile_form_description": "プロフィールの表示や編集、アバターの選択、変更の保存ができます。アップロードするファイルは、画面に表示された形式とサイズの条件を満たす必要があります。",
155
+ "guide_preferences_description": "言語とテーマの設定を保存します。画面とヘルプの言語は選択に従います。",
156
+ "guide_password_title": "パスワードを変更",
157
+ "guide_password_description": "現在のパスワード、新しいパスワード、確認用パスワードを入力します。送信前にパスワードのルールを確認してください。",
158
+ "guide_overview_article": "## はじめに\n\n- ナビゲーションから各機能を開きます。メニューと操作は現在の権限に応じて変わります。\n- ワークスペースには一覧、詳細、設定が表示されます。画面の説明に従い、送信前に入力内容を確認してください。\n- アバターからプロフィールと設定を開きます。\n- ヘルプボタンで説明を検索したり、ツアーを再生したりできます。\n\n## 初回ツアー\n\n「後で通知」を選ぶと1日間通知を停止します。「今後通知しない」は設定を保存します。完了したツアーは自動で表示されなくなりますが、手動で再生できます。",
159
+ "guide_profile_article": "## プロフィールと環境設定\n\nプロフィールを開くと個人情報やアバターを確認・更新できます。ファイルの条件を確認し、変更を保存して結果のメッセージを確認してください。外観と言語は設定で変更できます。\n\n## パスワード\n\nパスワードの変更には、現在のパスワード、新しいパスワード、確認用パスワードが必要です。画面のルールに従い、送信後に結果を確認してください。\n\n「ツアーを開始」で関連するページを開きます。ツアーが自動でフォームを保存したり、アカウントを変更したりすることはありません。",
160
+ "user_password_reset": "パスワードをリセット",
161
+ "user_password_reset_hint": "{name} の新しいパスワードを設定します。既存のセッションは無効になり、アカウント状態は変わりません。安全な方法で新しいパスワードを本人に伝えてください。",
162
+ "user_password_reset_done": "パスワードをリセットし、既存のセッションを無効にしました。安全な方法で新しいパスワードを本人に伝えてください。",
163
+ "user_password_reset_initial_hint": "初回変更が必須です。次回ログイン時に本人がパスワードを変更する必要があります。"
164
+ }
@@ -0,0 +1,164 @@
1
+ {{! @skipIfEmpty }}
2
+ {
3
+ "$schema": "https://inlang.com/schema/inlang-message-format",
4
+ "settings_title": "个人设置",
5
+ "settings_language": "语言",
6
+ "settings_theme": "主题",
7
+ "theme_high_contrast": "高对比",
8
+ "theme_formal": "简洁商务",
9
+ "home_refresh": "刷新",
10
+ "home_loading": "加载中…",
11
+ "home_error": "无法连接到 API 服务",
12
+ "business_settings_title": "业务基础配置",
13
+ "business_notice_label": "公共业务公告",
14
+ "business_notice_hint": "公告对所有用户可见,请勿填写敏感信息。",
15
+ "security_sensitive_operations": "敏感操作",
16
+ "security_action_cancelled": "已取消敏感操作。",
17
+ "account_type": "账号类型",
18
+ "account_permanent": "长期账号",
19
+ "account_temporary": "临时账号",
20
+ "account_state": "账号状态",
21
+ "account_active": "激活",
22
+ "account_dormant": "休眠",
23
+ "account_closed": "注销",
24
+ "account_expires": "到期时间",
25
+ "account_last_login": "最后登录时间",
26
+ "invitation_title": "发送设密邀请",
27
+ "invitation_hint": "向收件人发送一次性设密链接,不显示或传递初始密码。",
28
+ "invitation_send": "发送邀请",
29
+ "invitation_check_existing": "先检查用户列表和投递记录,再决定是否重试;账号可能已创建。",
30
+ "invitation_default_role": "默认业务操作员",
31
+ "invitation_phone": "手机号",
32
+ "audit_category": "事件分类",
33
+ "audit_outcome": "处理结果",
34
+ "audit_severity": "等级",
35
+ "audit_category_system": "系统事件",
36
+ "audit_category_business": "业务事件",
37
+ "audit_success": "成功",
38
+ "audit_failure": "失败",
39
+ "audit_denied": "拒绝",
40
+ "audit_info": "信息",
41
+ "audit_warning": "警告",
42
+ "audit_error": "错误",
43
+ "audit_critical": "严重",
44
+ "audit_all": "全部",
45
+ "audit_backup_run": "手动备份审计",
46
+ "audit_backup_private_hint": "归档已保存到服务端私有存储,可按归档键获取并验证。",
47
+ "audit_backup_retry_hint": "重试将核对同一归档编号,请勿重复发起不同编号的任务。",
48
+ "audit_stats_hint": "近7天按分类、结果、等级和资源统计。",
49
+ "audit_advanced_filters": "分类、排序与统计",
50
+ "audit_sort_direction": "排序方向",
51
+ "audit_request_id": "请求编号",
52
+ "audit_trace_id": "追踪编号",
53
+ "audit_scope": "业务范围",
54
+ "audit_actor_snapshot": "事件时身份",
55
+ "audit_asc": "升序",
56
+ "audit_desc": "降序",
57
+ "audit_sort": "排序字段",
58
+ "nav_users": "用户管理",
59
+ "nav_roles": "角色管理",
60
+ "nav_audit": "审计日志",
61
+ "nav_feedback": "问题反馈",
62
+ "feedback_logs": "日志与请求",
63
+ "feedback_export_pending": "问题包仍在生成,请稍后重试。",
64
+ "navigation": "主导航",
65
+ "open_menu": "打开导航",
66
+ "close_menu": "关闭导航",
67
+ "logout": "退出登录",
68
+ "login_title": "登录",
69
+ "login_description": "登录后管理个人账户与工作空间",
70
+ "login_invalid": "账号或密码不正确,请重试。",
71
+ "session_expired": "登录已过期,请重新登录。",
72
+ "saved": "已保存修改",
73
+ "save": "保存",
74
+ "edit": "编辑",
75
+ "delete": "删除",
76
+ "cancel": "取消",
77
+ "search": "查询",
78
+ "details": "详情",
79
+ "created_at": "创建时间",
80
+ "all_statuses": "全部状态",
81
+ "operation_failed": "操作未完成,请重试。",
82
+ "network_error": "连接失败,请检查网络后重试。",
83
+ "forbidden": "没有执行此操作的权限。",
84
+ "conflict": "账户已存在,或修改与当前数据冲突。",
85
+ "validation_failed": "请检查填写的信息后重试。",
86
+ "settings_description": "管理个人资料、偏好与账户安全",
87
+ "profile_title": "个人资料",
88
+ "preferences_title": "偏好设置",
89
+ "preferences_description": "语言与界面风格保存到个人账户,在不同设备上保持一致。",
90
+ "password_title": "修改密码",
91
+ "password_rules": "请使用与旧密码不同的新密码。",
92
+ "password_changed": "密码已修改,请使用新密码重新登录。",
93
+ "password_current_required": "请输入当前密码后再修改。",
94
+ "password_confirmation_mismatch": "两次输入的新密码不一致,请重新确认。",
95
+ "avatar_hint": "支持 PNG、JPEG 和 WebP 图片,大小不超过 512 KB。",
96
+ "avatar_invalid": "请选择不超过 512 KB 的 PNG、JPEG 或 WebP 图片。",
97
+ "avatar_saved": "头像已更新",
98
+ "avatar_upload": "上传头像",
99
+ "users_description": "创建账户、分配角色并管理访问权限",
100
+ "users_search": "搜索用户名、姓名或邮箱",
101
+ "user_account": "账户",
102
+ "user_username": "用户名",
103
+ "user_display_name": "显示名称",
104
+ "user_email": "邮箱",
105
+ "user_password": "初始密码",
106
+ "user_role": "角色",
107
+ "user_create": "新增用户",
108
+ "initial_password_rules": "密码至少 {min} 个字符。",
109
+ "users_empty": "没有匹配的账户,请调整查询条件或新增用户。",
110
+ "user_edit": "编辑用户",
111
+ "user_deleted": "用户已删除",
112
+ "user_delete_title": "删除用户",
113
+ "user_delete_confirm": "确认删除 {name}?此操作将永久删除账户及其访问权限。",
114
+ "roles_description": "按职责分离管理权限,在用户管理中分配角色。",
115
+ "role_admin": "系统管理员",
116
+ "role_audit": "审计管理员",
117
+ "role_config": "配置管理员",
118
+ "role_audit_capabilities": "查看、统计和备份审计记录,不管理账号或业务配置。",
119
+ "role_config_capabilities": "仅管理业务基础配置,不管理账号或审计。",
120
+ "role_operator": "业务操作员",
121
+ "role_operator_capabilities": "使用业务处理功能,不具有账号、审计或配置管理权限。",
122
+ "role_user": "普通用户",
123
+ "role_admin_capabilities": "管理系统账号与角色,不包含审计或业务配置权限。",
124
+ "role_user_capabilities": "修改个人资料、头像、语言、界面风格与密码。",
125
+ "role_members": "{count} 名成员",
126
+ "role_edit": "编辑说明",
127
+ "role_description": "角色说明",
128
+ "audit_description": "查看账户与管理操作的审计记录",
129
+ "audit_actor": "操作用户",
130
+ "audit_action": "操作",
131
+ "audit_resource": "资源",
132
+ "audit_resource_id": "资源 ID",
133
+ "audit_ip": "IP 地址",
134
+ "audit_start": "开始日期",
135
+ "audit_end": "结束日期",
136
+ "audit_action_placeholder": "全部操作",
137
+ "audit_resource_placeholder": "全部资源",
138
+ "audit_system": "系统",
139
+ "audit_details": "审计日志详情",
140
+ "audit_date_invalid": "结束日期不能早于开始日期。",
141
+ "api_not_configured": "尚未配置服务连接,请联系应用管理员。",
142
+ "guide_overview_title": "快速认识管理后台",
143
+ "guide_overview_description": "用几个简短步骤了解工作区、个人设置和帮助入口。你可以随时退出,也可以从帮助中心重新查看。",
144
+ "guide_content_title": "工作区",
145
+ "guide_content_description": "这里展示当前页面的内容。通过导航菜单切换功能,页面会根据你的权限提供可用操作。",
146
+ "guide_theme_title": "外观切换",
147
+ "guide_theme_description": "点击这里快速切换亮色与暗色外观。更多主题可以在设置页面中选择。",
148
+ "guide_profile_title": "个人资料",
149
+ "guide_profile_description": "点击头像打开个人资料和设置入口,管理头像、个人信息与密码。",
150
+ "guide_help_title": "帮助中心",
151
+ "guide_help_description": "遇到问题时从这里搜索使用说明,或重新开始任意操作导览。",
152
+ "guide_profile_tour_title": "完善个人资料",
153
+ "guide_profile_tour_description": "了解个人信息、偏好和密码设置的位置。引导只说明操作,不会自动提交修改。",
154
+ "guide_profile_form_description": "在这里查看或编辑个人资料,选择头像并保存修改。上传文件需符合页面显示的格式与大小要求。",
155
+ "guide_preferences_description": "选择语言和主题后保存,界面与帮助内容会使用所选语言和外观。",
156
+ "guide_password_title": "修改密码",
157
+ "guide_password_description": "输入当前密码、新密码和确认密码,按页面提示提交。修改前请确认新密码符合密码规则。",
158
+ "guide_overview_article": "## 从哪里开始\n\n- 使用导航菜单打开需要的功能。可见菜单和操作由当前权限决定。\n- 工作区显示列表、详情或设置内容。按页面提示完成操作,提交前确认信息。\n- 点击头像访问个人资料与设置。\n- 点击帮助入口搜索说明或重新查看导览。\n\n## 首次引导\n\n选择“稍后提醒”会暂缓一天;选择“不再提醒”会保留你的选择。完成导览后不会重复提示,仍可手动重看。",
159
+ "guide_profile_article": "## 个人资料与偏好\n\n打开个人资料页面,查看或修改个人信息与头像。头像需符合页面显示的文件要求,保存后查看结果提示。外观和语言可在设置中调整。\n\n## 密码\n\n修改密码需要当前密码、新密码和确认密码。按页面显示的密码规则填写,提交后查看结果。\n\n点击“开始引导”可以直接进入对应页面。导览不会自动保存表单或修改账户。",
160
+ "user_password_reset": "重置密码",
161
+ "user_password_reset_hint": "为 {name} 设置新密码。重置后原会话失效,账号状态保持不变。请通过安全渠道交付新密码。",
162
+ "user_password_reset_done": "密码已重置,原会话已失效。请向用户安全交付新密码。",
163
+ "user_password_reset_initial_hint": "已启用初始密码更换要求:用户下次登录时必须设置自己的密码。"
164
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "engines": { "node": "^22.23.4 || ^24.22.1 || ^26.12.1" },
3
+ "name": "{{fullstack.sharedPackageName}}",
4
+ "type": "module",
5
+ "version": "0.1.0",
6
+ "private": true,
7
+ "description": "Shared frontend code (AppShell / theme / i18n / API) for {{projectName}} web/app/desktop/mini.",
8
+ "exports": {
9
+ ".": "./src/index.ts",
10
+ "./components/*": "./src/lib/components/*",
11
+ "./stores/*": "./src/lib/stores/*",
12
+ "./api": "./src/lib/api/api-client.ts",
13
+ "./project.inlang/settings.json": "./project.inlang/settings.json",
14
+ "./messages/*": "./messages/*",
15
+ "./paraglide/messages": "./src/lib/paraglide/messages.js",
16
+ "./paraglide/runtime": "./src/lib/paraglide/runtime.js"
17
+ },
18
+ "files": [
19
+ "src",
20
+ "project.inlang",
21
+ "messages"
22
+ ],
23
+ "scripts": {
24
+ "paraglide:compile": "paraglide-js compile --project ./project.inlang --outdir ./src/lib/paraglide",
25
+ "paraglide:watch": "paraglide-js compile --project ./project.inlang --outdir ./src/lib/paraglide --watch",
26
+ "prepare": "paraglide-js compile --project ./project.inlang --outdir ./src/lib/paraglide",
27
+ "check": "pnpm typecheck",
28
+ "typecheck": "pnpm paraglide:compile && svelte-check --tsconfig ./tsconfig.json",
29
+ "lint": "eslint .",
30
+ "lint:fix": "eslint . --fix",
31
+ "test": "vitest run --passWithNoTests",
32
+ "clean": "rimraf .turbo src/lib/paraglide"
33
+ },
34
+ "dependencies": {
35
+ "@h-ai/api-client": "{{haiPackageSpecifier}}",
36
+ "@h-ai/api-contract": "{{haiPackageSpecifier}}",
37
+ "@h-ai/core": "{{haiPackageSpecifier}}",
38
+ "@h-ai/crypto": "{{haiPackageSpecifier}}",
39
+ {{#if features.feedback}}
40
+ "@h-ai/feedback": "{{haiPackageSpecifier}}",
41
+ {{/if}}
42
+ "@h-ai/ui": "{{haiPackageSpecifier}}",
43
+ "{{fullstack.contractPackageName}}": "workspace:*"
44
+ },
45
+ "devDependencies": {
46
+ "@sveltejs/vite-plugin-svelte": "{{fullstack.packageSpecifiers.sveltePlugin}}",
47
+ "@inlang/paraglide-js": "{{fullstack.packageSpecifiers.inlangParaglide}}",
48
+ "@inlang/plugin-message-format": "{{fullstack.packageSpecifiers.inlangMessageFormat}}",
49
+ "svelte": "{{fullstack.packageSpecifiers.svelte}}",
50
+ "svelte-check": "{{fullstack.packageSpecifiers.svelteCheck}}",
51
+ "typescript": "{{fullstack.packageSpecifiers.typescript}}",
52
+ "vite": "{{fullstack.packageSpecifiers.vite}}",
53
+ "vitest": "{{fullstack.packageSpecifiers.vitest}}"
54
+ }
55
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "$schema": "https://inlang.com/schema/project-settings",
3
+ "baseLocale": "{{fullstack.i18n.baseLocale}}",
4
+ "locales": [{{#each fullstack.i18n.locales}}"{{this}}"{{#unless @last}}, {{/unless}}{{/each}}],
5
+ "modules": [
6
+ "../../node_modules/@inlang/plugin-message-format/dist/index.js"
7
+ ],
8
+ "plugin.inlang.messageFormat": {
9
+ "pathPattern": "./messages/{locale}.json"
10
+ }
11
+ }
@@ -0,0 +1,7 @@
1
+ export { default as AppShell } from './lib/components/AppShell.svelte'
2
+ export { default as AdminWorkspace } from './lib/components/AdminWorkspace.svelte'
3
+ export { AVAILABLE_THEMES, themeStore } from './lib/stores/theme-store.svelte.js'
4
+ export type { AppInfo, ManagementApiOptions } from './lib/api/api-client.js'
5
+ export { initializeManagementApi, managementApi } from './lib/api/api-client.js'
6
+ export * as messages from './lib/paraglide/messages.js'
7
+ export { getLocale, locales, setLocale } from './lib/paraglide/runtime.js'
@@ -0,0 +1,94 @@
1
+ import type { TokenStorage } from '@h-ai/api-client'
2
+ import type { AppInfoOutputData } from '{{fullstack.contractPackageName}}'
3
+ import { apiClient, HaiApiClientError } from '@h-ai/api-client'
4
+ import { err } from '@h-ai/core'
5
+ import { crypto } from '@h-ai/crypto'
6
+ import { {{fullstack.contractExportName}} } from '{{fullstack.contractPackageName}}'
7
+
8
+ import { sessionRecovery } from './session-recovery.svelte.js'
9
+
10
+ export type AppInfo = AppInfoOutputData
11
+ export const managementApi = apiClient.create({{fullstack.contractExportName}})
12
+
13
+ const DEFAULT_API_ORIGIN = 'http://127.0.0.1:3000'
14
+
15
+ export interface ManagementApiOptions {
16
+ fetchFn?: typeof fetch
17
+ baseUrl?: string
18
+ clientName?: string
19
+ terminalType?: 'web' | 'app' | 'desktop'
20
+ tokenStorage?: TokenStorage
21
+ headers?: Record<string, string>
22
+ requireApiBase?: boolean
23
+ onSessionExpired?: () => void
24
+ }
25
+
26
+ /** 所有业务请求由 api-client 统一完成 Token 注入、刷新和双向加密。 */
27
+ export async function initializeManagementApi(options: ManagementApiOptions = {}) {
28
+ if (options.requireApiBase && !options.baseUrl && !resolveRuntimeApiOrigin() && !import.meta.env.PUBLIC_API_BASE)
29
+ return err(HaiApiClientError.CONFIG_ERROR, 'Native applications require a configured API origin')
30
+ if (managementApi.isInitialized)
31
+ await managementApi.close()
32
+ if (!crypto.isInitialized) {
33
+ const result = await crypto.init()
34
+ if (!result.success)
35
+ return result
36
+ }
37
+
38
+ return managementApi.init({
39
+ baseUrl: normalizeApiBaseUrl(options.baseUrl ?? resolveDefaultApiOrigin()),
40
+ clientName: options.clientName ?? '{{fullstack.sharedPackageName}}',
41
+ fetch: createCredentialedFetch(options.fetchFn),
42
+ headers: options.headers,
43
+ auth: { recoverSession: sessionRecovery.recover, terminalType: options.terminalType ?? 'web', storage: options.tokenStorage, onRefreshFailed: options.onSessionExpired },
44
+ transport: { crypto },
45
+ })
46
+ }
47
+
48
+ /** 头像仅允许服务端约定资源路径,并统一指向当前可信 API origin。 */
49
+ export function resolveAvatarUrl(value: string | undefined): string | undefined {
50
+ if (!value)
51
+ return undefined
52
+ try {
53
+ const origin = managementApi.config?.baseUrl ?? normalizeApiBaseUrl(resolveDefaultApiOrigin())
54
+ const parsed = new URL(value, origin)
55
+ const prefix = `${new URL(origin).pathname.replace(/\/+$/, '')}/assets/avatars/`
56
+ if (!parsed.pathname.startsWith(prefix) || !/^[\w-]+\/[\w-]+\.(?:png|jpg|webp)$/.test(parsed.pathname.slice(prefix.length)))
57
+ return undefined
58
+ return new URL(parsed.pathname, origin).toString()
59
+ }
60
+ catch {
61
+ return undefined
62
+ }
63
+ }
64
+
65
+ function resolveDefaultApiOrigin(): string {
66
+ return resolveRuntimeApiOrigin()
67
+ || import.meta.env.PUBLIC_API_BASE
68
+ || (typeof globalThis.location === 'undefined' ? DEFAULT_API_ORIGIN : globalThis.location.origin)
69
+ }
70
+
71
+ /** 跨端浏览器请求携带服务端管理的 httpOnly refresh Cookie。 */
72
+ function createCredentialedFetch(fetchFn: typeof fetch = globalThis.fetch.bind(globalThis)): typeof fetch {
73
+ return (input, init) => {
74
+ const request = new Request(input, init)
75
+ return fetchFn(new Request(request, { credentials: 'include' }))
76
+ }
77
+ }
78
+
79
+ function resolveRuntimeApiOrigin(): string | undefined {
80
+ const runtimeConfig = (globalThis as typeof globalThis & {
81
+ __HAI_PUBLIC_CONFIG__?: { apiBase?: string }
82
+ }).__HAI_PUBLIC_CONFIG__
83
+ return runtimeConfig?.apiBase
84
+ }
85
+
86
+ function normalizeApiBaseUrl(value: string): string {
87
+ const url = new URL(value.trim())
88
+ if (url.pathname === '/')
89
+ url.pathname = '/api/v1'
90
+ return url.toString().replace(/\/+$/, '')
91
+ }
92
+
93
+ /** 标准 IAM 表单动作,平台安全 TokenStorage 由原有初始化配置决定。 */
94
+ export const managementAuthActions = apiClient.createAuthActions(managementApi)
@@ -0,0 +1,36 @@
1
+ {{! @skipIfEmpty }}
2
+ {{#if features.feedback}}
3
+ import { createFeedbackClient, createFeedbackReview, saveFeedbackFile } from '@h-ai/feedback/client'
4
+ import { managementApi } from './api-client.js'
5
+
6
+ /** 仅装配共享采集器,不复制采集、脱敏、上传或离线打包逻辑。 */
7
+ export const browserFeedback = createFeedbackClient()
8
+ export const feedbackReview = createFeedbackReview(managementApi.feedback.reports)
9
+ export { feedbackDataBytes } from '@h-ai/feedback/client'
10
+
11
+ export async function initializeBrowserFeedback(metadata: { appVersion: string, buildId: string, commit: string }): Promise<void> {
12
+ const result = await browserFeedback.init({
13
+ appId: '{{projectName}}',
14
+ ...metadata,
15
+ screenshot: true,
16
+ replay: true,
17
+ persistDraft: false,
18
+ actions: {
19
+ policy: () => managementApi.feedback.reports.policy({}),
20
+ submit: input => managementApi.feedback.reports.submit(input),
21
+ appendEvidence: input => managementApi.feedback.reports.appendEvidence(input),
22
+ completeCollection: input => managementApi.feedback.reports.completeCollection(input),
23
+ upload: input => managementApi.feedback.attachments.upload(input),
24
+ },
25
+ })
26
+ if (!result.success)
27
+ throw new Error(result.error.message, { cause: result.error })
28
+ }
29
+
30
+ /** 下载的内容来自受权 API 或本地采集器;对象 URL 在发起后释放。 */
31
+ export async function downloadFeedback(bytes: Uint8Array, name: string, contentType = 'application/zip'): Promise<void> {
32
+ const result = await saveFeedbackFile(bytes, name, contentType)
33
+ if (!result.success)
34
+ throw new Error(result.error.message, { cause: result.error })
35
+ }
36
+ {{/if}}
@@ -0,0 +1,16 @@
1
+ /** 再鉴别只保存当前页面待确认动作;密码与单次凭据不进入持久存储。 */
2
+ import type { HaiResult } from '@h-ai/core'
3
+ import { err } from '@h-ai/core'
4
+ import { createSensitiveActions } from '@h-ai/ui/components/scenes/iam/index'
5
+ import * as m from '../paraglide/messages.js'
6
+ import { managementAuthActions as authActions } from './api-client.js'
7
+
8
+ export const sensitiveActions = createSensitiveActions(authActions)
9
+
10
+ /** 用途凭据只传给本次 typed client 调用,不使用共享 header。 */
11
+ export async function requestSensitive<T>(operation: string, run: (options: { context: { reauthentication?: string, reauthorize: () => Promise<string | null | undefined> } }) => Promise<HaiResult<T>>): Promise<HaiResult<T>> {
12
+ const ticket = await sensitiveActions.authorize(operation)
13
+ if (ticket === null)
14
+ return err({ code: 'app:cancelled', httpStatus: 400, message: m.security_action_cancelled() })
15
+ return run({ context: { ...(ticket ? { reauthentication: ticket } : {}), reauthorize: () => sensitiveActions.authorize(operation) } })
16
+ }
@@ -0,0 +1,4 @@
1
+ /** 页面级恢复交互由UI模块统一提供,不复制认证表单或请求队列。 */
2
+ import { createSessionRecovery } from '@h-ai/ui/components/scenes/iam/index'
3
+
4
+ export const sessionRecovery = createSessionRecovery()