create-windy 0.9.1 → 0.10.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 (253) hide show
  1. package/dist/cli.js +1769 -1277
  2. package/package.json +2 -2
  3. package/template/.agents/skills/windy-business-module/SKILL.md +33 -1
  4. package/template/.windy-template.json +6 -2
  5. package/template/AGENTS.md +4 -0
  6. package/template/README.md +2 -0
  7. package/template/apps/agent-server/Dockerfile +1 -1
  8. package/template/apps/agent-server/README.md +1 -1
  9. package/template/apps/agent-server/native/EXTENSIONS.md +2 -2
  10. package/template/apps/agent-server/native/parallel-harness.ts +2 -0
  11. package/template/apps/agent-server/native/storage-lifecycle.test.ts +2 -1
  12. package/template/apps/agent-server/package.json +42 -41
  13. package/template/apps/agent-server/plugins/downloads/README.md +1 -1
  14. package/template/apps/agent-server/plugins/drop-overlay/README.md +1 -1
  15. package/template/apps/agent-server/plugins/settings/README.md +1 -1
  16. package/template/apps/agent-server/plugins/skill-library/client-chunks.test.ts +4 -1
  17. package/template/apps/agent-server/plugins/theme/README.md +5 -1
  18. package/template/apps/agent-server/plugins/theme/source-tokens.ts +0 -1
  19. package/template/apps/agent-server/plugins/theme/tokens.json +0 -4
  20. package/template/apps/agent-server/plugins/tool-catalog/README.md +6 -3
  21. package/template/apps/agent-server/plugins/tool-catalog/discovery.mjs +13 -10
  22. package/template/apps/agent-server/plugins/tool-catalog/discovery.test.ts +68 -6
  23. package/template/apps/agent-server/runtime/compatibility.ts +7 -1
  24. package/template/apps/agent-server/runtime/dsh-engine.ts +2 -0
  25. package/template/apps/agent-server/runtime/questions-workflow.nodecheck.ts +2 -0
  26. package/template/apps/server/Dockerfile +2 -1
  27. package/template/apps/server/package.json +11 -11
  28. package/template/apps/server/scripts/validate-module-composition-once.ts +2 -0
  29. package/template/apps/server/scripts/validate-module-composition.ts +8 -4
  30. package/template/apps/server/src/admin/routes.test.ts +29 -1
  31. package/template/apps/server/src/admin/routes.ts +20 -2
  32. package/template/apps/server/src/agent/client-session/completion.ts +1 -1
  33. package/template/apps/server/src/agent/client-session/manifest-admission.ts +1 -1
  34. package/template/apps/server/src/agent/client-session/request.ts +1 -1
  35. package/template/apps/server/src/agent/context-version-routes.ts +37 -13
  36. package/template/apps/server/src/agent/run-facade.ts +1 -1
  37. package/template/apps/server/src/agent/run-input-verification.ts +1 -1
  38. package/template/apps/server/src/agent/run-routes.ts +1 -14
  39. package/template/apps/server/src/agent/run-start-preparation.ts +1 -1
  40. package/template/apps/server/src/agent/runtime-bootstrap-input.ts +2 -0
  41. package/template/apps/server/src/agent/runtime-bootstrap.ts +49 -157
  42. package/template/apps/server/src/agent/runtime-disabled-composition.ts +2 -1
  43. package/template/apps/server/src/agent/session-invalidation/authorization-revocation.ts +54 -0
  44. package/template/apps/server/src/agent/session-runtime-composition.ts +1 -51
  45. package/template/apps/server/src/agent/unavailable-routes.ts +13 -2
  46. package/template/apps/server/src/agent-workflow/runtime-composition.ts +3 -0
  47. package/template/apps/server/src/agent-workflow/service.ts +17 -1
  48. package/template/apps/server/src/ai-artifact/media-resource-route.test.ts +134 -0
  49. package/template/apps/server/src/ai-artifact/routes.ts +1 -1
  50. package/template/apps/server/src/ai-artifact/runtime.ts +12 -0
  51. package/template/apps/server/src/ai-runtime-readiness/operation-port.test-support.ts +1 -1
  52. package/template/apps/server/src/ai-runtime-readiness/operation-port.ts +8 -0
  53. package/template/apps/server/src/ai-runtime-security/internal-token.ts +14 -0
  54. package/template/apps/server/src/app/antivirus-composition.test.ts +63 -0
  55. package/template/apps/server/src/app/antivirus-composition.ts +29 -0
  56. package/template/apps/server/src/app/dsh-workbench-socket-audit.test.ts +2 -1
  57. package/template/apps/server/src/configuration/definition.ts +15 -11
  58. package/template/apps/server/src/document/facade-support.ts +2 -2
  59. package/template/apps/server/src/document/facade.ts +2 -2
  60. package/template/apps/server/src/document/output-artifact-composition.ts +9 -5
  61. package/template/apps/server/src/document/output-artifact.test-support.ts +1 -1
  62. package/template/apps/server/src/embedding/facade.ts +1 -1
  63. package/template/apps/server/src/embedding/input.ts +1 -1
  64. package/template/apps/server/src/embedding/routes.ts +1 -1
  65. package/template/apps/server/src/index.ts +60 -60
  66. package/template/apps/server/src/license/routes.ts +4 -1
  67. package/template/apps/server/src/license/runtime-business-access.test.ts +261 -0
  68. package/template/apps/server/src/media-runtime/composition.ts +157 -0
  69. package/template/apps/server/src/media-runtime/media-only-composition.ts +44 -0
  70. package/template/apps/server/src/media-runtime/module-ai-port-factory.test.ts +69 -0
  71. package/template/apps/server/src/media-runtime/module-ai-port-factory.ts +72 -0
  72. package/template/apps/server/src/{agent → media-runtime}/runtime-readiness-sources.ts +14 -6
  73. package/template/apps/server/src/media-runtime/shared-composition.ts +104 -0
  74. package/template/apps/server/src/module-composition.test.ts +22 -0
  75. package/template/apps/server/src/module-composition.ts +48 -0
  76. package/template/apps/server/src/module-host/ai-operation-port.ts +97 -30
  77. package/template/apps/server/src/module-host/ai-operation-speech-normalize.test.ts +1 -1
  78. package/template/apps/server/src/module-host/http-runtime.ts +9 -3
  79. package/template/apps/server/src/module-host/static-route-authorization.test.ts +6 -3
  80. package/template/apps/server/src/module-host/storage-authorization-binding.test.ts +4 -0
  81. package/template/apps/server/src/module-runtime-validation.ts +2 -0
  82. package/template/apps/server/src/observability/diagnostic-index.ts +26 -1
  83. package/template/apps/server/src/observability/diagnostic-repository.ts +40 -11
  84. package/template/apps/server/src/platform-http-runtime.ts +1 -1
  85. package/template/apps/server/src/runtime-feature.ts +5 -1
  86. package/template/apps/server/src/runtime.ts +3 -0
  87. package/template/apps/server/src/settings/drizzle-watermark-repository.ts +35 -4
  88. package/template/apps/server/src/settings/watermark-repository.ts +14 -0
  89. package/template/apps/server/src/settings/watermark-routes.test.ts +84 -2
  90. package/template/apps/server/src/settings/watermark-routes.ts +109 -0
  91. package/template/apps/server/src/settings/watermark-transfer.ts +79 -0
  92. package/template/apps/server/src/speech/facade-validation.ts +1 -1
  93. package/template/apps/server/src/speech/facade.ts +2 -2
  94. package/template/apps/server/src/startup-composition-validation.test.ts +32 -0
  95. package/template/apps/server/src/startup-finalization.ts +2 -0
  96. package/template/apps/server/src/startup-runtime.ts +77 -0
  97. package/template/apps/server/src/system/ai-runtime-build.ts +3 -0
  98. package/template/apps/server/src/system/ai-runtime-configuration.test.ts +36 -0
  99. package/template/apps/server/src/system/ai-runtime-configuration.ts +58 -0
  100. package/template/apps/server/src/system/diagnostic-routes.test.ts +45 -0
  101. package/template/apps/server/src/system/diagnostic-routes.ts +35 -0
  102. package/template/apps/server/src/system/environment-policy-reader.test.ts +74 -0
  103. package/template/apps/server/src/system/environment-policy-reader.ts +62 -0
  104. package/template/apps/server/src/system/feature-environment-assessment.test.ts +148 -0
  105. package/template/apps/server/src/system/feature-environment-assessment.ts +179 -0
  106. package/template/apps/server/src/system/host-diagnostics.test.ts +155 -0
  107. package/template/apps/server/src/system/host-diagnostics.ts +225 -0
  108. package/template/apps/server/src/system/menu-registry.test.ts +26 -0
  109. package/template/apps/server/src/system/menu-registry.ts +9 -7
  110. package/template/apps/server/src/system/operations.test.ts +5 -0
  111. package/template/apps/server/src/system/operations.ts +36 -12
  112. package/template/apps/server/src/system/role-authorization-postgres.integration.test.ts +181 -0
  113. package/template/apps/web/Dockerfile +7 -3
  114. package/template/apps/web/dev/dev-port.test.ts +6 -6
  115. package/template/apps/web/dev/dev-port.ts +1 -1
  116. package/template/apps/web/dev/start.ts +6 -1
  117. package/template/apps/web/index.html +1 -0
  118. package/template/apps/web/package.json +16 -16
  119. package/template/apps/web/runtime-server.test.ts +22 -1
  120. package/template/apps/web/runtime-server.ts +6 -0
  121. package/template/apps/web/src/App.vue +6 -3
  122. package/template/apps/web/src/assets/windy.svg +4 -0
  123. package/template/apps/web/src/components/auth/LoginForm.vue +2 -2
  124. package/template/apps/web/src/components/auth/PasswordChangeForm.vue +14 -3
  125. package/template/apps/web/src/components/common/FormDialog.vue +1 -1
  126. package/template/apps/web/src/components/license/LicenseFlow.webtest.ts +3 -0
  127. package/template/apps/web/src/components/license/LicenseMachineCodeQr.vue +99 -0
  128. package/template/apps/web/src/components/license/LicenseMachineCodeQr.webtest.ts +83 -0
  129. package/template/apps/web/src/components/license/LicensePairingCard.vue +1 -1
  130. package/template/apps/web/src/components/license/LicenseStatusCard.vue +14 -2
  131. package/template/apps/web/src/composables/useLoginFlow.ts +2 -2
  132. package/template/apps/web/src/composables/usePlatformSettings.ts +1 -1
  133. package/template/apps/web/src/composables/useWatermarkSettings.ts +1 -0
  134. package/template/apps/web/src/layout/AppSidebar.vue +5 -9
  135. package/template/apps/web/src/layout/AppSidebar.webtest.ts +4 -1
  136. package/template/apps/web/src/pages/auth/ChangePasswordPage.vue +67 -6
  137. package/template/apps/web/src/pages/auth/LoginPage.vue +3 -12
  138. package/template/apps/web/src/pages/configuration/components/ModuleConfigurationEditor.vue +30 -0
  139. package/template/apps/web/src/pages/configuration/components/ModuleConfigurationWorkbench.vue +25 -14
  140. package/template/apps/web/src/pages/configuration/components/TimeZoneSelect.vue +55 -0
  141. package/template/apps/web/src/pages/profile/PersonalSettingsPage.vue +64 -11
  142. package/template/apps/web/src/pages/profile/PersonalSettingsPage.webtest.ts +21 -1
  143. package/template/apps/web/src/pages/settings/BrandingSettingsSection.vue +7 -18
  144. package/template/apps/web/src/pages/settings/BrandingSettingsSection.webtest.ts +9 -4
  145. package/template/apps/web/src/pages/settings/GlobalSettingsPage.vue +51 -6
  146. package/template/apps/web/src/pages/settings/GlobalSettingsPage.webtest.ts +19 -3
  147. package/template/apps/web/src/pages/settings/WatermarkSettingsSection.vue +1 -0
  148. package/template/apps/web/src/pages/settings/WatermarkYamlTransfer.vue +211 -0
  149. package/template/apps/web/src/pages/system/DiagnosticLookupPage.vue +18 -3
  150. package/template/apps/web/src/pages/system/DiagnosticLookupPage.webtest.ts +4 -1
  151. package/template/apps/web/src/pages/system/SystemOperationsPage.vue +23 -0
  152. package/template/apps/web/src/pages/system/components/DiagnosticLogList.vue +120 -0
  153. package/template/apps/web/src/pages/system/components/OperationEnvironmentPanel.vue +237 -0
  154. package/template/apps/web/src/pages/system/components/OperationFeatureAssessmentPanel.vue +131 -0
  155. package/template/apps/web/src/pages/system/components/PagedSelectionList.vue +31 -24
  156. package/template/apps/web/src/pages/system/components/SystemResourceActions.vue +2 -1
  157. package/template/apps/web/src/pages/system/components/SystemResourceEditor.vue +11 -2
  158. package/template/apps/web/src/pages/system/components/SystemResourcePage.vue +1 -0
  159. package/template/apps/web/src/pages/system/components/SystemResourcePage.webtest.ts +6 -2
  160. package/template/apps/web/src/pages/system/components/agent-skills/AgentSkillImportDialog.vue +18 -9
  161. package/template/apps/web/src/pages/system/components/agent-workbench/SessionReplayTimeline.vue +18 -9
  162. package/template/apps/web/src/pages/system/components/agent-workbench/TestRunComposer.vue +66 -34
  163. package/template/apps/web/src/pages/system/components/agent-workbench/ToolCatalogPanel.vue +48 -33
  164. package/template/apps/web/src/pages/system/components/agent-workbench/ToolCatalogPanel.webtest.ts +9 -2
  165. package/template/apps/web/src/pages/system/components/agent-workbench/ToolRuleDetail.vue +23 -16
  166. package/template/apps/web/src/pages/system/components/dictionary-bulk/DictionaryBulkJobDetail.vue +10 -7
  167. package/template/apps/web/src/pages/system/components/user-account/RolePermissionSummary.vue +81 -57
  168. package/template/apps/web/src/pages/system/components/user-account/UserRoleSelector.vue +6 -4
  169. package/template/apps/web/src/pages/system/components/user-account/UserRoleSelector.webtest.ts +20 -4
  170. package/template/apps/web/src/pages/system/resource-config.ts +9 -0
  171. package/template/apps/web/src/pages/work-orders/WorkOrderListPage.vue +1 -1
  172. package/template/apps/web/src/router/disabled-feature-loading.webtest.ts +78 -0
  173. package/template/apps/web/src/router/index.ts +3 -6
  174. package/template/apps/web/src/router/manifest-routes.ts +2 -3
  175. package/template/apps/web/src/router/platform-admin-pages.ts +21 -62
  176. package/template/apps/web/src/router/platform-admin-route-bindings.ts +4 -4
  177. package/template/apps/web/src/services/diagnostics-api.ts +13 -1
  178. package/template/apps/web/src/services/operations-api.ts +4 -0
  179. package/template/apps/web/src/services/platform-settings-api.ts +35 -1
  180. package/template/apps/web/vite.config.ts +9 -3
  181. package/template/deploy/environment/windy.environment.example.yaml +53 -0
  182. package/template/docker-compose.yml +4 -2
  183. package/template/docs/architecture/agent-admin-workbench-implementation.md +1 -1
  184. package/template/docs/architecture/agent-admin-workbench-plan.md +1 -1
  185. package/template/docs/architecture/agent-workflow.md +8 -0
  186. package/template/docs/architecture/durable-jobs.md +17 -0
  187. package/template/docs/architecture/embedded-dsh-integration.md +1 -1
  188. package/template/docs/development/dsh-plugins.md +1 -1
  189. package/template/docs/development/performance-engineering.md +24 -0
  190. package/template/docs/operations/admin-settings-yaml.md +29 -0
  191. package/template/docs/operations/dsh-agent-migration.md +2 -2
  192. package/template/docs/operations/environment-capabilities.md +185 -0
  193. package/template/docs/platform/module-configuration.md +18 -3
  194. package/template/docs/platform/platform-authentication.md +1 -1
  195. package/template/package.json +10 -8
  196. package/template/packages/config/package.json +2 -2
  197. package/template/packages/config/src/definition.ts +14 -4
  198. package/template/packages/config/src/environment-loader.ts +27 -3
  199. package/template/packages/config/src/platform-ai-runtime.test.ts +94 -0
  200. package/template/packages/config/src/platform.ts +5 -2
  201. package/template/packages/database/drizzle/0065_durable_job_lease_snapshot_lookup.sql +1 -0
  202. package/template/packages/database/drizzle/0066_agent_source_sequence_bigint.sql +3 -0
  203. package/template/packages/database/drizzle/0067_media_runtime_access.sql +46 -0
  204. package/template/packages/database/drizzle/meta/0065_snapshot.json +15370 -0
  205. package/template/packages/database/drizzle/meta/0066_snapshot.json +15370 -0
  206. package/template/packages/database/drizzle/meta/0067_snapshot.json +15370 -0
  207. package/template/packages/database/drizzle/meta/_journal.json +21 -0
  208. package/template/packages/database/package.json +3 -3
  209. package/template/packages/database/src/schema/agent-session.ts +4 -3
  210. package/template/packages/database/src/schema/durable-jobs.ts +4 -0
  211. package/template/packages/database/src/schema/index.ts +3 -1
  212. package/template/packages/database/src/schema-durable-recovery.test.ts +21 -1
  213. package/template/packages/database/src/schema-source-sequence.test.ts +24 -0
  214. package/template/packages/example-work-order/package.json +2 -2
  215. package/template/packages/modules/package.json +1 -1
  216. package/template/packages/modules/src/admin-ui-boundary.test.ts +33 -0
  217. package/template/packages/modules/src/composition.ts +11 -28
  218. package/template/packages/modules/src/manifest.ts +2 -0
  219. package/template/packages/modules/src/menu-composition.ts +24 -0
  220. package/template/packages/modules/src/system-admin-routes.ts +2 -2
  221. package/template/packages/modules/src/system-admin-ui-catalog.ts +6 -1
  222. package/template/packages/modules/src/system-ai-api-bindings.ts +0 -16
  223. package/template/packages/modules/src/system-api-control-plane.ts +9 -1
  224. package/template/packages/modules/src/system-api-permissions.ts +7 -0
  225. package/template/packages/modules/src/system-api-watermark.ts +21 -0
  226. package/template/packages/modules/src/system-audit-actions.ts +3 -1
  227. package/template/packages/modules/src/system-features.ts +21 -3
  228. package/template/packages/modules/src/system-media-api-bindings.ts +97 -0
  229. package/template/packages/modules/src/system-module-audit-selection.ts +2 -0
  230. package/template/packages/modules/src/system-module-catalog.test.ts +13 -6
  231. package/template/packages/modules/src/system-module-catalog.ts +6 -241
  232. package/template/packages/modules/src/system-module-definitions.ts +260 -0
  233. package/template/packages/modules/src/system-modules-access.test.ts +2 -0
  234. package/template/packages/modules/src/system-modules.test.ts +7 -1
  235. package/template/packages/modules/src/system-modules.ts +25 -13
  236. package/template/packages/modules/src/system-permissions.ts +12 -0
  237. package/template/packages/server-sdk/package.json +1 -1
  238. package/template/packages/shared/index.ts +3 -0
  239. package/template/packages/shared/package.json +1 -1
  240. package/template/packages/shared/src/environment-assessment.ts +68 -0
  241. package/template/packages/shared/src/environment-policy.ts +205 -0
  242. package/template/packages/shared/src/license-console-capabilities.ts +7 -0
  243. package/template/packages/shared/src/license.ts +1 -0
  244. package/template/packages/shared/src/module-configuration.ts +2 -1
  245. package/template/scripts/operations/collect-device-info.py +230 -0
  246. package/template/apps/server/src/agent/module-ai-port-factory.ts +0 -41
  247. /package/template/apps/server/src/{agent → ai-runtime-security}/execution-grants.ts +0 -0
  248. /package/template/apps/server/src/{agent → ai-runtime-security}/idempotency-key.test.ts +0 -0
  249. /package/template/apps/server/src/{agent → ai-runtime-security}/idempotency-key.ts +0 -0
  250. /package/template/apps/server/src/{agent → ai-runtime-security}/provider-input-governance.test.ts +0 -0
  251. /package/template/apps/server/src/{agent → ai-runtime-security}/provider-input-governance.ts +0 -0
  252. /package/template/apps/server/src/{agent → media-runtime}/required-environment.ts +0 -0
  253. /package/template/apps/server/src/{agent → media-runtime}/runtime-readiness-sources.test.ts +0 -0
