@synopackageland/cli 0.7.3 → 0.9.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 (951) hide show
  1. package/CHANGELOG.md +249 -0
  2. package/README.md +27 -5
  3. package/dist/add.js +4 -17
  4. package/dist/authorization-sdk.d.ts +0 -1
  5. package/dist/authorization-sdk.js +0 -1
  6. package/dist/build-spk/gateway.d.ts +2 -2
  7. package/dist/build-spk/gateway.js +4 -4
  8. package/dist/build-spk/generator.d.ts +1 -0
  9. package/dist/build-spk/generator.js +2 -2
  10. package/dist/build-spk/notices.js +12 -8
  11. package/dist/capability-overlays.d.ts +15 -0
  12. package/dist/capability-overlays.js +18 -0
  13. package/dist/cli-version.d.ts +2 -0
  14. package/dist/cli-version.js +3 -0
  15. package/dist/cli.js +110 -44
  16. package/dist/error-registry.js +18 -5
  17. package/dist/info.js +2 -1
  18. package/dist/init.js +52 -58
  19. package/dist/reproducible-config.d.ts +8 -0
  20. package/dist/reproducible-config.js +32 -0
  21. package/dist/reproducible.d.ts +38 -0
  22. package/dist/reproducible.js +121 -0
  23. package/dist/runtime/delegate-contract.d.ts +15 -0
  24. package/dist/runtime/delegate-contract.js +2 -0
  25. package/dist/runtime/executor-build.d.ts +15 -1
  26. package/dist/runtime/executor-build.js +42 -11
  27. package/dist/runtime/executor-digests.json +13 -0
  28. package/dist/runtime/executor-inspect.d.ts +1 -0
  29. package/dist/runtime/executor-inspect.js +5 -2
  30. package/dist/runtime/executor-policy.d.ts +3 -1
  31. package/dist/runtime/executor-policy.js +7 -2
  32. package/dist/runtime/executor-source.d.ts +21 -0
  33. package/dist/runtime/executor-source.js +35 -0
  34. package/dist/runtime/executor-tasks.d.ts +5 -2
  35. package/dist/runtime/executor-tasks.js +6 -4
  36. package/dist/runtime/sdk-source.d.ts +31 -0
  37. package/dist/runtime/sdk-source.js +92 -0
  38. package/dist/spk/check-info.d.ts +5 -0
  39. package/dist/spk/check-info.js +123 -0
  40. package/dist/spk/check-metadata.d.ts +7 -0
  41. package/dist/spk/check-metadata.js +113 -0
  42. package/dist/spk/check-payload.d.ts +2 -0
  43. package/dist/spk/check-payload.js +156 -0
  44. package/dist/spk/dsm-spec.d.ts +42 -0
  45. package/dist/spk/dsm-spec.js +86 -0
  46. package/dist/spk/findings.d.ts +13 -0
  47. package/dist/spk/findings.js +8 -0
  48. package/dist/spk/inspect.d.ts +18 -0
  49. package/dist/spk/inspect.js +62 -0
  50. package/dist/spk/rules.d.ts +265 -0
  51. package/dist/spk/rules.js +53 -0
  52. package/dist/spk/validate-spk.d.ts +13 -0
  53. package/dist/spk/validate-spk.js +107 -0
  54. package/dist/standalone/api-permissions.d.ts +4 -1
  55. package/dist/standalone/api-permissions.js +10 -18
  56. package/dist/standalone/arch-jobs.d.ts +11 -0
  57. package/dist/standalone/arch-jobs.js +54 -0
  58. package/dist/standalone/build.d.ts +12 -2
  59. package/dist/standalone/build.js +85 -35
  60. package/dist/standalone/daemon.d.ts +1 -1
  61. package/dist/standalone/daemon.js +4 -4
  62. package/dist/standalone/dsm-window.js +2 -2
  63. package/dist/standalone/inspect-spk.d.ts +1 -0
  64. package/dist/standalone/inspect-spk.js +1 -1
  65. package/dist/standalone/manifest.d.ts +5 -2
  66. package/dist/standalone/manifest.js +19 -4
  67. package/dist/standalone/native-layout.d.ts +3 -0
  68. package/dist/standalone/native-layout.js +94 -33
  69. package/dist/standalone/root-window.d.ts +1 -1
  70. package/dist/standalone/root-window.js +0 -1
  71. package/dist/standalone/sdk-check.d.ts +9 -0
  72. package/dist/standalone/sdk-check.js +43 -0
  73. package/dist/standalone/spk.js +1 -1
  74. package/dist/template-paths.d.ts +7 -2
  75. package/dist/template-paths.js +18 -6
  76. package/package.json +13 -3
  77. package/schema/synology-app.schema.json +9 -0
  78. package/dist/templates/_executor/README.md +0 -318
  79. package/dist/templates/_executor/anchor.go +0 -156
  80. package/dist/templates/_executor/anchor_test.go +0 -161
  81. package/dist/templates/_executor/apppriv_review_test.go +0 -28
  82. package/dist/templates/_executor/auth_presence_review_test.go +0 -38
  83. package/dist/templates/_executor/cancel_contract_test.go +0 -236
  84. package/dist/templates/_executor/cmd/lifecycle/main.go +0 -42
  85. package/dist/templates/_executor/cookie_review_test.go +0 -27
  86. package/dist/templates/_executor/copy.go +0 -64
  87. package/dist/templates/_executor/copy_test.go +0 -88
  88. package/dist/templates/_executor/digest_review_test.go +0 -120
  89. package/dist/templates/_executor/directories.go +0 -40
  90. package/dist/templates/_executor/dsm.go +0 -369
  91. package/dist/templates/_executor/dsm_test.go +0 -290
  92. package/dist/templates/_executor/executor.go +0 -735
  93. package/dist/templates/_executor/executor_test.go +0 -314
  94. package/dist/templates/_executor/go.mod +0 -5
  95. package/dist/templates/_executor/identity.go +0 -74
  96. package/dist/templates/_executor/identity_kernel_linux_test.go +0 -60
  97. package/dist/templates/_executor/identity_linux.go +0 -82
  98. package/dist/templates/_executor/identity_security_test.go +0 -43
  99. package/dist/templates/_executor/internal/lifecycle/lifecycle.go +0 -95
  100. package/dist/templates/_executor/internal/lifecycle/lifecycle_test.go +0 -232
  101. package/dist/templates/_executor/internal/taskscript/boot.sh +0 -31
  102. package/dist/templates/_executor/internal/taskscript/cmd/main.go +0 -19
  103. package/dist/templates/_executor/internal/taskscript/control.sh +0 -31
  104. package/dist/templates/_executor/internal/taskscript/tasks.go +0 -44
  105. package/dist/templates/_executor/json_review_test.go +0 -40
  106. package/dist/templates/_executor/lifecycle_test.go +0 -97
  107. package/dist/templates/_executor/link_linux.go +0 -28
  108. package/dist/templates/_executor/long_running_test.go +0 -530
  109. package/dist/templates/_executor/main.go +0 -576
  110. package/dist/templates/_executor/managed.go +0 -117
  111. package/dist/templates/_executor/managed_test.go +0 -137
  112. package/dist/templates/_executor/move_linux.go +0 -490
  113. package/dist/templates/_executor/move_linux_test.go +0 -460
  114. package/dist/templates/_executor/move_validation.go +0 -46
  115. package/dist/templates/_executor/move_validation_test.go +0 -187
  116. package/dist/templates/_executor/operations.go +0 -926
  117. package/dist/templates/_executor/path_test.go +0 -35
  118. package/dist/templates/_executor/pid.go +0 -37
  119. package/dist/templates/_executor/pid_test.go +0 -113
  120. package/dist/templates/_executor/platform_linux.go +0 -187
  121. package/dist/templates/_executor/platform_linux_test.go +0 -191
  122. package/dist/templates/_executor/platform_other.go +0 -76
  123. package/dist/templates/_executor/process.go +0 -142
  124. package/dist/templates/_executor/purge_log.go +0 -18
  125. package/dist/templates/_executor/records.go +0 -242
  126. package/dist/templates/_executor/scope_cancel_contract_test.go +0 -91
  127. package/dist/templates/_executor/scope_client.go +0 -37
  128. package/dist/templates/_executor/scope_contract.go +0 -12
  129. package/dist/templates/_executor/selected_scope.go +0 -146
  130. package/dist/templates/_executor/selected_scope_test.go +0 -186
  131. package/dist/templates/_executor/socket_linux_test.go +0 -46
  132. package/dist/templates/_executor/status_disabled_test.go +0 -33
  133. package/dist/templates/_executor/store.go +0 -91
  134. package/dist/templates/_executor/supervise.go +0 -109
  135. package/dist/templates/_executor/supervise_test.go +0 -130
  136. package/dist/templates/_executor/task_race_review_test.go +0 -47
  137. package/dist/templates/_executor/tasks.go +0 -320
  138. package/dist/templates/_executor/tasks_dsm71_test.go +0 -114
  139. package/dist/templates/_executor/tasks_review_test.go +0 -43
  140. package/dist/templates/_executor/tasks_test.go +0 -223
  141. package/dist/templates/_executor/testdata/evidence/cleanup.json +0 -24
  142. package/dist/templates/_executor/testdata/evidence/final-smoke.jsonl +0 -9
  143. package/dist/templates/_executor/testdata/evidence/kernel-acl.json +0 -6
  144. package/dist/templates/_executor/testdata/evidence/linux-tests.log +0 -123
  145. package/dist/templates/_executor/testdata/evidence/live.jsonl +0 -23
  146. package/dist/templates/_executor/testdata/evidence/storage.json +0 -90
  147. package/dist/templates/_executor/testdata/evidence/validation.json +0 -55
  148. package/dist/templates/_executor/testdata/live_probe.py +0 -98
  149. package/dist/templates/_executor/upgrade_watch_test.go +0 -244
  150. package/dist/templates/_executor/watch.go +0 -164
  151. package/dist/templates/_executor/watch_test.go +0 -291
  152. package/dist/templates/_executor/write_review_linux_test.go +0 -87
  153. package/dist/templates/_shared/AGENTS.md +0 -146
  154. package/dist/templates/_shared/CLAUDE.md +0 -1
  155. package/dist/templates/_shared/third-party-notices.mjs +0 -51
  156. package/dist/templates/binary/LICENSES/GO-LICENSE +0 -27
  157. package/dist/templates/binary/LICENSES/GO-PATENTS +0 -22
  158. package/dist/templates/binary/dsm-package.yaml +0 -46
  159. package/dist/templates/binary/example/main.go +0 -16
  160. package/dist/templates/binary/gitignore +0 -2
  161. package/dist/templates/binary/i18n/messages/de.json +0 -4
  162. package/dist/templates/binary/i18n/messages/en.json +0 -4
  163. package/dist/templates/binary/i18n/messages/es.json +0 -4
  164. package/dist/templates/binary/i18n/messages/fr.json +0 -4
  165. package/dist/templates/binary/i18n/messages/it.json +0 -4
  166. package/dist/templates/binary/i18n/messages/ja.json +0 -4
  167. package/dist/templates/binary/i18n/messages/ko.json +0 -4
  168. package/dist/templates/binary/i18n/messages/zh-CN.json +0 -4
  169. package/dist/templates/binary/i18n/messages/zh-TW.json +0 -4
  170. package/dist/templates/binary/ui/app.css +0 -4
  171. package/dist/templates/binary/ui/app.js +0 -32
  172. package/dist/templates/compose/compose.yaml +0 -8
  173. package/dist/templates/compose/synology-app.yaml +0 -16
  174. package/dist/templates/native-authorization/AuthorizationGate.vue +0 -91
  175. package/dist/templates/native-authorization/i18n/de.json +0 -37
  176. package/dist/templates/native-authorization/i18n/en.json +0 -37
  177. package/dist/templates/native-authorization/i18n/es.json +0 -37
  178. package/dist/templates/native-authorization/i18n/fr.json +0 -37
  179. package/dist/templates/native-authorization/i18n/index.ts +0 -15
  180. package/dist/templates/native-authorization/i18n/it.json +0 -37
  181. package/dist/templates/native-authorization/i18n/ja.json +0 -37
  182. package/dist/templates/native-authorization/i18n/ko.json +0 -37
  183. package/dist/templates/native-authorization/i18n/zh-CN.json +0 -37
  184. package/dist/templates/native-authorization/i18n/zh-TW.json +0 -37
  185. package/dist/templates/native-go/README.md +0 -459
  186. package/dist/templates/native-go/backend/THIRD_PARTY_NOTICES.txt +0 -61
  187. package/dist/templates/native-go/backend/cmd/app/main.go +0 -95
  188. package/dist/templates/native-go/backend/cmd/background-worker/main.go +0 -38
  189. package/dist/templates/native-go/backend/go.mod +0 -9
  190. package/dist/templates/native-go/backend/go.sum +0 -4
  191. package/dist/templates/native-go/backend/internal/api/cgi_framing_test.go +0 -32
  192. package/dist/templates/native-go/backend/internal/api/cookie_review_test.go +0 -28
  193. package/dist/templates/native-go/backend/internal/api/deadline_test.go +0 -114
  194. package/dist/templates/native-go/backend/internal/api/dsm-session.go +0 -54
  195. package/dist/templates/native-go/backend/internal/api/dsm-session_test.go +0 -51
  196. package/dist/templates/native-go/backend/internal/api/entry_test.go +0 -47
  197. package/dist/templates/native-go/backend/internal/api/errors.go +0 -47
  198. package/dist/templates/native-go/backend/internal/api/permissions.go +0 -161
  199. package/dist/templates/native-go/backend/internal/api/permissions.json +0 -5
  200. package/dist/templates/native-go/backend/internal/api/permissions_test.go +0 -113
  201. package/dist/templates/native-go/backend/internal/api/policy_fixture_test.go +0 -8
  202. package/dist/templates/native-go/backend/internal/api/registry.go +0 -142
  203. package/dist/templates/native-go/backend/internal/api/registry_test.go +0 -344
  204. package/dist/templates/native-go/backend/internal/api/resource_limits_test.go +0 -87
  205. package/dist/templates/native-go/backend/internal/api/sdk-permissions.json +0 -59
  206. package/dist/templates/native-go/backend/internal/api/sdk_policy_test.go +0 -31
  207. package/dist/templates/native-go/backend/internal/api/server.go +0 -305
  208. package/dist/templates/native-go/backend/internal/api/testdata/permissions-cases.json +0 -172
  209. package/dist/templates/native-go/backend/internal/app/background.go +0 -249
  210. package/dist/templates/native-go/backend/internal/app/background_none.go +0 -8
  211. package/dist/templates/native-go/backend/internal/app/background_owner.go +0 -38
  212. package/dist/templates/native-go/backend/internal/app/background_owner_test.go +0 -163
  213. package/dist/templates/native-go/backend/internal/app/background_schedule.go +0 -69
  214. package/dist/templates/native-go/backend/internal/app/background_schedule_test.go +0 -62
  215. package/dist/templates/native-go/backend/internal/app/background_test.go +0 -320
  216. package/dist/templates/native-go/backend/internal/app/delegate_config.go +0 -57
  217. package/dist/templates/native-go/backend/internal/app/delegate_config_test.go +0 -28
  218. package/dist/templates/native-go/backend/internal/app/delegate_none.go +0 -5
  219. package/dist/templates/native-go/backend/internal/app/identity.go +0 -20
  220. package/dist/templates/native-go/backend/internal/app/identity_test.go +0 -15
  221. package/dist/templates/native-go/backend/internal/app/migrations.go +0 -41
  222. package/dist/templates/native-go/backend/internal/app/migrations_test.go +0 -41
  223. package/dist/templates/native-go/backend/internal/app/portal.go +0 -30
  224. package/dist/templates/native-go/backend/internal/app/portal_test.go +0 -55
  225. package/dist/templates/native-go/backend/internal/app/root_none.go +0 -9
  226. package/dist/templates/native-go/backend/internal/app/routes.go +0 -137
  227. package/dist/templates/native-go/backend/internal/app/routes_test.go +0 -165
  228. package/dist/templates/native-go/backend/internal/app/session_files.go +0 -9
  229. package/dist/templates/native-go/backend/internal/app/session_files_test.go +0 -14
  230. package/dist/templates/native-go/backend/internal/app/shared_folder.go +0 -144
  231. package/dist/templates/native-go/backend/internal/app/shared_folder_test.go +0 -158
  232. package/dist/templates/native-go/backend/internal/background/access.go +0 -57
  233. package/dist/templates/native-go/backend/internal/background/lock_test.go +0 -131
  234. package/dist/templates/native-go/backend/internal/background/owner_test.go +0 -118
  235. package/dist/templates/native-go/backend/internal/background/runner.go +0 -185
  236. package/dist/templates/native-go/backend/internal/background/runner_test.go +0 -209
  237. package/dist/templates/native-go/backend/internal/background/schedule.go +0 -336
  238. package/dist/templates/native-go/backend/internal/background/schedule_test.go +0 -368
  239. package/dist/templates/native-go/backend/internal/background/store.go +0 -825
  240. package/dist/templates/native-go/backend/internal/background/store_test.go +0 -365
  241. package/dist/templates/native-go/backend/internal/datamigrate/migrate.go +0 -191
  242. package/dist/templates/native-go/backend/internal/datamigrate/migrate_test.go +0 -177
  243. package/dist/templates/native-go/backend/internal/dsm/admin.go +0 -76
  244. package/dist/templates/native-go/backend/internal/dsm/admin_linux.go +0 -110
  245. package/dist/templates/native-go/backend/internal/dsm/admin_linux_test.go +0 -105
  246. package/dist/templates/native-go/backend/internal/dsm/admin_other.go +0 -15
  247. package/dist/templates/native-go/backend/internal/dsm/admin_test.go +0 -67
  248. package/dist/templates/native-go/backend/internal/dsm/apppriv.go +0 -30
  249. package/dist/templates/native-go/backend/internal/dsm/auth.go +0 -94
  250. package/dist/templates/native-go/backend/internal/dsm/auth_test.go +0 -159
  251. package/dist/templates/native-go/backend/internal/dsm/bridge_file.go +0 -75
  252. package/dist/templates/native-go/backend/internal/dsm/bridge_file_test.go +0 -57
  253. package/dist/templates/native-go/backend/internal/dsm/entry.go +0 -177
  254. package/dist/templates/native-go/backend/internal/dsm/entry_test.go +0 -315
  255. package/dist/templates/native-go/backend/internal/dsm/native/admin-aarch64.elf +0 -0
  256. package/dist/templates/native-go/backend/internal/dsm/native/admin-armv7.elf +0 -0
  257. package/dist/templates/native-go/backend/internal/dsm/native/admin-x86_64.elf +0 -0
  258. package/dist/templates/native-go/backend/internal/dsm/native/admin_check.c +0 -28
  259. package/dist/templates/native-go/backend/internal/dsm/native/apppriv-aarch64.elf +0 -0
  260. package/dist/templates/native-go/backend/internal/dsm/native/apppriv-armv7.elf +0 -0
  261. package/dist/templates/native-go/backend/internal/dsm/native/apppriv-x86_64.elf +0 -0
  262. package/dist/templates/native-go/backend/internal/dsm/native/apppriv_check.c +0 -33
  263. package/dist/templates/native-go/backend/internal/dsm/native/build.sh +0 -18
  264. package/dist/templates/native-go/backend/internal/dsm/native/licenses/GLIBC-NOTICES.txt +0 -400
  265. package/dist/templates/native-go/backend/internal/dsm/native/licenses/LGPL-2.1.txt +0 -501
  266. package/dist/templates/native-go/backend/internal/dsm/native/licenses/SOURCE.txt +0 -5
  267. package/dist/templates/native-go/backend/internal/dsm/native/licenses/ZIG-MIT.txt +0 -21
  268. package/dist/templates/native-go/backend/internal/dsm/native/provenance.json +0 -18
  269. package/dist/templates/native-go/backend/internal/filestation/browse_test.go +0 -67
  270. package/dist/templates/native-go/backend/internal/filestation/check_permission.go +0 -71
  271. package/dist/templates/native-go/backend/internal/filestation/check_permission_test.go +0 -77
  272. package/dist/templates/native-go/backend/internal/filestation/client.go +0 -337
  273. package/dist/templates/native-go/backend/internal/filestation/client_test.go +0 -155
  274. package/dist/templates/native-go/backend/internal/filestation/doc.go +0 -4
  275. package/dist/templates/native-go/backend/internal/filestation/download_dsm71_test.go +0 -82
  276. package/dist/templates/native-go/backend/internal/filestation/http.go +0 -70
  277. package/dist/templates/native-go/backend/internal/filestation/http_test.go +0 -188
  278. package/dist/templates/native-go/backend/internal/filestation/operations_test.go +0 -206
  279. package/dist/templates/native-go/backend/internal/filestation/read_file_test.go +0 -89
  280. package/dist/templates/native-go/backend/internal/filestation/sdk_policy_test.go +0 -39
  281. package/dist/templates/native-go/backend/internal/filestation/service.go +0 -254
  282. package/dist/templates/native-go/backend/internal/filestation/service_test.go +0 -74
  283. package/dist/templates/native-go/backend/internal/filestation/upload_stream.go +0 -76
  284. package/dist/templates/native-go/backend/internal/filestation/upload_stream_test.go +0 -77
  285. package/dist/templates/native-go/backend/internal/filestation/write.go +0 -32
  286. package/dist/templates/native-go/backend/internal/filestation/write_test.go +0 -124
  287. package/dist/templates/native-go/backend/internal/identity/README.md +0 -59
  288. package/dist/templates/native-go/backend/internal/identity/dsm.go +0 -115
  289. package/dist/templates/native-go/backend/internal/identity/http.go +0 -291
  290. package/dist/templates/native-go/backend/internal/identity/identity_test.go +0 -530
  291. package/dist/templates/native-go/backend/internal/identity/service.go +0 -159
  292. package/dist/templates/native-go/backend/internal/identity/store.go +0 -109
  293. package/dist/templates/native-go/backend/internal/jsonlimits/limits.go +0 -48
  294. package/dist/templates/native-go/backend/internal/jsonlimits/limits_test.go +0 -52
  295. package/dist/templates/native-go/backend/internal/portal/portal.go +0 -138
  296. package/dist/templates/native-go/backend/internal/portal/portal_test.go +0 -89
  297. package/dist/templates/native-go/dsm-package.yaml +0 -71
  298. package/dist/templates/native-go/gitignore +0 -1
  299. package/dist/templates/native-go/i18n/glossary.json +0 -663
  300. package/dist/templates/native-go/i18n/messages/de.json +0 -29
  301. package/dist/templates/native-go/i18n/messages/en.json +0 -29
  302. package/dist/templates/native-go/i18n/messages/es.json +0 -29
  303. package/dist/templates/native-go/i18n/messages/fr.json +0 -29
  304. package/dist/templates/native-go/i18n/messages/it.json +0 -29
  305. package/dist/templates/native-go/i18n/messages/ja.json +0 -29
  306. package/dist/templates/native-go/i18n/messages/ko.json +0 -29
  307. package/dist/templates/native-go/i18n/messages/zh-CN.json +0 -29
  308. package/dist/templates/native-go/i18n/messages/zh-TW.json +0 -29
  309. package/dist/templates/native-go/ui/app.css +0 -45
  310. package/dist/templates/native-go/ui/app.js +0 -111
  311. package/dist/templates/native-go-delegate/DELEGATE.md +0 -263
  312. package/dist/templates/native-go-delegate/backend/cmd/background-worker/main.go +0 -48
  313. package/dist/templates/native-go-delegate/backend/internal/app/delegate.go +0 -25
  314. package/dist/templates/native-go-delegate/backend/internal/app/delegate_on.go +0 -5
  315. package/dist/templates/native-go-delegate/backend/internal/app/delegate_routes_test.go +0 -31
  316. package/dist/templates/native-go-delegate/backend/internal/background/delegate_review_test.go +0 -174
  317. package/dist/templates/native-go-delegate/backend/internal/background/delegated.go +0 -277
  318. package/dist/templates/native-go-delegate/backend/internal/background/delegated_moves.go +0 -270
  319. package/dist/templates/native-go-delegate/backend/internal/background/delegated_test.go +0 -34
  320. package/dist/templates/native-go-delegate/backend/internal/delegate/admission_recovery_test.go +0 -410
  321. package/dist/templates/native-go-delegate/backend/internal/delegate/busy_review_test.go +0 -15
  322. package/dist/templates/native-go-delegate/backend/internal/delegate/cancel_contract_test.go +0 -95
  323. package/dist/templates/native-go-delegate/backend/internal/delegate/client.go +0 -151
  324. package/dist/templates/native-go-delegate/backend/internal/delegate/client_test.go +0 -214
  325. package/dist/templates/native-go-delegate/backend/internal/delegate/destination.go +0 -110
  326. package/dist/templates/native-go-delegate/backend/internal/delegate/destination_state.go +0 -117
  327. package/dist/templates/native-go-delegate/backend/internal/delegate/destination_state_test.go +0 -60
  328. package/dist/templates/native-go-delegate/backend/internal/delegate/destination_test.go +0 -116
  329. package/dist/templates/native-go-delegate/backend/internal/delegate/example.go +0 -81
  330. package/dist/templates/native-go-delegate/backend/internal/delegate/example_test.go +0 -91
  331. package/dist/templates/native-go-delegate/backend/internal/delegate/executor_contract_test.go +0 -511
  332. package/dist/templates/native-go-delegate/backend/internal/delegate/files.go +0 -132
  333. package/dist/templates/native-go-delegate/backend/internal/delegate/long_running_routes.go +0 -92
  334. package/dist/templates/native-go-delegate/backend/internal/delegate/long_running_routes_test.go +0 -99
  335. package/dist/templates/native-go-delegate/backend/internal/delegate/move.go +0 -348
  336. package/dist/templates/native-go-delegate/backend/internal/delegate/move_test.go +0 -351
  337. package/dist/templates/native-go-delegate/backend/internal/delegate/operations_list.go +0 -65
  338. package/dist/templates/native-go-delegate/backend/internal/delegate/operations_list_test.go +0 -114
  339. package/dist/templates/native-go-delegate/backend/internal/delegate/retry.go +0 -106
  340. package/dist/templates/native-go-delegate/backend/internal/delegate/retry_test.go +0 -143
  341. package/dist/templates/native-go-delegate/backend/internal/delegate/service.go +0 -364
  342. package/dist/templates/native-go-delegate/backend/internal/delegate/service_test.go +0 -318
  343. package/dist/templates/native-go-delegate/backend/internal/delegate/staging.go +0 -121
  344. package/dist/templates/native-go-delegate/backend/internal/delegate/status_disabled_test.go +0 -51
  345. package/dist/templates/native-go-delegate/backend/internal/delegate/testdata/executor_contract.txt +0 -112
  346. package/dist/templates/native-go-delegate/backend/internal/delegate/transient_contract_test.go +0 -137
  347. package/dist/templates/native-go-delegate/backend/internal/delegate/wait_cancel_test.go +0 -101
  348. package/dist/templates/native-go-delegate/backend/internal/delegate/worker.go +0 -225
  349. package/dist/templates/native-go-delegate/backend/internal/filestation/files.go +0 -43
  350. package/dist/templates/native-go-delegate/backend/internal/filestation/files_test.go +0 -59
  351. package/dist/templates/native-go-delegate/frontend/src/CapabilityPanels.vue +0 -37
  352. package/dist/templates/native-go-delegate/frontend/src/delegate/BackgroundSavePanel.vue +0 -113
  353. package/dist/templates/native-go-delegate/frontend/src/delegate/DelegatePanel.vue +0 -70
  354. package/dist/templates/native-go-delegate/frontend/src/delegate/copy.ts +0 -8
  355. package/dist/templates/native-go-delegate/frontend/src/delegate/i18n/waiting.json +0 -11
  356. package/dist/templates/native-go-delegate/frontend/test/background-save.test.ts +0 -121
  357. package/dist/templates/native-go-delegate/frontend/test/delegate.test.ts +0 -145
  358. package/dist/templates/native-go-delegate/frontend/test/scope-settings.test.ts +0 -49
  359. package/dist/templates/native-go-delegate/test-frontend.sh +0 -12
  360. package/dist/templates/native-go-delegate/test.sh +0 -18
  361. package/dist/templates/native-go-jobs/BACKGROUND.md +0 -108
  362. package/dist/templates/native-go-jobs/backend/internal/app/background_on.go +0 -7
  363. package/dist/templates/native-go-jobs/backend/internal/app/background_routes_test.go +0 -90
  364. package/dist/templates/native-go-jobs/frontend/src/background/BackgroundPanel.vue +0 -170
  365. package/dist/templates/native-go-jobs/frontend/src/background/i18n/de.json +0 -75
  366. package/dist/templates/native-go-jobs/frontend/src/background/i18n/en.json +0 -75
  367. package/dist/templates/native-go-jobs/frontend/src/background/i18n/es.json +0 -75
  368. package/dist/templates/native-go-jobs/frontend/src/background/i18n/fr.json +0 -75
  369. package/dist/templates/native-go-jobs/frontend/src/background/i18n/it.json +0 -75
  370. package/dist/templates/native-go-jobs/frontend/src/background/i18n/ja.json +0 -75
  371. package/dist/templates/native-go-jobs/frontend/src/background/i18n/ko.json +0 -75
  372. package/dist/templates/native-go-jobs/frontend/src/background/i18n/zh-CN.json +0 -75
  373. package/dist/templates/native-go-jobs/frontend/src/background/i18n/zh-TW.json +0 -75
  374. package/dist/templates/native-go-jobs/frontend/src/background/i18n.ts +0 -19
  375. package/dist/templates/native-go-jobs/frontend/src/background/picker-provider.ts +0 -12
  376. package/dist/templates/native-go-jobs/frontend/src/background/request-key.ts +0 -5
  377. package/dist/templates/native-go-jobs/frontend/test/background.test.ts +0 -205
  378. package/dist/templates/native-go-root-ops/backend/internal/app/executor.go +0 -140
  379. package/dist/templates/native-go-root-ops/backend/internal/app/executor_test.go +0 -117
  380. package/dist/templates/native-go-root-ops/root/whoami.sh +0 -3
  381. package/dist/templates/native-go-vue/README.md +0 -47
  382. package/dist/templates/native-go-vue/frontend/DESIGN.md +0 -61
  383. package/dist/templates/native-go-vue/frontend/package-lock.json +0 -2530
  384. package/dist/templates/native-go-vue/frontend/package.json +0 -6
  385. package/dist/templates/native-go-vue/frontend/src/App.vue +0 -96
  386. package/dist/templates/native-go-vue/frontend/src/CapabilityPanels.vue +0 -6
  387. package/dist/templates/native-go-vue/frontend/src/context.ts +0 -78
  388. package/dist/templates/native-go-vue/frontend/src/delegate/ExecutorSettings.vue +0 -70
  389. package/dist/templates/native-go-vue/frontend/src/delegate/catalogs.ts +0 -11
  390. package/dist/templates/native-go-vue/frontend/src/delegate/copy.test.ts +0 -12
  391. package/dist/templates/native-go-vue/frontend/src/delegate/copy.ts +0 -4
  392. package/dist/templates/native-go-vue/frontend/src/delegate/executor-settings.test.ts +0 -23
  393. package/dist/templates/native-go-vue/frontend/src/delegate/executor-setup.ts +0 -24
  394. package/dist/templates/native-go-vue/frontend/src/delegate/facade.test.ts +0 -100
  395. package/dist/templates/native-go-vue/frontend/src/delegate/facade.ts +0 -85
  396. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/de.json +0 -47
  397. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/en.json +0 -47
  398. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/es.json +0 -47
  399. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/fr.json +0 -47
  400. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/it.json +0 -47
  401. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/ja.json +0 -47
  402. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/ko.json +0 -47
  403. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/de.json +0 -42
  404. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/en.json +0 -42
  405. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/es.json +0 -42
  406. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/fr.json +0 -42
  407. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/it.json +0 -42
  408. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/ja.json +0 -42
  409. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/ko.json +0 -42
  410. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/zh-CN.json +0 -42
  411. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/zh-TW.json +0 -42
  412. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/zh-CN.json +0 -47
  413. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/zh-TW.json +0 -47
  414. package/dist/templates/native-go-vue/frontend/src/delegate/long-running.ts +0 -57
  415. package/dist/templates/native-go-vue/frontend/src/delegate/save-copy.test.ts +0 -12
  416. package/dist/templates/native-go-vue/frontend/src/delegate/save-copy.ts +0 -24
  417. package/dist/templates/native-go-vue/frontend/src/delegate/scoped-picker.test.ts +0 -12
  418. package/dist/templates/native-go-vue/frontend/src/delegate/scoped-picker.ts +0 -21
  419. package/dist/templates/native-go-vue/frontend/src/files/FileBrowser.vue +0 -131
  420. package/dist/templates/native-go-vue/frontend/src/files/FilesPage.vue +0 -35
  421. package/dist/templates/native-go-vue/frontend/src/files/files.test.ts +0 -100
  422. package/dist/templates/native-go-vue/frontend/src/files/provider.test.ts +0 -48
  423. package/dist/templates/native-go-vue/frontend/src/files/transfers.test.ts +0 -27
  424. package/dist/templates/native-go-vue/frontend/src/files/transfers.ts +0 -25
  425. package/dist/templates/native-go-vue/frontend/src/i18n/de.json +0 -20
  426. package/dist/templates/native-go-vue/frontend/src/i18n/en.json +0 -20
  427. package/dist/templates/native-go-vue/frontend/src/i18n/es.json +0 -20
  428. package/dist/templates/native-go-vue/frontend/src/i18n/fr.json +0 -20
  429. package/dist/templates/native-go-vue/frontend/src/i18n/it.json +0 -20
  430. package/dist/templates/native-go-vue/frontend/src/i18n/ja.json +0 -20
  431. package/dist/templates/native-go-vue/frontend/src/i18n/ko.json +0 -20
  432. package/dist/templates/native-go-vue/frontend/src/i18n/zh-CN.json +0 -20
  433. package/dist/templates/native-go-vue/frontend/src/i18n/zh-TW.json +0 -20
  434. package/dist/templates/native-go-vue/frontend/src/i18n.ts +0 -13
  435. package/dist/templates/native-go-vue/frontend/src/identity/DESIGN.md +0 -46
  436. package/dist/templates/native-go-vue/frontend/src/identity/LoginPage.vue +0 -78
  437. package/dist/templates/native-go-vue/frontend/src/identity/i18n/de.json +0 -27
  438. package/dist/templates/native-go-vue/frontend/src/identity/i18n/en.json +0 -27
  439. package/dist/templates/native-go-vue/frontend/src/identity/i18n/es.json +0 -27
  440. package/dist/templates/native-go-vue/frontend/src/identity/i18n/fr.json +0 -27
  441. package/dist/templates/native-go-vue/frontend/src/identity/i18n/it.json +0 -27
  442. package/dist/templates/native-go-vue/frontend/src/identity/i18n/ja.json +0 -27
  443. package/dist/templates/native-go-vue/frontend/src/identity/i18n/ko.json +0 -27
  444. package/dist/templates/native-go-vue/frontend/src/identity/i18n/zh-CN.json +0 -27
  445. package/dist/templates/native-go-vue/frontend/src/identity/i18n/zh-TW.json +0 -27
  446. package/dist/templates/native-go-vue/frontend/src/identity/i18n.ts +0 -14
  447. package/dist/templates/native-go-vue/frontend/src/identity/login.test.ts +0 -32
  448. package/dist/templates/native-go-vue/frontend/src/identity/session.test.ts +0 -33
  449. package/dist/templates/native-go-vue/frontend/src/identity/session.ts +0 -74
  450. package/dist/templates/native-go-vue/frontend/src/main.ts +0 -32
  451. package/dist/templates/native-go-vue/frontend/src/nas/NasPicker.vue +0 -42
  452. package/dist/templates/native-go-vue/frontend/src/nas/contract.ts +0 -12
  453. package/dist/templates/native-go-vue/frontend/src/nas/destination.test.ts +0 -48
  454. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/de.json +0 -41
  455. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/en.json +0 -41
  456. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/es.json +0 -41
  457. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/fr.json +0 -41
  458. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/it.json +0 -41
  459. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/ja.json +0 -41
  460. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/ko.json +0 -41
  461. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/zh-CN.json +0 -41
  462. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/zh-TW.json +0 -41
  463. package/dist/templates/native-go-vue/frontend/src/nas/i18n.ts +0 -2
  464. package/dist/templates/native-go-vue/frontend/src/nas/locale.ts +0 -24
  465. package/dist/templates/native-go-vue/frontend/src/nas/provider.ts +0 -50
  466. package/dist/templates/native-go-vue/frontend/src/nas/use-request.ts +0 -18
  467. package/dist/templates/native-go-vue/frontend/src/portal/PortalSettings.vue +0 -39
  468. package/dist/templates/native-go-vue/frontend/src/shell/AppShell.vue +0 -48
  469. package/dist/templates/native-go-vue/frontend/src/shell/i18n/de.json +0 -4
  470. package/dist/templates/native-go-vue/frontend/src/shell/i18n/en.json +0 -4
  471. package/dist/templates/native-go-vue/frontend/src/shell/i18n/es.json +0 -4
  472. package/dist/templates/native-go-vue/frontend/src/shell/i18n/fr.json +0 -4
  473. package/dist/templates/native-go-vue/frontend/src/shell/i18n/it.json +0 -4
  474. package/dist/templates/native-go-vue/frontend/src/shell/i18n/ja.json +0 -4
  475. package/dist/templates/native-go-vue/frontend/src/shell/i18n/ko.json +0 -4
  476. package/dist/templates/native-go-vue/frontend/src/shell/i18n/zh-CN.json +0 -4
  477. package/dist/templates/native-go-vue/frontend/src/shell/i18n/zh-TW.json +0 -4
  478. package/dist/templates/native-go-vue/frontend/src/shell/i18n.ts +0 -17
  479. package/dist/templates/native-go-vue/frontend/src/shell/pages.ts +0 -15
  480. package/dist/templates/native-go-vue/frontend/src/style.css +0 -27
  481. package/dist/templates/native-go-vue/frontend/test/apps.test.ts +0 -57
  482. package/dist/templates/native-go-vue/frontend/test/native-controls.test.ts +0 -27
  483. package/dist/templates/native-go-vue/frontend/test/portal-settings.test.ts +0 -71
  484. package/dist/templates/native-go-vue/frontend/test/shell-i18n.test.ts +0 -50
  485. package/dist/templates/native-go-vue/frontend/test/shell-ui.test.ts +0 -20
  486. package/dist/templates/native-go-vue/frontend/test/shell.test.ts +0 -30
  487. package/dist/templates/native-go-vue/frontend/tsconfig.json +0 -1
  488. package/dist/templates/native-go-vue/frontend/vite.config.ts +0 -10
  489. package/dist/templates/native-go-vue/gitignore +0 -2
  490. package/templates/_daemon/fixture_linux_test.go +0 -15
  491. package/templates/_daemon/fixture_other_test.go +0 -7
  492. package/templates/_daemon/go.mod +0 -5
  493. package/templates/_daemon/main.go +0 -611
  494. package/templates/_daemon/main_test.go +0 -315
  495. package/templates/_daemon/process_linux.go +0 -55
  496. package/templates/_daemon/process_linux_test.go +0 -161
  497. package/templates/_daemon/process_other.go +0 -14
  498. package/templates/_daemon/testdata/child.go +0 -44
  499. package/templates/_executor/README.md +0 -318
  500. package/templates/_executor/anchor.go +0 -156
  501. package/templates/_executor/anchor_test.go +0 -161
  502. package/templates/_executor/apppriv_review_test.go +0 -28
  503. package/templates/_executor/auth_presence_review_test.go +0 -38
  504. package/templates/_executor/cancel_contract_test.go +0 -236
  505. package/templates/_executor/cmd/lifecycle/main.go +0 -42
  506. package/templates/_executor/cookie_review_test.go +0 -27
  507. package/templates/_executor/copy.go +0 -64
  508. package/templates/_executor/copy_test.go +0 -88
  509. package/templates/_executor/digest_review_test.go +0 -120
  510. package/templates/_executor/directories.go +0 -40
  511. package/templates/_executor/dsm.go +0 -369
  512. package/templates/_executor/dsm_test.go +0 -290
  513. package/templates/_executor/executor.go +0 -735
  514. package/templates/_executor/executor_test.go +0 -314
  515. package/templates/_executor/go.mod +0 -5
  516. package/templates/_executor/identity.go +0 -74
  517. package/templates/_executor/identity_kernel_linux_test.go +0 -60
  518. package/templates/_executor/identity_linux.go +0 -82
  519. package/templates/_executor/identity_security_test.go +0 -43
  520. package/templates/_executor/internal/lifecycle/lifecycle.go +0 -95
  521. package/templates/_executor/internal/lifecycle/lifecycle_test.go +0 -232
  522. package/templates/_executor/internal/taskscript/boot.sh +0 -31
  523. package/templates/_executor/internal/taskscript/cmd/main.go +0 -19
  524. package/templates/_executor/internal/taskscript/control.sh +0 -31
  525. package/templates/_executor/internal/taskscript/tasks.go +0 -44
  526. package/templates/_executor/json_review_test.go +0 -40
  527. package/templates/_executor/lifecycle_test.go +0 -97
  528. package/templates/_executor/link_linux.go +0 -28
  529. package/templates/_executor/long_running_test.go +0 -530
  530. package/templates/_executor/main.go +0 -576
  531. package/templates/_executor/managed.go +0 -117
  532. package/templates/_executor/managed_test.go +0 -137
  533. package/templates/_executor/move_linux.go +0 -490
  534. package/templates/_executor/move_linux_test.go +0 -460
  535. package/templates/_executor/move_validation.go +0 -46
  536. package/templates/_executor/move_validation_test.go +0 -187
  537. package/templates/_executor/operations.go +0 -926
  538. package/templates/_executor/path_test.go +0 -35
  539. package/templates/_executor/pid.go +0 -37
  540. package/templates/_executor/pid_test.go +0 -113
  541. package/templates/_executor/platform_linux.go +0 -187
  542. package/templates/_executor/platform_linux_test.go +0 -191
  543. package/templates/_executor/platform_other.go +0 -76
  544. package/templates/_executor/process.go +0 -142
  545. package/templates/_executor/purge_log.go +0 -18
  546. package/templates/_executor/records.go +0 -242
  547. package/templates/_executor/scope_cancel_contract_test.go +0 -91
  548. package/templates/_executor/scope_client.go +0 -37
  549. package/templates/_executor/scope_contract.go +0 -12
  550. package/templates/_executor/selected_scope.go +0 -146
  551. package/templates/_executor/selected_scope_test.go +0 -186
  552. package/templates/_executor/socket_linux_test.go +0 -46
  553. package/templates/_executor/status_disabled_test.go +0 -33
  554. package/templates/_executor/store.go +0 -91
  555. package/templates/_executor/supervise.go +0 -109
  556. package/templates/_executor/supervise_test.go +0 -130
  557. package/templates/_executor/task_race_review_test.go +0 -47
  558. package/templates/_executor/tasks.go +0 -320
  559. package/templates/_executor/tasks_dsm71_test.go +0 -114
  560. package/templates/_executor/tasks_review_test.go +0 -43
  561. package/templates/_executor/tasks_test.go +0 -223
  562. package/templates/_executor/testdata/evidence/cleanup.json +0 -24
  563. package/templates/_executor/testdata/evidence/final-smoke.jsonl +0 -9
  564. package/templates/_executor/testdata/evidence/kernel-acl.json +0 -6
  565. package/templates/_executor/testdata/evidence/linux-tests.log +0 -123
  566. package/templates/_executor/testdata/evidence/live.jsonl +0 -23
  567. package/templates/_executor/testdata/evidence/storage.json +0 -90
  568. package/templates/_executor/testdata/evidence/validation.json +0 -55
  569. package/templates/_executor/testdata/live_probe.py +0 -98
  570. package/templates/_executor/upgrade_watch_test.go +0 -244
  571. package/templates/_executor/watch.go +0 -164
  572. package/templates/_executor/watch_test.go +0 -291
  573. package/templates/_executor/write_review_linux_test.go +0 -87
  574. package/templates/_gateway/auth.go +0 -101
  575. package/templates/_gateway/auth_test.go +0 -216
  576. package/templates/_gateway/cgi.go +0 -133
  577. package/templates/_gateway/cgi_test.go +0 -156
  578. package/templates/_gateway/csrf.go +0 -73
  579. package/templates/_gateway/csrf_test.go +0 -155
  580. package/templates/_gateway/directory.go +0 -108
  581. package/templates/_gateway/directory_test.go +0 -202
  582. package/templates/_gateway/gateway.go +0 -412
  583. package/templates/_gateway/gateway_test.go +0 -676
  584. package/templates/_gateway/go.mod +0 -5
  585. package/templates/_gateway/groups.go +0 -66
  586. package/templates/_gateway/main.go +0 -45
  587. package/templates/_shared/AGENTS.md +0 -146
  588. package/templates/_shared/CLAUDE.md +0 -1
  589. package/templates/_shared/GO-LICENSE +0 -27
  590. package/templates/_shared/GO-PATENTS +0 -22
  591. package/templates/_shared/LICENSES/TEMPLATE.txt +0 -21
  592. package/templates/_shared/third-party-notices.mjs +0 -51
  593. package/templates/binary/LICENSES/GO-LICENSE +0 -27
  594. package/templates/binary/LICENSES/GO-PATENTS +0 -22
  595. package/templates/binary/dsm-package.yaml +0 -46
  596. package/templates/binary/example/main.go +0 -16
  597. package/templates/binary/gitignore +0 -2
  598. package/templates/binary/i18n/messages/de.json +0 -4
  599. package/templates/binary/i18n/messages/en.json +0 -4
  600. package/templates/binary/i18n/messages/es.json +0 -4
  601. package/templates/binary/i18n/messages/fr.json +0 -4
  602. package/templates/binary/i18n/messages/it.json +0 -4
  603. package/templates/binary/i18n/messages/ja.json +0 -4
  604. package/templates/binary/i18n/messages/ko.json +0 -4
  605. package/templates/binary/i18n/messages/zh-CN.json +0 -4
  606. package/templates/binary/i18n/messages/zh-TW.json +0 -4
  607. package/templates/binary/ui/app.css +0 -4
  608. package/templates/binary/ui/app.js +0 -32
  609. package/templates/compose/compose.yaml +0 -8
  610. package/templates/compose/synology-app.yaml +0 -16
  611. package/templates/native-authorization/AuthorizationGate.vue +0 -91
  612. package/templates/native-authorization/i18n/de.json +0 -37
  613. package/templates/native-authorization/i18n/en.json +0 -37
  614. package/templates/native-authorization/i18n/es.json +0 -37
  615. package/templates/native-authorization/i18n/fr.json +0 -37
  616. package/templates/native-authorization/i18n/index.ts +0 -15
  617. package/templates/native-authorization/i18n/it.json +0 -37
  618. package/templates/native-authorization/i18n/ja.json +0 -37
  619. package/templates/native-authorization/i18n/ko.json +0 -37
  620. package/templates/native-authorization/i18n/zh-CN.json +0 -37
  621. package/templates/native-authorization/i18n/zh-TW.json +0 -37
  622. package/templates/native-go/README.md +0 -459
  623. package/templates/native-go/backend/THIRD_PARTY_NOTICES.txt +0 -61
  624. package/templates/native-go/backend/cmd/app/main.go +0 -95
  625. package/templates/native-go/backend/cmd/background-worker/main.go +0 -38
  626. package/templates/native-go/backend/go.mod +0 -9
  627. package/templates/native-go/backend/go.sum +0 -4
  628. package/templates/native-go/backend/internal/api/cgi_framing_test.go +0 -32
  629. package/templates/native-go/backend/internal/api/cookie_review_test.go +0 -28
  630. package/templates/native-go/backend/internal/api/deadline_test.go +0 -114
  631. package/templates/native-go/backend/internal/api/dsm-session.go +0 -54
  632. package/templates/native-go/backend/internal/api/dsm-session_test.go +0 -51
  633. package/templates/native-go/backend/internal/api/entry_test.go +0 -47
  634. package/templates/native-go/backend/internal/api/errors.go +0 -47
  635. package/templates/native-go/backend/internal/api/permissions.go +0 -161
  636. package/templates/native-go/backend/internal/api/permissions.json +0 -5
  637. package/templates/native-go/backend/internal/api/permissions_test.go +0 -113
  638. package/templates/native-go/backend/internal/api/policy_fixture_test.go +0 -8
  639. package/templates/native-go/backend/internal/api/registry.go +0 -142
  640. package/templates/native-go/backend/internal/api/registry_test.go +0 -344
  641. package/templates/native-go/backend/internal/api/resource_limits_test.go +0 -87
  642. package/templates/native-go/backend/internal/api/sdk-permissions.json +0 -59
  643. package/templates/native-go/backend/internal/api/sdk_policy_test.go +0 -31
  644. package/templates/native-go/backend/internal/api/server.go +0 -305
  645. package/templates/native-go/backend/internal/api/testdata/permissions-cases.json +0 -172
  646. package/templates/native-go/backend/internal/app/background.go +0 -249
  647. package/templates/native-go/backend/internal/app/background_none.go +0 -8
  648. package/templates/native-go/backend/internal/app/background_owner.go +0 -38
  649. package/templates/native-go/backend/internal/app/background_owner_test.go +0 -163
  650. package/templates/native-go/backend/internal/app/background_schedule.go +0 -69
  651. package/templates/native-go/backend/internal/app/background_schedule_test.go +0 -62
  652. package/templates/native-go/backend/internal/app/background_test.go +0 -320
  653. package/templates/native-go/backend/internal/app/delegate_config.go +0 -57
  654. package/templates/native-go/backend/internal/app/delegate_config_test.go +0 -28
  655. package/templates/native-go/backend/internal/app/delegate_none.go +0 -5
  656. package/templates/native-go/backend/internal/app/identity.go +0 -20
  657. package/templates/native-go/backend/internal/app/identity_test.go +0 -15
  658. package/templates/native-go/backend/internal/app/migrations.go +0 -41
  659. package/templates/native-go/backend/internal/app/migrations_test.go +0 -41
  660. package/templates/native-go/backend/internal/app/portal.go +0 -30
  661. package/templates/native-go/backend/internal/app/portal_test.go +0 -55
  662. package/templates/native-go/backend/internal/app/root_none.go +0 -9
  663. package/templates/native-go/backend/internal/app/routes.go +0 -137
  664. package/templates/native-go/backend/internal/app/routes_test.go +0 -165
  665. package/templates/native-go/backend/internal/app/session_files.go +0 -9
  666. package/templates/native-go/backend/internal/app/session_files_test.go +0 -14
  667. package/templates/native-go/backend/internal/app/shared_folder.go +0 -144
  668. package/templates/native-go/backend/internal/app/shared_folder_test.go +0 -158
  669. package/templates/native-go/backend/internal/background/access.go +0 -57
  670. package/templates/native-go/backend/internal/background/lock_test.go +0 -131
  671. package/templates/native-go/backend/internal/background/owner_test.go +0 -118
  672. package/templates/native-go/backend/internal/background/runner.go +0 -185
  673. package/templates/native-go/backend/internal/background/runner_test.go +0 -209
  674. package/templates/native-go/backend/internal/background/schedule.go +0 -336
  675. package/templates/native-go/backend/internal/background/schedule_test.go +0 -368
  676. package/templates/native-go/backend/internal/background/store.go +0 -825
  677. package/templates/native-go/backend/internal/background/store_test.go +0 -365
  678. package/templates/native-go/backend/internal/datamigrate/migrate.go +0 -191
  679. package/templates/native-go/backend/internal/datamigrate/migrate_test.go +0 -177
  680. package/templates/native-go/backend/internal/dsm/admin.go +0 -76
  681. package/templates/native-go/backend/internal/dsm/admin_linux.go +0 -110
  682. package/templates/native-go/backend/internal/dsm/admin_linux_test.go +0 -105
  683. package/templates/native-go/backend/internal/dsm/admin_other.go +0 -15
  684. package/templates/native-go/backend/internal/dsm/admin_test.go +0 -67
  685. package/templates/native-go/backend/internal/dsm/apppriv.go +0 -30
  686. package/templates/native-go/backend/internal/dsm/auth.go +0 -94
  687. package/templates/native-go/backend/internal/dsm/auth_test.go +0 -159
  688. package/templates/native-go/backend/internal/dsm/bridge_file.go +0 -75
  689. package/templates/native-go/backend/internal/dsm/bridge_file_test.go +0 -57
  690. package/templates/native-go/backend/internal/dsm/entry.go +0 -177
  691. package/templates/native-go/backend/internal/dsm/entry_test.go +0 -315
  692. package/templates/native-go/backend/internal/dsm/native/admin-aarch64.elf +0 -0
  693. package/templates/native-go/backend/internal/dsm/native/admin-armv7.elf +0 -0
  694. package/templates/native-go/backend/internal/dsm/native/admin-x86_64.elf +0 -0
  695. package/templates/native-go/backend/internal/dsm/native/admin_check.c +0 -28
  696. package/templates/native-go/backend/internal/dsm/native/apppriv-aarch64.elf +0 -0
  697. package/templates/native-go/backend/internal/dsm/native/apppriv-armv7.elf +0 -0
  698. package/templates/native-go/backend/internal/dsm/native/apppriv-x86_64.elf +0 -0
  699. package/templates/native-go/backend/internal/dsm/native/apppriv_check.c +0 -33
  700. package/templates/native-go/backend/internal/dsm/native/build.sh +0 -18
  701. package/templates/native-go/backend/internal/dsm/native/licenses/GLIBC-NOTICES.txt +0 -400
  702. package/templates/native-go/backend/internal/dsm/native/licenses/LGPL-2.1.txt +0 -501
  703. package/templates/native-go/backend/internal/dsm/native/licenses/SOURCE.txt +0 -5
  704. package/templates/native-go/backend/internal/dsm/native/licenses/ZIG-MIT.txt +0 -21
  705. package/templates/native-go/backend/internal/dsm/native/provenance.json +0 -18
  706. package/templates/native-go/backend/internal/filestation/browse_test.go +0 -67
  707. package/templates/native-go/backend/internal/filestation/check_permission.go +0 -71
  708. package/templates/native-go/backend/internal/filestation/check_permission_test.go +0 -77
  709. package/templates/native-go/backend/internal/filestation/client.go +0 -337
  710. package/templates/native-go/backend/internal/filestation/client_test.go +0 -155
  711. package/templates/native-go/backend/internal/filestation/doc.go +0 -4
  712. package/templates/native-go/backend/internal/filestation/download_dsm71_test.go +0 -82
  713. package/templates/native-go/backend/internal/filestation/http.go +0 -70
  714. package/templates/native-go/backend/internal/filestation/http_test.go +0 -188
  715. package/templates/native-go/backend/internal/filestation/operations_test.go +0 -206
  716. package/templates/native-go/backend/internal/filestation/read_file_test.go +0 -89
  717. package/templates/native-go/backend/internal/filestation/sdk_policy_test.go +0 -39
  718. package/templates/native-go/backend/internal/filestation/service.go +0 -254
  719. package/templates/native-go/backend/internal/filestation/service_test.go +0 -74
  720. package/templates/native-go/backend/internal/filestation/upload_stream.go +0 -76
  721. package/templates/native-go/backend/internal/filestation/upload_stream_test.go +0 -77
  722. package/templates/native-go/backend/internal/filestation/write.go +0 -32
  723. package/templates/native-go/backend/internal/filestation/write_test.go +0 -124
  724. package/templates/native-go/backend/internal/identity/README.md +0 -59
  725. package/templates/native-go/backend/internal/identity/dsm.go +0 -115
  726. package/templates/native-go/backend/internal/identity/http.go +0 -291
  727. package/templates/native-go/backend/internal/identity/identity_test.go +0 -530
  728. package/templates/native-go/backend/internal/identity/service.go +0 -159
  729. package/templates/native-go/backend/internal/identity/store.go +0 -109
  730. package/templates/native-go/backend/internal/jsonlimits/limits.go +0 -48
  731. package/templates/native-go/backend/internal/jsonlimits/limits_test.go +0 -52
  732. package/templates/native-go/backend/internal/portal/portal.go +0 -138
  733. package/templates/native-go/backend/internal/portal/portal_test.go +0 -89
  734. package/templates/native-go/dsm-package.yaml +0 -71
  735. package/templates/native-go/gitignore +0 -1
  736. package/templates/native-go/i18n/glossary.json +0 -663
  737. package/templates/native-go/i18n/messages/de.json +0 -29
  738. package/templates/native-go/i18n/messages/en.json +0 -29
  739. package/templates/native-go/i18n/messages/es.json +0 -29
  740. package/templates/native-go/i18n/messages/fr.json +0 -29
  741. package/templates/native-go/i18n/messages/it.json +0 -29
  742. package/templates/native-go/i18n/messages/ja.json +0 -29
  743. package/templates/native-go/i18n/messages/ko.json +0 -29
  744. package/templates/native-go/i18n/messages/zh-CN.json +0 -29
  745. package/templates/native-go/i18n/messages/zh-TW.json +0 -29
  746. package/templates/native-go/ui/app.css +0 -45
  747. package/templates/native-go/ui/app.js +0 -111
  748. package/templates/native-go-delegate/DELEGATE.md +0 -263
  749. package/templates/native-go-delegate/backend/cmd/background-worker/main.go +0 -48
  750. package/templates/native-go-delegate/backend/internal/app/delegate.go +0 -25
  751. package/templates/native-go-delegate/backend/internal/app/delegate_on.go +0 -5
  752. package/templates/native-go-delegate/backend/internal/app/delegate_routes_test.go +0 -31
  753. package/templates/native-go-delegate/backend/internal/background/delegate_review_test.go +0 -174
  754. package/templates/native-go-delegate/backend/internal/background/delegated.go +0 -277
  755. package/templates/native-go-delegate/backend/internal/background/delegated_moves.go +0 -270
  756. package/templates/native-go-delegate/backend/internal/background/delegated_test.go +0 -34
  757. package/templates/native-go-delegate/backend/internal/delegate/admission_recovery_test.go +0 -410
  758. package/templates/native-go-delegate/backend/internal/delegate/busy_review_test.go +0 -15
  759. package/templates/native-go-delegate/backend/internal/delegate/cancel_contract_test.go +0 -95
  760. package/templates/native-go-delegate/backend/internal/delegate/client.go +0 -151
  761. package/templates/native-go-delegate/backend/internal/delegate/client_test.go +0 -214
  762. package/templates/native-go-delegate/backend/internal/delegate/destination.go +0 -110
  763. package/templates/native-go-delegate/backend/internal/delegate/destination_state.go +0 -117
  764. package/templates/native-go-delegate/backend/internal/delegate/destination_state_test.go +0 -60
  765. package/templates/native-go-delegate/backend/internal/delegate/destination_test.go +0 -116
  766. package/templates/native-go-delegate/backend/internal/delegate/example.go +0 -81
  767. package/templates/native-go-delegate/backend/internal/delegate/example_test.go +0 -91
  768. package/templates/native-go-delegate/backend/internal/delegate/executor_contract_test.go +0 -511
  769. package/templates/native-go-delegate/backend/internal/delegate/files.go +0 -132
  770. package/templates/native-go-delegate/backend/internal/delegate/long_running_routes.go +0 -92
  771. package/templates/native-go-delegate/backend/internal/delegate/long_running_routes_test.go +0 -99
  772. package/templates/native-go-delegate/backend/internal/delegate/move.go +0 -348
  773. package/templates/native-go-delegate/backend/internal/delegate/move_test.go +0 -351
  774. package/templates/native-go-delegate/backend/internal/delegate/operations_list.go +0 -65
  775. package/templates/native-go-delegate/backend/internal/delegate/operations_list_test.go +0 -114
  776. package/templates/native-go-delegate/backend/internal/delegate/retry.go +0 -106
  777. package/templates/native-go-delegate/backend/internal/delegate/retry_test.go +0 -143
  778. package/templates/native-go-delegate/backend/internal/delegate/service.go +0 -364
  779. package/templates/native-go-delegate/backend/internal/delegate/service_test.go +0 -318
  780. package/templates/native-go-delegate/backend/internal/delegate/staging.go +0 -121
  781. package/templates/native-go-delegate/backend/internal/delegate/status_disabled_test.go +0 -51
  782. package/templates/native-go-delegate/backend/internal/delegate/testdata/executor_contract.txt +0 -112
  783. package/templates/native-go-delegate/backend/internal/delegate/transient_contract_test.go +0 -137
  784. package/templates/native-go-delegate/backend/internal/delegate/wait_cancel_test.go +0 -101
  785. package/templates/native-go-delegate/backend/internal/delegate/worker.go +0 -225
  786. package/templates/native-go-delegate/backend/internal/filestation/files.go +0 -43
  787. package/templates/native-go-delegate/backend/internal/filestation/files_test.go +0 -59
  788. package/templates/native-go-delegate/frontend/src/CapabilityPanels.vue +0 -37
  789. package/templates/native-go-delegate/frontend/src/delegate/BackgroundSavePanel.vue +0 -113
  790. package/templates/native-go-delegate/frontend/src/delegate/DelegatePanel.vue +0 -70
  791. package/templates/native-go-delegate/frontend/src/delegate/copy.ts +0 -8
  792. package/templates/native-go-delegate/frontend/src/delegate/i18n/waiting.json +0 -11
  793. package/templates/native-go-delegate/frontend/test/background-save.test.ts +0 -121
  794. package/templates/native-go-delegate/frontend/test/delegate.test.ts +0 -145
  795. package/templates/native-go-delegate/frontend/test/scope-settings.test.ts +0 -49
  796. package/templates/native-go-delegate/test-frontend.sh +0 -12
  797. package/templates/native-go-delegate/test.sh +0 -18
  798. package/templates/native-go-jobs/BACKGROUND.md +0 -108
  799. package/templates/native-go-jobs/backend/internal/app/background_on.go +0 -7
  800. package/templates/native-go-jobs/backend/internal/app/background_routes_test.go +0 -90
  801. package/templates/native-go-jobs/frontend/src/background/BackgroundPanel.vue +0 -170
  802. package/templates/native-go-jobs/frontend/src/background/i18n/de.json +0 -75
  803. package/templates/native-go-jobs/frontend/src/background/i18n/en.json +0 -75
  804. package/templates/native-go-jobs/frontend/src/background/i18n/es.json +0 -75
  805. package/templates/native-go-jobs/frontend/src/background/i18n/fr.json +0 -75
  806. package/templates/native-go-jobs/frontend/src/background/i18n/it.json +0 -75
  807. package/templates/native-go-jobs/frontend/src/background/i18n/ja.json +0 -75
  808. package/templates/native-go-jobs/frontend/src/background/i18n/ko.json +0 -75
  809. package/templates/native-go-jobs/frontend/src/background/i18n/zh-CN.json +0 -75
  810. package/templates/native-go-jobs/frontend/src/background/i18n/zh-TW.json +0 -75
  811. package/templates/native-go-jobs/frontend/src/background/i18n.ts +0 -19
  812. package/templates/native-go-jobs/frontend/src/background/picker-provider.ts +0 -12
  813. package/templates/native-go-jobs/frontend/src/background/request-key.ts +0 -5
  814. package/templates/native-go-jobs/frontend/test/background.test.ts +0 -205
  815. package/templates/native-go-root-ops/backend/internal/app/executor.go +0 -140
  816. package/templates/native-go-root-ops/backend/internal/app/executor_test.go +0 -117
  817. package/templates/native-go-root-ops/root/whoami.sh +0 -3
  818. package/templates/native-go-vue/README.md +0 -47
  819. package/templates/native-go-vue/frontend/DESIGN.md +0 -61
  820. package/templates/native-go-vue/frontend/package-lock.json +0 -2530
  821. package/templates/native-go-vue/frontend/package.json +0 -6
  822. package/templates/native-go-vue/frontend/src/App.vue +0 -96
  823. package/templates/native-go-vue/frontend/src/CapabilityPanels.vue +0 -6
  824. package/templates/native-go-vue/frontend/src/context.ts +0 -78
  825. package/templates/native-go-vue/frontend/src/delegate/ExecutorSettings.vue +0 -70
  826. package/templates/native-go-vue/frontend/src/delegate/catalogs.ts +0 -11
  827. package/templates/native-go-vue/frontend/src/delegate/copy.test.ts +0 -12
  828. package/templates/native-go-vue/frontend/src/delegate/copy.ts +0 -4
  829. package/templates/native-go-vue/frontend/src/delegate/executor-settings.test.ts +0 -23
  830. package/templates/native-go-vue/frontend/src/delegate/executor-setup.ts +0 -24
  831. package/templates/native-go-vue/frontend/src/delegate/facade.test.ts +0 -100
  832. package/templates/native-go-vue/frontend/src/delegate/facade.ts +0 -85
  833. package/templates/native-go-vue/frontend/src/delegate/i18n/de.json +0 -47
  834. package/templates/native-go-vue/frontend/src/delegate/i18n/en.json +0 -47
  835. package/templates/native-go-vue/frontend/src/delegate/i18n/es.json +0 -47
  836. package/templates/native-go-vue/frontend/src/delegate/i18n/fr.json +0 -47
  837. package/templates/native-go-vue/frontend/src/delegate/i18n/it.json +0 -47
  838. package/templates/native-go-vue/frontend/src/delegate/i18n/ja.json +0 -47
  839. package/templates/native-go-vue/frontend/src/delegate/i18n/ko.json +0 -47
  840. package/templates/native-go-vue/frontend/src/delegate/i18n/save/de.json +0 -42
  841. package/templates/native-go-vue/frontend/src/delegate/i18n/save/en.json +0 -42
  842. package/templates/native-go-vue/frontend/src/delegate/i18n/save/es.json +0 -42
  843. package/templates/native-go-vue/frontend/src/delegate/i18n/save/fr.json +0 -42
  844. package/templates/native-go-vue/frontend/src/delegate/i18n/save/it.json +0 -42
  845. package/templates/native-go-vue/frontend/src/delegate/i18n/save/ja.json +0 -42
  846. package/templates/native-go-vue/frontend/src/delegate/i18n/save/ko.json +0 -42
  847. package/templates/native-go-vue/frontend/src/delegate/i18n/save/zh-CN.json +0 -42
  848. package/templates/native-go-vue/frontend/src/delegate/i18n/save/zh-TW.json +0 -42
  849. package/templates/native-go-vue/frontend/src/delegate/i18n/zh-CN.json +0 -47
  850. package/templates/native-go-vue/frontend/src/delegate/i18n/zh-TW.json +0 -47
  851. package/templates/native-go-vue/frontend/src/delegate/long-running.ts +0 -57
  852. package/templates/native-go-vue/frontend/src/delegate/save-copy.test.ts +0 -12
  853. package/templates/native-go-vue/frontend/src/delegate/save-copy.ts +0 -24
  854. package/templates/native-go-vue/frontend/src/delegate/scoped-picker.test.ts +0 -12
  855. package/templates/native-go-vue/frontend/src/delegate/scoped-picker.ts +0 -21
  856. package/templates/native-go-vue/frontend/src/files/FileBrowser.vue +0 -131
  857. package/templates/native-go-vue/frontend/src/files/FilesPage.vue +0 -35
  858. package/templates/native-go-vue/frontend/src/files/files.test.ts +0 -100
  859. package/templates/native-go-vue/frontend/src/files/provider.test.ts +0 -48
  860. package/templates/native-go-vue/frontend/src/files/transfers.test.ts +0 -27
  861. package/templates/native-go-vue/frontend/src/files/transfers.ts +0 -25
  862. package/templates/native-go-vue/frontend/src/i18n/de.json +0 -20
  863. package/templates/native-go-vue/frontend/src/i18n/en.json +0 -20
  864. package/templates/native-go-vue/frontend/src/i18n/es.json +0 -20
  865. package/templates/native-go-vue/frontend/src/i18n/fr.json +0 -20
  866. package/templates/native-go-vue/frontend/src/i18n/it.json +0 -20
  867. package/templates/native-go-vue/frontend/src/i18n/ja.json +0 -20
  868. package/templates/native-go-vue/frontend/src/i18n/ko.json +0 -20
  869. package/templates/native-go-vue/frontend/src/i18n/zh-CN.json +0 -20
  870. package/templates/native-go-vue/frontend/src/i18n/zh-TW.json +0 -20
  871. package/templates/native-go-vue/frontend/src/i18n.ts +0 -13
  872. package/templates/native-go-vue/frontend/src/identity/DESIGN.md +0 -46
  873. package/templates/native-go-vue/frontend/src/identity/LoginPage.vue +0 -78
  874. package/templates/native-go-vue/frontend/src/identity/i18n/de.json +0 -27
  875. package/templates/native-go-vue/frontend/src/identity/i18n/en.json +0 -27
  876. package/templates/native-go-vue/frontend/src/identity/i18n/es.json +0 -27
  877. package/templates/native-go-vue/frontend/src/identity/i18n/fr.json +0 -27
  878. package/templates/native-go-vue/frontend/src/identity/i18n/it.json +0 -27
  879. package/templates/native-go-vue/frontend/src/identity/i18n/ja.json +0 -27
  880. package/templates/native-go-vue/frontend/src/identity/i18n/ko.json +0 -27
  881. package/templates/native-go-vue/frontend/src/identity/i18n/zh-CN.json +0 -27
  882. package/templates/native-go-vue/frontend/src/identity/i18n/zh-TW.json +0 -27
  883. package/templates/native-go-vue/frontend/src/identity/i18n.ts +0 -14
  884. package/templates/native-go-vue/frontend/src/identity/login.test.ts +0 -32
  885. package/templates/native-go-vue/frontend/src/identity/session.test.ts +0 -33
  886. package/templates/native-go-vue/frontend/src/identity/session.ts +0 -74
  887. package/templates/native-go-vue/frontend/src/main.ts +0 -32
  888. package/templates/native-go-vue/frontend/src/nas/NasPicker.vue +0 -42
  889. package/templates/native-go-vue/frontend/src/nas/contract.ts +0 -12
  890. package/templates/native-go-vue/frontend/src/nas/destination.test.ts +0 -48
  891. package/templates/native-go-vue/frontend/src/nas/i18n/files/de.json +0 -41
  892. package/templates/native-go-vue/frontend/src/nas/i18n/files/en.json +0 -41
  893. package/templates/native-go-vue/frontend/src/nas/i18n/files/es.json +0 -41
  894. package/templates/native-go-vue/frontend/src/nas/i18n/files/fr.json +0 -41
  895. package/templates/native-go-vue/frontend/src/nas/i18n/files/it.json +0 -41
  896. package/templates/native-go-vue/frontend/src/nas/i18n/files/ja.json +0 -41
  897. package/templates/native-go-vue/frontend/src/nas/i18n/files/ko.json +0 -41
  898. package/templates/native-go-vue/frontend/src/nas/i18n/files/zh-CN.json +0 -41
  899. package/templates/native-go-vue/frontend/src/nas/i18n/files/zh-TW.json +0 -41
  900. package/templates/native-go-vue/frontend/src/nas/i18n.ts +0 -2
  901. package/templates/native-go-vue/frontend/src/nas/locale.ts +0 -24
  902. package/templates/native-go-vue/frontend/src/nas/provider.ts +0 -50
  903. package/templates/native-go-vue/frontend/src/nas/use-request.ts +0 -18
  904. package/templates/native-go-vue/frontend/src/portal/PortalSettings.vue +0 -39
  905. package/templates/native-go-vue/frontend/src/shell/AppShell.vue +0 -48
  906. package/templates/native-go-vue/frontend/src/shell/i18n/de.json +0 -4
  907. package/templates/native-go-vue/frontend/src/shell/i18n/en.json +0 -4
  908. package/templates/native-go-vue/frontend/src/shell/i18n/es.json +0 -4
  909. package/templates/native-go-vue/frontend/src/shell/i18n/fr.json +0 -4
  910. package/templates/native-go-vue/frontend/src/shell/i18n/it.json +0 -4
  911. package/templates/native-go-vue/frontend/src/shell/i18n/ja.json +0 -4
  912. package/templates/native-go-vue/frontend/src/shell/i18n/ko.json +0 -4
  913. package/templates/native-go-vue/frontend/src/shell/i18n/zh-CN.json +0 -4
  914. package/templates/native-go-vue/frontend/src/shell/i18n/zh-TW.json +0 -4
  915. package/templates/native-go-vue/frontend/src/shell/i18n.ts +0 -17
  916. package/templates/native-go-vue/frontend/src/shell/pages.ts +0 -15
  917. package/templates/native-go-vue/frontend/src/style.css +0 -27
  918. package/templates/native-go-vue/frontend/test/apps.test.ts +0 -57
  919. package/templates/native-go-vue/frontend/test/native-controls.test.ts +0 -27
  920. package/templates/native-go-vue/frontend/test/portal-settings.test.ts +0 -71
  921. package/templates/native-go-vue/frontend/test/shell-i18n.test.ts +0 -50
  922. package/templates/native-go-vue/frontend/test/shell-ui.test.ts +0 -20
  923. package/templates/native-go-vue/frontend/test/shell.test.ts +0 -30
  924. package/templates/native-go-vue/frontend/tsconfig.json +0 -1
  925. package/templates/native-go-vue/frontend/vite.config.ts +0 -10
  926. package/templates/native-go-vue/gitignore +0 -2
  927. /package/{dist/templates/_daemon → assets/go/daemon}/fixture_linux_test.go +0 -0
  928. /package/{dist/templates/_daemon → assets/go/daemon}/fixture_other_test.go +0 -0
  929. /package/{dist/templates/_daemon → assets/go/daemon}/go.mod +0 -0
  930. /package/{dist/templates/_daemon → assets/go/daemon}/main.go +0 -0
  931. /package/{dist/templates/_daemon → assets/go/daemon}/main_test.go +0 -0
  932. /package/{dist/templates/_daemon → assets/go/daemon}/process_linux.go +0 -0
  933. /package/{dist/templates/_daemon → assets/go/daemon}/process_linux_test.go +0 -0
  934. /package/{dist/templates/_daemon → assets/go/daemon}/process_other.go +0 -0
  935. /package/{dist/templates/_daemon → assets/go/daemon}/testdata/child.go +0 -0
  936. /package/{dist/templates/_gateway → assets/go/gateway}/auth.go +0 -0
  937. /package/{dist/templates/_gateway → assets/go/gateway}/auth_test.go +0 -0
  938. /package/{dist/templates/_gateway → assets/go/gateway}/cgi.go +0 -0
  939. /package/{dist/templates/_gateway → assets/go/gateway}/cgi_test.go +0 -0
  940. /package/{dist/templates/_gateway → assets/go/gateway}/csrf.go +0 -0
  941. /package/{dist/templates/_gateway → assets/go/gateway}/csrf_test.go +0 -0
  942. /package/{dist/templates/_gateway → assets/go/gateway}/directory.go +0 -0
  943. /package/{dist/templates/_gateway → assets/go/gateway}/directory_test.go +0 -0
  944. /package/{dist/templates/_gateway → assets/go/gateway}/gateway.go +0 -0
  945. /package/{dist/templates/_gateway → assets/go/gateway}/gateway_test.go +0 -0
  946. /package/{dist/templates/_gateway → assets/go/gateway}/go.mod +0 -0
  947. /package/{dist/templates/_gateway → assets/go/gateway}/groups.go +0 -0
  948. /package/{dist/templates/_gateway → assets/go/gateway}/main.go +0 -0
  949. /package/{dist/templates/_shared → assets/licenses}/GO-LICENSE +0 -0
  950. /package/{dist/templates/_shared → assets/licenses}/GO-PATENTS +0 -0
  951. /package/{dist/templates/_shared/LICENSES → assets/licenses}/TEMPLATE.txt +0 -0
