@synopackageland/cli 0.4.1 → 0.5.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 (631) hide show
  1. package/README.md +7 -3
  2. package/dist/build-spk/delete-app-data.d.ts +27 -7
  3. package/dist/build-spk/delete-app-data.js +35 -34
  4. package/dist/build-spk/dsm-arch.d.ts +6 -1
  5. package/dist/build-spk/dsm-arch.js +25 -1
  6. package/dist/build-spk/dsm-version.d.ts +14 -0
  7. package/dist/build-spk/dsm-version.js +47 -0
  8. package/dist/build-spk/gateway.d.ts +31 -0
  9. package/dist/build-spk/gateway.js +55 -0
  10. package/dist/build-spk/generator.d.ts +5 -0
  11. package/dist/build-spk/generator.js +103 -107
  12. package/dist/build-spk/install-wizard.d.ts +20 -0
  13. package/dist/build-spk/install-wizard.js +76 -0
  14. package/dist/build-spk/native-lifecycle.d.ts +5 -0
  15. package/dist/build-spk/native-lifecycle.js +12 -2
  16. package/dist/build-spk/resource-worker.d.ts +9 -4
  17. package/dist/build-spk/resource-worker.js +15 -6
  18. package/dist/build-spk/share-combobox.d.ts +3 -0
  19. package/dist/build-spk/share-combobox.js +27 -0
  20. package/dist/build-spk/uninstall-wizard.d.ts +14 -0
  21. package/dist/build-spk/uninstall-wizard.js +33 -0
  22. package/dist/build-spk/wizard-i18n.d.ts +18 -0
  23. package/dist/build-spk/wizard-i18n.js +38 -0
  24. package/dist/build-spk/wizard-messages.d.ts +388 -0
  25. package/dist/build-spk/wizard-messages.js +387 -0
  26. package/dist/cli.js +130 -30
  27. package/dist/compose/analyze.d.ts +20 -0
  28. package/dist/compose/analyze.js +75 -11
  29. package/dist/contract/validate.js +33 -1
  30. package/dist/contract/web-launch.d.ts +22 -0
  31. package/dist/contract/web-launch.js +37 -0
  32. package/dist/deploy/deploy.d.ts +3 -0
  33. package/dist/deploy/deploy.js +11 -2
  34. package/dist/error-registry.js +60 -1
  35. package/dist/host/open-url.d.ts +2 -0
  36. package/dist/host/open-url.js +4 -1
  37. package/dist/images/pin.d.ts +52 -0
  38. package/dist/images/pin.js +249 -0
  39. package/dist/init.d.ts +27 -3
  40. package/dist/init.js +104 -15
  41. package/dist/inspect.d.ts +3 -0
  42. package/dist/inspect.js +15 -3
  43. package/dist/standalone/background.d.ts +21 -0
  44. package/dist/standalone/background.js +52 -0
  45. package/dist/standalone/binary.d.ts +1 -0
  46. package/dist/standalone/binary.js +1 -1
  47. package/dist/standalone/build.d.ts +2 -0
  48. package/dist/standalone/build.js +38 -6
  49. package/dist/standalone/dsm-window.js +2 -2
  50. package/dist/standalone/helper-inventory.d.ts +15 -0
  51. package/dist/standalone/helper-inventory.js +9 -0
  52. package/dist/standalone/helper.d.ts +1 -0
  53. package/dist/standalone/helper.js +28 -10
  54. package/dist/standalone/host-adapter.d.ts +1 -1
  55. package/dist/standalone/host-adapter.js +33 -15
  56. package/dist/standalone/host-file-navigation.d.ts +7 -0
  57. package/dist/standalone/host-file-navigation.js +172 -0
  58. package/dist/standalone/inspect-helper.js +9 -4
  59. package/dist/standalone/inspect-spk.d.ts +1 -1
  60. package/dist/standalone/inspect-spk.js +200 -7
  61. package/dist/standalone/job-diagnostics.d.ts +1 -0
  62. package/dist/standalone/job-diagnostics.js +49 -0
  63. package/dist/standalone/lifecycle.js +12 -2
  64. package/dist/standalone/manifest.d.ts +15 -2
  65. package/dist/standalone/manifest.js +37 -6
  66. package/dist/standalone/native-layout.d.ts +74 -0
  67. package/dist/standalone/native-layout.js +318 -0
  68. package/dist/standalone/resource.d.ts +11 -0
  69. package/dist/standalone/resource.js +13 -0
  70. package/dist/standalone/root-window.d.ts +3 -1
  71. package/dist/standalone/root-window.js +156 -38
  72. package/dist/standalone/shared-folder.d.ts +39 -0
  73. package/dist/standalone/shared-folder.js +141 -0
  74. package/dist/standalone/spk.d.ts +2 -0
  75. package/dist/standalone/spk.js +33 -3
  76. package/dist/standalone/worker-contract-json.d.ts +8 -0
  77. package/dist/standalone/worker-contract-json.js +141 -0
  78. package/dist/standalone/worker-contract.d.ts +189 -0
  79. package/dist/standalone/worker-contract.js +175 -0
  80. package/dist/standalone/worker-registry.d.ts +40 -0
  81. package/dist/standalone/worker-registry.js +167 -0
  82. package/dist/templates/_daemon/go.mod +2 -0
  83. package/dist/templates/_gateway/auth.go +101 -0
  84. package/dist/templates/_gateway/auth_test.go +216 -0
  85. package/dist/templates/_gateway/cgi.go +133 -0
  86. package/dist/templates/_gateway/cgi_test.go +156 -0
  87. package/dist/templates/_gateway/csrf.go +73 -0
  88. package/dist/templates/_gateway/csrf_test.go +155 -0
  89. package/dist/templates/_gateway/directory.go +108 -0
  90. package/dist/templates/_gateway/directory_test.go +202 -0
  91. package/dist/templates/_gateway/gateway.go +412 -0
  92. package/dist/templates/_gateway/gateway_test.go +676 -0
  93. package/dist/templates/_gateway/go.mod +3 -0
  94. package/dist/templates/_gateway/groups.go +66 -0
  95. package/dist/templates/_gateway/main.go +45 -0
  96. package/dist/templates/binary/synology-app.yaml +1 -1
  97. package/dist/templates/compose-import/compose.yaml +1 -1
  98. package/dist/templates/compose-import/synology-app.yaml +1 -1
  99. package/dist/templates/hello-files/compose.yaml +1 -1
  100. package/dist/templates/hello-files/synology-app.yaml +1 -1
  101. package/dist/templates/hello-web/compose.yaml +5 -2
  102. package/dist/templates/hello-web/synology-app.yaml +4 -1
  103. package/dist/templates/hello-web-page/compose.yaml +5 -2
  104. package/dist/templates/hello-web-page/synology-app.yaml +4 -1
  105. package/dist/templates/native-go/README.md +93 -4
  106. package/dist/templates/native-go/backend/THIRD_PARTY_NOTICES.txt +3 -1
  107. package/dist/templates/native-go/backend/cmd/app/main.go +17 -0
  108. package/dist/templates/native-go/backend/cmd/app/sdk_main.go +60 -0
  109. package/dist/templates/native-go/backend/cmd/background-worker/main.go +38 -0
  110. package/dist/templates/native-go/backend/cmd/helper/main.go +10 -1
  111. package/dist/templates/native-go/backend/cmd/helper/sdk_registry.go +19 -0
  112. package/dist/templates/native-go/backend/go.mod +5 -3
  113. package/dist/templates/native-go/backend/go.sum +4 -4
  114. package/dist/templates/native-go/backend/internal/api/registry.go +17 -6
  115. package/dist/templates/native-go/backend/internal/api/server.go +7 -1
  116. package/dist/templates/native-go/backend/internal/app/background.go +270 -0
  117. package/dist/templates/native-go/backend/internal/app/background_none.go +8 -0
  118. package/dist/templates/native-go/backend/internal/app/background_owner.go +59 -0
  119. package/dist/templates/native-go/backend/internal/app/background_owner_test.go +145 -0
  120. package/dist/templates/native-go/backend/internal/app/background_schedule.go +74 -0
  121. package/dist/templates/native-go/backend/internal/app/background_schedule_test.go +62 -0
  122. package/dist/templates/native-go/backend/internal/app/background_test.go +346 -0
  123. package/dist/templates/native-go/backend/internal/app/integration_state.go +16 -0
  124. package/dist/templates/native-go/backend/internal/app/migrations.go +41 -0
  125. package/dist/templates/native-go/backend/internal/app/migrations_test.go +41 -0
  126. package/dist/templates/native-go/backend/internal/app/nas_cgi_artifact_test.go +8 -0
  127. package/dist/templates/native-go/backend/internal/app/routes.go +17 -3
  128. package/dist/templates/native-go/backend/internal/app/routes_test.go +20 -3
  129. package/dist/templates/native-go/backend/internal/app/sdk_jobs.go +70 -0
  130. package/dist/templates/native-go/backend/internal/app/sdk_jobs_test.go +116 -0
  131. package/dist/templates/native-go/backend/internal/app/sdk_routes.go +174 -0
  132. package/dist/templates/native-go/backend/internal/app/session_files.go +15 -0
  133. package/dist/templates/native-go/backend/internal/app/session_files_test.go +26 -0
  134. package/dist/templates/native-go/backend/internal/app/shared_folder.go +144 -0
  135. package/dist/templates/native-go/backend/internal/app/shared_folder_test.go +158 -0
  136. package/dist/templates/native-go/backend/internal/background/access.go +57 -0
  137. package/dist/templates/native-go/backend/internal/background/owner_test.go +126 -0
  138. package/dist/templates/native-go/backend/internal/background/runner.go +185 -0
  139. package/dist/templates/native-go/backend/internal/background/runner_test.go +209 -0
  140. package/dist/templates/native-go/backend/internal/background/schedule.go +300 -0
  141. package/dist/templates/native-go/backend/internal/background/schedule_test.go +335 -0
  142. package/dist/templates/native-go/backend/internal/background/store.go +807 -0
  143. package/dist/templates/native-go/backend/internal/background/store_test.go +407 -0
  144. package/dist/templates/native-go/backend/internal/datamigrate/migrate.go +191 -0
  145. package/dist/templates/native-go/backend/internal/datamigrate/migrate_test.go +177 -0
  146. package/dist/templates/native-go/backend/internal/filestation/browse_test.go +67 -0
  147. package/dist/templates/native-go/backend/internal/filestation/client.go +251 -0
  148. package/dist/templates/native-go/backend/internal/filestation/client_test.go +155 -0
  149. package/dist/templates/native-go/backend/internal/filestation/doc.go +4 -0
  150. package/dist/templates/native-go/backend/internal/filestation/read_file_test.go +90 -0
  151. package/dist/templates/native-go/backend/internal/filestation/repository.go +207 -0
  152. package/dist/templates/native-go/backend/internal/filestation/repository_test.go +104 -0
  153. package/dist/templates/native-go/backend/internal/filestation/sdk_session.go +241 -0
  154. package/dist/templates/native-go/backend/internal/filestation/sdk_session_test.go +183 -0
  155. package/dist/templates/native-go/backend/internal/filestation/service.go +254 -0
  156. package/dist/templates/native-go/backend/internal/filestation/service_test.go +94 -0
  157. package/dist/templates/native-go/backend/internal/filestation/session_semantics_test.go +383 -0
  158. package/dist/templates/native-go/backend/internal/filestation/write.go +72 -0
  159. package/dist/templates/native-go/backend/internal/filestation/write_test.go +123 -0
  160. package/dist/templates/native-go/backend/internal/helper/background_proof.go +163 -0
  161. package/dist/templates/native-go/backend/internal/helper/background_proof_contract.go +46 -0
  162. package/dist/templates/native-go/backend/internal/helper/background_proof_test.go +161 -0
  163. package/dist/templates/native-go/backend/internal/helper/data_contract.go +3 -0
  164. package/dist/templates/native-go/backend/internal/helper/data_protocol.go +3 -0
  165. package/dist/templates/native-go/backend/internal/helper/data_protocol_test.go +1 -1
  166. package/dist/templates/native-go/backend/internal/helper/grant_authority.go +3 -0
  167. package/dist/templates/native-go/backend/internal/helper/grant_authority_test.go +1 -1
  168. package/dist/templates/native-go/backend/internal/helper/grant_repository_linux.go +2 -1
  169. package/dist/templates/native-go/backend/internal/helper/grant_repository_linux_test.go +4 -3
  170. package/dist/templates/native-go/backend/internal/helper/grant_snapshot.go +3 -0
  171. package/dist/templates/native-go/backend/internal/helper/jobcontract/bindings.go +48 -0
  172. package/dist/templates/native-go/backend/internal/helper/jobcontract/contract_test.go +436 -0
  173. package/dist/templates/native-go/backend/internal/helper/jobcontract/decode.go +185 -0
  174. package/dist/templates/native-go/backend/internal/helper/jobcontract/digest.go +55 -0
  175. package/dist/templates/native-go/backend/internal/helper/jobcontract/registry.go +85 -0
  176. package/dist/templates/native-go/backend/internal/helper/jobcontract/registry_test.go +73 -0
  177. package/dist/templates/native-go/backend/internal/helper/jobcontract/result.go +53 -0
  178. package/dist/templates/native-go/backend/internal/helper/jobcontract/stub.go +8 -0
  179. package/dist/templates/native-go/backend/internal/helper/jobcontract/testdata/input-digests.json +127 -0
  180. package/dist/templates/native-go/backend/internal/helper/jobcontract/types.go +234 -0
  181. package/dist/templates/native-go/backend/internal/helper/jobcontract/types_test.go +29 -0
  182. package/dist/templates/native-go/backend/internal/helper/jobcontract/validate.go +462 -0
  183. package/dist/templates/native-go/backend/internal/helper/legacy_authority_schema_linux_test.go +34 -0
  184. package/dist/templates/native-go/backend/internal/helper/legacy_authority_schema_test.go +6 -0
  185. package/dist/templates/native-go/backend/internal/helper/management.go +79 -0
  186. package/dist/templates/native-go/backend/internal/helper/observation.go +42 -2
  187. package/dist/templates/native-go/backend/internal/helper/observation_health_test.go +13 -1
  188. package/dist/templates/native-go/backend/internal/helper/observer_diagnostic.go +56 -10
  189. package/dist/templates/native-go/backend/internal/helper/observer_diagnostic_linux_test.go +6 -0
  190. package/dist/templates/native-go/backend/internal/helper/observer_diagnostic_writer.go +40 -0
  191. package/dist/templates/native-go/backend/internal/helper/process_linux.go +3 -0
  192. package/dist/templates/native-go/backend/internal/helper/query_deadline_linux_test.go +115 -0
  193. package/dist/templates/native-go/backend/internal/helper/query_pending_diagnostic_test.go +254 -0
  194. package/dist/templates/native-go/backend/internal/helper/relaxed_invalidation.go +3 -0
  195. package/dist/templates/native-go/backend/internal/helper/s1r_actor_races_linux_test.go +23 -4
  196. package/dist/templates/native-go/backend/internal/helper/sdk_assembly_linux.go +51 -0
  197. package/dist/templates/native-go/backend/internal/helper/sdk_attach.go +83 -0
  198. package/dist/templates/native-go/backend/internal/helper/sdk_attach_contract.go +32 -0
  199. package/dist/templates/native-go/backend/internal/helper/sdk_attach_test.go +184 -0
  200. package/dist/templates/native-go/backend/internal/helper/sdk_authority_schema_test.go +6 -0
  201. package/dist/templates/native-go/backend/internal/helper/sdk_background_authority.go +832 -0
  202. package/dist/templates/native-go/backend/internal/helper/sdk_background_authority_test.go +714 -0
  203. package/dist/templates/native-go/backend/internal/helper/sdk_background_invalidation.go +218 -0
  204. package/dist/templates/native-go/backend/internal/helper/sdk_background_lease.go +218 -0
  205. package/dist/templates/native-go/backend/internal/helper/sdk_background_snapshot.go +110 -0
  206. package/dist/templates/native-go/backend/internal/helper/sdk_background_store_linux_test.go +261 -0
  207. package/dist/templates/native-go/backend/internal/helper/sdk_background_store_test.go +58 -0
  208. package/dist/templates/native-go/backend/internal/helper/sdk_bindings.go +60 -0
  209. package/dist/templates/native-go/backend/internal/helper/sdk_data_contract.go +251 -0
  210. package/dist/templates/native-go/backend/internal/helper/sdk_data_protocol.go +424 -0
  211. package/dist/templates/native-go/backend/internal/helper/sdk_dispatch_absence_test.go +51 -0
  212. package/dist/templates/native-go/backend/internal/helper/sdk_display.go +488 -0
  213. package/dist/templates/native-go/backend/internal/helper/sdk_display_contract.go +121 -0
  214. package/dist/templates/native-go/backend/internal/helper/sdk_display_test.go +459 -0
  215. package/dist/templates/native-go/backend/internal/helper/sdk_grant_authority.go +559 -0
  216. package/dist/templates/native-go/backend/internal/helper/sdk_grant_repository_linux.go +417 -0
  217. package/dist/templates/native-go/backend/internal/helper/sdk_grant_snapshot.go +94 -0
  218. package/dist/templates/native-go/backend/internal/helper/sdk_history.go +80 -0
  219. package/dist/templates/native-go/backend/internal/helper/sdk_history_test.go +76 -0
  220. package/dist/templates/native-go/backend/internal/helper/sdk_job.go +697 -0
  221. package/dist/templates/native-go/backend/internal/helper/sdk_job_child_linux.go +309 -0
  222. package/dist/templates/native-go/backend/internal/helper/sdk_job_contract.go +122 -0
  223. package/dist/templates/native-go/backend/internal/helper/sdk_job_linux_test.go +159 -0
  224. package/dist/templates/native-go/backend/internal/helper/sdk_job_process_linux.go +327 -0
  225. package/dist/templates/native-go/backend/internal/helper/sdk_job_test.go +501 -0
  226. package/dist/templates/native-go/backend/internal/helper/sdk_job_vm_linux_test.go +343 -0
  227. package/dist/templates/native-go/backend/internal/helper/sdk_journal.go +77 -0
  228. package/dist/templates/native-go/backend/internal/helper/sdk_journal_linux.go +244 -0
  229. package/dist/templates/native-go/backend/internal/helper/sdk_journal_linux_test.go +295 -0
  230. package/dist/templates/native-go/backend/internal/helper/sdk_journal_test.go +71 -0
  231. package/dist/templates/native-go/backend/internal/helper/sdk_picker_test.go +50 -0
  232. package/dist/templates/native-go/backend/internal/helper/sdk_process_linux.go +184 -0
  233. package/dist/templates/native-go/backend/internal/helper/sdk_public_vm_linux_test.go +129 -0
  234. package/dist/templates/native-go/backend/internal/helper/sdk_relaxed_invalidation.go +242 -0
  235. package/dist/templates/native-go/backend/internal/helper/sdk_rpc.go +299 -0
  236. package/dist/templates/native-go/backend/internal/helper/sdk_rpc_contract.go +70 -0
  237. package/dist/templates/native-go/backend/internal/helper/sdk_rpc_test.go +135 -0
  238. package/dist/templates/native-go/backend/internal/helper/sdk_server_linux.go +152 -0
  239. package/dist/templates/native-go/backend/internal/helper/sdk_session.go +677 -0
  240. package/dist/templates/native-go/backend/internal/helper/sdk_session_contract.go +72 -0
  241. package/dist/templates/native-go/backend/internal/helper/sdk_session_fence_test.go +215 -0
  242. package/dist/templates/native-go/backend/internal/helper/sdk_session_test.go +475 -0
  243. package/dist/templates/native-go/backend/internal/helper/sdk_supervisor_frame.go +78 -0
  244. package/dist/templates/native-go/backend/internal/helper/sdk_supervisor_linux.go +414 -0
  245. package/dist/templates/native-go/backend/internal/helper/sdk_transport.go +79 -0
  246. package/dist/templates/native-go/backend/internal/helper/sdk_transport_linux.go +82 -0
  247. package/dist/templates/native-go/backend/internal/helper/sdk_transport_test.go +64 -0
  248. package/dist/templates/native-go/backend/internal/helper/server_linux.go +3 -0
  249. package/dist/templates/native-go/backend/internal/helper/stale_management_linux_test.go +126 -0
  250. package/dist/templates/native-go/backend/internal/helper/stale_management_test.go +122 -0
  251. package/dist/templates/native-go/backend/internal/helper/startup_diagnostic.go +68 -0
  252. package/dist/templates/native-go/backend/internal/helper/startup_diagnostic_linux_test.go +126 -0
  253. package/dist/templates/native-go/backend/internal/helper/startup_diagnostic_test.go +117 -0
  254. package/dist/templates/native-go/backend/internal/helper/status.go +22 -13
  255. package/dist/templates/native-go/backend/internal/helper/status_test.go +45 -0
  256. package/dist/templates/native-go/backend/internal/helper/supervision.go +1 -1
  257. package/dist/templates/native-go/backend/internal/helper/supervisor_frame.go +3 -0
  258. package/dist/templates/native-go/backend/internal/helper/supervisor_linux.go +6 -2
  259. package/dist/templates/native-go/backend/internal/helper/unit_connection_test.go +22 -4
  260. package/dist/templates/native-go/backend/internal/helper/unit_linux.go +7 -3
  261. package/dist/templates/native-go/backend/internal/helper/unit_query_linux.go +5 -1
  262. package/dist/templates/native-go/backend/internal/helper/write_files_linux.go +7 -4
  263. package/dist/templates/native-go/backend/internal/helper/write_files_linux_test.go +26 -0
  264. package/dist/templates/native-go/dsm-package.yaml +1 -1
  265. package/dist/templates/native-go-background/BACKGROUND.md +111 -0
  266. package/dist/templates/native-go-background/backend/internal/app/background_on.go +7 -0
  267. package/dist/templates/native-go-background/backend/internal/app/background_routes_test.go +32 -0
  268. package/dist/templates/native-go-background/frontend/src/background/BackgroundPanel.vue +178 -0
  269. package/dist/templates/native-go-background/frontend/src/background/i18n/de.json +83 -0
  270. package/dist/templates/native-go-background/frontend/src/background/i18n/en.json +83 -0
  271. package/dist/templates/native-go-background/frontend/src/background/i18n/es.json +83 -0
  272. package/dist/templates/native-go-background/frontend/src/background/i18n/fr.json +83 -0
  273. package/dist/templates/native-go-background/frontend/src/background/i18n/it.json +83 -0
  274. package/dist/templates/native-go-background/frontend/src/background/i18n/ja.json +83 -0
  275. package/dist/templates/native-go-background/frontend/src/background/i18n/ko.json +83 -0
  276. package/dist/templates/native-go-background/frontend/src/background/i18n/zh-CN.json +83 -0
  277. package/dist/templates/native-go-background/frontend/src/background/i18n/zh-TW.json +83 -0
  278. package/dist/templates/native-go-background/frontend/src/background/i18n.ts +19 -0
  279. package/dist/templates/native-go-background/frontend/src/background/picker-provider.ts +13 -0
  280. package/dist/templates/native-go-background/frontend/test/background.test.ts +179 -0
  281. package/dist/templates/native-go-integration/backend/internal/app/personal.go +2 -2
  282. package/dist/templates/native-go-integration/backend/internal/app/personal_test.go +37 -0
  283. package/dist/templates/native-go-vue/README.md +38 -7
  284. package/dist/templates/native-go-vue/frontend/DESIGN.md +15 -3
  285. package/dist/templates/native-go-vue/frontend/README-JOBS.md +75 -0
  286. package/dist/templates/native-go-vue/frontend/README-M2.md +64 -0
  287. package/dist/templates/native-go-vue/frontend/package-lock.json +5 -4
  288. package/dist/templates/native-go-vue/frontend/package.json +1 -1
  289. package/dist/templates/native-go-vue/frontend/src/App.vue +39 -11
  290. package/dist/templates/native-go-vue/frontend/src/M2App.vue +57 -0
  291. package/dist/templates/native-go-vue/frontend/src/SDKApp.vue +203 -0
  292. package/dist/templates/native-go-vue/frontend/src/jobs/InteractiveJobForm.vue +70 -0
  293. package/dist/templates/native-go-vue/frontend/src/jobs/JobsAdminPanel.vue +33 -0
  294. package/dist/templates/native-go-vue/frontend/src/jobs/JobsPanel.vue +135 -0
  295. package/dist/templates/native-go-vue/frontend/src/jobs/connected-provider.ts +179 -0
  296. package/dist/templates/native-go-vue/frontend/src/jobs/i18n/de.json +62 -0
  297. package/dist/templates/native-go-vue/frontend/src/jobs/i18n/en.json +62 -0
  298. package/dist/templates/native-go-vue/frontend/src/jobs/i18n/es.json +62 -0
  299. package/dist/templates/native-go-vue/frontend/src/jobs/i18n/fr.json +62 -0
  300. package/dist/templates/native-go-vue/frontend/src/jobs/i18n/it.json +62 -0
  301. package/dist/templates/native-go-vue/frontend/src/jobs/i18n/ja.json +62 -0
  302. package/dist/templates/native-go-vue/frontend/src/jobs/i18n/ko.json +62 -0
  303. package/dist/templates/native-go-vue/frontend/src/jobs/i18n/zh-CN.json +62 -0
  304. package/dist/templates/native-go-vue/frontend/src/jobs/i18n/zh-TW.json +62 -0
  305. package/dist/templates/native-go-vue/frontend/src/jobs/i18n.ts +15 -0
  306. package/dist/templates/native-go-vue/frontend/src/jobs/mock-provider.ts +67 -0
  307. package/dist/templates/native-go-vue/frontend/src/jobs/provider.ts +60 -0
  308. package/dist/templates/native-go-vue/frontend/src/jobs/validate.ts +44 -0
  309. package/dist/templates/native-go-vue/frontend/src/m2-main.ts +21 -0
  310. package/dist/templates/native-go-vue/frontend/src/m2-style.css +7 -0
  311. package/dist/templates/native-go-vue/frontend/src/nas/M2Files.vue +94 -0
  312. package/dist/templates/native-go-vue/frontend/src/nas/M2PathPicker.vue +70 -0
  313. package/dist/templates/native-go-vue/frontend/src/nas/M2Settings.vue +69 -0
  314. package/dist/templates/native-go-vue/frontend/src/nas/i18n/m2/de.json +56 -0
  315. package/dist/templates/native-go-vue/frontend/src/nas/i18n/m2/en.json +56 -0
  316. package/dist/templates/native-go-vue/frontend/src/nas/i18n/m2/es.json +56 -0
  317. package/dist/templates/native-go-vue/frontend/src/nas/i18n/m2/fr.json +56 -0
  318. package/dist/templates/native-go-vue/frontend/src/nas/i18n/m2/it.json +56 -0
  319. package/dist/templates/native-go-vue/frontend/src/nas/i18n/m2/ja.json +56 -0
  320. package/dist/templates/native-go-vue/frontend/src/nas/i18n/m2/ko.json +56 -0
  321. package/dist/templates/native-go-vue/frontend/src/nas/i18n/m2/zh-CN.json +56 -0
  322. package/dist/templates/native-go-vue/frontend/src/nas/i18n/m2/zh-TW.json +56 -0
  323. package/dist/templates/native-go-vue/frontend/src/nas/m2-contract.ts +33 -0
  324. package/dist/templates/native-go-vue/frontend/src/nas/m2-i18n.ts +24 -0
  325. package/dist/templates/native-go-vue/frontend/src/nas/m2-provider.ts +104 -0
  326. package/dist/templates/native-go-vue/frontend/src/nas/use-m2-request.ts +18 -0
  327. package/dist/templates/native-go-vue/frontend/src/sdk-main.ts +39 -0
  328. package/dist/templates/native-go-vue/frontend/src/shell/AppShell.vue +48 -0
  329. package/dist/templates/native-go-vue/frontend/src/shell/i18n/de.json +10 -0
  330. package/dist/templates/native-go-vue/frontend/src/shell/i18n/en.json +10 -0
  331. package/dist/templates/native-go-vue/frontend/src/shell/i18n/es.json +10 -0
  332. package/dist/templates/native-go-vue/frontend/src/shell/i18n/fr.json +10 -0
  333. package/dist/templates/native-go-vue/frontend/src/shell/i18n/it.json +10 -0
  334. package/dist/templates/native-go-vue/frontend/src/shell/i18n/ja.json +10 -0
  335. package/dist/templates/native-go-vue/frontend/src/shell/i18n/ko.json +10 -0
  336. package/dist/templates/native-go-vue/frontend/src/shell/i18n/zh-CN.json +10 -0
  337. package/dist/templates/native-go-vue/frontend/src/shell/i18n/zh-TW.json +10 -0
  338. package/dist/templates/native-go-vue/frontend/src/shell/i18n.ts +17 -0
  339. package/dist/templates/native-go-vue/frontend/src/shell/pages.ts +34 -0
  340. package/dist/templates/native-go-vue/frontend/src/style.css +2 -6
  341. package/dist/templates/native-go-vue/frontend/test/apps.test.ts +21 -0
  342. package/dist/templates/native-go-vue/frontend/test/jobs-connected.test.ts +163 -0
  343. package/dist/templates/native-go-vue/frontend/test/jobs-preview.html +22 -0
  344. package/dist/templates/native-go-vue/frontend/test/jobs.test.ts +176 -0
  345. package/dist/templates/native-go-vue/frontend/test/m2-preview.html +27 -0
  346. package/dist/templates/native-go-vue/frontend/test/m2-provider.test.ts +87 -0
  347. package/dist/templates/native-go-vue/frontend/test/m2-ui.test.ts +209 -0
  348. package/dist/templates/native-go-vue/frontend/test/native-controls.test.ts +27 -0
  349. package/dist/templates/native-go-vue/frontend/test/picker-wire.test.ts +110 -0
  350. package/dist/templates/native-go-vue/frontend/test/shell-preview.html +19 -0
  351. package/dist/templates/native-go-vue/frontend/test/shell-sdk.test.ts +73 -0
  352. package/dist/templates/native-go-vue/frontend/test/shell-ui.test.ts +114 -0
  353. package/dist/templates/native-go-vue/frontend/test/shell.test.ts +45 -0
  354. package/dist/templates/native-go-vue/frontend/vite.config.ts +2 -2
  355. package/dist/validate.js +6 -3
  356. package/package.json +1 -1
  357. package/schema/synology-app.schema.json +19 -0
  358. package/skills/reference/create.md +4 -0
  359. package/templates/_daemon/go.mod +2 -0
  360. package/templates/_gateway/auth.go +101 -0
  361. package/templates/_gateway/auth_test.go +216 -0
  362. package/templates/_gateway/cgi.go +133 -0
  363. package/templates/_gateway/cgi_test.go +156 -0
  364. package/templates/_gateway/csrf.go +73 -0
  365. package/templates/_gateway/csrf_test.go +155 -0
  366. package/templates/_gateway/directory.go +108 -0
  367. package/templates/_gateway/directory_test.go +202 -0
  368. package/templates/_gateway/gateway.go +412 -0
  369. package/templates/_gateway/gateway_test.go +676 -0
  370. package/templates/_gateway/go.mod +3 -0
  371. package/templates/_gateway/groups.go +66 -0
  372. package/templates/_gateway/main.go +45 -0
  373. package/templates/binary/synology-app.yaml +1 -1
  374. package/templates/compose-import/compose.yaml +1 -1
  375. package/templates/compose-import/synology-app.yaml +1 -1
  376. package/templates/hello-files/compose.yaml +1 -1
  377. package/templates/hello-files/synology-app.yaml +1 -1
  378. package/templates/hello-web/compose.yaml +5 -2
  379. package/templates/hello-web/synology-app.yaml +4 -1
  380. package/templates/hello-web-page/compose.yaml +5 -2
  381. package/templates/hello-web-page/synology-app.yaml +4 -1
  382. package/templates/native-go/README.md +93 -4
  383. package/templates/native-go/backend/THIRD_PARTY_NOTICES.txt +3 -1
  384. package/templates/native-go/backend/cmd/app/main.go +17 -0
  385. package/templates/native-go/backend/cmd/app/sdk_main.go +60 -0
  386. package/templates/native-go/backend/cmd/background-worker/main.go +38 -0
  387. package/templates/native-go/backend/cmd/helper/main.go +10 -1
  388. package/templates/native-go/backend/cmd/helper/sdk_registry.go +19 -0
  389. package/templates/native-go/backend/go.mod +5 -3
  390. package/templates/native-go/backend/go.sum +4 -4
  391. package/templates/native-go/backend/internal/api/registry.go +17 -6
  392. package/templates/native-go/backend/internal/api/server.go +7 -1
  393. package/templates/native-go/backend/internal/app/background.go +270 -0
  394. package/templates/native-go/backend/internal/app/background_none.go +8 -0
  395. package/templates/native-go/backend/internal/app/background_owner.go +59 -0
  396. package/templates/native-go/backend/internal/app/background_owner_test.go +145 -0
  397. package/templates/native-go/backend/internal/app/background_schedule.go +74 -0
  398. package/templates/native-go/backend/internal/app/background_schedule_test.go +62 -0
  399. package/templates/native-go/backend/internal/app/background_test.go +346 -0
  400. package/templates/native-go/backend/internal/app/integration_state.go +16 -0
  401. package/templates/native-go/backend/internal/app/migrations.go +41 -0
  402. package/templates/native-go/backend/internal/app/migrations_test.go +41 -0
  403. package/templates/native-go/backend/internal/app/nas_cgi_artifact_test.go +8 -0
  404. package/templates/native-go/backend/internal/app/routes.go +17 -3
  405. package/templates/native-go/backend/internal/app/routes_test.go +20 -3
  406. package/templates/native-go/backend/internal/app/sdk_jobs.go +70 -0
  407. package/templates/native-go/backend/internal/app/sdk_jobs_test.go +116 -0
  408. package/templates/native-go/backend/internal/app/sdk_routes.go +174 -0
  409. package/templates/native-go/backend/internal/app/session_files.go +15 -0
  410. package/templates/native-go/backend/internal/app/session_files_test.go +26 -0
  411. package/templates/native-go/backend/internal/app/shared_folder.go +144 -0
  412. package/templates/native-go/backend/internal/app/shared_folder_test.go +158 -0
  413. package/templates/native-go/backend/internal/background/access.go +57 -0
  414. package/templates/native-go/backend/internal/background/owner_test.go +126 -0
  415. package/templates/native-go/backend/internal/background/runner.go +185 -0
  416. package/templates/native-go/backend/internal/background/runner_test.go +209 -0
  417. package/templates/native-go/backend/internal/background/schedule.go +300 -0
  418. package/templates/native-go/backend/internal/background/schedule_test.go +335 -0
  419. package/templates/native-go/backend/internal/background/store.go +807 -0
  420. package/templates/native-go/backend/internal/background/store_test.go +407 -0
  421. package/templates/native-go/backend/internal/datamigrate/migrate.go +191 -0
  422. package/templates/native-go/backend/internal/datamigrate/migrate_test.go +177 -0
  423. package/templates/native-go/backend/internal/filestation/browse_test.go +67 -0
  424. package/templates/native-go/backend/internal/filestation/client.go +251 -0
  425. package/templates/native-go/backend/internal/filestation/client_test.go +155 -0
  426. package/templates/native-go/backend/internal/filestation/doc.go +4 -0
  427. package/templates/native-go/backend/internal/filestation/read_file_test.go +90 -0
  428. package/templates/native-go/backend/internal/filestation/repository.go +207 -0
  429. package/templates/native-go/backend/internal/filestation/repository_test.go +104 -0
  430. package/templates/native-go/backend/internal/filestation/sdk_session.go +241 -0
  431. package/templates/native-go/backend/internal/filestation/sdk_session_test.go +183 -0
  432. package/templates/native-go/backend/internal/filestation/service.go +254 -0
  433. package/templates/native-go/backend/internal/filestation/service_test.go +94 -0
  434. package/templates/native-go/backend/internal/filestation/session_semantics_test.go +383 -0
  435. package/templates/native-go/backend/internal/filestation/write.go +72 -0
  436. package/templates/native-go/backend/internal/filestation/write_test.go +123 -0
  437. package/templates/native-go/backend/internal/helper/background_proof.go +163 -0
  438. package/templates/native-go/backend/internal/helper/background_proof_contract.go +46 -0
  439. package/templates/native-go/backend/internal/helper/background_proof_test.go +161 -0
  440. package/templates/native-go/backend/internal/helper/data_contract.go +3 -0
  441. package/templates/native-go/backend/internal/helper/data_protocol.go +3 -0
  442. package/templates/native-go/backend/internal/helper/data_protocol_test.go +1 -1
  443. package/templates/native-go/backend/internal/helper/grant_authority.go +3 -0
  444. package/templates/native-go/backend/internal/helper/grant_authority_test.go +1 -1
  445. package/templates/native-go/backend/internal/helper/grant_repository_linux.go +2 -1
  446. package/templates/native-go/backend/internal/helper/grant_repository_linux_test.go +4 -3
  447. package/templates/native-go/backend/internal/helper/grant_snapshot.go +3 -0
  448. package/templates/native-go/backend/internal/helper/jobcontract/bindings.go +48 -0
  449. package/templates/native-go/backend/internal/helper/jobcontract/contract_test.go +436 -0
  450. package/templates/native-go/backend/internal/helper/jobcontract/decode.go +185 -0
  451. package/templates/native-go/backend/internal/helper/jobcontract/digest.go +55 -0
  452. package/templates/native-go/backend/internal/helper/jobcontract/registry.go +85 -0
  453. package/templates/native-go/backend/internal/helper/jobcontract/registry_test.go +73 -0
  454. package/templates/native-go/backend/internal/helper/jobcontract/result.go +53 -0
  455. package/templates/native-go/backend/internal/helper/jobcontract/stub.go +8 -0
  456. package/templates/native-go/backend/internal/helper/jobcontract/testdata/input-digests.json +127 -0
  457. package/templates/native-go/backend/internal/helper/jobcontract/types.go +234 -0
  458. package/templates/native-go/backend/internal/helper/jobcontract/types_test.go +29 -0
  459. package/templates/native-go/backend/internal/helper/jobcontract/validate.go +462 -0
  460. package/templates/native-go/backend/internal/helper/legacy_authority_schema_linux_test.go +34 -0
  461. package/templates/native-go/backend/internal/helper/legacy_authority_schema_test.go +6 -0
  462. package/templates/native-go/backend/internal/helper/management.go +79 -0
  463. package/templates/native-go/backend/internal/helper/observation.go +42 -2
  464. package/templates/native-go/backend/internal/helper/observation_health_test.go +13 -1
  465. package/templates/native-go/backend/internal/helper/observer_diagnostic.go +56 -10
  466. package/templates/native-go/backend/internal/helper/observer_diagnostic_linux_test.go +6 -0
  467. package/templates/native-go/backend/internal/helper/observer_diagnostic_writer.go +40 -0
  468. package/templates/native-go/backend/internal/helper/process_linux.go +3 -0
  469. package/templates/native-go/backend/internal/helper/query_deadline_linux_test.go +115 -0
  470. package/templates/native-go/backend/internal/helper/query_pending_diagnostic_test.go +254 -0
  471. package/templates/native-go/backend/internal/helper/relaxed_invalidation.go +3 -0
  472. package/templates/native-go/backend/internal/helper/s1r_actor_races_linux_test.go +23 -4
  473. package/templates/native-go/backend/internal/helper/sdk_assembly_linux.go +51 -0
  474. package/templates/native-go/backend/internal/helper/sdk_attach.go +83 -0
  475. package/templates/native-go/backend/internal/helper/sdk_attach_contract.go +32 -0
  476. package/templates/native-go/backend/internal/helper/sdk_attach_test.go +184 -0
  477. package/templates/native-go/backend/internal/helper/sdk_authority_schema_test.go +6 -0
  478. package/templates/native-go/backend/internal/helper/sdk_background_authority.go +832 -0
  479. package/templates/native-go/backend/internal/helper/sdk_background_authority_test.go +714 -0
  480. package/templates/native-go/backend/internal/helper/sdk_background_invalidation.go +218 -0
  481. package/templates/native-go/backend/internal/helper/sdk_background_lease.go +218 -0
  482. package/templates/native-go/backend/internal/helper/sdk_background_snapshot.go +110 -0
  483. package/templates/native-go/backend/internal/helper/sdk_background_store_linux_test.go +261 -0
  484. package/templates/native-go/backend/internal/helper/sdk_background_store_test.go +58 -0
  485. package/templates/native-go/backend/internal/helper/sdk_bindings.go +60 -0
  486. package/templates/native-go/backend/internal/helper/sdk_data_contract.go +251 -0
  487. package/templates/native-go/backend/internal/helper/sdk_data_protocol.go +424 -0
  488. package/templates/native-go/backend/internal/helper/sdk_dispatch_absence_test.go +51 -0
  489. package/templates/native-go/backend/internal/helper/sdk_display.go +488 -0
  490. package/templates/native-go/backend/internal/helper/sdk_display_contract.go +121 -0
  491. package/templates/native-go/backend/internal/helper/sdk_display_test.go +459 -0
  492. package/templates/native-go/backend/internal/helper/sdk_grant_authority.go +559 -0
  493. package/templates/native-go/backend/internal/helper/sdk_grant_repository_linux.go +417 -0
  494. package/templates/native-go/backend/internal/helper/sdk_grant_snapshot.go +94 -0
  495. package/templates/native-go/backend/internal/helper/sdk_history.go +80 -0
  496. package/templates/native-go/backend/internal/helper/sdk_history_test.go +76 -0
  497. package/templates/native-go/backend/internal/helper/sdk_job.go +697 -0
  498. package/templates/native-go/backend/internal/helper/sdk_job_child_linux.go +309 -0
  499. package/templates/native-go/backend/internal/helper/sdk_job_contract.go +122 -0
  500. package/templates/native-go/backend/internal/helper/sdk_job_linux_test.go +159 -0
  501. package/templates/native-go/backend/internal/helper/sdk_job_process_linux.go +327 -0
  502. package/templates/native-go/backend/internal/helper/sdk_job_test.go +501 -0
  503. package/templates/native-go/backend/internal/helper/sdk_job_vm_linux_test.go +343 -0
  504. package/templates/native-go/backend/internal/helper/sdk_journal.go +77 -0
  505. package/templates/native-go/backend/internal/helper/sdk_journal_linux.go +244 -0
  506. package/templates/native-go/backend/internal/helper/sdk_journal_linux_test.go +295 -0
  507. package/templates/native-go/backend/internal/helper/sdk_journal_test.go +71 -0
  508. package/templates/native-go/backend/internal/helper/sdk_picker_test.go +50 -0
  509. package/templates/native-go/backend/internal/helper/sdk_process_linux.go +184 -0
  510. package/templates/native-go/backend/internal/helper/sdk_public_vm_linux_test.go +129 -0
  511. package/templates/native-go/backend/internal/helper/sdk_relaxed_invalidation.go +242 -0
  512. package/templates/native-go/backend/internal/helper/sdk_rpc.go +299 -0
  513. package/templates/native-go/backend/internal/helper/sdk_rpc_contract.go +70 -0
  514. package/templates/native-go/backend/internal/helper/sdk_rpc_test.go +135 -0
  515. package/templates/native-go/backend/internal/helper/sdk_server_linux.go +152 -0
  516. package/templates/native-go/backend/internal/helper/sdk_session.go +677 -0
  517. package/templates/native-go/backend/internal/helper/sdk_session_contract.go +72 -0
  518. package/templates/native-go/backend/internal/helper/sdk_session_fence_test.go +215 -0
  519. package/templates/native-go/backend/internal/helper/sdk_session_test.go +475 -0
  520. package/templates/native-go/backend/internal/helper/sdk_supervisor_frame.go +78 -0
  521. package/templates/native-go/backend/internal/helper/sdk_supervisor_linux.go +414 -0
  522. package/templates/native-go/backend/internal/helper/sdk_transport.go +79 -0
  523. package/templates/native-go/backend/internal/helper/sdk_transport_linux.go +82 -0
  524. package/templates/native-go/backend/internal/helper/sdk_transport_test.go +64 -0
  525. package/templates/native-go/backend/internal/helper/server_linux.go +3 -0
  526. package/templates/native-go/backend/internal/helper/stale_management_linux_test.go +126 -0
  527. package/templates/native-go/backend/internal/helper/stale_management_test.go +122 -0
  528. package/templates/native-go/backend/internal/helper/startup_diagnostic.go +68 -0
  529. package/templates/native-go/backend/internal/helper/startup_diagnostic_linux_test.go +126 -0
  530. package/templates/native-go/backend/internal/helper/startup_diagnostic_test.go +117 -0
  531. package/templates/native-go/backend/internal/helper/status.go +22 -13
  532. package/templates/native-go/backend/internal/helper/status_test.go +45 -0
  533. package/templates/native-go/backend/internal/helper/supervision.go +1 -1
  534. package/templates/native-go/backend/internal/helper/supervisor_frame.go +3 -0
  535. package/templates/native-go/backend/internal/helper/supervisor_linux.go +6 -2
  536. package/templates/native-go/backend/internal/helper/unit_connection_test.go +22 -4
  537. package/templates/native-go/backend/internal/helper/unit_linux.go +7 -3
  538. package/templates/native-go/backend/internal/helper/unit_query_linux.go +5 -1
  539. package/templates/native-go/backend/internal/helper/write_files_linux.go +7 -4
  540. package/templates/native-go/backend/internal/helper/write_files_linux_test.go +26 -0
  541. package/templates/native-go/dsm-package.yaml +1 -1
  542. package/templates/native-go-background/BACKGROUND.md +111 -0
  543. package/templates/native-go-background/backend/internal/app/background_on.go +7 -0
  544. package/templates/native-go-background/backend/internal/app/background_routes_test.go +32 -0
  545. package/templates/native-go-background/frontend/src/background/BackgroundPanel.vue +178 -0
  546. package/templates/native-go-background/frontend/src/background/i18n/de.json +83 -0
  547. package/templates/native-go-background/frontend/src/background/i18n/en.json +83 -0
  548. package/templates/native-go-background/frontend/src/background/i18n/es.json +83 -0
  549. package/templates/native-go-background/frontend/src/background/i18n/fr.json +83 -0
  550. package/templates/native-go-background/frontend/src/background/i18n/it.json +83 -0
  551. package/templates/native-go-background/frontend/src/background/i18n/ja.json +83 -0
  552. package/templates/native-go-background/frontend/src/background/i18n/ko.json +83 -0
  553. package/templates/native-go-background/frontend/src/background/i18n/zh-CN.json +83 -0
  554. package/templates/native-go-background/frontend/src/background/i18n/zh-TW.json +83 -0
  555. package/templates/native-go-background/frontend/src/background/i18n.ts +19 -0
  556. package/templates/native-go-background/frontend/src/background/picker-provider.ts +13 -0
  557. package/templates/native-go-background/frontend/test/background.test.ts +179 -0
  558. package/templates/native-go-integration/backend/internal/app/personal.go +2 -2
  559. package/templates/native-go-integration/backend/internal/app/personal_test.go +37 -0
  560. package/templates/native-go-vue/README.md +38 -7
  561. package/templates/native-go-vue/frontend/DESIGN.md +15 -3
  562. package/templates/native-go-vue/frontend/README-JOBS.md +75 -0
  563. package/templates/native-go-vue/frontend/README-M2.md +64 -0
  564. package/templates/native-go-vue/frontend/package-lock.json +5 -4
  565. package/templates/native-go-vue/frontend/package.json +1 -1
  566. package/templates/native-go-vue/frontend/src/App.vue +39 -11
  567. package/templates/native-go-vue/frontend/src/M2App.vue +57 -0
  568. package/templates/native-go-vue/frontend/src/SDKApp.vue +203 -0
  569. package/templates/native-go-vue/frontend/src/jobs/InteractiveJobForm.vue +70 -0
  570. package/templates/native-go-vue/frontend/src/jobs/JobsAdminPanel.vue +33 -0
  571. package/templates/native-go-vue/frontend/src/jobs/JobsPanel.vue +135 -0
  572. package/templates/native-go-vue/frontend/src/jobs/connected-provider.ts +179 -0
  573. package/templates/native-go-vue/frontend/src/jobs/i18n/de.json +62 -0
  574. package/templates/native-go-vue/frontend/src/jobs/i18n/en.json +62 -0
  575. package/templates/native-go-vue/frontend/src/jobs/i18n/es.json +62 -0
  576. package/templates/native-go-vue/frontend/src/jobs/i18n/fr.json +62 -0
  577. package/templates/native-go-vue/frontend/src/jobs/i18n/it.json +62 -0
  578. package/templates/native-go-vue/frontend/src/jobs/i18n/ja.json +62 -0
  579. package/templates/native-go-vue/frontend/src/jobs/i18n/ko.json +62 -0
  580. package/templates/native-go-vue/frontend/src/jobs/i18n/zh-CN.json +62 -0
  581. package/templates/native-go-vue/frontend/src/jobs/i18n/zh-TW.json +62 -0
  582. package/templates/native-go-vue/frontend/src/jobs/i18n.ts +15 -0
  583. package/templates/native-go-vue/frontend/src/jobs/mock-provider.ts +67 -0
  584. package/templates/native-go-vue/frontend/src/jobs/provider.ts +60 -0
  585. package/templates/native-go-vue/frontend/src/jobs/validate.ts +44 -0
  586. package/templates/native-go-vue/frontend/src/m2-main.ts +21 -0
  587. package/templates/native-go-vue/frontend/src/m2-style.css +7 -0
  588. package/templates/native-go-vue/frontend/src/nas/M2Files.vue +94 -0
  589. package/templates/native-go-vue/frontend/src/nas/M2PathPicker.vue +70 -0
  590. package/templates/native-go-vue/frontend/src/nas/M2Settings.vue +69 -0
  591. package/templates/native-go-vue/frontend/src/nas/i18n/m2/de.json +56 -0
  592. package/templates/native-go-vue/frontend/src/nas/i18n/m2/en.json +56 -0
  593. package/templates/native-go-vue/frontend/src/nas/i18n/m2/es.json +56 -0
  594. package/templates/native-go-vue/frontend/src/nas/i18n/m2/fr.json +56 -0
  595. package/templates/native-go-vue/frontend/src/nas/i18n/m2/it.json +56 -0
  596. package/templates/native-go-vue/frontend/src/nas/i18n/m2/ja.json +56 -0
  597. package/templates/native-go-vue/frontend/src/nas/i18n/m2/ko.json +56 -0
  598. package/templates/native-go-vue/frontend/src/nas/i18n/m2/zh-CN.json +56 -0
  599. package/templates/native-go-vue/frontend/src/nas/i18n/m2/zh-TW.json +56 -0
  600. package/templates/native-go-vue/frontend/src/nas/m2-contract.ts +33 -0
  601. package/templates/native-go-vue/frontend/src/nas/m2-i18n.ts +24 -0
  602. package/templates/native-go-vue/frontend/src/nas/m2-provider.ts +104 -0
  603. package/templates/native-go-vue/frontend/src/nas/use-m2-request.ts +18 -0
  604. package/templates/native-go-vue/frontend/src/sdk-main.ts +39 -0
  605. package/templates/native-go-vue/frontend/src/shell/AppShell.vue +48 -0
  606. package/templates/native-go-vue/frontend/src/shell/i18n/de.json +10 -0
  607. package/templates/native-go-vue/frontend/src/shell/i18n/en.json +10 -0
  608. package/templates/native-go-vue/frontend/src/shell/i18n/es.json +10 -0
  609. package/templates/native-go-vue/frontend/src/shell/i18n/fr.json +10 -0
  610. package/templates/native-go-vue/frontend/src/shell/i18n/it.json +10 -0
  611. package/templates/native-go-vue/frontend/src/shell/i18n/ja.json +10 -0
  612. package/templates/native-go-vue/frontend/src/shell/i18n/ko.json +10 -0
  613. package/templates/native-go-vue/frontend/src/shell/i18n/zh-CN.json +10 -0
  614. package/templates/native-go-vue/frontend/src/shell/i18n/zh-TW.json +10 -0
  615. package/templates/native-go-vue/frontend/src/shell/i18n.ts +17 -0
  616. package/templates/native-go-vue/frontend/src/shell/pages.ts +34 -0
  617. package/templates/native-go-vue/frontend/src/style.css +2 -6
  618. package/templates/native-go-vue/frontend/test/apps.test.ts +21 -0
  619. package/templates/native-go-vue/frontend/test/jobs-connected.test.ts +163 -0
  620. package/templates/native-go-vue/frontend/test/jobs-preview.html +22 -0
  621. package/templates/native-go-vue/frontend/test/jobs.test.ts +176 -0
  622. package/templates/native-go-vue/frontend/test/m2-preview.html +27 -0
  623. package/templates/native-go-vue/frontend/test/m2-provider.test.ts +87 -0
  624. package/templates/native-go-vue/frontend/test/m2-ui.test.ts +209 -0
  625. package/templates/native-go-vue/frontend/test/native-controls.test.ts +27 -0
  626. package/templates/native-go-vue/frontend/test/picker-wire.test.ts +110 -0
  627. package/templates/native-go-vue/frontend/test/shell-preview.html +19 -0
  628. package/templates/native-go-vue/frontend/test/shell-sdk.test.ts +73 -0
  629. package/templates/native-go-vue/frontend/test/shell-ui.test.ts +114 -0
  630. package/templates/native-go-vue/frontend/test/shell.test.ts +45 -0
  631. package/templates/native-go-vue/frontend/vite.config.ts +2 -2