@@ -34,6 +34,9 @@ describe("系统能力模块目录", () => {
34
34
  // @windy-module system.storage begin
35
35
  "system.storage",
36
36
  // @windy-module system.storage end
37
+ // @windy-module system.media-runtime begin
38
+ "system.media-runtime",
39
+ // @windy-module system.media-runtime end
37
40
  // @windy-module system.agent begin
38
41
  "system.agent",
39
42
  // @windy-module system.agent end
@@ -130,6 +133,7 @@ describe("系统能力模块目录", () => {
130
133
  });
131
134
 
132
135
  // @windy-module system.agent begin
136
+ // @windy-module system.agent-ui begin
133
137
  test("AI Runtime 能力与专用审计动作归属 system.agent", () => {
134
138
  const agent = systemModuleManifests().find(
135
139
  ({ name }) => name === "system.agent",
@@ -162,10 +166,13 @@ describe("系统能力模块目录", () => {
162
166
  ]),
163
167
  );
164
168
  });
169
+ // @windy-module system.agent-ui end
165
170
 
171
+ // @windy-module system.agent end
172
+ // @windy-module system.media-runtime begin
166
173
  test("Embedding Run API 声明用户 Guard 与内部 Artifact 边界", () => {
167
174
  const agent = systemModuleManifests().find(
168
- ({ name }) => name === "system.agent",
175
+ ({ name }) => name === "system.media-runtime",
169
176
  );
170
177
  const bindings = new Map(
171
178
  agent?.apiPermissions.map((binding) => [
@@ -174,8 +181,8 @@ describe("系统能力模块目录", () => {
174
181
  ]),
175
182
  );
176
183
  const guarded = {
177
- permissionKey: "system.agent.read",
178
- featureKey: "system.agent",
184
+ permissionKey: "system.embedding.read",
185
+ featureKey: "system.embedding",
179
186
  anonymous: false,
180
187
  };
181
188
 
@@ -208,13 +215,13 @@ describe("系统能力模块目录", () => {
208
215
  ).toEqual({
209
216
  method: "GET",
210
217
  path: "/api/internal/embeddings/runs/:runId/artifacts/:itemId",
211
- permissionKey: "system.agent.read",
212
- featureKey: "system.agent",
218
+ permissionKey: "system.embedding.read",
219
+ featureKey: "system.embedding",
213
220
  auditAction: "data.read",
214
221
  anonymous: true,
215
222
  });
216
223
  });
217
- // @windy-module system.agent end
224
+ // @windy-module system.media-runtime end
218
225
 
219
226
  // @windy-module system.data-governance begin
220
227
  test("能力声明归属到对应模块而不是继续挂在 system 聚合项", () => {
@@ -5,248 +5,13 @@ import { systemFoundationModule } from "./system-modules.js";
5
5
  import { selectSystemJsonSchemas } from "./system-module-schema-catalog.js";
6
6
  import { selectSystemAuditActions } from "./system-module-audit-selection.js";
7
7
 
8
- export interface SystemModuleDefinition {
9
- name: string;
10
- version: string;
11
- label: string;
12
- description: string;
13
- dependencies?: readonly string[];
14
- resources: readonly string[];
15
- permissionKeys?: readonly string[];
16
- excludedPermissionKeys?: readonly string[];
17
- featureKeys: readonly string[];
18
- runtimeActivation?: "physical-only";
19
- }
20
-
21
- export const systemModuleDefinitions = [
22
- {
23
- name: "system",
24
- version: "0.1.0",
25
- label: "系统核心",
26
- description: "管理面准入、Feature 治理、数据库基线与审计动作目录。",
27
- resources: ["admin", "runtime", "auth", "feature", "ui-components"],
28
- featureKeys: [
29
- "system.admin",
30
- "system.runtime",
31
- "system.auth",
32
- "system.feature",
33
- "system.ui-components",
34
- ],
35
- },
36
- {
37
- name: "system.identity",
38
- version: "0.1.0",
39
- label: "身份与权限",
40
- description: "用户、角色、部门、菜单、字典、个人资料和数据范围。",
41
- dependencies: ["system"],
42
- resources: [
43
- "user",
44
- "user-directory",
45
- "role",
46
- "department",
47
- "menu",
48
- "dict",
49
- "profile",
50
- ],
51
- excludedPermissionKeys: ["system.user.reveal", "system.user.export"],
52
- featureKeys: [
53
- "system.rbac",
54
- "system.user",
55
- "system.role",
56
- "system.department",
57
- "system.menu",
58
- "system.dict",
59
- "system.user-directory",
60
- "system.profile",
61
- ],
62
- },
63
- // @windy-module system.settings begin
64
- {
65
- name: "system.settings",
66
- version: "0.1.0",
67
- label: "平台设置",
68
- description: "品牌设置、Logo 与页面水印。",
69
- dependencies: ["system"],
70
- resources: ["settings", "watermark"],
71
- featureKeys: ["system.settings", "system.watermark"],
72
- runtimeActivation: "physical-only",
73
- },
74
- // @windy-module system.settings end
75
- // @windy-module system.configuration begin
76
- {
77
- name: "system.configuration",
78
- version: "0.1.0",
79
- label: "配置版本",
80
- description: "类型化模块配置、版本、差异、应用与回滚。",
81
- dependencies: ["system"],
82
- resources: ["config"],
83
- featureKeys: ["system.config"],
84
- },
85
- // @windy-module system.configuration end
86
- // @windy-module system.license begin
87
- {
88
- name: "system.license",
89
- version: "0.1.0",
90
- label: "License",
91
- description: "License 安装、验签、到期限制与版本授权。",
92
- dependencies: ["system"],
93
- resources: ["license"],
94
- featureKeys: ["system.license"],
95
- },
96
- // @windy-module system.license end
97
- // @windy-module system.audit begin
98
- {
99
- name: "system.audit",
100
- version: "0.1.0",
101
- label: "审计日志",
102
- description: "关键操作、权限拒绝和系统异常的安全追溯。",
103
- dependencies: ["system"],
104
- resources: ["audit", "diagnostics"],
105
- featureKeys: ["system.audit", "system.diagnostics"],
106
- },
107
- // @windy-module system.audit end
108
- // @windy-module system.storage begin
109
- {
110
- name: "system.storage",
111
- version: "0.1.0",
112
- label: "文件存储",
113
- description: "上传、续传、下载与对象生命周期管理。",
114
- dependencies: ["system", "system.settings", "system.scheduler"],
115
- resources: ["storage"],
116
- featureKeys: ["system.storage"],
117
- runtimeActivation: "physical-only",
118
- },
119
- // @windy-module system.storage end
120
- // @windy-module system.agent begin
121
- {
122
- name: "system.agent",
123
- version: "0.1.2",
124
- label: "Agent Tool",
125
- description: "受 Feature、RBAC 和审计保护的 Agent 工具调用。",
126
- dependencies: [
127
- "system",
128
- "system.audit",
129
- "system.storage",
130
- "system.scheduler",
131
- "system.workflow",
132
- ],
133
- resources: [
134
- "agent",
135
- "agent-tools",
136
- "agent-debug",
137
- "agent-workbench",
138
- "agent-skill",
139
- "agent-session",
140
- "agent-workflow",
141
- "ai-runtime",
142
- ],
143
- featureKeys: [
144
- "system.agent",
145
- "system.agent-tools",
146
- "system.agent-debug",
147
- "system.agent-workbench",
148
- "system.agent-skill",
149
- "system.agent-session",
150
- "system.agent-workflow",
151
- "system.ai-runtime",
152
- ],
153
- },
154
- // @windy-module system.agent end
155
- // @windy-module system.operations begin
156
- {
157
- name: "system.operations",
158
- version: "0.1.0",
159
- label: "运维与调度",
160
- description: "服务、数据库、缓存、磁盘与在线会话监控。",
161
- dependencies: ["system", "system.configuration"],
162
- resources: ["ops"],
163
- featureKeys: ["system.ops"],
164
- },
165
- // @windy-module system.operations end
166
- // @windy-module system.scheduler begin
167
- {
168
- name: "system.scheduler",
169
- version: "0.1.0",
170
- label: "任务调度",
171
- description: "定时任务注册、执行、重试、历史与恢复。",
172
- dependencies: ["system", "system.audit"],
173
- resources: ["scheduler"],
174
- featureKeys: ["system.scheduler"],
175
- },
176
- // @windy-module system.scheduler end
177
- // @windy-module system.notification begin
178
- {
179
- name: "system.notification",
180
- version: "0.1.0",
181
- label: "站内通知",
182
- description:
183
- "通知定向与定时发布、用户偏好、外部渠道投递、修改历史、阅读、收藏和归档。",
184
- dependencies: ["system", "system.identity", "system.scheduler"],
185
- resources: ["notification"],
186
- featureKeys: ["system.notification"],
187
- },
188
- // @windy-module system.notification end
189
- // @windy-module system.workflow begin
190
- {
191
- name: "system.workflow",
192
- version: "0.1.0",
193
- label: "审批工作流",
194
- description: "审批领取、转交、决定、取消与超时补偿。",
195
- dependencies: [
196
- "system",
197
- "system.identity",
198
- "system.notification",
199
- "system.scheduler",
200
- ],
201
- resources: ["workflow"],
202
- featureKeys: ["system.workflow"],
203
- },
204
- // @windy-module system.workflow end
205
- // @windy-module system.bulk-data begin
206
- {
207
- name: "system.bulk-data",
208
- version: "0.1.0",
209
- label: "批量数据",
210
- description: "批量导入导出、失败明细、结果留存与清理。",
211
- dependencies: ["system", "system.storage", "system.scheduler"],
212
- resources: ["bulk-data"],
213
- featureKeys: ["system.bulk-data"],
214
- },
215
- // @windy-module system.bulk-data end
216
- // @windy-module system.search begin
217
- {
218
- name: "system.search",
219
- version: "0.1.0",
220
- label: "平台搜索",
221
- description: "权限感知的功能搜索与业务 SearchProvider 聚合。",
222
- dependencies: ["system"],
223
- resources: ["search"],
224
- featureKeys: ["system.search"],
225
- },
226
- // @windy-module system.search end
227
- // @windy-module system.data-governance begin
228
- {
229
- name: "system.data-governance",
230
- version: "0.1.0",
231
- label: "数据治理",
232
- description: "敏感字段投影、明文访问与受治理导出。",
233
- dependencies: [
234
- "system",
235
- "system.identity",
236
- "system.audit",
237
- "system.storage",
238
- "system.workflow",
239
- "system.scheduler",
240
- ],
241
- resources: [],
242
- permissionKeys: ["system.user.reveal", "system.user.export"],
243
- featureKeys: [],
244
- runtimeActivation: "physical-only",
245
- },
246
- // @windy-module system.data-governance end
247
- ] as const satisfies readonly SystemModuleDefinition[];
8
+ import {
9
+ systemModuleDefinitions,
10
+ type SystemModuleDefinition,
11
+ type SystemModuleName,
12
+ } from "./system-module-definitions.js";
248
13
 
249
- export type SystemModuleName = (typeof systemModuleDefinitions)[number]["name"];
14
+ export * from "./system-module-definitions.js";
250
15
 
251
16
  export const systemModuleFactories: readonly ModuleFactory[] =
252
17
  systemModuleDefinitions.map(
@@ -0,0 +1,260 @@
1
+ export interface SystemModuleDefinition {
2
+ name: string;
3
+ version: string;
4
+ label: string;
5
+ description: string;
6
+ dependencies?: readonly string[];
7
+ resources: readonly string[];
8
+ permissionKeys?: readonly string[];
9
+ excludedPermissionKeys?: readonly string[];
10
+ featureKeys: readonly string[];
11
+ runtimeActivation?: "physical-only";
12
+ }
13
+
14
+ export const systemModuleDefinitions = [
15
+ {
16
+ name: "system",
17
+ version: "0.1.0",
18
+ label: "系统核心",
19
+ description: "管理面准入、Feature 治理、数据库基线与审计动作目录。",
20
+ resources: ["admin", "runtime", "auth", "feature", "ui-components"],
21
+ featureKeys: [
22
+ "system.admin",
23
+ "system.runtime",
24
+ "system.auth",
25
+ "system.feature",
26
+ "system.ui-components",
27
+ ],
28
+ },
29
+ {
30
+ name: "system.identity",
31
+ version: "0.1.0",
32
+ label: "身份与权限",
33
+ description: "用户、角色、部门、菜单、字典、个人资料和数据范围。",
34
+ dependencies: ["system"],
35
+ resources: [
36
+ "user",
37
+ "user-directory",
38
+ "role",
39
+ "department",
40
+ "menu",
41
+ "dict",
42
+ "profile",
43
+ ],
44
+ excludedPermissionKeys: ["system.user.reveal", "system.user.export"],
45
+ featureKeys: [
46
+ "system.rbac",
47
+ "system.user",
48
+ "system.role",
49
+ "system.department",
50
+ "system.menu",
51
+ "system.dict",
52
+ "system.user-directory",
53
+ "system.profile",
54
+ ],
55
+ },
56
+ // @windy-module system.settings begin
57
+ {
58
+ name: "system.settings",
59
+ version: "0.1.0",
60
+ label: "平台设置",
61
+ description: "品牌设置、Logo 与页面水印。",
62
+ dependencies: ["system"],
63
+ resources: ["settings", "watermark"],
64
+ featureKeys: ["system.settings", "system.watermark"],
65
+ runtimeActivation: "physical-only",
66
+ },
67
+ // @windy-module system.settings end
68
+ // @windy-module system.configuration begin
69
+ {
70
+ name: "system.configuration",
71
+ version: "0.1.0",
72
+ label: "配置版本",
73
+ description: "类型化模块配置、版本、差异、应用与回滚。",
74
+ dependencies: ["system"],
75
+ resources: ["config"],
76
+ featureKeys: ["system.config"],
77
+ },
78
+ // @windy-module system.configuration end
79
+ // @windy-module system.license begin
80
+ {
81
+ name: "system.license",
82
+ version: "0.1.0",
83
+ label: "License",
84
+ description: "License 安装、验签、到期限制与版本授权。",
85
+ dependencies: ["system"],
86
+ resources: ["license"],
87
+ featureKeys: ["system.license"],
88
+ },
89
+ // @windy-module system.license end
90
+ // @windy-module system.audit begin
91
+ {
92
+ name: "system.audit",
93
+ version: "0.1.0",
94
+ label: "审计日志",
95
+ description: "关键操作、权限拒绝和系统异常的安全追溯。",
96
+ dependencies: ["system"],
97
+ resources: ["audit", "diagnostics"],
98
+ featureKeys: ["system.audit", "system.diagnostics"],
99
+ },
100
+ // @windy-module system.audit end
101
+ // @windy-module system.storage begin
102
+ {
103
+ name: "system.storage",
104
+ version: "0.1.0",
105
+ label: "文件存储",
106
+ description: "上传、续传、下载与对象生命周期管理。",
107
+ dependencies: ["system", "system.settings", "system.scheduler"],
108
+ resources: ["storage"],
109
+ featureKeys: ["system.storage"],
110
+ runtimeActivation: "physical-only",
111
+ },
112
+ // @windy-module system.storage end
113
+ // @windy-module system.media-runtime begin
114
+ {
115
+ name: "system.media-runtime",
116
+ version: "0.1.0",
117
+ label: "媒体运行时",
118
+ description: "受治理的文档、语音、嵌入与公共文件引用。",
119
+ dependencies: ["system", "system.audit", "system.storage"],
120
+ resources: ["document", "speech", "embedding", "ai-artifact"],
121
+ featureKeys: [
122
+ "system.document",
123
+ "system.speech",
124
+ "system.embedding",
125
+ "system.ai-artifact",
126
+ ],
127
+ runtimeActivation: "physical-only",
128
+ },
129
+ // @windy-module system.media-runtime end
130
+ // @windy-module system.agent begin
131
+ {
132
+ name: "system.agent",
133
+ version: "0.1.2",
134
+ label: "Agent Tool",
135
+ description: "受 Feature、RBAC 和审计保护的 Agent 工具调用。",
136
+ dependencies: [
137
+ "system",
138
+ "system.audit",
139
+ "system.storage",
140
+ "system.scheduler",
141
+ "system.workflow",
142
+ "system.media-runtime",
143
+ ],
144
+ resources: [
145
+ "agent",
146
+ "agent-tools",
147
+ "agent-debug",
148
+ "agent-workbench",
149
+ "agent-skill",
150
+ "agent-session",
151
+ "agent-workflow",
152
+ "ai-runtime",
153
+ ],
154
+ featureKeys: [
155
+ "system.agent",
156
+ "system.agent-tools",
157
+ "system.agent-debug",
158
+ "system.agent-workbench",
159
+ "system.agent-skill",
160
+ "system.agent-session",
161
+ "system.agent-workflow",
162
+ "system.ai-runtime",
163
+ ],
164
+ },
165
+ // @windy-module system.agent end
166
+ // @windy-module system.operations begin
167
+ {
168
+ name: "system.operations",
169
+ version: "0.1.0",
170
+ label: "运维与调度",
171
+ description: "服务、数据库、缓存、磁盘与在线会话监控。",
172
+ dependencies: ["system", "system.configuration"],
173
+ resources: ["ops"],
174
+ featureKeys: ["system.ops"],
175
+ },
176
+ // @windy-module system.operations end
177
+ // @windy-module system.scheduler begin
178
+ {
179
+ name: "system.scheduler",
180
+ version: "0.1.0",
181
+ label: "任务调度",
182
+ description: "定时任务注册、执行、重试、历史与恢复。",
183
+ dependencies: ["system", "system.audit"],
184
+ resources: ["scheduler"],
185
+ featureKeys: ["system.scheduler"],
186
+ },
187
+ // @windy-module system.scheduler end
188
+ // @windy-module system.notification begin
189
+ {
190
+ name: "system.notification",
191
+ version: "0.1.0",
192
+ label: "站内通知",
193
+ description:
194
+ "通知定向与定时发布、用户偏好、外部渠道投递、修改历史、阅读、收藏和归档。",
195
+ dependencies: ["system", "system.identity", "system.scheduler"],
196
+ resources: ["notification"],
197
+ featureKeys: ["system.notification"],
198
+ },
199
+ // @windy-module system.notification end
200
+ // @windy-module system.workflow begin
201
+ {
202
+ name: "system.workflow",
203
+ version: "0.1.0",
204
+ label: "审批工作流",
205
+ description: "审批领取、转交、决定、取消与超时补偿。",
206
+ dependencies: [
207
+ "system",
208
+ "system.identity",
209
+ "system.notification",
210
+ "system.scheduler",
211
+ ],
212
+ resources: ["workflow"],
213
+ featureKeys: ["system.workflow"],
214
+ },
215
+ // @windy-module system.workflow end
216
+ // @windy-module system.bulk-data begin
217
+ {
218
+ name: "system.bulk-data",
219
+ version: "0.1.0",
220
+ label: "批量数据",
221
+ description: "批量导入导出、失败明细、结果留存与清理。",
222
+ dependencies: ["system", "system.storage", "system.scheduler"],
223
+ resources: ["bulk-data"],
224
+ featureKeys: ["system.bulk-data"],
225
+ },
226
+ // @windy-module system.bulk-data end
227
+ // @windy-module system.search begin
228
+ {
229
+ name: "system.search",
230
+ version: "0.1.0",
231
+ label: "平台搜索",
232
+ description: "权限感知的功能搜索与业务 SearchProvider 聚合。",
233
+ dependencies: ["system"],
234
+ resources: ["search"],
235
+ featureKeys: ["system.search"],
236
+ },
237
+ // @windy-module system.search end
238
+ // @windy-module system.data-governance begin
239
+ {
240
+ name: "system.data-governance",
241
+ version: "0.1.0",
242
+ label: "数据治理",
243
+ description: "敏感字段投影、明文访问与受治理导出。",
244
+ dependencies: [
245
+ "system",
246
+ "system.identity",
247
+ "system.audit",
248
+ "system.storage",
249
+ "system.workflow",
250
+ "system.scheduler",
251
+ ],
252
+ resources: [],
253
+ permissionKeys: ["system.user.reveal", "system.user.export"],
254
+ featureKeys: [],
255
+ runtimeActivation: "physical-only",
256
+ },
257
+ // @windy-module system.data-governance end
258
+ ] as const satisfies readonly SystemModuleDefinition[];
259
+
260
+ export type SystemModuleName = (typeof systemModuleDefinitions)[number]["name"];
@@ -61,6 +61,7 @@ describe("系统模块管理面与 MCP 注册", () => {
61
61
  ]);
62
62
  });
63
63
 
64
+ // @windy-module system.agent-ui begin
64
65
  test("AI Runtime 报表完整注册 Feature、权限、入口、API 与审计", () => {
65
66
  const manifest = systemFoundationModule();
66
67
  const menus = manifest.menus.flatMap((menu) => menu.children ?? []);
@@ -129,5 +130,6 @@ describe("系统模块管理面与 MCP 注册", () => {
129
130
  ]),
130
131
  );
131
132
  });
133
+ // @windy-module system.agent-ui end
132
134
  // @windy-module system.agent end
133
135
  });
@@ -219,7 +219,13 @@ describe("系统模块能力注册", () => {
219
219
 
220
220
  test("Sidebar 分类由 Manifest 目录声明", () => {
221
221
  const catalogs = systemFoundationModule().menus.map((menu) => menu.title);
222
- expect(catalogs).toEqual(["组织与权限", "平台配置", "安全与合规", "运维"]);
222
+ expect(catalogs).toEqual([
223
+ "组织与权限",
224
+ "平台配置",
225
+ "安全与合规",
226
+ "运维",
227
+ "AI 与 Agent",
228
+ ]);
223
229
  });
224
230
 
225
231
  test("部门创建与迁移处置绑定独立权限、Feature 和审计动作", () => {
@@ -4,7 +4,9 @@ import {
4
4
  systemAgentToolSchemas,
5
5
  systemAgentTools,
6
6
  } from "./system-agent-tools.js";
7
+ // @windy-module system.agent-ui begin
7
8
  import { systemAgentAdminMenus } from "./system-agent-admin-menus.js";
9
+ // @windy-module system.agent-ui end
8
10
  import { systemAgentSupervisorSchemas } from "./system-agent-supervisor.js";
9
11
  // @windy-module system.agent end
10
12
  import { systemAdminRoutes } from "./system-admin-routes.js";
@@ -252,7 +254,28 @@ export function systemFoundationModule(): ModuleManifest {
252
254
  featureKey: "system.ops",
253
255
  },
254
256
  // @windy-module system.operations end
255
- // @windy-module system.agent begin
257
+ // @windy-module system.workflow begin
258
+ {
259
+ key: "system.workflow",
260
+ title: "审批任务",
261
+ type: "button",
262
+ order: 20,
263
+ visible: false,
264
+ permissionKey: "system.workflow.read",
265
+ featureKey: "system.workflow",
266
+ },
267
+ // @windy-module system.workflow end
268
+ ],
269
+ },
270
+ // @windy-module system.agent-ui begin
271
+ {
272
+ key: "system.ai",
273
+ title: "AI 与 Agent",
274
+ type: "catalog",
275
+ order: 50,
276
+ visible: true,
277
+ icon: "sparkles",
278
+ children: [
256
279
  ...systemAgentAdminMenus,
257
280
  {
258
281
  key: "system.agent-session",
@@ -287,20 +310,9 @@ export function systemFoundationModule(): ModuleManifest {
287
310
  permissionKey: "system.agent-workflow.read",
288
311
  featureKey: "system.agent-workflow",
289
312
  },
290
- // @windy-module system.agent end
291
- // @windy-module system.workflow begin
292
- {
293
- key: "system.workflow",
294
- title: "审批任务",
295
- type: "button",
296
- order: 20,
297
- visible: false,
298
- permissionKey: "system.workflow.read",
299
- featureKey: "system.workflow",
300
- },
301
- // @windy-module system.workflow end
302
313
  ],
303
314
  },
315
+ // @windy-module system.agent-ui end
304
316
  ],
305
317
  adminRoutes: systemAdminRoutes,
306
318
  permissions: systemPermissions,
@@ -20,6 +20,12 @@ const systemResourceLabels = {
20
20
  license: "许可证管理",
21
21
  audit: "审计日志",
22
22
  diagnostics: "错误诊断",
23
+ // @windy-module system.media-runtime begin
24
+ document: "文档识别与 OCR",
25
+ speech: "语音处理",
26
+ embedding: "向量嵌入",
27
+ "ai-artifact": "AI 文件引用",
28
+ // @windy-module system.media-runtime end
23
29
  // @windy-module system.agent begin
24
30
  agent: "智能代理",
25
31
  "agent-session": "Agent 长期会话",
@@ -135,6 +141,12 @@ export const systemPermissions: ModuleManifest["permissions"] = [
135
141
  permission("audit", "read"),
136
142
  permission("diagnostics", "read"),
137
143
  // @windy-module system.audit end
144
+ // @windy-module system.media-runtime begin
145
+ permission("document", "read"),
146
+ permission("speech", "read"),
147
+ permission("embedding", "read"),
148
+ permission("ai-artifact", "read"),
149
+ // @windy-module system.media-runtime end
138
150
  // @windy-module system.agent begin
139
151
  permission("agent", "read"),
140
152
  permission("agent-tools", "read"),