@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,205 +0,0 @@
1
- // @vitest-environment jsdom
2
- import {readFileSync} from 'node:fs'
3
- import {join} from 'node:path'
4
- import {test,expect,beforeEach,afterEach,vi} from 'vitest'
5
- import {createApp,h,nextTick} from 'vue'
6
- import {AppRoot} from '@synopackageland/ui'
7
- import BackgroundPanel from '../src/background/BackgroundPanel.vue'
8
- import {backgroundCatalogs,backgroundCopy} from '../src/background/i18n'
9
- import {nasCopy} from '../src/nas/locale'
10
- // DSM HTTP exposes getRandomValues, but not the secure-context randomUUID API.
11
- beforeEach(()=>vi.stubGlobal('crypto',{getRandomValues:globalThis.crypto.getRandomValues.bind(globalThis.crypto)}))
12
- afterEach(()=>vi.unstubAllGlobals())
13
- // The UI Select is a Reka combobox: drive it by keyboard (the UI README helper), which also proves it is keyboard operable.
14
- // Attrs such as data-schedule-interval land on the focusable combobox itself.
15
- async function choose(root:HTMLElement,marker:string,label:string){
16
- const trigger=root.querySelector<HTMLElement>(`[${marker}][role=combobox]`)!;expect(trigger,marker).toBeTruthy()
17
- expect(trigger.id,marker).toBeTruthy();expect(root.querySelector(`label[for="${trigger.id}"]`),marker).toBeTruthy()
18
- trigger.dispatchEvent(new KeyboardEvent('keydown',{key:'ArrowDown',bubbles:true,cancelable:true}));await settle()
19
- const option=[...document.querySelectorAll<HTMLElement>('[role=option]')].find(o=>o.textContent?.trim()===label)
20
- if(!option||option.getAttribute('aria-disabled')==='true')throw new Error(`No enabled option: ${label}`)
21
- option.focus();option.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',bubbles:true,cancelable:true}));await settle()
22
- expect(trigger.textContent).toContain(label)
23
- }
24
- async function settle(){for(let i=0;i<20;i++){await Promise.resolve();await nextTick()}}
25
- type Call=(method:string,params?:Record<string,unknown>)=>Promise<any>
26
- function mount(call:Call,locale='en'){
27
- const root=document.createElement('div');document.body.append(root)
28
- const app=createApp({render:()=>h(AppRoot,{},()=>h(BackgroundPanel,{ctx:{call,locale}}))})
29
- app.config.idPrefix=`bg-${Math.random()}`;app.mount(root)
30
- return {root,close(){app.unmount();root.remove()}}
31
- }
32
- const click=(root:HTMLElement,text:string)=>{const b=[...root.querySelectorAll('button')].find(b=>b.textContent?.trim()===text)!;expect(b).toBeTruthy();b.click()}
33
- const status=()=>({supported:true,admin:true,revision:1,queued:0,running:0,worker:{username:'SynoPkg',alive:true},limits:{maxInputBytes:524288,maxQueued:16,maxOwnerPending:2,maxOwnerBytes:1048576,maxTotalBytes:16777216,jobTimeoutSeconds:60}})
34
-
35
- test('non-administrators see unsupported and no action',async()=>{
36
- const f=mount(async()=>{throw {code:'unsupported'}});await settle()
37
- expect(f.root.textContent).toContain(backgroundCopy('en').unsupported);expect(f.root.querySelector('button')).toBeNull();f.close()
38
- })
39
- const browse=(args?:Record<string,unknown>)=>args?.folder
40
- ?{files:[{name:'fixture.bin',path:`${args.folder}/fixture.bin`,isdir:false,additional:{size:3}}],total:1,offset:0}
41
- :{shares:[{name:'share',path:'/share',isdir:true}],total:1,offset:0}
42
- test('pick a file, submit, cancel and result use only bg.* routes',async()=>{
43
- const calls:Array<[string,Record<string,unknown>|undefined]>=[];let jobs:any[]=[]
44
- const f=mount(async(m,p)=>{
45
- calls.push([m,p])
46
- switch(m){
47
- case 'bg.status':return status()
48
- case 'bg.jobs.list':return {jobs}
49
- case 'bg.browse':return browse(p)
50
- case 'bg.jobs.submit':jobs=[{id:'j1',name:'fixture.bin',state:'queued'}];return {job:jobs[0],duplicate:false}
51
- case 'bg.jobs.cancel':jobs=[{...jobs[0],state:'canceled'}];return {job:jobs[0]}
52
- case 'bg.jobs.result':return {result:{sha256:'x'}}
53
- }
54
- });await settle()
55
- const copy=backgroundCopy('en'),pick=nasCopy('en')
56
- expect(f.root.querySelector('[data-bg-folder]')).toBeNull();expect(f.root.querySelector('[data-bg-file]')).toBeNull()
57
- const submitButton=()=>[...f.root.querySelectorAll('button')].find(b=>b.textContent?.trim()===copy.submit)!
58
- expect(submitButton().disabled).toBe(true)
59
- click(f.root,copy.chooseFile);await settle()
60
- click(f.root,'share');await settle()
61
- click(f.root,pick.selectAction);await settle();click(f.root,pick.confirm);await settle()
62
- expect(f.root.textContent).toContain('/share/fixture.bin')
63
- expect(submitButton().disabled).toBe(false)
64
- click(f.root,copy.submit);await settle()
65
- const submit=calls.find(c=>c[0]==='bg.jobs.submit')![1]!
66
- expect(submit.folder).toBe('/share');expect(submit.relative).toBe('fixture.bin');expect(submit.key).toMatch(/^[a-f0-9]{32}$/)
67
- expect(f.root.querySelector('[data-job-state=queued]')).not.toBeNull()
68
- click(f.root,copy.cancel);await settle()
69
- expect(f.root.querySelector('[data-job-state=canceled]')).not.toBeNull()
70
- expect(calls.filter(c=>c[0]==='bg.browse').length).toBeGreaterThan(0)
71
- expect(calls.every(c=>/^bg\./.test(c[0]))).toBe(true)
72
- f.close()
73
- })
74
- test('a denied listing shows a localized error and cannot submit',async()=>{
75
- const f=mount(async(m)=>{
76
- if(m==='bg.status')return status()
77
- if(m==='bg.jobs.list')return {jobs:[]}
78
- if(m==='bg.browse')throw {code:'denied',message:'Cookie=CANARY'}
79
- });await settle()
80
- click(f.root,backgroundCopy('en').chooseFile);await settle()
81
- expect(f.root.textContent).toContain(nasCopy('en').errorDenied);expect(f.root.textContent).not.toContain('CANARY')
82
- expect([...f.root.querySelectorAll('button')].find(b=>b.textContent?.trim()===backgroundCopy('en').submit)!.disabled).toBe(true)
83
- f.close()
84
- })
85
- test('nine locales have identical keys and placeholders',()=>{
86
- const en=backgroundCatalogs.en,flat=(o:any,p=''):Record<string,string>=>Object.fromEntries(Object.entries(o).flatMap(([k,v])=>typeof v==='string'?[[p+k,v]]:Object.entries(flat(v,`${p}${k}.`))))
87
- const base=flat(en)
88
- expect(Object.keys(backgroundCatalogs).sort()).toEqual(['de','en','es','fr','it','ja','ko','zh-CN','zh-TW'])
89
- for(const catalog of Object.values(backgroundCatalogs)){
90
- const map=flat(catalog);expect(Object.keys(map).sort()).toEqual(Object.keys(base).sort())
91
- for(const [k,v] of Object.entries(map)){expect(v.length).toBeGreaterThan(0);expect(v.match(/\{\w+\}/g)??[]).toEqual(base[k].match(/\{\w+\}/g)??[])}
92
- }
93
- })
94
-
95
- test('a null job list from the worker renders as no jobs',async()=>{
96
- const f=mount(async m=>m==='bg.status'?status():m==='bg.jobs.list'?{jobs:null}:{});await settle()
97
- expect(f.root.textContent).toContain(backgroundCopy('en').noJobs);f.close()
98
- })
99
-
100
- // One test per locale: each mounts its own app, so a slow host cannot push nine mounts past one test timeout.
101
- test.each(Object.keys(backgroundCatalogs))('the picker dialog explains the one-time read in %s',async locale=>{
102
- const f=mount(async(m,p)=>m==='bg.status'?status():m==='bg.jobs.list'?{jobs:[]}:browse(p),locale);await settle()
103
- const copy=backgroundCopy(locale)
104
- click(f.root,copy.chooseFile);await settle()
105
- const dialog=f.root.querySelector('[role=dialog]')!.textContent!
106
- expect(dialog).toContain(copy.pickerConsent)
107
- f.close()
108
- })
109
-
110
- test('ordinary owner can submit but has no administrator controls',async()=>{
111
- const calls:string[]=[]
112
- const f=mount(async(m,p)=>{calls.push(m);if(m==='bg.status')return {...status(),admin:false};if(m==='bg.jobs.list')return {jobs:[{id:'owned',name:'owned.bin',state:'queued',submitter:{user:'bob',uid:'1025'}}]};if(m==='bg.browse')return browse(p);return {}});await settle()
113
- const c=backgroundCopy('en')
114
- expect(f.root.textContent).toContain(c.ownerScope)
115
- expect(f.root.textContent).not.toContain(c.purgeOwner)
116
- expect([...f.root.querySelectorAll('button')].some(b=>b.textContent?.trim()===c.chooseFile)).toBe(true)
117
- click(f.root,c.cancel);await settle();expect(calls).toContain('bg.jobs.cancel');f.close()
118
- })
119
- test('admin exact owner purge requires explicit confirmation',async()=>{
120
- const calls:Array<[string,Record<string,unknown>|undefined]>=[]
121
- const f=mount(async(m,p)=>{calls.push([m,p]);if(m==='bg.status')return {...status(),admin:true};if(m==='bg.jobs.list')return {jobs:[{id:'one',name:'a',state:'succeeded',submitter:{user:'bob',uid:'1025'}}]};return {}});await settle()
122
- const c=backgroundCopy('en')
123
- click(f.root,c.purgeOwner);await settle();expect(calls.some(([m])=>m==='bg.jobs.purge')).toBe(false)
124
- click(f.root,c.confirmPurge);await settle()
125
- expect(calls.find(([m])=>m==='bg.jobs.purge')?.[1]).toEqual({owner:{user:'bob',uid:'1025'}});f.close()
126
- })
127
- test('malformed status cannot render action controls or crash the panel',async()=>{
128
- const f=mount(async()=>({state:'not-enabled'}));await settle()
129
- expect(f.root.textContent).toContain(backgroundCopy('en').errors.failed)
130
- expect(f.root.querySelector('button')).toBeNull();f.close()
131
- })
132
-
133
- test('schedule creation requires copy consent; owner controls disable and delete exact schedule',async()=>{
134
- const calls:Array<[string,Record<string,unknown>|undefined]>=[];let schedules:any[]=[]
135
- const f=mount(async(m,p)=>{calls.push([m,p]);switch(m){
136
- case 'bg.status':return {...status(),owner:{user:'bob',uid:'1025'},admin:false}
137
- case 'bg.jobs.list':return {jobs:[{id:'import',name:'copy.bin',state:'succeeded',copyRetained:true,submitter:{user:'bob',uid:'1025'}}]}
138
- case 'bg.schedules.list':return {schedules}
139
- case 'bg.schedules.create':schedules=[{id:'schedule',name:'copy.bin',owner:{user:'bob',uid:'1025'},enabled:true,intervalSeconds:3600,nextAt:'2026-10-05T01:00:00Z',missed:0,workerRevision:1}];return {schedule:schedules[0]}
140
- case 'bg.schedules.disable':schedules=[{...schedules[0],enabled:false}];return {schedule:schedules[0]}
141
- case 'bg.schedules.delete':schedules=[];return {deleted:true}
142
- default:return {}
143
- }});await settle();const c=backgroundCopy('en')
144
- click(f.root,c.scheduleCopy);await settle()
145
- expect(calls.some(([m])=>m==='bg.schedules.create')).toBe(false)
146
- const create=[...f.root.querySelectorAll('button')].find(b=>b.textContent?.trim()===c.createSchedule)!
147
- expect(create.disabled).toBe(true)
148
- await choose(f.root,'data-schedule-interval',c.weekly)
149
- const consent=f.root.querySelector<HTMLElement>('[data-schedule-consent] [role=checkbox], [role=checkbox][data-schedule-consent]')!;consent.click();await settle()
150
- click(f.root,c.createSchedule);await settle()
151
- expect(calls.find(([m])=>m==='bg.schedules.create')?.[1]).toMatchObject({jobId:'import',intervalSeconds:604800,consent:true})
152
- expect(calls.find(([m])=>m==='bg.schedules.create')?.[1]?.key).toMatch(/^[a-f0-9]{32}$/)
153
- expect(f.root.querySelector('[data-schedule-id=schedule]')?.textContent).toContain(c.nextRun.replace('{time}','').trim().split(':')[0])
154
- click(f.root,c.disableSchedule);await settle();expect(calls.find(([m])=>m==='bg.schedules.disable')?.[1]).toEqual({id:'schedule'})
155
- click(f.root,c.deleteSchedule);await settle();expect(calls.some(([m])=>m==='bg.schedules.delete')).toBe(false)
156
- click(f.root,c.confirmDeleteSchedule);await settle();expect(calls.find(([m])=>m==='bg.schedules.delete')?.[1]).toEqual({id:'schedule'});f.close()
157
- })
158
-
159
- test('administrator sees the exact selected copy before enabling a schedule',async()=>{
160
- const calls:Array<[string,Record<string,unknown>|undefined]>=[]
161
- const name='private-'.padEnd(128,'x')
162
- const f=mount(async(m,p)=>{calls.push([m,p]);if(m==='bg.status')return status();if(m==='bg.jobs.list')return {jobs:[]};if(m==='bg.schedules.list')return {schedules:[{id:'disabled',name,owner:{user:'normal1',uid:'1025'},enabled:false,nextAt:'2026-10-05T01:00:00Z',missed:0}]};return {}});await settle()
163
- const c=backgroundCopy('en');click(f.root,c.enableSchedule);await settle()
164
- const expected=c.enableScheduleConsent.replace('{name}',name)
165
- expect(expected).toContain(name);expect(f.root.textContent).toContain(expected)
166
- expect(calls.some(([m])=>m==='bg.schedules.enable')).toBe(false)
167
- click(f.root,c.confirmEnableSchedule);await settle()
168
- expect(calls.find(([m])=>m==='bg.schedules.enable')?.[1]).toEqual({id:'disabled',consent:true});f.close()
169
- })
170
-
171
- // Same rule as the base template (test/native-controls.test.ts): UI components only, and the
172
- // UI's own Form auto layout and FormItem id binding instead of per-app workarounds.
173
- test('the background panel uses only UI components and the UI form binding',()=>{
174
- const template=readFileSync(join(__dirname,'../src/background/BackgroundPanel.vue'),'utf8').replace(/<script[\s\S]*?<\/script>/g,'').replace(/<style[\s\S]*?<\/style>/g,'')
175
- expect(template.match(/<(?:a|input|select|textarea|label)[\s>/]/g)).toBeNull()
176
- expect(template).not.toMatch(/direction="vertical"|field\.controlId|role="group"/)
177
- })
178
-
179
- test('fresh ordinary user can pick and submit without administrator switches',async()=>{
180
- const calls:string[]=[]
181
- const f=mount(async(m,p)=>{calls.push(m);if(m==='bg.status')return {...status(),admin:false}
182
- if(m==='bg.browse')return browse(p);if(m==='bg.jobs.list')return {jobs:[]};return {schedules:[]}});await settle()
183
- click(f.root,backgroundCopy('en').chooseFile);await settle()
184
- expect(calls).toContain('bg.browse')
185
- expect(calls).not.toContain('bg.mode.set');expect(calls).not.toContain('bg.users.set');f.close()
186
- })
187
-
188
- test.each(Object.keys(backgroundCatalogs))('jobs_busy renders a retry message in %s and permits retry',async locale=>{
189
- let attempts=0
190
- const f=mount(async(m)=>{
191
- if(m==='bg.status')return status()
192
- if(m==='bg.jobs.list'){
193
- if(attempts++===0)throw {code:'jobs_busy',message:'CANARY'}
194
- return {jobs:[]}
195
- }
196
- return {schedules:[]}
197
- },locale);await settle()
198
- const copy=backgroundCopy(locale)
199
- expect(copy.errors.jobs_busy).toBeTruthy()
200
- expect(copy.errors.jobs_busy).not.toBe(copy.errors.failed)
201
- expect(f.root.querySelector('[role=alert]')?.textContent).toBe(copy.errors.jobs_busy)
202
- expect(f.root.textContent).not.toContain('CANARY')
203
- click(f.root,copy.refresh);await settle();expect(attempts).toBe(2)
204
- f.close()
205
- })
@@ -1,140 +0,0 @@
1
- package app
2
-
3
- import (
4
- "bufio"
5
- "context"
6
- "encoding/json"
7
- "errors"
8
- "net"
9
- "net/http"
10
- "os"
11
- "path/filepath"
12
- "strings"
13
- "syscall"
14
- "time"
15
-
16
- "dsmapp/internal/api"
17
- )
18
-
19
- func (cfg Config) rootRoutes() []api.Route {
20
- return []api.Route{
21
- api.Handle("executor.control", cfg.executorControl),
22
- api.Handle("executor.status", cfg.executorStatus),
23
- api.HandleRequest("root.run", cfg.executorRootRun),
24
- }
25
- }
26
-
27
- // API permissions default to administrators for unlisted methods. Check here
28
- // too: control mutates the fixed package-owned control file before DSM run.
29
- func (cfg Config) executorControl(_ context.Context, caller api.Caller, raw json.RawMessage) (any, error) {
30
- if !caller.Admin() {
31
- return nil, errors.New("admin_required")
32
- }
33
- var in struct {
34
- Action string `json:"action"`
35
- }
36
- if err := decodeParams(raw, &in); err != nil {
37
- return nil, err
38
- }
39
- if in.Action != "start" && in.Action != "stop" && in.Action != "purge" {
40
- return nil, api.BadRequest("executor_control_invalid")
41
- }
42
- dir := filepath.Join(cfg.DataDir, "executor")
43
- if err := os.MkdirAll(dir, 0700); err != nil {
44
- return nil, err
45
- }
46
- info, err := os.Lstat(dir)
47
- if err != nil || !info.IsDir() || info.Mode()&os.ModeSymlink != 0 {
48
- return nil, errors.New("executor_control_directory_invalid")
49
- }
50
- if err := writeFileAtomic(filepath.Join(dir, "control"), []byte(in.Action)); err != nil {
51
- return nil, err
52
- }
53
- return map[string]bool{"written": true}, nil
54
- }
55
-
56
- // The executor closes its socket while paused: the package is stopped, or an
57
- // upgrade changed the pins and awaits administrator approval.
58
- func (cfg Config) executorStatus(ctx context.Context, _ api.Caller, _ json.RawMessage) (any, error) {
59
- status, err := cfg.executorRequest(ctx, "status", nil, nil)
60
- if errors.Is(err, syscall.ENOENT) || errors.Is(err, syscall.ECONNREFUSED) {
61
- next := "Start the package."
62
- if cfg.startRequested() {
63
- next = "The package is running: an administrator approves background access again in Administrator setup; the executor log names the cause."
64
- }
65
- return map[string]any{"ready": false, "state": "paused", "reason": "executor_not_listening", "next": next}, nil
66
- }
67
- return status, err
68
- }
69
-
70
- // Package start and stop write the lifecycle mailbox; its last request tells a
71
- // stopped package from a running one whose executor stays paused.
72
- func (cfg Config) startRequested() bool {
73
- f, err := os.Open(filepath.Join(cfg.DataDir, "executor", "control"))
74
- if err != nil {
75
- return false
76
- }
77
- defer f.Close()
78
- b := make([]byte, 16)
79
- n, _ := f.Read(b)
80
- return strings.TrimSpace(string(b[:n])) == "start"
81
- }
82
-
83
- func (cfg Config) executorRootRun(ctx context.Context, caller api.Caller, req *http.Request, raw json.RawMessage) (any, error) {
84
- if !caller.Admin() {
85
- return nil, errors.New("admin_required")
86
- }
87
- var in struct {
88
- Name string `json:"name"`
89
- }
90
- if err := decodeParams(raw, &in); err != nil {
91
- return nil, err
92
- }
93
- // Executor independently verifies both session values and administrator identity.
94
- auth, err := api.DSMSession(req)
95
- if err != nil {
96
- return nil, err
97
- }
98
- return cfg.executorRequest(ctx, "root.run", auth, map[string]string{"name": in.Name})
99
- }
100
-
101
- // executorSocketBase is a variable so tests can use a temporary directory.
102
- var executorSocketBase = "/run/synopkgland"
103
-
104
- func (cfg Config) executorRequest(ctx context.Context, op string, auth, params any) (any, error) {
105
- conn, err := (&net.Dialer{Timeout: 5 * time.Second}).DialContext(ctx, "unix", filepath.Join(executorSocketBase, cfg.PackageID, "executor.sock"))
106
- if err != nil {
107
- return nil, err
108
- }
109
- defer conn.Close()
110
- if err := conn.SetDeadline(time.Now().Add(30 * time.Second)); err != nil {
111
- return nil, err
112
- }
113
- if auth == nil {
114
- auth = map[string]any{}
115
- }
116
- if params == nil {
117
- params = map[string]any{}
118
- }
119
- if err := json.NewEncoder(conn).Encode(map[string]any{"v": 1, "op": op, "auth": auth, "params": params}); err != nil {
120
- return nil, err
121
- }
122
- scanner := bufio.NewScanner(conn)
123
- scanner.Buffer(make([]byte, 4096), 64*1024)
124
- if !scanner.Scan() {
125
- return nil, errors.New("executor_response_invalid")
126
- }
127
- var response struct {
128
- OK bool `json:"ok"`
129
- Result json.RawMessage `json:"result"`
130
- Code string `json:"code"`
131
- Message string `json:"message"`
132
- }
133
- if err := json.Unmarshal(scanner.Bytes(), &response); err != nil {
134
- return nil, err
135
- }
136
- if !response.OK {
137
- return nil, errors.New(response.Code + ": " + response.Message)
138
- }
139
- return response.Result, nil
140
- }
@@ -1,117 +0,0 @@
1
- package app
2
-
3
- import (
4
- "net"
5
- "os"
6
- "path/filepath"
7
- "strings"
8
- "testing"
9
- )
10
-
11
- func init() {
12
- sampleParams["executor.control"] = `{"action":"stop"}`
13
- sampleParams["executor.status"] = `{}`
14
- sampleParams["root.run"] = `{"name":"whoami"}`
15
- }
16
-
17
- func TestExecutorControlAcceptsOnlyFixedActions(t *testing.T) {
18
- cfg := testConfig(t)
19
- for _, action := range []string{"start", "stop", "purge"} {
20
- code, out := call(t, cfg, alice, "executor.control", `{"action":"`+action+`"}`)
21
- if code != "" {
22
- t.Fatalf("%s: %s %v", action, code, out)
23
- }
24
- b, err := os.ReadFile(filepath.Join(cfg.DataDir, "executor/control"))
25
- if err != nil || string(b) != action {
26
- t.Fatalf("control was not written: %s %v", b, err)
27
- }
28
- }
29
- for _, raw := range []string{`{"action":"start;id"}`, `{"action":"start\nstop"}`, `{"action":""}`, `{"action":"stop","path":"/etc/passwd"}`} {
30
- if code, _ := call(t, cfg, alice, "executor.control", raw); code != "bad_request" {
31
- t.Fatalf("accepted %s: %s", raw, code)
32
- }
33
- }
34
- }
35
-
36
- func TestExecutorControlRejectsSymlinkDirectory(t *testing.T) {
37
- cfg := testConfig(t)
38
- outside := t.TempDir()
39
- if err := os.Symlink(outside, filepath.Join(cfg.DataDir, "executor")); err != nil {
40
- t.Fatal(err)
41
- }
42
- if code, _ := call(t, cfg, alice, "executor.control", `{"action":"stop"}`); code == "" {
43
- t.Fatal("accepted symlink")
44
- }
45
- if _, err := os.Stat(filepath.Join(outside, "control")); !os.IsNotExist(err) {
46
- t.Fatal("wrote outside data directory")
47
- }
48
- }
49
-
50
- func TestExecutorRootRunRequiresCurrentDSMCookie(t *testing.T) {
51
- t.Setenv("HTTP_COOKIE", "")
52
- if code, _ := call(t, testConfig(t), alice, "root.run", `{"name":"whoami"}`); code == "" {
53
- t.Fatal("root.run accepted absent DSM cookie")
54
- }
55
- }
56
-
57
- // The executor closes its listener while paused (package stopped, or pins
58
- // awaiting administrator approval). Status then answers, not "internal".
59
- func TestExecutorStatusReportsAPausedExecutor(t *testing.T) {
60
- cfg := testConfig(t)
61
- previous := executorSocketBase
62
- // A short base: unix socket paths are limited to about 100 bytes.
63
- base, err := os.MkdirTemp("/tmp", "exec")
64
- if err != nil {
65
- t.Fatal(err)
66
- }
67
- executorSocketBase = base
68
- defer func() { executorSocketBase = previous; os.RemoveAll(base) }()
69
- check := func(name string) {
70
- t.Helper()
71
- code, envelope := call(t, cfg, alice, "executor.status", `{}`)
72
- out, _ := envelope["data"].(map[string]any)
73
- if code != "" || out["ready"] != false || out["state"] != "paused" || out["reason"] != "executor_not_listening" || out["next"] == "" || out["next"] == nil {
74
- t.Fatalf("%s: %s %v", name, code, out)
75
- }
76
- }
77
- check("no socket")
78
- if code, _ := call(t, cfg, bob, "executor.status", `{}`); code != "" {
79
- t.Fatal("authenticated user cannot read a paused status", code)
80
- }
81
- dir := filepath.Join(executorSocketBase, cfg.PackageID)
82
- os.MkdirAll(dir, 0700)
83
- ln, err := net.ListenUnix("unix", &net.UnixAddr{Name: filepath.Join(dir, "executor.sock"), Net: "unix"})
84
- if err != nil {
85
- t.Fatal(err)
86
- }
87
- ln.SetUnlinkOnClose(false)
88
- ln.Close()
89
- check("closed listener")
90
- }
91
-
92
- // next follows the last lifecycle request: a running package needs approval
93
- // again, not a start.
94
- func TestExecutorStatusNextFollowsTheLifecycleRequest(t *testing.T) {
95
- cfg := testConfig(t)
96
- previous := executorSocketBase
97
- executorSocketBase = t.TempDir()
98
- defer func() { executorSocketBase = previous }()
99
- next := func() string {
100
- t.Helper()
101
- _, envelope := call(t, cfg, alice, "executor.status", `{}`)
102
- out, _ := envelope["data"].(map[string]any)
103
- s, _ := out["next"].(string)
104
- return s
105
- }
106
- if !strings.HasPrefix(next(), "Start the package.") {
107
- t.Fatal("no request:", next())
108
- }
109
- mailbox := filepath.Join(cfg.DataDir, "executor")
110
- os.MkdirAll(mailbox, 0700)
111
- for request, start := range map[string]bool{"stop\n": true, "start\n": false, "start": false} {
112
- os.WriteFile(filepath.Join(mailbox, "control"), []byte(request), 0600)
113
- if got := next(); strings.HasPrefix(got, "Start the package") != start || got == "" {
114
- t.Fatalf("%q: %s", request, got)
115
- }
116
- }
117
- }
@@ -1,3 +0,0 @@
1
- #!/bin/sh
2
- set -eu
3
- id -u
@@ -1,47 +0,0 @@
1
- # Native Go with Vue
2
-
3
- Edit `frontend/src/App.vue` and `main.ts` to build a DSM-window app with the
4
- public `@synopackageland/ui` components and embedded theme.
5
-
6
- ```sh
7
- cd frontend
8
- npm ci
9
- npm test
10
- npm run build
11
- ```
12
-
13
- The base app reads package status and edits the package greeting through
14
- `ctx.call`. Each window has its own Vue mount, request state and host
15
- subscriptions; unmount disposes subscriptions and ignores late responses.
16
-
17
- `--with root-ops` adds the existing DSM approval gate for fixed `root/*.sh`
18
- operations. `--with jobs` adds package-account jobs and schedules; it combines with root-ops and files. `--with files` enables current-session File Station access,
19
- and the background picker uses the retained session provider.
20
-
21
- With `portal:` declared (`synopkgland add portal`), the status page shows
22
- `src/portal/PortalSettings.vue`: the DSM Application Portal link, the alias form
23
- for administrators, and the Control Panel shortcut.
24
-
25
- Use public library controls, the embedded theme, per-app modal scope and unique
26
- Vue ID prefixes. Backend route permissions and DSM checks remain authoritative.
27
- Generated build and unit tests do not establish NAS runtime acceptance.
28
-
29
- The manifest is dsm-package.yaml schema 2: backend.kind: go and capabilities.files: session, jobs: true, identity: standalone, rootOps: true. Use --with login to declare standalone identity. Existing projects use synopkgland add <cap>...; app entrypoints stay app-owned, SDK conflicts are refused. check, inspect, build, deploy and status accept --json.
30
-
31
- Use the installed `@synopackageland/ui`; package.json and the lockfile pin its version and integrity.
32
- `AppRoot` defaults to app modal scope and stays bounded at `height: 100%`;
33
- `AppLayout wide-layout="window"` keeps the DSM shell in window mode even when
34
- maximized. Only whole-page web/Portal apps should opt into document scope or
35
- `wide-layout="web"`. The DSM host sets the 700px minimum window width.
36
- Import `themes/dsm7-embedded.css` and assign each mount a unique
37
- `app.config.idPrefix` before mounting.
38
-
39
- Start with AGENTS.md, `synopkgland skill list` and `synopkgland skill path`.
40
- Read `synopkgland skill show ui-vue` for direct Vue component work and
41
- `synopkgland skill show ui-json` for optional declarative specs and their
42
- validate/render workflow. The existing host/backend lifecycle remains in place.
43
-
44
- For UI discovery, run `npx --no syno-pkg-land-ui catalog --json` and
45
- `npx --no syno-pkg-land-ui describe Button --json` from the installed frontend.
46
- Read its prompt and exported Vue docs/types before choosing component APIs.
47
- Use `syno-pkg-land-ui` directly in npm scripts; keep AI guidance version-independent.
@@ -1,61 +0,0 @@
1
- ---
2
- name: Native DSM Vue template
3
- description: Existing package settings UI using the installed @synopackageland/ui.
4
- typography:
5
- body:
6
- fontFamily: "var(--ui-font-sans)"
7
- fontSize: "13px"
8
- lineHeight: 1.5
9
- title:
10
- fontSize: "20px"
11
- fontWeight: 600
12
- state:
13
- fontSize: "15px"
14
- fontWeight: 600
15
- spacing:
16
- actions: "8px"
17
- heading-gap: "16px"
18
- section-gap: "24px"
19
- ---
20
-
21
- # Design System: Native DSM Vue template
22
-
23
- Read `AGENTS.md` at the project root and `synopkgland skill show ui-vue` before UI edits.
24
-
25
- For UI discovery, run `npx --no syno-pkg-land-ui catalog --json` and
26
- `npx --no syno-pkg-land-ui describe Button --json` from the installed frontend.
27
- Read its prompt and exported Vue docs/types before choosing component APIs.
28
- Use `syno-pkg-land-ui` directly in npm scripts; keep AI guidance version-independent.
29
-
30
- ## Overview
31
-
32
- The template runs inside a DSM package window. `AppShell` provides status and
33
- optional background navigation. The base page shows package status and a greeting
34
- editor; the root overlay adds its existing fixed-operation authorization gate.
35
-
36
- Use the installed `@synopackageland/ui` controls and `themes/dsm7-embedded.css`.
37
- The theme owns colors, typography, spacing and dialogs. Keep per-app modal scope,
38
- a unique Vue ID prefix and vertical scrolling at the DSM minimum window size.
39
-
40
- Refresh and save expose busy state and localized errors. Reopen refreshes status.
41
- Each mount owns its state; unmount unsubscribes from host events and ignores late
42
- responses. Backend route policies decide access.
43
-
44
- ### Opt-in background schedules (S1-a)
45
-
46
- The `native-go-jobs` overlay extends this **Operate** surface within the inherited `AppRoot`, embedded theme, `SettingsSection`, Button and Callout system. It introduces no new palette or global tokens.
47
-
48
- - **Private-copy consent:** “Schedule this copy” is available for the signed-in owner's retained, successful, unscheduled job copy. “Private copy: {name}” identifies the input; “Repeat every” offers “Hour”, “Day” and “Week”. “Create schedule” stays disabled until the user checks “I agree to keep and reprocess this fixed copy as the package user. No new source files or personal ACLs are read.” The help explains the eight-schedule limit and that missed runs are recorded, never replayed.
49
- - **Ownership and recovery:** preserve user-and-UID owner isolation. Administrator rows expose “Owner: {user} (UID {uid})”. A worker change shows “The worker revision changed. An administrator must review and explicitly enable this schedule.” Only administrators, while background mode is on, see “Enable schedule”. Its confirmation names the exact private copy: “Enable the schedule for {name} with the current worker revision? I agree to reprocess this fixed copy. Past runs will not be replayed.” Actions are “Confirm enable” and “Cancel”.
50
- - **Layout:** schedule name/state, owner, next run, missed runs and warnings stack above a grouped, wrapping action row. Long names and copy wrap within the available width. Keep the inherited vertical scrolling at the minimum window size; do not squeeze schedules into one viewport. The labeled select and consent checkbox retain visible keyboard focus using existing theme tokens.
51
- - **Errors and cleanup:** danger alerts map known error codes to localized safe copy, with a localized fallback rather than raw server text. The catalogs cover nine locales. Preserve per-mount disposal: stop polling, dispose the picker, revoke result download URLs and prevent pending responses from restoring disposed state. Deletion confirmation explains that queued jobs cancel, running jobs drain and finished results remain.
52
-
53
- Evidence: `.herdr-project/syno-package-land-sdk-t-0129/library/ui-desktop.png` and `ui-minimum.png` are local component-fixture captures. The finish review disposition is **ship**, with all three material findings resolved. A fresh `normal1` NAS browser readback passed before the final UI adjustments; these captures validate the final adjustments locally and do not establish final DSM visual acceptance.
54
-
55
- ## Do's and Don'ts
56
-
57
- - Do use existing public UI components, embedded theme tokens and state/recovery copy.
58
- - Do retain permission gating, readable loading/empty/error states and per-instance cleanup.
59
- - Do use the library's `Select`, `Checkbox`, `Input`, `Textarea`, `Form`, `FormItem`, `FilePicker` (`variant="compact"`, in the app locale) and `Link` for controls; there is no native `<input>` or `<a>`. Leave `Form` on its automatic direction (labels stack below 520px of container width) and let a `FormItem` bind its control, with no `direction="vertical"`, `role="group"` or `field.controlId`.
60
- - Do not infer authority from frontend observations or scheduler history.
61
- - Don't introduce a separate palette, component system or modal workaround around the library contract.