@@ -0,0 +1,62 @@
1
+ {
2
+ "title": "Attività",
3
+ "unavailable": "Le attività non sono disponibili in questa versione.",
4
+ "mock": "Anteprima simulata: nessuna operazione NAS",
5
+ "interactiveHelp": "Questa vista rinnova le attività interattive ogni 2 secondi. Dopo 6 secondi senza rinnovo inizia l’annullamento, che termina dopo la conferma della pulizia. Chiudere la vista richiede l’annullamento. Le schede nascoste possono causare la scadenza e l’annullamento.",
6
+ "backgroundHelp": "Un’attività in background confermata può continuare dopo chiusura o disconnessione fino a scadenza o riavvio. Non riprende dopo il riavvio.",
7
+ "prepare": "Rivedi attività in background",
8
+ "confirm": "Conferma una volta",
9
+ "agree": "Acconsento a questa singola attività di sola lettura anche offline.",
10
+ "refresh": "Aggiorna",
11
+ "lookup": "Controlla attività originale",
12
+ "uncertain": "Risposta persa. Controlla l’attività originale senza inviarla di nuovo.",
13
+ "close": "Scarta revisione",
14
+ "cancel": "Annulla attività",
15
+ "revoke": "Revoca consenso",
16
+ "revoked": "Revocato",
17
+ "drained": "Pulizia confermata",
18
+ "cleanup": "Pulizia necessaria",
19
+ "unknown": "Totale sconosciuto",
20
+ "error": "Richiesta non completata. Aggiorna per verificare lo stato.",
21
+ "empty": "Nessuna attività",
22
+ "pending": "In attesa",
23
+ "running": "In esecuzione",
24
+ "stopping": "Arresto in corso",
25
+ "succeeded": "Completato",
26
+ "failed": "Fallito",
27
+ "canceled": "Annullato",
28
+ "interrupted": "Interrotto",
29
+ "app": "App",
30
+ "worker": "Worker",
31
+ "scope": "Riferimento ambito",
32
+ "actions": "Azioni",
33
+ "steps": "Passaggi",
34
+ "expires": "Scadenza",
35
+ "starts": "Primo avvio possibile",
36
+ "warning": "Gli effetti già prodotti non possono essere annullati. Il consenso vale una volta nel periodo corrente.",
37
+ "effects": "Effetti potenzialmente sconosciuti",
38
+ "next": "Pagina successiva",
39
+ "accessLost": "Impossibile verificare l’accesso. Accedi di nuovo e riapri questa vista.",
40
+ "interactiveUnavailable": "Le attività interattive attendono il collegamento dei controlli nativi di sessione e autorizzazione.",
41
+ "backgroundUnavailable": "Le attività in background non sono disponibili.",
42
+ "adminTitle": "Gestione attività",
43
+ "loadManagement": "Aggiorna per caricare lo stato di gestione.",
44
+ "revalidating": "Le verifiche del pacchetto sono in fase di riconvalida. I nuovi processi sono sospesi. Aggiornare per controllare il ripristino; i processi annullati non riprendono.",
45
+ "fenceCanceled": "Questo processo è stato annullato perché le verifiche del pacchetto non erano disponibili. Dopo il ripristino, un nuovo invio crea un nuovo processo e ricontrolla le autorizzazioni. Nessun invio automatico.",
46
+ "resubmit": "Invia di nuovo",
47
+ "resubmitUnavailable": "Il piano originale non è disponibile in questa vista. Selezionare di nuovo i dati per creare un nuovo processo.",
48
+ "resubmitUncertain": "La risposta al nuovo invio è andata persa. Controllare il nuovo processo senza inviarlo di nuovo.",
49
+ "resubmitLookup": "Controlla nuovo processo",
50
+ "resubmitSubmitted": "È stato inviato un nuovo processo. Il processo annullato rimane arrestato.",
51
+ "newInteractive": "Nuova attività interattiva",
52
+ "chooseSource": "Scegli file o cartella di origine",
53
+ "sourceHelp": "Attività di sola lettura con la sessione DSM attuale. La scelta di un file salva il consenso per la cartella che lo contiene. Il contenuto viene scartato; vengono riportati solo i contatori.",
54
+ "operation": "Operazione",
55
+ "statOperation": "Verifica metadati",
56
+ "listOperation": "Elenca cartella",
57
+ "readOperation": "Leggi file (conta byte)",
58
+ "entryLimit": "Numero massimo (1–100)",
59
+ "byteLimit": "Byte massimi",
60
+ "submitInteractive": "Invia attività una volta",
61
+ "interactiveSubmitted": "Attività inviata. Controlla l’avanzamento qui sotto."
62
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "title": "ジョブ",
3
+ "unavailable": "このビルドではジョブを利用できません。",
4
+ "mock": "模擬プレビュー:NAS 操作なし",
5
+ "interactiveHelp": "この画面は対話ジョブを 2 秒ごとに更新します。6 秒間更新がないと取り消しを開始し、後処理の確認後に完了します。画面を閉じると取り消しを要求します。非表示タブでは期限切れで取り消される場合があります。",
6
+ "backgroundHelp": "同意した背景ジョブは終了やログアウト後も期限または再起動まで続行できます。再起動後の再開はありません。",
7
+ "prepare": "背景ジョブを確認",
8
+ "confirm": "一度だけ実行に同意",
9
+ "agree": "オフライン中もこの一度限りの読み取り専用ジョブを続行することに同意します。",
10
+ "refresh": "更新",
11
+ "lookup": "元のジョブを確認",
12
+ "uncertain": "確認応答が失われました。再送せず元のジョブを確認してください。",
13
+ "close": "確認を破棄",
14
+ "cancel": "ジョブを取り消す",
15
+ "revoke": "背景同意を撤回",
16
+ "revoked": "撤回済み",
17
+ "drained": "後処理確認済み",
18
+ "cleanup": "後処理が必要",
19
+ "unknown": "合計量は不明",
20
+ "error": "要求を完了できません。更新して状態を確認してください。",
21
+ "empty": "ジョブなし",
22
+ "pending": "待機中",
23
+ "running": "実行中",
24
+ "stopping": "停止中",
25
+ "succeeded": "完了",
26
+ "failed": "失敗",
27
+ "canceled": "取り消し済み",
28
+ "interrupted": "中断",
29
+ "app": "アプリ",
30
+ "worker": "ワーカー",
31
+ "scope": "範囲参照",
32
+ "actions": "操作",
33
+ "steps": "手順数",
34
+ "expires": "有効期限",
35
+ "starts": "最早開始時刻",
36
+ "warning": "完了した処理は元に戻せません。同意は現在の稼働期間で一度だけ有効です。",
37
+ "effects": "処理結果が不明な場合があります",
38
+ "next": "次のページ",
39
+ "accessLost": "アクセスを確認できません。再度ログインしてこの画面を開き直してください。",
40
+ "interactiveUnavailable": "ネイティブのセッションと権限の確認が接続されるまで、対話ジョブは利用できません。",
41
+ "backgroundUnavailable": "バックグラウンドジョブは利用できません。",
42
+ "adminTitle": "ジョブ管理",
43
+ "loadManagement": "更新して管理状態を読み込んでください。",
44
+ "revalidating": "パッケージの状態を再検証中です。新しいジョブの受付は停止しています。更新して復旧を確認してください。キャンセル済みのジョブは再開されません。",
45
+ "fenceCanceled": "パッケージの状態を検証できなくなったため、このジョブはキャンセルされました。復旧後に再送信すると、新しいジョブを作成して権限を再確認します。自動再送信は行いません。",
46
+ "resubmit": "再送信",
47
+ "resubmitUnavailable": "この画面では元の実行計画を利用できません。入力を選び直して新しいジョブを作成してください。",
48
+ "resubmitUncertain": "再送信の応答を受信できませんでした。新しいジョブを確認し、再度送信しないでください。",
49
+ "resubmitLookup": "新しいジョブを確認",
50
+ "resubmitSubmitted": "新しいジョブを送信しました。キャンセル済みのジョブは停止したままです。",
51
+ "newInteractive": "新しい対話ジョブ",
52
+ "chooseSource": "ソースファイルまたはフォルダーを選択",
53
+ "sourceHelp": "現在の DSM セッションで読み取り専用ジョブを実行します。ファイル選択は親フォルダーへの同意を保存します。内容は破棄され、件数のみ報告します。",
54
+ "operation": "操作",
55
+ "statOperation": "メタデータを確認",
56
+ "listOperation": "フォルダーを一覧表示",
57
+ "readOperation": "ファイルを読み取り(バイト数)",
58
+ "entryLimit": "最大件数(1–100)",
59
+ "byteLimit": "最大バイト数",
60
+ "submitInteractive": "ジョブを一度送信",
61
+ "interactiveSubmitted": "ジョブを送信しました。下で進捗を確認してください。"
62
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "title": "작업",
3
+ "unavailable": "이 빌드에서는 작업을 사용할 수 없습니다.",
4
+ "mock": "모의 미리 보기: NAS 작업 없음",
5
+ "interactiveHelp": "이 화면은 대화형 작업을 2초마다 갱신합니다. 6초 동안 갱신되지 않으면 취소를 시작하며 정리가 확인되어야 완료됩니다. 화면을 닫으면 취소를 요청합니다. 숨겨진 탭에서는 만료로 작업이 취소될 수 있습니다.",
6
+ "backgroundHelp": "동의한 백그라운드 작업은 창을 닫거나 로그아웃해도 만료 또는 재시작까지 계속됩니다. 재시작 후 재개되지 않습니다.",
7
+ "prepare": "백그라운드 작업 검토",
8
+ "confirm": "한 번 실행 동의",
9
+ "agree": "오프라인에서도 이 일회성 읽기 전용 작업을 계속하는 데 동의합니다.",
10
+ "refresh": "새로 고침",
11
+ "lookup": "원래 작업 확인",
12
+ "uncertain": "확인 응답을 잃었습니다. 다시 제출하지 말고 원래 작업을 확인하세요.",
13
+ "close": "검토 버리기",
14
+ "cancel": "작업 취소",
15
+ "revoke": "백그라운드 동의 철회",
16
+ "revoked": "철회됨",
17
+ "drained": "정리 확인됨",
18
+ "cleanup": "정리 필요",
19
+ "unknown": "전체 진행량 알 수 없음",
20
+ "error": "요청을 완료할 수 없습니다. 새로 고쳐 상태를 확인하세요.",
21
+ "empty": "작업 없음",
22
+ "pending": "대기 중",
23
+ "running": "실행 중",
24
+ "stopping": "중지 중",
25
+ "succeeded": "완료",
26
+ "failed": "실패",
27
+ "canceled": "취소됨",
28
+ "interrupted": "중단됨",
29
+ "app": "앱",
30
+ "worker": "워커",
31
+ "scope": "범위 참조",
32
+ "actions": "동작",
33
+ "steps": "단계",
34
+ "expires": "만료",
35
+ "starts": "가장 빠른 시작",
36
+ "warning": "완료된 효과는 되돌릴 수 없습니다. 현재 실행 기간에 한 번만 동의가 유효합니다.",
37
+ "effects": "효과를 알 수 없을 수 있음",
38
+ "next": "다음 페이지",
39
+ "accessLost": "접근 권한을 확인할 수 없습니다. 다시 로그인한 후 이 화면을 다시 여세요.",
40
+ "interactiveUnavailable": "기본 세션 및 권한 검사가 연결될 때까지 대화형 작업을 사용할 수 없습니다.",
41
+ "backgroundUnavailable": "백그라운드 작업을 사용할 수 없습니다.",
42
+ "adminTitle": "작업 관리",
43
+ "loadManagement": "관리 상태를 불러오려면 새로 고침하세요.",
44
+ "revalidating": "패키지 상태를 다시 검증하고 있습니다. 새 작업 접수가 일시 중지되었습니다. 새로 고침으로 복구를 확인하세요. 취소된 작업은 재개되지 않습니다.",
45
+ "fenceCanceled": "패키지 상태를 검증할 수 없어 이 작업이 취소되었습니다. 복구 후 다시 제출하면 새 작업을 만들고 권한을 다시 확인합니다. 자동으로 다시 제출하지 않습니다.",
46
+ "resubmit": "다시 제출",
47
+ "resubmitUnavailable": "이 화면에서 원래 작업 계획을 사용할 수 없습니다. 입력을 다시 선택하여 새 작업을 만드세요.",
48
+ "resubmitUncertain": "다시 제출한 응답을 받지 못했습니다. 새 작업을 확인하고 다시 제출하지 마세요.",
49
+ "resubmitLookup": "새 작업 확인",
50
+ "resubmitSubmitted": "새 작업을 제출했습니다. 취소된 작업은 중지된 상태로 유지됩니다.",
51
+ "newInteractive": "새 대화형 작업",
52
+ "chooseSource": "원본 파일 또는 폴더 선택",
53
+ "sourceHelp": "현재 DSM 세션으로 읽기 전용 작업을 실행합니다. 파일 선택 시 상위 폴더에 대한 동의를 저장합니다. 내용은 버리고 개수만 보고합니다.",
54
+ "operation": "작업",
55
+ "statOperation": "메타데이터 확인",
56
+ "listOperation": "폴더 목록",
57
+ "readOperation": "파일 읽기 (바이트 수)",
58
+ "entryLimit": "최대 항목 수 (1–100)",
59
+ "byteLimit": "최대 바이트 수",
60
+ "submitInteractive": "작업 한 번 제출",
61
+ "interactiveSubmitted": "작업을 제출했습니다. 아래에서 진행 상황을 확인하세요."
62
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "title": "任务",
3
+ "unavailable": "此版本无法使用任务功能。",
4
+ "mock": "模拟预览:不执行 NAS 操作",
5
+ "interactiveHelp": "此页面每 2 秒为交互任务续约。超过 6 秒未续约即开始取消;确认清理完成后才代表取消完成。关闭页面会尝试请求取消,隐藏标签页也可能因过期而取消任务。",
6
+ "backgroundHelp": "明确确认的后台任务可在关页或注销后继续,直到到期或重启;重启不会续跑。",
7
+ "prepare": "查看后台任务",
8
+ "confirm": "确认执行一次",
9
+ "agree": "我同意此单次只读任务在我离线后继续。",
10
+ "refresh": "刷新",
11
+ "lookup": "查询原任务",
12
+ "uncertain": "确认回复丢失。请查询原任务,不要重新提交。",
13
+ "close": "放弃查看",
14
+ "cancel": "取消任务",
15
+ "revoke": "撤销后台同意",
16
+ "revoked": "已撤销",
17
+ "drained": "已确认清理完成",
18
+ "cleanup": "需要清理",
19
+ "unknown": "进度总量未知",
20
+ "error": "无法完成请求,请刷新确认当前状态。",
21
+ "empty": "没有任务",
22
+ "pending": "等待中",
23
+ "running": "运行中",
24
+ "stopping": "停止中",
25
+ "succeeded": "已完成",
26
+ "failed": "失败",
27
+ "canceled": "已取消",
28
+ "interrupted": "已中断",
29
+ "app": "应用程序",
30
+ "worker": "执行器",
31
+ "scope": "范围引用",
32
+ "actions": "操作",
33
+ "steps": "步骤",
34
+ "expires": "到期时间",
35
+ "starts": "最早开始时间",
36
+ "warning": "已发生的效果无法还原。同意仅限本次运行期间的一次任务。",
37
+ "effects": "效果可能未知",
38
+ "next": "下一页",
39
+ "accessLost": "无法验证访问权限。请重新登录并重新打开此页面。",
40
+ "interactiveUnavailable": "原生会话及权限检查尚未接通,交互任务不可用。",
41
+ "backgroundUnavailable": "后台任务不可用。",
42
+ "adminTitle": "任务管理",
43
+ "loadManagement": "刷新以加载管理状态。",
44
+ "revalidating": "正在重新验证套件状态,暂停接受新任务。请刷新确认是否恢复;已取消的任务不会继续运行。",
45
+ "fenceCanceled": "套件状态无法验证,因此已取消此任务。恢复后可重新提交,创建新任务并重新检查权限;系统不会自动重发。",
46
+ "resubmit": "重新提交",
47
+ "resubmitUnavailable": "此页面没有原始任务计划。请重新选择输入以创建新任务。",
48
+ "resubmitUncertain": "重新提交的响应丢失。请查询新任务,不要再次提交。",
49
+ "resubmitLookup": "查询新任务",
50
+ "resubmitSubmitted": "已提交新任务,原先取消的任务仍保持停止。",
51
+ "newInteractive": "新增交互任务",
52
+ "chooseSource": "选择源文件或文件夹",
53
+ "sourceHelp": "只读任务使用当前 DSM 会话。选文件会保存其所在文件夹的同意记录。文件内容会丢弃,任务仅报告计数。",
54
+ "operation": "操作",
55
+ "statOperation": "检查元数据",
56
+ "listOperation": "列出文件夹",
57
+ "readOperation": "读取文件(计算字节)",
58
+ "entryLimit": "条目上限(1–100)",
59
+ "byteLimit": "字节上限",
60
+ "submitInteractive": "提交一次任务",
61
+ "interactiveSubmitted": "任务已提交,请查看下方进度。"
62
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "title": "工作",
3
+ "unavailable": "此版本無法使用工作功能。",
4
+ "mock": "模擬預覽:不執行 NAS 操作",
5
+ "interactiveHelp": "此畫面每 2 秒為互動工作續約。超過 6 秒未續約即開始取消;確認清理完成後才代表取消完成。關閉畫面會嘗試要求取消,隱藏分頁也可能因逾期而取消工作。",
6
+ "backgroundHelp": "明確確認的背景工作可在關頁或登出後繼續,直到到期或重新啟動;重啟不會續跑。",
7
+ "prepare": "檢閱背景工作",
8
+ "confirm": "確認執行一次",
9
+ "agree": "我同意此單次唯讀工作在我離線後繼續。",
10
+ "refresh": "重新整理",
11
+ "lookup": "查詢原工作",
12
+ "uncertain": "確認回覆遺失。請查詢原工作,不要重新提交。",
13
+ "close": "放棄檢閱",
14
+ "cancel": "取消工作",
15
+ "revoke": "撤銷背景同意",
16
+ "revoked": "已撤銷",
17
+ "drained": "已確認清理完成",
18
+ "cleanup": "需要清理",
19
+ "unknown": "進度總量未知",
20
+ "error": "無法完成請求,請重新整理確認目前狀態。",
21
+ "empty": "沒有工作",
22
+ "pending": "等待中",
23
+ "running": "執行中",
24
+ "stopping": "停止中",
25
+ "succeeded": "已完成",
26
+ "failed": "失敗",
27
+ "canceled": "已取消",
28
+ "interrupted": "已中斷",
29
+ "app": "應用程式",
30
+ "worker": "執行器",
31
+ "scope": "範圍參照",
32
+ "actions": "動作",
33
+ "steps": "步驟",
34
+ "expires": "到期時間",
35
+ "starts": "最早開始時間",
36
+ "warning": "已發生的效果無法還原。同意僅限本次執行期間的一次工作。",
37
+ "effects": "效果可能未知",
38
+ "next": "下一頁",
39
+ "accessLost": "無法驗證存取權限。請重新登入並重開此畫面。",
40
+ "interactiveUnavailable": "原生工作階段及權限檢查尚未接通,互動工作無法使用。",
41
+ "backgroundUnavailable": "背景工作無法使用。",
42
+ "adminTitle": "工作管理",
43
+ "loadManagement": "重新整理以載入管理狀態。",
44
+ "revalidating": "正在重新驗證套件狀態,暫停接受新工作。請重新整理確認是否恢復;已取消的工作不會續跑。",
45
+ "fenceCanceled": "套件狀態無法驗證,因此已取消此工作。恢復後可重新提交,建立新工作並重新檢查權限;系統不會自動重送。",
46
+ "resubmit": "重新提交",
47
+ "resubmitUnavailable": "此畫面沒有原始工作計畫。請重新選擇輸入以建立新工作。",
48
+ "resubmitUncertain": "重新提交的回覆遺失。請查詢新工作,不要再次提交。",
49
+ "resubmitLookup": "查詢新工作",
50
+ "resubmitSubmitted": "已提交新工作,原先取消的工作仍保持停止。",
51
+ "newInteractive": "新增互動工作",
52
+ "chooseSource": "選擇來源檔案或資料夾",
53
+ "sourceHelp": "唯讀工作使用目前的 DSM session。選檔會儲存其所在資料夾的同意紀錄。檔案內容會捨棄,工作僅回報計數。",
54
+ "operation": "操作",
55
+ "statOperation": "檢查中繼資料",
56
+ "listOperation": "列出資料夾",
57
+ "readOperation": "讀取檔案(計算位元組)",
58
+ "entryLimit": "筆數上限(1–100)",
59
+ "byteLimit": "位元組上限",
60
+ "submitInteractive": "送出一次工作",
61
+ "interactiveSubmitted": "工作已送出,請查看下方進度。"
62
+ }
@@ -0,0 +1,15 @@
1
+ import en from './i18n/en.json'
2
+ import zhTW from './i18n/zh-TW.json'
3
+ import zhCN from './i18n/zh-CN.json'
4
+ import ja from './i18n/ja.json'
5
+ import ko from './i18n/ko.json'
6
+ import de from './i18n/de.json'
7
+ import fr from './i18n/fr.json'
8
+ import es from './i18n/es.json'
9
+ import it from './i18n/it.json'
10
+ export type JobCopy=typeof en
11
+ export const jobCatalogs:Record<string,JobCopy>={en,'zh-TW':zhTW,'zh-CN':zhCN,ja,ko,de,fr,es,it}
12
+ export function jobCopy(locale:string):JobCopy{
13
+ const aliases:Record<string,string>={enu:'en',cht:'zh-TW',chs:'zh-CN',jpn:'ja',krn:'ko',ger:'de',fre:'fr',spn:'es',ita:'it'}
14
+ const key=locale.replaceAll('_','-');return jobCatalogs[aliases[key]??key]??jobCatalogs[key.split('-')[0]]??en
15
+ }
@@ -0,0 +1,67 @@
1
+ import type {BackgroundSummary,JobsProvider,JobView,JobsAdminProvider} from './provider'
2
+ const unavailable=async():Promise<never>=>{throw {code:'unavailable'}}
3
+ export const unavailableJobsProvider:JobsProvider=Object.freeze({mode:'unavailable',list:unavailable,prepare:unavailable,confirm:unavailable,lookup:unavailable,cancel:unavailable,revoke:unavailable,disconnect(){}})
4
+
5
+ // Development fixture only: no imports from main/App/wrapper, no native proof,
6
+ // transport, credentials or claim that this mock implements production authority.
7
+ export function createMockJobsService(){
8
+ let sequence=0,storeRevision=1,version=1
9
+ const jobs=new Map<string,{owner:string;job:JobView}>()
10
+ const intents=new Map<string,{owner:string;summary:BackgroundSummary;confirmed:boolean}>()
11
+ const check=(signal:AbortSignal)=>{if(signal.aborted)throw {code:'canceled'}}
12
+ function pager<T>(){
13
+ const cursors=new Map<string,{offset:number;version:number;expires:number}>()
14
+ return (items:T[],cursor?:string)=>{
15
+ let offset=0
16
+ if(cursor){const c=cursors.get(cursor);if(!c||c.version!==version||Date.now()>=c.expires)throw {code:'stale'};offset=c.offset}
17
+ for(const [key,c]of cursors)if(c.version!==version||Date.now()>=c.expires)cursors.delete(key)
18
+ let nextCursor:string|undefined
19
+ if(offset+10<items.length){if(cursors.size>=256)throw {code:'limit-exceeded'};nextCursor=`cursor-${++sequence}`;cursors.set(nextCursor,{offset:offset+10,version,expires:Date.now()+30000})}
20
+ return {revision:version,items:structuredClone(items.slice(offset,offset+10)),...(nextCursor?{nextCursor}:{})}
21
+ }
22
+ }
23
+ const service={loseConfirmReply:false,confirmCount:0,drain:true,
24
+ connectAdmin():JobsAdminProvider{
25
+ const page=pager<ReturnType<typeof adminView>>()
26
+ return {mode:'mock',async list(signal,cursor){check(signal);return page([...jobs.values()].map(({job})=>adminView(job)),cursor)},
27
+ async cancel(id,revision,signal){check(signal);const item=jobs.get(id);if(!item)throw {code:'denied'};const j=item.job
28
+ if(revision!==version)throw {code:'stale'}
29
+ if(j.delegation){j.delegation.revoked=true;j.delegation.revision++;j.delegation.storeRevision=++storeRevision}
30
+ version++;j.drained=service.drain;j.state=service.drain?'canceled':'cleanup-required'
31
+ }}
32
+ },
33
+ connect(owner:string):JobsProvider{
34
+ if(jobs.size>=256)throw {code:'limit-exceeded'}
35
+ const interactive=`interactive-${++sequence}`;version++
36
+ jobs.set(interactive,{owner,job:{jobId:interactive,revision:version,mode:'interactive',state:'running',completedUnits:0,drained:false,effectsUnknown:false}})
37
+ const page=pager<JobView>()
38
+ const owned=(id:string)=>{const item=jobs.get(id);if(!item||item.owner!==owner)throw {code:'denied'};return item.job}
39
+ return {mode:'mock',
40
+ async list(signal,cursor){check(signal);return page([...jobs.values()].filter(j=>j.owner===owner).map(({job})=>ownerView(job)),cursor)},
41
+ async prepare(signal){check(signal);if(intents.size>=256)throw {code:'limit-exceeded'}
42
+ const id=`intent-${++sequence}`,now=Date.now()
43
+ const summary:BackgroundSummary={intentId:id,jobId:`job-${sequence}`,summaryDigest:`digest-${sequence}`,storeRevision,app:'Mock App',worker:'sdk-read-plan',parent:'mock-scope',actions:['nas.files.stat'],steps:1,inputSummary:['nas.files.stat: fixture'],expiresAt:now+86400000,notBefore:now,intentExpiresAt:now+30000}
44
+ intents.set(id,{owner,summary,confirmed:false});return structuredClone(summary)
45
+ },
46
+ async confirm(summary,signal){check(signal);const i=intents.get(summary.intentId);if(!i||i.owner!==owner)throw {code:'denied'}
47
+ if(i.confirmed)throw {code:'replay'}
48
+ if(Date.now()>=i.summary.intentExpiresAt)throw {code:'expired'}
49
+ if(JSON.stringify(summary)!==JSON.stringify(i.summary)||summary.storeRevision!==storeRevision)throw {code:'stale'}
50
+ if(jobs.size>=256)throw {code:'limit-exceeded'}
51
+ i.confirmed=true;service.confirmCount++;storeRevision++;version++
52
+ jobs.set(summary.jobId,{owner,job:{jobId:summary.jobId,revision:version,mode:'background',state:'pending',completedUnits:0,totalUnits:summary.steps,drained:false,effectsUnknown:false,delegation:{id:summary.jobId,revision:1,storeRevision,revoked:false}}})
53
+ if(service.loseConfirmReply)throw {code:'timeout'}
54
+ },
55
+ async lookup(id,signal){check(signal);const i=intents.get(id);if(!i||i.owner!==owner)throw {code:'denied'};return i.confirmed?ownerView(owned(i.summary.jobId)):undefined},
56
+ async cancel(id,revision,signal){check(signal);const j=owned(id);if(revision!==version)throw {code:'stale'};if(j.mode!=='interactive')throw {code:'unsupported'};j.state=service.drain?'canceled':'cleanup-required';j.drained=service.drain;version++},
57
+ async revoke(id,revision,store,signal){check(signal);const j=owned(id),d=j.delegation;if(!d)throw {code:'unsupported'};if(d.revision!==revision||store!==storeRevision)throw {code:'stale'}
58
+ d.revoked=true;d.revision++;d.storeRevision=++storeRevision;version++;j.drained=service.drain;j.state=service.drain?'canceled':'cleanup-required';return {revoked:true,drained:j.drained}
59
+ },
60
+ disconnect(){const j=owned(interactive);if(j.state==='running'){j.state=service.drain?'canceled':'cleanup-required';j.drained=service.drain;version++}},
61
+ }
62
+ }
63
+ }
64
+ function ownerView(j:JobView):JobView{return structuredClone({...j,revision:version,...(j.delegation?{delegation:{...j.delegation,storeRevision}}:{})})}
65
+ function adminView(j:JobView){return {jobId:j.jobId,revision:version,state:j.state,drained:j.drained,effectsUnknown:j.effectsUnknown}}
66
+ return service
67
+ }
@@ -0,0 +1,60 @@
1
+ import type {InjectionKey} from 'vue'
2
+ export type JobState='pending'|'running'|'cancel-requested'|'draining'|'succeeded'|'failed'|'canceled'|'interrupted'|'cleanup-required'
3
+ export type JobReason='invalid-request'|'incompatible'|'unsupported'|'replay'|'stale'|'expired'|'denied'|'unavailable'|'suspended'|'revoked'|'fenced'|'busy'|'limit-exceeded'|'canceled'|'timeout'|'partial'|'commit-uncertain'|'cleanup-required'|'internal'
4
+ export interface InteractivePlan {
5
+ worker:{id:string;revision:number};parent:{id:string;revision:number}
6
+ input:{steps:readonly {action:string;segments:readonly string[];limit?:number;maxBytes?:number}[]}
7
+ }
8
+ export interface PreparedInteractive {intentId:string;jobId:string;summaryDigest:string;expiresAt:number}
9
+ // Display metadata from the live session owner; prepare still validates authority.
10
+ export interface InteractiveWorker {
11
+ id:string;revision:number;actions:readonly ('nas.files.list'|'nas.files.stat'|'nas.files.read')[];maxBytes:number
12
+ }
13
+ export interface InteractiveJobs {
14
+ readonly workers:readonly InteractiveWorker[]
15
+ prepareInteractive(signal:AbortSignal,worker:InteractivePlan['worker'],parent:InteractivePlan['parent'],input:InteractivePlan['input']):Promise<PreparedInteractive>
16
+ submitInteractive(value:PreparedInteractive,signal:AbortSignal):Promise<{jobId:string}>
17
+ }
18
+ export interface JobView {
19
+ jobId:string; revision:number; mode:'interactive'|'background'; state:JobState
20
+ safeReason?:JobReason
21
+ completedUnits:number; totalUnits?:number; drained:boolean; effectsUnknown:boolean
22
+ delegation?:{id:string;revision:number;storeRevision:number;revoked:boolean}
23
+ }
24
+ export interface BackgroundSummary {
25
+ intentId:string;jobId:string;summaryDigest:string;storeRevision:number
26
+ app:string;worker:string;parent:string;actions:readonly string[];steps:number;inputSummary:readonly string[]
27
+ expiresAt:number;notBefore:number;intentExpiresAt:number
28
+ }
29
+ export interface JobPage {revision:number;items:readonly JobView[];nextCursor?:string}
30
+ export interface JobsProvider {
31
+ readonly interactive?:InteractiveJobs
32
+ readonly readiness?:{interactive:'ready'|'revalidating'|'unavailable';background:'ready'|'unavailable'}
33
+ readonly mode:'mock'|'unavailable'|'connected'
34
+ list(signal:AbortSignal,cursor?:string):Promise<JobPage>
35
+ prepare(signal:AbortSignal):Promise<BackgroundSummary>
36
+ confirm(summary:BackgroundSummary,signal:AbortSignal):Promise<void>
37
+ lookup(intentId:string,signal:AbortSignal):Promise<JobView|undefined>
38
+ cancel(jobId:string,revision:number,signal:AbortSignal):Promise<void>
39
+ revoke(id:string,revision:number,storeRevision:number,signal:AbortSignal):Promise<{revoked:boolean;drained:boolean}>
40
+ resubmissionState?(jobId:string):'uncertain'|'submitted'|undefined
41
+ lookupResubmission?(jobId:string,signal:AbortSignal):Promise<{jobId:string}>
42
+ canResubmit?(jobId:string):boolean
43
+ resubmit?(jobId:string,signal:AbortSignal):Promise<{jobId:string}>
44
+ disconnect():void
45
+ }
46
+ export const JobsProviderKey:InjectionKey<JobsProvider>=Symbol('jobs-provider')
47
+
48
+ export interface AdminJobView {
49
+ jobId:string;revision:number;state:JobState;drained:boolean;effectsUnknown:boolean
50
+ }
51
+ export interface AdminJobPage {revision:number;items:readonly AdminJobView[];nextCursor?:string}
52
+ export interface JobsAdminProvider {
53
+ readonly mode:'mock'|'unavailable'|'connected'
54
+ list(signal:AbortSignal,cursor?:string):Promise<AdminJobPage>
55
+ cancel(jobId:string,revision:number,signal:AbortSignal):Promise<void>
56
+ }
57
+ export const JobsAdminProviderKey:InjectionKey<JobsAdminProvider>=Symbol('jobs-admin-provider')
58
+ export interface JobsAggregate {
59
+ availability:'unavailable';jobs:number;active:number;cleanupRequired:number;jobCeiling:256;childCeiling:4
60
+ }
@@ -0,0 +1,44 @@
1
+ import type {JobView,AdminJobView,BackgroundSummary,JobPage,AdminJobPage,JobReason} from './provider'
2
+ const invalid=():never=>{throw {code:'invalid-request'}}
3
+ const integer=(x:unknown,max=Number.MAX_SAFE_INTEGER):x is number=>Number.isSafeInteger(x)&&Number(x)>=0&&Number(x)<=max
4
+ const ref=(x:unknown):x is string=>typeof x==='string'&&/^[a-zA-Z0-9-]{1,64}$/.test(x)
5
+ const reasons:readonly JobReason[]=['invalid-request','incompatible','unsupported','replay','stale','expired','denied','unavailable','suspended','revoked','fenced','busy','limit-exceeded','canceled','timeout','partial','commit-uncertain','cleanup-required','internal']
6
+ const states=['pending','running','cancel-requested','draining','succeeded','failed','canceled','interrupted','cleanup-required']
7
+ function base(j:AdminJobView){
8
+ if(!j||!ref(j.jobId)||!integer(j.revision)||!j.revision||!states.includes(j.state)||typeof j.drained!=='boolean'||typeof j.effectsUnknown!=='boolean')invalid()
9
+ if(j.state==='succeeded'&&(!j.drained||j.effectsUnknown))invalid()
10
+ return {jobId:j.jobId,revision:j.revision,state:j.state,drained:j.drained,effectsUnknown:j.effectsUnknown}
11
+ }
12
+ export function adminViews(items:readonly AdminJobView[]):AdminJobView[]{
13
+ if(!Array.isArray(items)||items.length>10)invalid()
14
+ return items.map(base)
15
+ }
16
+ export function jobViews(items:readonly JobView[]):JobView[]{
17
+ if(!Array.isArray(items)||items.length>10)invalid()
18
+ return items.map(j=>{
19
+ const b=base(j)
20
+ if(!['interactive','background'].includes(j.mode)||!integer(j.completedUnits,16)||(j.totalUnits!==undefined&&(!integer(j.totalUnits,16)||j.completedUnits>j.totalUnits)))invalid()
21
+ if(j.safeReason!==undefined&&!reasons.includes(j.safeReason))invalid()
22
+ let delegation:JobView['delegation']
23
+ if(j.delegation){const d=j.delegation
24
+ if(j.mode!=='background'||!ref(d.id)||!integer(d.revision)||!d.revision||!integer(d.storeRevision)||!d.storeRevision||typeof d.revoked!=='boolean')invalid()
25
+ delegation={id:d.id,revision:d.revision,storeRevision:d.storeRevision,revoked:d.revoked}
26
+ }
27
+ return {...b,mode:j.mode,completedUnits:j.completedUnits,...(j.safeReason?{safeReason:j.safeReason}:{}),...(j.totalUnits===undefined?{}:{totalUnits:j.totalUnits}),...(delegation?{delegation}:{})}
28
+ })
29
+ }
30
+ export function consentSummary(s:BackgroundSummary):BackgroundSummary{
31
+ const text=(x:unknown,max:number):x is string=>typeof x==='string'&&x.length>0&&x.length<=max&&!/[\x00-\x1f\x7f]/.test(x)
32
+ if(!s||!ref(s.intentId)||!ref(s.jobId)||!ref(s.summaryDigest)||!integer(s.storeRevision)||!s.storeRevision||!text(s.app,128)||!text(s.worker,64)||!ref(s.parent)||!integer(s.steps,16)||!s.steps||![s.expiresAt,s.notBefore,s.intentExpiresAt].every(x=>integer(x)&&x>0)||s.notBefore>=s.expiresAt)invalid()
33
+ if(!Array.isArray(s.actions)||s.actions.length>4||!s.actions.length||s.actions.some(a=>!['nas.files.list','nas.files.stat','nas.files.read','nas.files.read-stream'].includes(a)))invalid()
34
+ if(!Array.isArray(s.inputSummary)||s.inputSummary.length!==s.steps||s.inputSummary.some(x=>!text(x,4096)))invalid()
35
+ if(s.inputSummary.reduce((n,x)=>n+new TextEncoder().encode(x).length,0)>8192)invalid()
36
+ return {intentId:s.intentId,jobId:s.jobId,summaryDigest:s.summaryDigest,storeRevision:s.storeRevision,app:s.app,worker:s.worker,parent:s.parent,actions:[...s.actions],steps:s.steps,inputSummary:[...s.inputSummary],expiresAt:s.expiresAt,notBefore:s.notBefore,intentExpiresAt:s.intentExpiresAt}
37
+ }
38
+
39
+ function pageHeader(page:JobPage|AdminJobPage){
40
+ if(!page||!integer(page.revision)||!page.revision||(page.nextCursor!==undefined&&!ref(page.nextCursor)))invalid()
41
+ return {revision:page.revision,...(page.nextCursor?{nextCursor:page.nextCursor}:{})}
42
+ }
43
+ export function jobPage(page:JobPage):JobPage{return {...pageHeader(page),items:jobViews(page.items)}}
44
+ export function adminPage(page:AdminJobPage):AdminJobPage{return {...pageHeader(page),items:adminViews(page.items)}}
@@ -0,0 +1,21 @@
1
+ import {createApp} from 'vue'
2
+ import App from './M2App.vue'
3
+ import type {Context} from './context'
4
+ import {M2ProviderKey} from './nas/m2-contract'
5
+ import {createM2Provider} from './nas/m2-provider'
6
+ import '@synopackageland/ui/themes/dsm7-embedded.css'
7
+ import './style.css'
8
+ import './m2-style.css'
9
+
10
+ let sequence=0
11
+ export function mount(root:HTMLElement,ctx:Context){
12
+ const app=createApp(App,{ctx}),provider=createM2Provider(ctx)
13
+ app.provide(M2ProviderKey,provider)
14
+ app.config.idPrefix=`__PACKAGE__-m2-${++sequence}-${crypto.getRandomValues(new Uint32Array(4)).join('-')}`
15
+ const hadClass=root.classList.contains('dsmapp-vue-root');root.classList.add('dsmapp-vue-root')
16
+ app.mount(root)
17
+ return {unmount(){app.unmount();provider.dispose();if(!hadClass)root.classList.remove('dsmapp-vue-root')}}
18
+ }
19
+ const script=document.currentScript as HTMLScriptElement|null,packageID=script?.getAttribute('data-package')
20
+ const host=window as unknown as {DsmPackageApps:Record<string,{mount:typeof mount}>}
21
+ if(packageID){host.DsmPackageApps=host.DsmPackageApps||{};host.DsmPackageApps[packageID]={mount}}
@@ -0,0 +1,7 @@
1
+ [data-ui-app] .m2-app {overflow-wrap: anywhere;}
2
+ [data-ui-app] .m2-checkbox {margin-block: var(--ui-space-4, 16px);}
3
+ [data-ui-app] .m2-files {margin-block-start: var(--ui-space-6, 24px); min-width: 0;}
4
+ [data-ui-app] .m2-files h3 {font-size: 15px; font-weight: 600;}
5
+ [data-ui-app] .m2-files input[type=file] {max-width: 100%; color: var(--ui-text); font: inherit;}
6
+ [data-ui-app] .m2-files a {color: var(--ui-text); text-decoration: underline; text-underline-offset: 0.2em;}
7
+ [data-ui-app] .m2-app input[type=file]:focus-visible, [data-ui-app] .m2-files a:focus-visible {outline: 2px solid var(--ui-text); outline-offset: 2px;}