@@ -1,6 +0,0 @@
1
- {
2
- "name": "native-dsm-vue-app", "private": true, "type": "module",
3
- "scripts": {"build": "vue-tsc --noEmit && vite build", "test": "vitest run"},
4
- "dependencies": {"@lucide/vue": "1.48.0", "@synopackageland/ui": "0.8.1", "vue": "3.5.43"},
5
- "devDependencies": {"@vitejs/plugin-vue": "6.0.9", "vite": "7.3.6", "typescript": "5.9.3", "vue-tsc": "3.3.11", "vitest": "4.1.11", "jsdom": "27.4.0"}
6
- }
@@ -1,96 +0,0 @@
1
- <script setup lang="ts">
2
- import {computed, onMounted, onUnmounted, ref, watch} from 'vue'
3
- import {AppRoot, ConfigProvider, Button, Callout, Form, FormActions, FormItem, SettingsSection, Textarea} from '@synopackageland/ui'
4
- import {uiLocale} from './nas/locale'
5
- import {appCopy} from './i18n'
6
- import type {AppStatus, Context} from './context'
7
- import AppShell from './shell/AppShell.vue'
8
- import CapabilityPanels from './CapabilityPanels.vue'
9
- import FilesPage from './files/FilesPage.vue'
10
- import PortalSettings from './portal/PortalSettings.vue'
11
- import {shellPages, type ShellPage} from './shell/pages'
12
- import {createSession} from './identity/session'
13
- import LoginPage from './identity/LoginPage.vue'
14
- const props = defineProps<{ctx: Context}>()
15
- const login = createSession(props.ctx)
16
- const copy = computed(() => appCopy(props.ctx.locale))
17
- const app = ref<AppStatus>()
18
- const busy = ref(false)
19
- const error = ref('')
20
- const notice = ref('')
21
- const text = ref('')
22
- let disposed = false
23
- let unsubscribe: (() => void) | undefined
24
- // The CLI substitutes this only for a declared package-account background worker.
25
- const backgroundEnabled = (('__BACKGROUND_ENABLED__') as string) === 'true'
26
- const page = ref<ShellPage>('status')
27
- const pages = computed(() => shellPages({background:backgroundEnabled}))
28
- const subtitle = computed(() => app.value ? `${app.value.package} · ${app.value.user} · ${app.value.version}` : undefined)
29
- function message(e: unknown) {
30
- const code = (e as {code?: string})?.code || 'request_failed'
31
- const errors = copy.value.errors as Record<string, string>
32
- return (code !== 'request_failed' && errors[code]) || errors.request_failed!.replace('{code}', code)
33
- }
34
- async function refresh() {
35
- if(disposed || busy.value || (login.enabled.value && !login.subject.value)) return
36
- busy.value = true; error.value = ''
37
- try {
38
- const a = await login.call<AppStatus>('app.status')
39
- if(!disposed) app.value = a
40
- if(a.admin) {const greeting = await login.call<{text:string}>('greeting.get'); if(!disposed) text.value = greeting.text}
41
- } catch(e) {if(!disposed) error.value = message(e)} finally {if(!disposed) busy.value=false}
42
- }
43
- async function save() {
44
- if(disposed || busy.value) return
45
- busy.value = true; error.value='';notice.value=''
46
- try {await login.call('greeting.set',{text:text.value});if(!disposed) notice.value=copy.value.saved}
47
- catch(e) {if(!disposed) error.value=message(e)} finally {if(!disposed) busy.value=false}
48
- }
49
- watch(login.subject, (subject, previous) => {
50
- if(!subject) {app.value=undefined;text.value='';notice.value='';error.value=''}
51
- else if((!previous || previous.user!==subject.user)) void refresh()
52
- })
53
- async function signOut() {
54
- try {await login.logout()} catch(e) {if(!disposed) error.value=message(e)}
55
- }
56
- onMounted(async()=>{
57
- unsubscribe = props.ctx.reopen(()=>{if(!disposed) void refresh()})
58
- await login.start()
59
- if((!login.enabled.value || login.subject.value)) await refresh()
60
- })
61
- onUnmounted(()=>{disposed=true;unsubscribe?.();login.dispose();text.value=''})
62
- </script>
63
-
64
- <template>
65
- <AppRoot modal-scope="app" style="height: 100%">
66
- <ConfigProvider :locale="uiLocale(ctx.locale)">
67
- <p v-if="!login.ready.value" role="status">{{ copy.checking }}</p>
68
- <LoginPage v-else-if="login.enabled.value && !login.subject.value" :session="login" :locale="ctx.locale" />
69
- <AppShell v-else v-model="page" :locale="ctx.locale" :pages="pages" :description="subtitle">
70
- <template #actions><Button variant="secondary" :disabled="busy" @click="refresh">{{ copy.refresh }}</Button><Button v-if="login.enabled.value" variant="secondary" :disabled="busy" @click="signOut">{{ copy.signOut }}</Button></template>
71
- <div class="integration-app" :aria-busy="busy" :aria-label="copy.settings">
72
- <p v-if="busy" role="status">{{ copy.loading }}</p>
73
- <Callout v-if="error" tone="danger" :title="copy.actionRequired"><span role="alert">{{ error }}</span></Callout>
74
- <p v-if="notice" role="status">{{ notice }}</p>
75
- <div data-page="status" v-show="page==='status'">
76
- <SettingsSection :title="copy.statusTitle" :collapsible="false">
77
- <p v-if="app">{{ app.package }} · {{ app.user }} · {{ app.version }}</p>
78
- <p v-else-if="error" role="status">{{ copy.statusError }}</p>
79
- </SettingsSection>
80
- <PortalSettings v-if="ctx.portal && app" :key="app.user" :portal="ctx.portal" />
81
- <SettingsSection v-if="app?.admin" :title="copy.greeting" :collapsible="false">
82
- <Form @submit.prevent="save"><FormItem :label="copy.greeting"><Textarea v-model="text" :disabled="busy" /></FormItem>
83
- <FormActions><Button variant="primary" :disabled="busy || !text.trim()" @click="save">{{ copy.save }}</Button></FormActions>
84
- </Form>
85
- </SettingsSection>
86
- </div>
87
- <CapabilityPanels v-if="app" :key="app.user" :ctx="ctx" :admin="app.admin" />
88
- <FilesPage v-if="page==='status'" :ctx="ctx" />
89
- <div data-page="background" v-show="page==='background'">
90
- <!-- BACKGROUND_PANEL -->
91
- </div>
92
- </div>
93
- </AppShell>
94
- </ConfigProvider>
95
- </AppRoot>
96
- </template>
@@ -1,6 +0,0 @@
1
- <script setup lang="ts">
2
- import type {Context} from './context'
3
- import ExecutorSettings from './delegate/ExecutorSettings.vue'
4
- defineProps<{ctx:Context;admin:boolean}>()
5
- </script>
6
- <template><ExecutorSettings v-if="ctx.executor" :admin="admin" :locale="ctx.locale" /></template>
@@ -1,78 +0,0 @@
1
- export interface HostPlatformSnapshot {
2
- readonly web: boolean
3
- readonly host: 'dsm' | 'standalone-web' | 'unavailable'
4
- readonly dsmStandalone: boolean | null
5
- readonly dsmLanguage: string | null
6
- readonly appLocale: string | null
7
- readonly systemVersion: string | null
8
- readonly fullVersion: string | null
9
- readonly theme: null
10
- }
11
- export type HostTitleResult = {status: 'ok'; target: 'dsm-window' | 'document'} |
12
- {status: 'unsupported' | 'unavailable' | 'invalid-input' | 'failed'}
13
- export type HostRequestResult = {status: 'requested'} |
14
- {status: 'unsupported' | 'unavailable' | 'invalid-input' | 'blocked' | 'failed'}
15
- export type HostURLResult = {status: 'requested'; windowHandleAvailable: boolean} |
16
- {status: 'unsupported' | 'unavailable' | 'invalid-input' | 'failed'}
17
- export type HostEvent = 'window-resize' | 'host-theme-change' | 'host-language-change'
18
- export type HostSubscriptionResult = {status: 'subscribed'; dispose(): void} |
19
- {status: 'unsupported' | 'unavailable' | 'invalid-input' | 'failed'}
20
- export type HostFileNavigationResult = {status: 'requested'; action: 'locate-folder' | 'highlight-file'} |
21
- {status: 'unsupported' | 'unavailable' | 'invalid-input' | 'failed'}
22
- export type HostUnsupportedResult = {status: 'unsupported' | 'unavailable'}
23
- export interface HostAdapter {
24
- platform(): HostPlatformSnapshot
25
- setTitle(title: string): HostTitleResult
26
- activateWindow(): HostRequestResult
27
- requestClose(): HostRequestResult
28
- openApp(appId: string): HostRequestResult
29
- openURL(url: string): HostURLResult
30
- openFileManager(path: string): HostFileNavigationResult
31
- revealFile(path: string): HostFileNavigationResult
32
- openFile(path: string): HostUnsupportedResult
33
- showFileDetails(paths: readonly string[]): HostUnsupportedResult
34
- openAppSetting(): HostUnsupportedResult
35
- subscribe(event: HostEvent, listener: () => void): HostSubscriptionResult
36
- dispose(): void
37
- }
38
- export interface PortalStatus {
39
- state: 'active' | 'inactive' | 'unavailable'
40
- // Set when active: https://<the NAS address in use>/<alias>/
41
- alias?: string
42
- url?: string
43
- // An administrator can set or clear the alias here; otherwise Control Panel or nothing.
44
- canManage: boolean
45
- controlPanel: boolean
46
- defaultAlias: string
47
- }
48
-
49
- // Rejects {code}: portal_alias_invalid, portal_alias_reserved, portal_alias_in_use, admin_required, portal_unavailable.
50
- export interface PortalAccess {
51
- // SDK panel text in DSM's language, keyed like the error codes plus title, link, apply, …
52
- messages: Record<string, string>
53
- status(): Promise<PortalStatus>
54
- apply(alias: string): Promise<PortalStatus>
55
- disable(): Promise<PortalStatus>
56
- openControlPanel(): void
57
- // The SDK's plain panel; Vue apps use portal/PortalSettings.vue instead.
58
- mountPanel(element: HTMLElement): {refresh(): Promise<void>; dispose(): void}
59
- }
60
-
61
- export interface Context {
62
- // Explicit long-running opt-in; bind with createBackgroundSaveFacade and an
63
- // owner-bound App job metadata provider. Legacy downloads use the other panel.
64
- delegate?: import('./delegate/long-running').BackgroundSaveFacade
65
- files?: {endpoint:string;token?:()=>string|undefined}
66
- displayName?: string
67
- executor?: import('./delegate/executor-setup').ExecutorSetup
68
- // DSM's signed-in account. isAdmin only hides or disables administrator
69
- // settings; the backend enforces access with permissions.json and RequireAdmin.
70
- user?: {readonly name: string; readonly isAdmin: boolean}
71
- // DSM Application Portal, present only when dsm-package.yaml declares portal.
72
- portal?: PortalAccess
73
- call<T = unknown>(method: string, params?: Record<string, unknown>): Promise<T>
74
- reopen(fn: () => void): () => void
75
- locale: string
76
- host: HostAdapter
77
- }
78
- export interface AppStatus {package: string; version: string; user: string; admin: boolean}
@@ -1,70 +0,0 @@
1
- <script setup lang="ts">
2
- import {computed,onBeforeUnmount,onMounted,ref} from 'vue'
3
- import {Button,Callout,Form,FormActions,FormItem,Input,Select,SettingsSection} from '@synopackageland/ui'
4
- import type {Context} from '../context'
5
- import type {ScopeSelection} from './long-running'
6
- import {useExecutorSetup,type CapabilityStatus} from './executor-setup'
7
- import {delegateCopy} from './copy'
8
- const props=defineProps<{admin:boolean;locale?:string;ctx?:Pick<Context,'call'>}>()
9
- const emit=defineEmits<{confirmed:[]}>()
10
- const setup=useExecutorSetup(),copy=computed(()=>delegateCopy(props.locale))
11
- const status=ref<CapabilityStatus>(),password=ref(''),busy=ref(false),error=ref(false)
12
- const scope=ref<{scope_mode?:string;preselection?:string;selection?:ScopeSelection|null;mismatch?:boolean}>(),chosen=ref(''),shares=ref<Array<{label:string;value:string}>>([])
13
- const dynamic=computed(()=>scope.value?.scope_mode==='install-selected')
14
- const options=computed(()=>[{label:copy.value.homeScope,value:'home'},...shares.value])
15
- const canConfirm=computed(()=>!dynamic.value||!!chosen.value&&options.value.some(o=>o.value===chosen.value))
16
- const needsScope=computed(()=>dynamic.value&&!scope.value?.selection)
17
- const changed=computed(()=>chosen.value!==scope.value?.selection?.scope)
18
- let disposed=false
19
- async function load(approved?:CapabilityStatus){
20
- const next=approved??await setup.status()
21
- if(disposed)return
22
- status.value=next
23
- if(!props.ctx)return
24
- const detail=await props.ctx.call<NonNullable<typeof scope.value>>('delegate.status')
25
- if(disposed)return
26
- scope.value=detail
27
- if(detail.scope_mode!=='install-selected')return
28
- const all:Array<{label:string;value:string}>=[]
29
- let offset=0
30
- for(let count=0;count<128;count++){
31
- const page=await props.ctx.call<{shares:Array<{name:string;path:string;isdir:boolean}>;total:number;offset:number}>('bg.browse',{offset})
32
- if(disposed)return
33
- if(!Array.isArray(page.shares)||!Number.isSafeInteger(page.total)||page.total<0||!page.shares.length&&offset<page.total)throw {code:'EXECUTOR_PROTOCOL'}
34
- for(const entry of page.shares){if(entry.isdir&&entry.path==='/'+entry.name&&!['home','homes'].includes(entry.name.toLowerCase()))all.push({label:entry.name,value:'shared:'+entry.name})}
35
- offset+=page.shares.length
36
- if(offset>=page.total)break
37
- if(count===127)throw {code:'EXECUTOR_PROTOCOL'}
38
- }
39
- shares.value=all
40
- chosen.value=detail.selection?.scope??detail.preselection??''
41
- }
42
- async function refresh(){if(!props.admin||busy.value)return;busy.value=true;error.value=false;try{await load()}catch{if(!disposed)error.value=true}finally{if(!disposed)busy.value=false}}
43
- async function authorize(){
44
- if(!props.admin||busy.value||!password.value||!canConfirm.value||error.value)return
45
- busy.value=true;error.value=false;const entered=password.value;password.value=''
46
- try{const next=dynamic.value?await setup.authorize(entered,chosen.value):await setup.authorize(entered);await load(next);if(!disposed)emit('confirmed')}
47
- catch{if(!disposed)error.value=true}
48
- finally{if(!disposed)busy.value=false}
49
- }
50
- onMounted(()=>{setup.subscribe?.(next=>{if(!disposed)status.value=next});void refresh()});onBeforeUnmount(()=>{disposed=true;password.value=''})
51
- </script>
52
- <template>
53
- <SettingsSection v-if="admin" :title="copy.setupTitle" :collapsible="false" :aria-busy="busy">
54
- <p>{{ copy.setupHelp }}</p>
55
- <Callout v-if="error" tone="danger" role="alert">{{ copy.setupError }}</Callout>
56
- <p role="status">{{ status?.state==='ready'?(needsScope?copy.scopeNeeds:copy.ready):status?.state==='needs-admin-approval'?copy.needs:copy.blocked }}</p>
57
- <p v-if="status?.reason&&(status.state==='blocked'||status.state==='unsupported')">{{ copy.details }}: {{ status.reason }}</p>
58
- <p v-if="scope?.selection">{{ copy.protectedScope }}: {{ scope.selection.root }}</p>
59
- <Callout v-if="scope?.mismatch" tone="warning">{{ copy.scopeMismatch }} {{ copy.preselection }}: {{ scope.preselection }} · {{ copy.protectedScope }}: {{ scope.selection?.root }}</Callout>
60
- <Form v-if="status?.state==='needs-admin-approval'||status?.retry||dynamic&&status?.state==='ready'" @submit.prevent="authorize">
61
- <template v-if="dynamic">
62
- <p>{{ scope?.selection?copy.scopeChangeHelp:copy.preselectionHelp }}</p>
63
- <FormItem :label="copy.scopeLabel" label-for="delegate-scope"><Select id="delegate-scope" v-model="chosen" :options="options" :disabled="busy||error" /></FormItem>
64
- </template>
65
- <FormItem :label="copy.password" label-for="delegate-password"><Input id="delegate-password" v-model="password" type="password" autocomplete="current-password" :disabled="busy||error" /></FormItem>
66
- <FormActions><Button type="submit" variant="primary" :disabled="busy||error||!password||!canConfirm||dynamic&&!!scope?.selection&&!changed">{{ dynamic?(scope?.selection?copy.confirmScope:copy.confirmShare):copy.authorize }}</Button></FormActions>
67
- </Form>
68
- <Button variant="secondary" :disabled="busy" @click="refresh">{{ copy.refresh }}</Button>
69
- </SettingsSection>
70
- </template>
@@ -1,11 +0,0 @@
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 DelegateCopy=typeof en
11
- export const delegateCatalogs:Record<string,DelegateCopy>={en,'zh-TW':zhTW,'zh-CN':zhCN,ja,ko,de,fr,es,it}
@@ -1,12 +0,0 @@
1
- import {expect,test} from 'vitest'
2
- import {delegateCopy} from './copy'
3
- import {saveCopy} from './save-copy'
4
- import zhCN from './i18n/zh-CN.json'
5
- import saveJa from './i18n/save/ja.json'
6
- test('delegate and save copy follow the DSM language across all nine catalogs',()=>{
7
- expect(delegateCopy('chs')).toMatchObject(zhCN)
8
- expect(delegateCopy('zh_CN')).toMatchObject(zhCN)
9
- expect(saveCopy('jpn')).toEqual(saveJa)
10
- expect(delegateCopy('unknown').refresh).toBe('Refresh')
11
- expect(saveCopy().refresh).toBe('Refresh')
12
- })
@@ -1,4 +0,0 @@
1
- import {uiLocale} from '../nas/locale'
2
- import {delegateCatalogs,type DelegateCopy} from './catalogs'
3
- export function delegateCopy(locale='en'){return delegateCatalogs[uiLocale(locale)]!}
4
- export function errorCopy(error:unknown,copy:DelegateCopy){const code=(error as {code?:string})?.code;return ['session_required','AUTH_DENIED'].includes(code??'')?copy.session:['DENIED','SCOPE_DENIED','PERMISSION_DENIED','APP_DENIED','INELIGIBLE','denied'].includes(code??'')?copy.denied:copy.error}
@@ -1,23 +0,0 @@
1
- // @vitest-environment jsdom
2
- import {expect,test} from 'vitest'
3
- import {createApp,h,nextTick} from 'vue'
4
- import {AppRoot} from '@synopackageland/ui'
5
- import ExecutorSettings from './ExecutorSettings.vue'
6
- import {ExecutorSetupKey,type CapabilityStatus} from './executor-setup'
7
- const settle=async()=>{for(let i=0;i<10;i++){await nextTick();await new Promise(r=>setTimeout(r))}}
8
- // t-0237: a wrong password left only "Check status"; a retryable result keeps the form.
9
- test('a retryable blocked approval keeps the password form for another try',async()=>{
10
- const blocked:CapabilityStatus&{retry:boolean}={state:'blocked',reason:'dsm_3121: DSM rejected the administrator password. Nothing was created.',retry:true}
11
- const setup={async status():Promise<CapabilityStatus>{return {state:'needs-admin-approval'}},async authorize(){return blocked},async control(){return blocked}}
12
- const root=document.createElement('div');document.body.append(root)
13
- const app=createApp({render:()=>h(AppRoot,{},()=>h(ExecutorSettings,{admin:true,locale:'en'}))})
14
- app.provide(ExecutorSetupKey,setup)
15
- try{
16
- app.mount(root);await settle()
17
- const input=root.querySelector<HTMLInputElement>('#delegate-password')!
18
- input.value='wrong';input.dispatchEvent(new Event('input'));await settle()
19
- root.querySelector('form')!.dispatchEvent(new Event('submit'));await settle()
20
- expect(root.textContent).toContain('dsm_3121')
21
- expect(root.querySelector('#delegate-password')).not.toBeNull()
22
- }finally{app.unmount();root.remove()}
23
- })
@@ -1,24 +0,0 @@
1
- import {inject,type InjectionKey} from 'vue'
2
- export type CapabilityState='unsupported'|'needs-admin-approval'|'ready'|'blocked'|'incompatible'
3
- // requested: a scope change whose root task may still land; it applied once
4
- // status() reports that scope with a generation above this one.
5
- // retry: approving again may succeed: nothing of this approval is left behind, or
6
- // the approved tasks remain and approving again restarts the executor.
7
- export interface CapabilityStatus {state:CapabilityState;reason?:string;requested?:{scope:string;generation:number};retry?:boolean}
8
- // p2-setup supplies the implementation through app.provide(ExecutorSetupKey, setup).
9
- // Passwords belong only to this call and must never be persisted or logged.
10
- export interface ExecutorSetup {
11
- status():Promise<CapabilityStatus>
12
- authorize(password:string,selectedScope?:string):Promise<CapabilityStatus>
13
- control(action:'start'|'stop'|'purge'):Promise<CapabilityStatus>
14
- // Results of calls made elsewhere (the DSM window panel) on the same access.
15
- subscribe?(listener:(status:CapabilityStatus)=>void):void
16
- }
17
- export const ExecutorSetupKey:InjectionKey<ExecutorSetup>=Symbol('executor-setup')
18
- export function useExecutorSetup():ExecutorSetup {
19
- return inject(ExecutorSetupKey,{
20
- async status(){return {state:'blocked',reason:'setup-unavailable'}},
21
- async authorize(){throw {code:'setup-unavailable'}},
22
- async control(){throw {code:'setup-unavailable'}},
23
- })
24
- }
@@ -1,100 +0,0 @@
1
- import {expect,test,vi} from 'vitest'
2
- import {createBackgroundSaveFacade} from './facade'
3
- test('destination lookup returns protected selection and rejects a grant outside its root',async()=>{
4
- const selection={scope:'shared:reports',root:'/reports',generation:2}
5
- const destination={id:'mine',key:'save',path:'/reports/exports',username:'alice',lifetime:'until-revoked'}
6
- const call=vi.fn(async()=>({key:'save',selection,destination,status:'active'}))
7
- const sdk=createBackgroundSaveFacade({call:call as any})
8
- expect(await sdk.destination('save')).toEqual({key:'save',selection,destination,status:'active'})
9
- expect(call).toHaveBeenCalledExactlyOnceWith('delegate.destination',{key:'save'})
10
- call.mockResolvedValue({key:'save',selection,destination:{...destination,path:'/other'},status:'active'})
11
- await expect(sdk.destination('save')).rejects.toMatchObject({code:'EXECUTOR_PROTOCOL'})
12
- })
13
- const ref={delegation_id:'mine',job_id:'original'}
14
- test('operation cancellation keeps its bounded readable cause through the facade',async()=>{
15
- const call=vi.fn(async()=>({job_id:'original',state:'canceled',code:'OPERATION_CANCELED',reason:'grant-revoked'}))
16
- const sdk=createBackgroundSaveFacade({call:call as any})
17
- expect(await sdk.cancel(ref)).toMatchObject({state:'canceled',reason:'grant-revoked'})
18
- for(const reason of [123, 'x'.repeat(129), 'raw DSM response /path']){
19
- call.mockResolvedValue({...await call(),reason} as any)
20
- await expect(sdk.cancel(ref)).rejects.toMatchObject({code:'EXECUTOR_PROTOCOL'})
21
- }
22
- })
23
- test('a copy cancel acknowledgement passes through unchanged for same-ref polling',async()=>{
24
- const ack={job_id:'original',state:'copying',code:'CANCEL_REQUESTED',reason:'operation-canceled-by-user'}
25
- const call=vi.fn(async()=>ack)
26
- expect(await createBackgroundSaveFacade({call:call as any}).cancel(ref)).toEqual(ack)
27
- expect(call).toHaveBeenCalledWith('delegate.operations.cancel',ref)
28
- })
29
- const grant={delegation_id:'mine',destination:'save',path:'/home/Exports',subject:{username:'normal1',uid:1205},lifetime:'until-revoked',revoked:false}
30
- function fixture(){
31
- const call=vi.fn(async(method:string)=>{
32
- if(method==='delegate.status')return {state:'ready',disabled:false}
33
- if(method==='delegate.list')return {delegations:[grant,{...grant,delegation_id:'revoked',revoked:true},{...grant,delegation_id:'legacy',lifetime:''}]}
34
- if(method==='delegate.operations.get')return {job_id:'original',state:'committed',receipt:{path:'/home/Exports/report.csv',size:4}}
35
- if(method==='delegate.operations.cancel')return {job_id:'original',state:'canceled'}
36
- if(method==='delegate.revoke')return {revoked:true}
37
- if(method==='delegate.disable')return {disabled:true}
38
- if(method==='delegate.enable')return {disabled:false}
39
- if(method==='delegate.select_destination')return {id:'mine',key:'save',path:'/home/Exports',username:'normal1',lifetime:'until-revoked'}
40
- throw {code:'unknown_method'}
41
- })
42
- const jobs=vi.fn(async()=>[{...ref,name:'report.csv'}])
43
- return {call,jobs,sdk:createBackgroundSaveFacade({call:call as any},jobs)}
44
- }
45
- test('W2 list is mapped to active permanent destinations without changing owner or legacy semantics',async()=>{
46
- const {sdk,call}=fixture()
47
- expect(await sdk.list()).toEqual([{id:'mine',key:'save',path:'/home/Exports',username:'normal1',lifetime:'until-revoked'}])
48
- expect(call).toHaveBeenCalledExactlyOnceWith('delegate.list')
49
- await sdk.selectDestination({key:'save',path:'/home/Exports'})
50
- expect(call).toHaveBeenLastCalledWith('delegate.select_destination',{key:'save',path:'/home/Exports'})
51
- })
52
- test('App metadata is joined with protected status by the original two IDs, never a synthetic list route',async()=>{
53
- const {sdk,call,jobs}=fixture()
54
- expect(await sdk.operations()).toEqual([{...ref,name:'report.csv',state:'committed',receipt:{path:'/home/Exports/report.csv',size:4}}])
55
- expect(jobs).toHaveBeenCalledOnce()
56
- expect(call).toHaveBeenCalledExactlyOnceWith('delegate.operations.get',ref)
57
- await sdk.cancel(ref);expect(call).toHaveBeenLastCalledWith('delegate.operations.cancel',ref)
58
- await sdk.revoke({delegation_id:'mine'});expect(call).toHaveBeenLastCalledWith('delegate.revoke',{delegation_id:'mine'})
59
- })
60
- test('missing protected disabled status cannot be reported as enabled',async()=>{
61
- const {sdk,call}=fixture();call.mockResolvedValue({state:'ready'} as any)
62
- await expect(sdk.status()).rejects.toMatchObject({code:'EXECUTOR_PROTOCOL'})
63
- })
64
- test('malformed grant and App metadata references cannot be coerced into valid IDs',async()=>{
65
- const {sdk,call}=fixture()
66
- call.mockResolvedValue({delegations:[{...grant,delegation_id:undefined}]} as any)
67
- await expect(sdk.list()).rejects.toMatchObject({code:'EXECUTOR_PROTOCOL'})
68
- const invalid=createBackgroundSaveFacade({call:call as any},async()=>[{job_id:undefined,delegation_id:'mine',name:'report.csv'}] as any)
69
- await expect(invalid.operations()).rejects.toMatchObject({code:'EXECUTOR_PROTOCOL'})
70
- expect(call).toHaveBeenCalledTimes(1)
71
- })
72
- test('malformed or mismatched operation evidence never becomes Saved',async()=>{
73
- for(const value of [{job_id:'other',state:'committed',receipt:{path:'/home/a',size:1}},{job_id:'original',state:'committed'},{job_id:'original',state:'copying',receipt:{path:'/home/a',size:1}},{job_id:'original',state:'committed',receipt:{path:'/home/a',size:-1}}]){
74
- const {sdk,call}=fixture();call.mockResolvedValue(value as any)
75
- await expect(sdk.operations()).rejects.toMatchObject({code:'EXECUTOR_PROTOCOL'})
76
- }
77
- })
78
- test('read timeout never admits or resubmits an operation',async()=>{
79
- const {sdk,call}=fixture();call.mockRejectedValue({code:'EXECUTOR_TIMEOUT'})
80
- await expect(sdk.operations()).rejects.toMatchObject({code:'EXECUTOR_TIMEOUT'})
81
- expect(call).toHaveBeenCalledExactlyOnceWith('delegate.operations.get',ref)
82
- })
83
- test('disable and enable use authenticated protected routes, not mailbox controls',async()=>{
84
- const {sdk,call}=fixture()
85
- expect(await sdk.status()).toEqual({disabled:false})
86
- expect(await sdk.disable()).toEqual({disabled:true});expect(call).toHaveBeenLastCalledWith('delegate.disable')
87
- expect(await sdk.enable()).toEqual({disabled:false});expect(call).toHaveBeenLastCalledWith('delegate.enable')
88
- call.mockResolvedValue({} as any);await expect(sdk.disable()).rejects.toMatchObject({code:'EXECUTOR_PROTOCOL'})
89
- })
90
- test('the default facade lists backend mirrors but ignores their committed claim until live receipt',async()=>{
91
- const {call}=fixture()
92
- call.mockImplementation(async(method:string)=>{
93
- if(method==='delegate.operations.list')return {operations:[{...ref,name:'report.csv',state:'committed'}]} as any
94
- if(method==='delegate.operations.get')return {job_id:'original',state:'uncertain'} as any
95
- throw {code:'unexpected'}
96
- })
97
- const sdk=createBackgroundSaveFacade({call:call as any})
98
- expect(await sdk.operations()).toEqual([{...ref,name:'report.csv',state:'uncertain'}])
99
- expect(call.mock.calls).toEqual([['delegate.operations.list'],['delegate.operations.get',ref]])
100
- })
@@ -1,85 +0,0 @@
1
- import type {Context} from '../context'
2
- import type {BackgroundSaveFacade,DestinationGrant,DestinationState,ScopeSelection,OperationRef,OperationResult,SaveOperation} from './long-running'
3
- // Supply an owner-bound App backend view, not browser storage or an executor list.
4
- // Producers persist these references alongside their own business job metadata.
5
- export interface AppSaveJob extends OperationRef {name:string;refusal?:string}
6
- const token=/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,127}$/
7
- const id=(value:unknown):value is string=>typeof value==='string'&&token.test(value)
8
- const validRef=(ref:OperationRef)=>ref&&id(ref.delegation_id)&&id(ref.job_id)
9
- const path=(value:unknown):value is string=>typeof value==='string'&&value.startsWith('/')&&value!=='/'&&!value.includes('\0')&&!value.slice(1).split('/').some(part=>!part||part==='.'||part==='..')
10
- function protocol():never{throw {code:'EXECUTOR_PROTOCOL'}}
11
- function validSelection(value:ScopeSelection){return value&&Number.isSafeInteger(value.generation)&&value.generation>=0&&path(value.root)&&(value.scope==='home'?value.root==='/home':value.scope.startsWith('shared:')&&value.root==='/'+value.scope.slice(7))}
12
- function result(value:OperationResult,ref:OperationRef):OperationResult{
13
- if(!value||value.job_id!==ref.job_id||!['queued','copying','committed','canceled','interrupted','uncertain'].includes(value.state))protocol()
14
- if(value.state==='committed'){
15
- if(!value.receipt||!path(value.receipt.path)||!Number.isSafeInteger(value.receipt.size)||value.receipt.size<0||value.receipt.size>16*1024**3)protocol()
16
- }else if(value.receipt!==undefined)protocol()
17
- if(value.reason!==undefined&&(typeof value.reason!=='string'||!/^[A-Za-z][A-Za-z0-9_-]{0,127}$/.test(value.reason)))protocol()
18
- return {job_id:value.job_id,state:value.state,...(value.receipt?{receipt:{...value.receipt}}:{}),...(value.code?{code:value.code}:{}),...(value.reason?{reason:value.reason}:{})}
19
- }
20
- /** Bind the portable UI facade to W2's existing authenticated routes. */
21
- export function createBackgroundSaveFacade(ctx:Pick<Context,'call'>,jobs:()=>Promise<readonly AppSaveJob[]>=async()=>{
22
- const out=await ctx.call<{operations:AppSaveJob[]}>('delegate.operations.list')
23
- if(!Array.isArray(out?.operations))protocol()
24
- return out.operations
25
- }):BackgroundSaveFacade{
26
- const operation=async(method:string,ref:OperationRef)=>{
27
- if(!validRef(ref))protocol()
28
- return result(await ctx.call<OperationResult>(method,{delegation_id:ref.delegation_id,job_id:ref.job_id}),ref)
29
- }
30
- return {
31
- async destination(key){
32
- if(!id(key))protocol()
33
- const out=await ctx.call<DestinationState>('delegate.destination',{key})
34
- if(!out||out.key!==key||!['active','missing','reselection-required','needs-scope-confirmation','disabled'].includes(out.status)||out.selection!==null&&!validSelection(out.selection))protocol()
35
- if(out.status==='active'){
36
- const g=out.destination,s=out.selection
37
- if(!g||!s||!id(g.id)||g.key!==key||g.lifetime!=='until-revoked'||!g.username||!path(g.path)||!(g.path===s.root||g.path.startsWith(s.root+'/')))protocol()
38
- }else if(out.destination!==null)protocol()
39
- return out
40
- },
41
- async exportExample(input){
42
- if(!id(input.key)||!id(input.job_id))protocol()
43
- const out=await ctx.call<OperationRef>('delegate.example.export',{key:input.key,job_id:input.job_id})
44
- if(!validRef(out)||out.job_id!==input.job_id)protocol()
45
- return out
46
- },
47
- selectDestination:input=>ctx.call<DestinationGrant>('delegate.select_destination',{key:input.key,path:input.path}),
48
- async status(){
49
- const value=await ctx.call<{state:string;disabled?:boolean;scope_mode?:string;preselection?:string;selection?:ScopeSelection|null;mismatch?:boolean}>('delegate.status')
50
- // Capability readiness and the protected admission switch are independent.
51
- if(!['ready','disabled','needs-scope-confirmation'].includes(value?.state))throw {code:'EXECUTOR_UNAVAILABLE'}
52
- if(typeof value?.disabled!=='boolean')protocol()
53
- if(value.selection&&!validSelection(value.selection))protocol()
54
- return {disabled:value.disabled,...(value.scope_mode?{scopeMode:value.scope_mode,selection:value.selection??null,preselection:value.preselection,mismatch:value.mismatch}:{} )}
55
- },
56
- async list(){
57
- const value=await ctx.call<{delegations:Array<{delegation_id:string;destination:string;path:string;subject:{username:string};lifetime:string;revoked:boolean}>}>('delegate.list')
58
- if(!Array.isArray(value?.delegations))protocol()
59
- return value.delegations.filter(g=>g.lifetime==='until-revoked'&&!g.revoked).map(g=>{
60
- if(!id(g.delegation_id)||typeof g.destination!=='string'||!g.destination||!path(g.path)||typeof g.subject?.username!=='string'||!g.subject.username)protocol()
61
- return {id:g.delegation_id,key:g.destination,path:g.path,username:g.subject.username,lifetime:'until-revoked' as const}
62
- })
63
- },
64
- async operations(){
65
- const metadata=await jobs()
66
- return Promise.all(metadata.map(async job=>{
67
- if(typeof job?.name!=='string'||!job.name||!validRef(job))protocol()
68
- const ref={delegation_id:job.delegation_id,job_id:job.job_id}
69
- try{return {...ref,name:job.name,...await operation('delegate.operations.get',ref)} satisfies SaveOperation}
70
- catch(e){
71
- if(job.refusal&&(e as {code?:string})?.code==='operation-not-found')return {...ref,name:job.name,state:'interrupted',code:job.refusal} satisfies SaveOperation
72
- throw e
73
- }
74
- }))
75
- },
76
- async revoke(input){
77
- const out=await ctx.call<{revoked:boolean}>('delegate.revoke',{delegation_id:input.delegation_id})
78
- if(out?.revoked!==true)protocol()
79
- return {revoked:true}
80
- },
81
- cancel:ref=>operation('delegate.operations.cancel',ref),
82
- async disable(){const out=await ctx.call<{disabled:boolean}>('delegate.disable');if(out?.disabled!==true)protocol();return {disabled:true}},
83
- async enable(){const out=await ctx.call<{disabled:boolean}>('delegate.enable');if(out?.disabled!==false)protocol();return {disabled:false}},
84
- }
85
- }
@@ -1,47 +0,0 @@
1
- {
2
- "title": "Dateizugriff im Hintergrund",
3
- "help": "Downloads laufen weiter, nachdem Sie diese App schließen. Jeder Auftrag darf bis zu einer Stunde lang nur in den ausgewählten Ordner schreiben. Vorhandene Dateien werden nie ersetzt.",
4
- "setupTitle": "Administratoreinrichtung",
5
- "setupHelp": "Genehmigen Sie diese App einmal, damit sie Dateiaufträge abschließen kann, während Benutzer offline sind.",
6
- "password": "DSM-Passwort",
7
- "authorize": "Dateizugriff im Hintergrund genehmigen",
8
- "confirmShare": "Freigegebenen Ordner bestätigen",
9
- "scopeNeeds": "Der freigegebene Ordner muss bestätigt werden. Wählen Sie unten einen freigegebenen Ordner und bestätigen Sie ihn mit Ihrem DSM-Passwort.",
10
- "ready": "Der Dateizugriff im Hintergrund ist bereit.",
11
- "needs": "Ein Administrator muss den Dateizugriff im Hintergrund genehmigen.",
12
- "blocked": "Der Dateizugriff im Hintergrund ist nicht verfügbar. Bitten Sie einen Administrator, die App-Einrichtung zu prüfen.",
13
- "details": "Details",
14
- "refresh": "Aktualisieren",
15
- "revoke": "Widerrufen",
16
- "cancel": "Auftrag abbrechen",
17
- "noDelegations": "Sie haben keine aktiven Delegierungen.",
18
- "delegations": "Meine Delegierungen",
19
- "expires": "Ablauf",
20
- "downloads": "Meine Downloads",
21
- "noJobs": "Sie haben keine Download-Aufträge.",
22
- "url": "Download-URL",
23
- "name": "Dateiname",
24
- "choose": "Ordner auswählen",
25
- "submit": "In meinen Ordner herunterladen",
26
- "destination": "Ziel",
27
- "pending": "Auftrag abgebrochen. Der Widerruf steht noch aus; die App versucht es erneut.",
28
- "error": "Die Aktion konnte nicht abgeschlossen werden. Aktualisieren Sie die Ansicht und versuchen Sie es erneut. Wenn der Fehler bestehen bleibt, wenden Sie sich an Ihren Administrator.",
29
- "setupError": "Die Genehmigung konnte nicht abgeschlossen werden. Geben Sie Ihr DSM-Passwort erneut ein und versuchen Sie es noch einmal, oder prüfen Sie die App-Einrichtung.",
30
- "denied": "Der Zugriff wurde verweigert. Prüfen Sie Ihre Ordnerberechtigungen und versuchen Sie es erneut.",
31
- "session": "Melden Sie sich erneut bei DSM an und aktualisieren Sie dann die Ansicht.",
32
- "size": "Downloads sind auf 64 MB und 60 Sekunden begrenzt.",
33
- "queued": "In Warteschlange",
34
- "running": "Wird heruntergeladen",
35
- "succeeded": "Gespeichert",
36
- "failed": "Fehlgeschlagen",
37
- "canceled": "Abgebrochen",
38
- "interrupted": "Unterbrochen",
39
- "homeScope": "Home-Ordner jedes Benutzers",
40
- "scopeLabel": "Bereich für Speichern im Hintergrund",
41
- "protectedScope": "Bestätigter Bereich",
42
- "preselection": "Vorauswahl bei der Installation",
43
- "preselectionHelp": "Die Vorauswahl bei der Installation ist nur ein Vorschlag. Bestätigen Sie diesen Bereich mit Ihrem DSM-Passwort, wenn Sie den Hintergrundzugriff aktivieren.",
44
- "scopeMismatch": "Die Vorauswahl bei der Installation weicht vom bestätigten Bereich ab. Speichervorgänge im Hintergrund folgen dem bestätigten Bereich.",
45
- "scopeChangeHelp": "Eine Änderung des Bereichs widerruft vorhandene Ziele und bricht ausstehende Speichervorgänge ab. Benutzer müssen ihre Ziele neu auswählen. Bereits gespeicherte Dateien bleiben erhalten.",
46
- "confirmScope": "Bereichsänderung bestätigen"
47
- }
@@ -1,47 +0,0 @@
1
- {
2
- "title": "Background file access",
3
- "help": "Downloads continue after you close this app. Each job can write only to the folder you select, for up to one hour. Existing files are never replaced.",
4
- "setupTitle": "Administrator setup",
5
- "setupHelp": "Approve this app once to let it complete file jobs while users are offline.",
6
- "password": "DSM password",
7
- "authorize": "Approve background file access",
8
- "confirmShare": "Confirm share",
9
- "scopeNeeds": "Share needs confirmation. Choose a share below and confirm it with your DSM password.",
10
- "ready": "Background file access is ready.",
11
- "needs": "An administrator must approve background file access.",
12
- "blocked": "Background file access is unavailable. Ask an administrator to check the app setup.",
13
- "details": "Details",
14
- "refresh": "Refresh",
15
- "revoke": "Revoke",
16
- "cancel": "Cancel job",
17
- "noDelegations": "You have no active delegations.",
18
- "delegations": "My delegations",
19
- "expires": "Expires",
20
- "downloads": "My downloads",
21
- "noJobs": "You have no download jobs.",
22
- "url": "Download URL",
23
- "name": "File name",
24
- "choose": "Choose folder",
25
- "submit": "Download to my folder",
26
- "destination": "Destination",
27
- "pending": "Job canceled. Revocation is pending; the app will retry.",
28
- "error": "The action could not be completed. Refresh and try again. If it keeps failing, contact your administrator.",
29
- "setupError": "Approval could not be completed. Re-enter your DSM password and try again, or check the app setup.",
30
- "denied": "Access was refused. Check your folder permissions and try again.",
31
- "session": "Sign in to DSM again, then refresh.",
32
- "size": "Downloads are limited to 64 MB and 60 seconds.",
33
- "queued": "Queued",
34
- "running": "Downloading",
35
- "succeeded": "Saved",
36
- "failed": "Failed",
37
- "canceled": "Canceled",
38
- "interrupted": "Interrupted",
39
- "homeScope": "Each user’s home folder",
40
- "scopeLabel": "Background save scope",
41
- "protectedScope": "Confirmed scope",
42
- "preselection": "Installer pre-selection",
43
- "preselectionHelp": "The installer pre-selection is a suggestion. Confirm this scope with your DSM password when enabling background access.",
44
- "scopeMismatch": "The installer pre-selection differs from the confirmed scope. Background saves follow the confirmed scope.",
45
- "scopeChangeHelp": "Changing the scope revokes existing destinations and cancels pending saves. Users must choose destinations again. Saved files remain.",
46
- "confirmScope": "Confirm scope change"
47
- }