@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
@@ -0,0 +1,265 @@
1
+ /**
2
+ * Rules `synopkgland inspect` checks on any SPK, whoever built it. Each code
3
+ * is stable and keeps its severity: an error is something the Synology DSM 7
4
+ * Developer Guide requires; a warning is a likely mistake, or a rule the guide
5
+ * does not state clearly. `source` names the guide page the rule comes from.
6
+ */
7
+ export type SpkRuleSeverity = "error" | "warning";
8
+ export interface SpkRule {
9
+ severity: SpkRuleSeverity;
10
+ description: string;
11
+ source: string;
12
+ }
13
+ export declare const SPK_RULES: {
14
+ readonly SPK_NOT_TAR: {
15
+ readonly severity: "error";
16
+ readonly description: "檔案不是可讀的 tar 封存;SPK 是未壓縮的 tar。";
17
+ readonly source: "DSM 7 Developer Guide: Package Structure";
18
+ };
19
+ readonly SPK_ENTRY_UNSAFE: {
20
+ readonly severity: "error";
21
+ readonly description: "SPK 內的路徑跳出封存根目錄(絕對路徑或 ..),或是連結。";
22
+ readonly source: "DSM 7 Developer Guide: Package Structure";
23
+ };
24
+ readonly SPK_ENTRY_UNKNOWN: {
25
+ readonly severity: "warning";
26
+ readonly description: "SPK 最上層有指南沒有列出的檔案或目錄(檔名區分大小寫)。";
27
+ readonly source: "DSM 7 Developer Guide: Package Structure";
28
+ };
29
+ readonly SPK_INFO_MISSING: {
30
+ readonly severity: "error";
31
+ readonly description: "缺少 INFO。";
32
+ readonly source: "DSM 7 Developer Guide: Package Structure";
33
+ };
34
+ readonly SPK_PAYLOAD_MISSING: {
35
+ readonly severity: "error";
36
+ readonly description: "缺少 package.tgz。";
37
+ readonly source: "DSM 7 Developer Guide: Package Structure";
38
+ };
39
+ readonly SPK_INFO_FIELD_REQUIRED: {
40
+ readonly severity: "error";
41
+ readonly description: "INFO 缺少必填欄位(package、version、os_min_ver、description、arch、maintainer)。";
42
+ readonly source: "DSM 7 Developer Guide: INFO Necessary Fields";
43
+ };
44
+ readonly SPK_INFO_DISPLAYNAME_MISSING: {
45
+ readonly severity: "warning";
46
+ readonly description: "INFO 沒有 displayname;Package Center 會改顯示 package 值。";
47
+ readonly source: "DSM 7 Developer Guide: INFO Optional Fields";
48
+ };
49
+ readonly SPK_INFO_LINE_INVALID: {
50
+ readonly severity: "warning";
51
+ readonly description: "INFO 有一行不是 key=\"value\"(空行與 # 註解除外)。";
52
+ readonly source: "DSM 7 Developer Guide: INFO";
53
+ };
54
+ readonly SPK_INFO_VALUE_UNTERMINATED: {
55
+ readonly severity: "error";
56
+ readonly description: "INFO 欄位值的引號沒有結束。";
57
+ readonly source: "DSM 7 Developer Guide: INFO";
58
+ };
59
+ readonly SPK_INFO_FIELD_DUPLICATE: {
60
+ readonly severity: "warning";
61
+ readonly description: "INFO 同一個欄位設定了兩次。";
62
+ readonly source: "DSM 7 Developer Guide: INFO";
63
+ };
64
+ readonly SPK_INFO_PACKAGE_INVALID: {
65
+ readonly severity: "error";
66
+ readonly description: "INFO package 含有 : / > < | = 其中之一。";
67
+ readonly source: "DSM 7 Developer Guide: INFO Necessary Fields (package)";
68
+ };
69
+ readonly SPK_INFO_VERSION_INVALID: {
70
+ readonly severity: "error";
71
+ readonly description: "INFO version 不是以 .、-、_ 分隔的數字,或某段超過 2147483647。";
72
+ readonly source: "DSM 7 Developer Guide: INFO Necessary Fields (version)";
73
+ };
74
+ readonly SPK_INFO_VERSION_NO_BUILD: {
75
+ readonly severity: "warning";
76
+ readonly description: "INFO version 沒有 -<build> 編號(指南格式為 [feature number]-[build number])。";
77
+ readonly source: "DSM 7 Developer Guide: INFO Necessary Fields (version)";
78
+ };
79
+ readonly SPK_INFO_OS_VER_INVALID: {
80
+ readonly severity: "error";
81
+ readonly description: "INFO os_min_ver 或 os_max_ver 不是 <major>.<minor>-<build>(也接受 <major>.<minor>.<micro>-<build>)。";
82
+ readonly source: "DSM 7 Developer Guide: INFO Necessary Fields (os_min_ver), Optional Fields (os_max_ver)";
83
+ };
84
+ readonly SPK_INFO_OS_MIN_VER_LOW: {
85
+ readonly severity: "warning";
86
+ readonly description: "INFO os_min_ver 低於 7.0-40000。";
87
+ readonly source: "DSM 7 Developer Guide: INFO Necessary Fields (os_min_ver)";
88
+ };
89
+ readonly SPK_INFO_ARCH_UNKNOWN: {
90
+ readonly severity: "warning";
91
+ readonly description: "INFO arch 或 exclude_arch 含有 Appendix A 與已知 DSM 7 平台都沒有的值。";
92
+ readonly source: "DSM 7 Developer Guide: Appendix A Platform and Arch Value Mapping Table";
93
+ };
94
+ readonly SPK_INFO_ARCH_NOARCH_MIXED: {
95
+ readonly severity: "warning";
96
+ readonly description: "INFO arch 同時有 noarch 與其他值。";
97
+ readonly source: "DSM 7 Developer Guide: INFO Necessary Fields (arch)";
98
+ };
99
+ readonly SPK_INFO_BOOLEAN_INVALID: {
100
+ readonly severity: "error";
101
+ readonly description: "INFO 的 yes/no 欄位(例如 startable、silent_install)不是 \"yes\" 或 \"no\"。";
102
+ readonly source: "DSM 7 Developer Guide: INFO Optional Fields";
103
+ };
104
+ readonly SPK_INFO_LANG_UNKNOWN: {
105
+ readonly severity: "warning";
106
+ readonly description: "displayname_<lang> 或 description_<lang> 的語言碼不在指南清單(enu、cht、chs、jpn…)。";
107
+ readonly source: "DSM 7 Developer Guide: INFO Optional Fields (description_[language])";
108
+ };
109
+ readonly SPK_INFO_FIELD_UNKNOWN: {
110
+ readonly severity: "warning";
111
+ readonly description: "INFO 欄位不在指南清單;DSM 不會使用它(拼錯的欄位名稱也會出現在這裡)。";
112
+ readonly source: "DSM 7 Developer Guide: INFO Necessary Fields, Optional Fields";
113
+ };
114
+ readonly SPK_INFO_ADMINPORT_INVALID: {
115
+ readonly severity: "error";
116
+ readonly description: "INFO adminport 不是 0–65536 的整數。";
117
+ readonly source: "DSM 7 Developer Guide: INFO Optional Fields (adminport)";
118
+ };
119
+ readonly SPK_INFO_CHECKSUM_MISMATCH: {
120
+ readonly severity: "error";
121
+ readonly description: "INFO checksum 不是 package.tgz 的 MD5。";
122
+ readonly source: "DSM 7 Developer Guide: INFO Optional Fields (checksum)";
123
+ };
124
+ readonly SPK_PAYLOAD_UNREADABLE: {
125
+ readonly severity: "error";
126
+ readonly description: "package.tgz 不是可讀的 tar 或 tar.gz 封存,或是空的。";
127
+ readonly source: "DSM 7 Developer Guide: Package Structure (package.tgz)";
128
+ };
129
+ readonly SPK_PAYLOAD_XZ: {
130
+ readonly severity: "warning";
131
+ readonly description: "package.tgz 是 xz 壓縮(Synology toolkit 的格式);inspect 讀不了 xz,沒有檢查 payload 內容。";
132
+ readonly source: "DSM 7 Developer Guide: Pack Stage";
133
+ };
134
+ readonly SPK_PAYLOAD_PATH_UNSAFE: {
135
+ readonly severity: "error";
136
+ readonly description: "package.tgz 的路徑是絕對路徑或含 ..,會解開到套件目錄之外。";
137
+ readonly source: "DSM 7 Developer Guide: Package Structure (package.tgz)";
138
+ };
139
+ readonly SPK_PAYLOAD_LINK_ESCAPE: {
140
+ readonly severity: "error";
141
+ readonly description: "package.tgz 的 symlink 或 hard link 指到套件目錄之外。";
142
+ readonly source: "DSM 7 Developer Guide: Package Structure (package.tgz)";
143
+ };
144
+ readonly SPK_PAYLOAD_LINK_ABSOLUTE: {
145
+ readonly severity: "warning";
146
+ readonly description: "package.tgz 的 symlink 指向絕對路徑;目標由 NAS 決定,不在套件內。";
147
+ readonly source: "DSM 7 Developer Guide: Package Structure (package.tgz)";
148
+ };
149
+ readonly SPK_UI_CONFIG_INVALID: {
150
+ readonly severity: "error";
151
+ readonly description: "dsmuidir 底下的 config 不是 JSON 物件。";
152
+ readonly source: "DSM 7 Developer Guide: Integrate DSM, Application Config";
153
+ };
154
+ readonly SPK_UI_TEXTS_MISSING: {
155
+ readonly severity: "error";
156
+ readonly description: "config 的 title/desc 參照套件自己的字串(例如 synopkgland:app_title),但該 entry 沒有宣告 \"texts\";DSM 會直接顯示 key。";
157
+ readonly source: "DSM 7.1.1/7.4 實測(DSM 只為宣告 texts 的 entry 載入 texts/<lang>/strings)";
158
+ };
159
+ readonly SPK_UI_TEXTS_UNDECLARED: {
160
+ readonly severity: "warning";
161
+ readonly description: "config 的 title/desc 是 section:key 字串參照,但沒有宣告 \"texts\";除非是 DSM 內建 section,否則 DSM 會直接顯示 key。";
162
+ readonly source: "DSM 7.1.1/7.4 實測";
163
+ };
164
+ readonly SPK_NOARCH_ELF: {
165
+ readonly severity: "error";
166
+ readonly description: "INFO arch 是 noarch,但 package.tgz 有 ELF 執行檔。";
167
+ readonly source: "DSM 7 Developer Guide: INFO Necessary Fields (arch)、Pack Stage";
168
+ };
169
+ readonly SPK_ELF_ARCH_MISMATCH: {
170
+ readonly severity: "error";
171
+ readonly description: "package.tgz 的 ELF 執行檔與 INFO arch 的 CPU 不符。";
172
+ readonly source: "DSM 7 Developer Guide: INFO Necessary Fields (arch)、Appendix A";
173
+ };
174
+ readonly SPK_SCRIPT_MISSING: {
175
+ readonly severity: "error";
176
+ readonly description: "缺少 scripts/start-stop-status;DSM 用它啟動、停止與查詢套件狀態。";
177
+ readonly source: "DSM 7 Developer Guide: Package Structure、scripts";
178
+ };
179
+ readonly SPK_SCRIPT_HOOK_MISSING: {
180
+ readonly severity: "warning";
181
+ readonly description: "缺少 preinst、postinst、preuninst、postuninst、preupgrade 或 postupgrade;指南列為必備,DSM 缺檔時的行為未驗證。";
182
+ readonly source: "DSM 7 Developer Guide: scripts";
183
+ };
184
+ readonly SPK_SCRIPT_NOT_EXECUTABLE: {
185
+ readonly severity: "error";
186
+ readonly description: "scripts/ 的生命週期腳本沒有執行權限。";
187
+ readonly source: "DSM 7 Developer Guide: scripts";
188
+ };
189
+ readonly SPK_SCRIPT_NO_INTERPRETER: {
190
+ readonly severity: "warning";
191
+ readonly description: "生命週期腳本開頭沒有 #!(例如 #!/bin/sh),也不是 ELF。";
192
+ readonly source: "DSM 7 Developer Guide: scripts";
193
+ };
194
+ readonly SPK_PRIVILEGE_MISSING: {
195
+ readonly severity: "error";
196
+ readonly description: "缺少 conf/privilege;DSM 7 起必須提供。";
197
+ readonly source: "DSM 7 Developer Guide: conf、Privilege Config";
198
+ };
199
+ readonly SPK_PRIVILEGE_INVALID: {
200
+ readonly severity: "error";
201
+ readonly description: "conf/privilege 不是 JSON 物件、沒有 defaults.run-as,或 run-as 不是 package/root。";
202
+ readonly source: "DSM 7 Developer Guide: Privilege Config";
203
+ };
204
+ readonly SPK_PRIVILEGE_ROOT: {
205
+ readonly severity: "warning";
206
+ readonly description: "conf/privilege 要求以 root 執行(defaults、ctrl-script 或 executable)。";
207
+ readonly source: "DSM 7 Developer Guide: Privilege Config";
208
+ };
209
+ readonly SPK_RESOURCE_INVALID: {
210
+ readonly severity: "error";
211
+ readonly description: "conf/resource 不是 JSON 物件。";
212
+ readonly source: "DSM 7 Developer Guide: Resource Config";
213
+ };
214
+ readonly SPK_RESOURCE_UNKNOWN: {
215
+ readonly severity: "warning";
216
+ readonly description: "conf/resource 有指南沒有列出的 resource worker id。";
217
+ readonly source: "DSM 7 Developer Guide: Available Workers";
218
+ };
219
+ readonly SPK_CONF_UNKNOWN: {
220
+ readonly severity: "warning";
221
+ readonly description: "conf/ 有 DSM 不讀取的檔案(已知:privilege、resource、PKG_DEPS、PKG_CONX、systemd/)。";
222
+ readonly source: "DSM 7 Developer Guide: conf、Systemd User Unit";
223
+ };
224
+ readonly SPK_ICON_MISSING: {
225
+ readonly severity: "error";
226
+ readonly description: "缺少 PACKAGE_ICON.PNG 或 PACKAGE_ICON_256.PNG。";
227
+ readonly source: "DSM 7 Developer Guide: Package Structure";
228
+ };
229
+ readonly SPK_ICON_INVALID: {
230
+ readonly severity: "error";
231
+ readonly description: "PACKAGE_ICON.PNG 或 PACKAGE_ICON_256.PNG 不是 PNG。";
232
+ readonly source: "DSM 7 Developer Guide: Package Structure";
233
+ };
234
+ readonly SPK_ICON_SIZE: {
235
+ readonly severity: "warning";
236
+ readonly description: "PACKAGE_ICON.PNG 不是 64×64,或 PACKAGE_ICON_256.PNG 不是 256×256。";
237
+ readonly source: "DSM 7 Developer Guide: Package Structure";
238
+ };
239
+ readonly SPK_LICENSE_TOO_LARGE: {
240
+ readonly severity: "error";
241
+ readonly description: "LICENSE 大於或等於 1 MB。";
242
+ readonly source: "DSM 7 Developer Guide: Package Structure";
243
+ };
244
+ readonly SPK_WIZARD_INVALID: {
245
+ readonly severity: "warning";
246
+ readonly description: "WIZARD_UIFILES 的精靈檔不是 JSON 陣列。";
247
+ readonly source: "DSM 7 Developer Guide: Package Structure (WIZARD_UIFILES)";
248
+ };
249
+ readonly SPK_WIZARD_SCRIPT_NOT_EXECUTABLE: {
250
+ readonly severity: "warning";
251
+ readonly description: "WIZARD_UIFILES 的 .sh 精靈產生器沒有執行權限。";
252
+ readonly source: "DSM 7 Developer Guide: Package Structure (WIZARD_UIFILES)";
253
+ };
254
+ readonly SPK_WIZARD_UNKNOWN: {
255
+ readonly severity: "warning";
256
+ readonly description: "WIZARD_UIFILES 的檔名不是 install/upgrade/uninstall_uifile[_<lang>][.sh]。";
257
+ readonly source: "DSM 7 Developer Guide: Package Structure (WIZARD_UIFILES)";
258
+ };
259
+ readonly SPK_SIGNATURE_INVALID: {
260
+ readonly severity: "warning";
261
+ readonly description: "syno_signature.asc 不是 ASCII-armored PGP 簽章(指南的套件簽章只適用 DSM 6.x,可省略此檔)。";
262
+ readonly source: "DSM 7 Developer Guide: Sign Package (only for DSM6.X)";
263
+ };
264
+ };
265
+ export type SpkRuleCode = keyof typeof SPK_RULES;
@@ -0,0 +1,53 @@
1
+ const GUIDE = "DSM 7 Developer Guide";
2
+ export const SPK_RULES = {
3
+ SPK_NOT_TAR: { severity: "error", description: "檔案不是可讀的 tar 封存;SPK 是未壓縮的 tar。", source: `${GUIDE}: Package Structure` },
4
+ SPK_ENTRY_UNSAFE: { severity: "error", description: "SPK 內的路徑跳出封存根目錄(絕對路徑或 ..),或是連結。", source: `${GUIDE}: Package Structure` },
5
+ SPK_ENTRY_UNKNOWN: { severity: "warning", description: "SPK 最上層有指南沒有列出的檔案或目錄(檔名區分大小寫)。", source: `${GUIDE}: Package Structure` },
6
+ SPK_INFO_MISSING: { severity: "error", description: "缺少 INFO。", source: `${GUIDE}: Package Structure` },
7
+ SPK_PAYLOAD_MISSING: { severity: "error", description: "缺少 package.tgz。", source: `${GUIDE}: Package Structure` },
8
+ SPK_INFO_FIELD_REQUIRED: { severity: "error", description: "INFO 缺少必填欄位(package、version、os_min_ver、description、arch、maintainer)。", source: `${GUIDE}: INFO Necessary Fields` },
9
+ SPK_INFO_DISPLAYNAME_MISSING: { severity: "warning", description: "INFO 沒有 displayname;Package Center 會改顯示 package 值。", source: `${GUIDE}: INFO Optional Fields` },
10
+ SPK_INFO_LINE_INVALID: { severity: "warning", description: "INFO 有一行不是 key=\"value\"(空行與 # 註解除外)。", source: `${GUIDE}: INFO` },
11
+ SPK_INFO_VALUE_UNTERMINATED: { severity: "error", description: "INFO 欄位值的引號沒有結束。", source: `${GUIDE}: INFO` },
12
+ SPK_INFO_FIELD_DUPLICATE: { severity: "warning", description: "INFO 同一個欄位設定了兩次。", source: `${GUIDE}: INFO` },
13
+ SPK_INFO_PACKAGE_INVALID: { severity: "error", description: "INFO package 含有 : / > < | = 其中之一。", source: `${GUIDE}: INFO Necessary Fields (package)` },
14
+ SPK_INFO_VERSION_INVALID: { severity: "error", description: "INFO version 不是以 .、-、_ 分隔的數字,或某段超過 2147483647。", source: `${GUIDE}: INFO Necessary Fields (version)` },
15
+ SPK_INFO_VERSION_NO_BUILD: { severity: "warning", description: "INFO version 沒有 -<build> 編號(指南格式為 [feature number]-[build number])。", source: `${GUIDE}: INFO Necessary Fields (version)` },
16
+ SPK_INFO_OS_VER_INVALID: { severity: "error", description: "INFO os_min_ver 或 os_max_ver 不是 <major>.<minor>-<build>(也接受 <major>.<minor>.<micro>-<build>)。", source: `${GUIDE}: INFO Necessary Fields (os_min_ver), Optional Fields (os_max_ver)` },
17
+ SPK_INFO_OS_MIN_VER_LOW: { severity: "warning", description: "INFO os_min_ver 低於 7.0-40000。", source: `${GUIDE}: INFO Necessary Fields (os_min_ver)` },
18
+ SPK_INFO_ARCH_UNKNOWN: { severity: "warning", description: "INFO arch 或 exclude_arch 含有 Appendix A 與已知 DSM 7 平台都沒有的值。", source: `${GUIDE}: Appendix A Platform and Arch Value Mapping Table` },
19
+ SPK_INFO_ARCH_NOARCH_MIXED: { severity: "warning", description: "INFO arch 同時有 noarch 與其他值。", source: `${GUIDE}: INFO Necessary Fields (arch)` },
20
+ SPK_INFO_BOOLEAN_INVALID: { severity: "error", description: "INFO 的 yes/no 欄位(例如 startable、silent_install)不是 \"yes\" 或 \"no\"。", source: `${GUIDE}: INFO Optional Fields` },
21
+ SPK_INFO_LANG_UNKNOWN: { severity: "warning", description: "displayname_<lang> 或 description_<lang> 的語言碼不在指南清單(enu、cht、chs、jpn…)。", source: `${GUIDE}: INFO Optional Fields (description_[language])` },
22
+ SPK_INFO_FIELD_UNKNOWN: { severity: "warning", description: "INFO 欄位不在指南清單;DSM 不會使用它(拼錯的欄位名稱也會出現在這裡)。", source: `${GUIDE}: INFO Necessary Fields, Optional Fields` },
23
+ SPK_INFO_ADMINPORT_INVALID: { severity: "error", description: "INFO adminport 不是 0–65536 的整數。", source: `${GUIDE}: INFO Optional Fields (adminport)` },
24
+ SPK_INFO_CHECKSUM_MISMATCH: { severity: "error", description: "INFO checksum 不是 package.tgz 的 MD5。", source: `${GUIDE}: INFO Optional Fields (checksum)` },
25
+ SPK_PAYLOAD_UNREADABLE: { severity: "error", description: "package.tgz 不是可讀的 tar 或 tar.gz 封存,或是空的。", source: `${GUIDE}: Package Structure (package.tgz)` },
26
+ SPK_PAYLOAD_XZ: { severity: "warning", description: "package.tgz 是 xz 壓縮(Synology toolkit 的格式);inspect 讀不了 xz,沒有檢查 payload 內容。", source: `${GUIDE}: Pack Stage` },
27
+ SPK_PAYLOAD_PATH_UNSAFE: { severity: "error", description: "package.tgz 的路徑是絕對路徑或含 ..,會解開到套件目錄之外。", source: `${GUIDE}: Package Structure (package.tgz)` },
28
+ SPK_PAYLOAD_LINK_ESCAPE: { severity: "error", description: "package.tgz 的 symlink 或 hard link 指到套件目錄之外。", source: `${GUIDE}: Package Structure (package.tgz)` },
29
+ SPK_PAYLOAD_LINK_ABSOLUTE: { severity: "warning", description: "package.tgz 的 symlink 指向絕對路徑;目標由 NAS 決定,不在套件內。", source: `${GUIDE}: Package Structure (package.tgz)` },
30
+ SPK_UI_CONFIG_INVALID: { severity: "error", description: "dsmuidir 底下的 config 不是 JSON 物件。", source: `${GUIDE}: Integrate DSM, Application Config` },
31
+ SPK_UI_TEXTS_MISSING: { severity: "error", description: "config 的 title/desc 參照套件自己的字串(例如 synopkgland:app_title),但該 entry 沒有宣告 \"texts\";DSM 會直接顯示 key。", source: "DSM 7.1.1/7.4 實測(DSM 只為宣告 texts 的 entry 載入 texts/<lang>/strings)" },
32
+ SPK_UI_TEXTS_UNDECLARED: { severity: "warning", description: "config 的 title/desc 是 section:key 字串參照,但沒有宣告 \"texts\";除非是 DSM 內建 section,否則 DSM 會直接顯示 key。", source: "DSM 7.1.1/7.4 實測" },
33
+ SPK_NOARCH_ELF: { severity: "error", description: "INFO arch 是 noarch,但 package.tgz 有 ELF 執行檔。", source: `${GUIDE}: INFO Necessary Fields (arch)、Pack Stage` },
34
+ SPK_ELF_ARCH_MISMATCH: { severity: "error", description: "package.tgz 的 ELF 執行檔與 INFO arch 的 CPU 不符。", source: `${GUIDE}: INFO Necessary Fields (arch)、Appendix A` },
35
+ SPK_SCRIPT_MISSING: { severity: "error", description: "缺少 scripts/start-stop-status;DSM 用它啟動、停止與查詢套件狀態。", source: `${GUIDE}: Package Structure、scripts` },
36
+ SPK_SCRIPT_HOOK_MISSING: { severity: "warning", description: "缺少 preinst、postinst、preuninst、postuninst、preupgrade 或 postupgrade;指南列為必備,DSM 缺檔時的行為未驗證。", source: `${GUIDE}: scripts` },
37
+ SPK_SCRIPT_NOT_EXECUTABLE: { severity: "error", description: "scripts/ 的生命週期腳本沒有執行權限。", source: `${GUIDE}: scripts` },
38
+ SPK_SCRIPT_NO_INTERPRETER: { severity: "warning", description: "生命週期腳本開頭沒有 #!(例如 #!/bin/sh),也不是 ELF。", source: `${GUIDE}: scripts` },
39
+ SPK_PRIVILEGE_MISSING: { severity: "error", description: "缺少 conf/privilege;DSM 7 起必須提供。", source: `${GUIDE}: conf、Privilege Config` },
40
+ SPK_PRIVILEGE_INVALID: { severity: "error", description: "conf/privilege 不是 JSON 物件、沒有 defaults.run-as,或 run-as 不是 package/root。", source: `${GUIDE}: Privilege Config` },
41
+ SPK_PRIVILEGE_ROOT: { severity: "warning", description: "conf/privilege 要求以 root 執行(defaults、ctrl-script 或 executable)。", source: `${GUIDE}: Privilege Config` },
42
+ SPK_RESOURCE_INVALID: { severity: "error", description: "conf/resource 不是 JSON 物件。", source: `${GUIDE}: Resource Config` },
43
+ SPK_RESOURCE_UNKNOWN: { severity: "warning", description: "conf/resource 有指南沒有列出的 resource worker id。", source: `${GUIDE}: Available Workers` },
44
+ SPK_CONF_UNKNOWN: { severity: "warning", description: "conf/ 有 DSM 不讀取的檔案(已知:privilege、resource、PKG_DEPS、PKG_CONX、systemd/)。", source: `${GUIDE}: conf、Systemd User Unit` },
45
+ SPK_ICON_MISSING: { severity: "error", description: "缺少 PACKAGE_ICON.PNG 或 PACKAGE_ICON_256.PNG。", source: `${GUIDE}: Package Structure` },
46
+ SPK_ICON_INVALID: { severity: "error", description: "PACKAGE_ICON.PNG 或 PACKAGE_ICON_256.PNG 不是 PNG。", source: `${GUIDE}: Package Structure` },
47
+ SPK_ICON_SIZE: { severity: "warning", description: "PACKAGE_ICON.PNG 不是 64×64,或 PACKAGE_ICON_256.PNG 不是 256×256。", source: `${GUIDE}: Package Structure` },
48
+ SPK_LICENSE_TOO_LARGE: { severity: "error", description: "LICENSE 大於或等於 1 MB。", source: `${GUIDE}: Package Structure` },
49
+ SPK_WIZARD_INVALID: { severity: "warning", description: "WIZARD_UIFILES 的精靈檔不是 JSON 陣列。", source: `${GUIDE}: Package Structure (WIZARD_UIFILES)` },
50
+ SPK_WIZARD_SCRIPT_NOT_EXECUTABLE: { severity: "warning", description: "WIZARD_UIFILES 的 .sh 精靈產生器沒有執行權限。", source: `${GUIDE}: Package Structure (WIZARD_UIFILES)` },
51
+ SPK_WIZARD_UNKNOWN: { severity: "warning", description: "WIZARD_UIFILES 的檔名不是 install/upgrade/uninstall_uifile[_<lang>][.sh]。", source: `${GUIDE}: Package Structure (WIZARD_UIFILES)` },
52
+ SPK_SIGNATURE_INVALID: { severity: "warning", description: "syno_signature.asc 不是 ASCII-armored PGP 簽章(指南的套件簽章只適用 DSM 6.x,可省略此檔)。", source: `${GUIDE}: Sign Package (only for DSM6.X)` },
53
+ };
@@ -0,0 +1,13 @@
1
+ import { type SpkFinding } from "./findings.js";
2
+ export type { SpkFinding } from "./findings.js";
3
+ export interface SpkValidation {
4
+ /** No errors; warnings do not fail validation. */
5
+ ok: boolean;
6
+ package?: string;
7
+ version?: string;
8
+ arch?: string;
9
+ errors: SpkFinding[];
10
+ warnings: SpkFinding[];
11
+ }
12
+ /** Checks an SPK against the DSM 7 package format without installing or running anything. */
13
+ export declare function validateSpk(spkPath: string): Promise<SpkValidation>;
@@ -0,0 +1,107 @@
1
+ import { createWriteStream, mkdtempSync, rmSync } from "node:fs";
2
+ import { finished } from "node:stream/promises";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import * as tar from "tar";
6
+ import { checkInfoFields, parseInfo } from "./check-info.js";
7
+ import { checkMetadata } from "./check-metadata.js";
8
+ import { checkPayload } from "./check-payload.js";
9
+ import { KNOWN_TOP_LEVEL } from "./dsm-spec.js";
10
+ import { Findings } from "./findings.js";
11
+ /** Outer files other than package.tgz are metadata; anything larger is not read. */
12
+ const MAX_OUTER_FILE = 16 * 1024 * 1024;
13
+ const TOP_LEVEL = new Set(KNOWN_TOP_LEVEL);
14
+ /** Checks an SPK against the DSM 7 package format without installing or running anything. */
15
+ export async function validateSpk(spkPath) {
16
+ const findings = new Findings();
17
+ const dir = mkdtempSync(join(tmpdir(), "syno-validate-spk-"));
18
+ let info = {};
19
+ try {
20
+ const outer = await readOuter(spkPath, dir, findings);
21
+ if (outer) {
22
+ checkOuterEntries(outer.entries, findings);
23
+ info = checkInfo(outer, findings);
24
+ if (!outer.payloadPath)
25
+ findings.add("SPK_PAYLOAD_MISSING", "缺少 package.tgz。", "package.tgz");
26
+ else
27
+ await checkPayload(outer.payloadPath, info, findings);
28
+ checkMetadata({ files: outer.files, modes: new Map(outer.entries.map((entry) => [normalize(entry.path), entry.mode])) }, findings);
29
+ }
30
+ }
31
+ finally {
32
+ rmSync(dir, { recursive: true, force: true });
33
+ }
34
+ const errors = findings.list.filter((finding) => finding.severity === "error");
35
+ return {
36
+ ok: errors.length === 0,
37
+ ...(info.package ? { package: info.package } : {}),
38
+ ...(info.version ? { version: info.version } : {}),
39
+ ...(info.arch ? { arch: info.arch } : {}),
40
+ errors,
41
+ warnings: findings.list.filter((finding) => finding.severity === "warning"),
42
+ };
43
+ }
44
+ /** One pass over the outer tar; nothing is extracted by name, so case-only differences stay distinct. */
45
+ async function readOuter(spkPath, dir, findings) {
46
+ const outer = { entries: [], files: new Map() };
47
+ const writes = [];
48
+ try {
49
+ await tar.t({
50
+ file: spkPath,
51
+ strict: true,
52
+ onReadEntry: (entry) => {
53
+ outer.entries.push({ path: entry.path, type: entry.type, mode: (entry.mode ?? 0) & 0o7777 });
54
+ const path = normalize(entry.path);
55
+ if (entry.type !== "File" || !isSafeOuter(entry.path, entry.type))
56
+ return;
57
+ if (path === "package.tgz") {
58
+ outer.payloadPath = join(dir, "package.tgz");
59
+ writes.push(finished(entry.pipe(createWriteStream(outer.payloadPath))));
60
+ }
61
+ else if ((entry.size ?? 0) <= MAX_OUTER_FILE) {
62
+ const chunks = [];
63
+ entry.on("data", (chunk) => chunks.push(chunk));
64
+ entry.on("end", () => outer.files.set(path, Buffer.concat(chunks)));
65
+ }
66
+ },
67
+ });
68
+ await Promise.all(writes);
69
+ }
70
+ catch {
71
+ outer.entries.length = 0;
72
+ }
73
+ if (outer.entries.length === 0) {
74
+ findings.add("SPK_NOT_TAR", "檔案不是可讀的 tar 封存。");
75
+ return undefined;
76
+ }
77
+ return outer;
78
+ }
79
+ function normalize(path) {
80
+ return path.replace(/^\.\//, "").replace(/\/$/, "");
81
+ }
82
+ function isSafeOuter(path, type) {
83
+ return !path.startsWith("/") && !normalize(path).split("/").includes("..") && type !== "SymbolicLink" && type !== "Link";
84
+ }
85
+ function checkOuterEntries(entries, findings) {
86
+ for (const entry of entries) {
87
+ const path = normalize(entry.path);
88
+ if (!isSafeOuter(entry.path, entry.type)) {
89
+ findings.add("SPK_ENTRY_UNSAFE", `${entry.path} 跳出 SPK 根目錄或是連結;DSM 只解開一般檔案與目錄。`, entry.path);
90
+ continue;
91
+ }
92
+ const top = path.split("/")[0];
93
+ if (top && !TOP_LEVEL.has(top)) {
94
+ findings.add("SPK_ENTRY_UNKNOWN", `${top} 不是 SPK 最上層的已知檔案(檔名區分大小寫)。`, top);
95
+ }
96
+ }
97
+ }
98
+ function checkInfo(outer, findings) {
99
+ const text = outer.files.get("INFO");
100
+ if (text === undefined) {
101
+ findings.add("SPK_INFO_MISSING", "缺少 INFO。", "INFO");
102
+ return {};
103
+ }
104
+ const fields = parseInfo(text.toString("utf8"), findings);
105
+ checkInfoFields(fields, outer.payloadPath, findings);
106
+ return Object.fromEntries(fields);
107
+ }
@@ -1,5 +1,6 @@
1
1
  import type { Capabilities } from "./manifest.js";
2
2
  export declare const API_PERMISSIONS_FILE = "internal/api/permissions.json";
3
+ type SdkPermissions = Record<string, Record<string, ApiPermission>>;
3
4
  export declare const MAX_PERMISSIONS_BYTES = 65536;
4
5
  export declare const MAX_PERMISSION_METHODS = 1024;
5
6
  export type ApiPermission = "administrators" | "authenticated" | "public";
@@ -13,6 +14,7 @@ export declare function readApiPermissions(backendDir: string, capabilities?: Ca
13
14
  policy: ApiPermissions;
14
15
  digest: string;
15
16
  sdkDigest: string;
17
+ sdk: SdkPermissions;
16
18
  };
17
19
  /**
18
20
  * `entry: admin-only` makes administrators the floor of every route. App
@@ -20,9 +22,10 @@ export declare function readApiPermissions(backendDir: string, capabilities?: Ca
20
22
  * capability added are raised, except the public login ceremony of
21
23
  * `identity: standalone`, which admits no one by itself.
22
24
  */
23
- export declare function floorAtAdministrators(policy: ApiPermissions): {
25
+ export declare function floorAtAdministrators(policy: ApiPermissions, sdkPermissions: SdkPermissions): {
24
26
  policy: ApiPermissions;
25
27
  widened: string[];
26
28
  };
27
29
  /** Launcher access is derived from the same API policy; no second setting. */
28
30
  export declare function permitsOrdinaryUsers(policy?: ApiPermissions): boolean;
31
+ export {};
@@ -1,10 +1,11 @@
1
1
  import { createHash } from "node:crypto";
2
- import { existsSync, lstatSync, readFileSync } from "node:fs";
2
+ import { lstatSync, readFileSync } from "node:fs";
3
3
  import { join } from "node:path";
4
- import { templatesRoot } from "../template-paths.js";
4
+ import { sdkRequirement, sdkSource } from "../runtime/sdk-source.js";
5
5
  import { parseDocument } from "yaml";
6
6
  export const API_PERMISSIONS_FILE = "internal/api/permissions.json";
7
- const SDK_PERMISSIONS_TEMPLATE = "native-go/backend/internal/api/sdk-permissions.json";
7
+ /** SDK-owned routes per capability, in the Go module of the SDK version the App requires. */
8
+ const SDK_PERMISSIONS_FILE = "api/sdk-permissions.json";
8
9
  export const MAX_PERMISSIONS_BYTES = 65536;
9
10
  export const MAX_PERMISSION_METHODS = 1024;
10
11
  export function parseApiPermissions(raw) {
@@ -38,15 +39,9 @@ export function readApiPermissions(backendDir, capabilities = {}) {
38
39
  throw new Error("permissions must be a regular bounded JSON file");
39
40
  const raw = readFileSync(file);
40
41
  const policy = parseApiPermissions(raw);
41
- const sdkRaw = readFileSync(join(templatesRoot(), SDK_PERMISSIONS_TEMPLATE));
42
- const sdkFile = join(backendDir, 'internal/api/sdk-permissions.json');
43
- if (existsSync(sdkFile)) {
44
- const sdkStat = lstatSync(sdkFile);
45
- if (!sdkStat.isFile() || sdkStat.size !== sdkRaw.length || !readFileSync(sdkFile).equals(sdkRaw)) {
46
- throw new Error('SDK route policy differs from the CLI policy; restore the SDK-owned file');
47
- }
48
- }
49
- const sdk = readSdkPermissions();
42
+ const version = sdkRequirement(backendDir);
43
+ const sdkRaw = version ? readFileSync(join(sdkSource(version).goDir, SDK_PERMISSIONS_FILE)) : Buffer.from("{}");
44
+ const sdk = JSON.parse(sdkRaw.toString("utf8"));
50
45
  for (const methods of Object.values(sdk))
51
46
  for (const method of Object.keys(methods)) {
52
47
  if (Object.hasOwn(policy.methods, method))
@@ -56,7 +51,7 @@ export function readApiPermissions(backendDir, capabilities = {}) {
56
51
  if (capabilities[capability] || ['rootOps', 'files'].includes(capability) && capabilities.delegate)
57
52
  Object.assign(policy.methods, methods);
58
53
  }
59
- return { policy, sdkDigest: createHash("sha256").update(sdkRaw).digest("hex"), digest: createHash("sha256").update(raw).digest("hex") };
54
+ return { policy, sdk, sdkDigest: createHash("sha256").update(sdkRaw).digest("hex"), digest: createHash("sha256").update(raw).digest("hex") };
60
55
  }
61
56
  /**
62
57
  * `entry: admin-only` makes administrators the floor of every route. App
@@ -64,16 +59,13 @@ export function readApiPermissions(backendDir, capabilities = {}) {
64
59
  * capability added are raised, except the public login ceremony of
65
60
  * `identity: standalone`, which admits no one by itself.
66
61
  */
67
- export function floorAtAdministrators(policy) {
68
- const sdk = new Set(Object.values(readSdkPermissions()).flatMap(methods => Object.keys(methods)));
62
+ export function floorAtAdministrators(policy, sdkPermissions) {
63
+ const sdk = new Set(Object.values(sdkPermissions).flatMap(methods => Object.keys(methods)));
69
64
  const methods = Object.fromEntries(Object.entries(policy.methods)
70
65
  .map(([method, permission]) => [method, sdk.has(method) && permission === "public" ? permission : "administrators"]));
71
66
  const widened = Object.entries(policy.methods).filter(([method, permission]) => !sdk.has(method) && permission !== "administrators").map(([method]) => method);
72
67
  return { policy: { ...policy, methods }, widened };
73
68
  }
74
- function readSdkPermissions() {
75
- return JSON.parse(readFileSync(join(templatesRoot(), SDK_PERMISSIONS_TEMPLATE), 'utf8'));
76
- }
77
69
  /** Launcher access is derived from the same API policy; no second setting. */
78
70
  export function permitsOrdinaryUsers(policy) {
79
71
  return policy !== undefined && Object.values(policy.methods).some(permission => permission !== "administrators");
@@ -0,0 +1,11 @@
1
+ /** `--jobs`: how many architectures build at once; 1 keeps the sequential build. */
2
+ export declare function checkJobs(jobs?: number): number;
3
+ /**
4
+ * Builds each architecture, at most `jobs` at a time, and returns the results in
5
+ * `arches` order. After a failure no further architecture starts; running ones
6
+ * finish so they clean up. The first failure in `arches` order is rethrown with
7
+ * `[arch]` in front of its message.
8
+ */
9
+ export declare function forEachArch<A extends string, T>(arches: readonly A[], jobs: number, build: (arch: A) => Promise<T>): Promise<T[]>;
10
+ /** Builds every SPK in a private folder inside `outDir` and moves them into `outDir` only when all of them succeed. */
11
+ export declare function commitOutputs(outDir: string, build: (stage: string) => Promise<string[]>): Promise<string[]>;
@@ -0,0 +1,54 @@
1
+ import { mkdirSync, mkdtempSync, renameSync, rmSync } from "node:fs";
2
+ import { basename, join } from "node:path";
3
+ /** `--jobs`: how many architectures build at once; 1 keeps the sequential build. */
4
+ export function checkJobs(jobs = 1) {
5
+ if (!Number.isSafeInteger(jobs) || jobs < 1) {
6
+ throw Object.assign(new Error(`[CLI_JOBS_INVALID] --jobs must be a positive integer, got ${jobs}.`), { code: "CLI_JOBS_INVALID" });
7
+ }
8
+ return jobs;
9
+ }
10
+ /**
11
+ * Builds each architecture, at most `jobs` at a time, and returns the results in
12
+ * `arches` order. After a failure no further architecture starts; running ones
13
+ * finish so they clean up. The first failure in `arches` order is rethrown with
14
+ * `[arch]` in front of its message.
15
+ */
16
+ export async function forEachArch(arches, jobs, build) {
17
+ const results = [];
18
+ const failures = [];
19
+ let next = 0;
20
+ const worker = async () => {
21
+ while (next < arches.length && !failures.length) {
22
+ const index = next++;
23
+ try {
24
+ results[index] = await build(arches[index]);
25
+ }
26
+ catch (error) {
27
+ failures.push({ index, error });
28
+ }
29
+ }
30
+ };
31
+ await Promise.all(Array.from({ length: Math.min(checkJobs(jobs), arches.length) }, worker));
32
+ const [first] = failures.sort((a, b) => a.index - b.index);
33
+ if (first) {
34
+ if (first.error instanceof Error)
35
+ first.error.message = `[${arches[first.index]}] ${first.error.message}`;
36
+ throw first.error;
37
+ }
38
+ return results;
39
+ }
40
+ /** Builds every SPK in a private folder inside `outDir` and moves them into `outDir` only when all of them succeed. */
41
+ export async function commitOutputs(outDir, build) {
42
+ mkdirSync(outDir, { recursive: true });
43
+ const stage = mkdtempSync(join(outDir, ".synopkgland-build-"));
44
+ try {
45
+ return (await build(stage)).map((staged) => {
46
+ const output = join(outDir, basename(staged));
47
+ renameSync(staged, output);
48
+ return output;
49
+ });
50
+ }
51
+ finally {
52
+ rmSync(stage, { recursive: true, force: true });
53
+ }
54
+ }
@@ -4,11 +4,14 @@ export interface CommandResult {
4
4
  stderr: string;
5
5
  /** The program itself was not found. */
6
6
  missing?: boolean;
7
+ /** Standard output, when the caller asked to capture it. */
8
+ stdout?: string;
7
9
  }
8
10
  export type CommandRunner = (command: string, args: string[], options: {
9
11
  cwd: string;
10
12
  env: Record<string, string | undefined>;
11
- }) => CommandResult;
13
+ capture?: boolean;
14
+ }) => CommandResult | Promise<CommandResult>;
12
15
  export interface StandaloneBuildOptions {
13
16
  root: string;
14
17
  /** Defaults to every arch in the manifest. */
@@ -17,11 +20,18 @@ export interface StandaloneBuildOptions {
17
20
  outDir?: string;
18
21
  /** INFO os_min_ver for every SPK (a release such as 7.1, or a full 7.x-build); defaults to the manifest's. */
19
22
  minDsm?: string;
23
+ /** Architectures built at once; defaults to 1. */
24
+ jobs?: number;
20
25
  run?: CommandRunner;
21
26
  }
22
- /** Argv only, never a shell; output streams to the terminal except stderr, which is also kept. */
27
+ /** Argv only, never a shell; output streams to the terminal except stderr, which is also kept, and captured stdout. */
23
28
  export declare const runCommand: CommandRunner;
29
+ /** `runCommand` for concurrent builds: every output line goes to stderr behind `prefix`, so architectures stay apart. */
30
+ export declare function prefixedRunner(prefix: string): CommandRunner;
31
+ /** The runner one architecture uses: the caller's, or a labelled one while several architectures share the terminal. */
32
+ export declare function runnerFor(run: CommandRunner | undefined, jobs: number, arch: string): CommandRunner;
24
33
  /** `build` for a Standalone Package: build the UI, compile the CGI, pack one SPK per arch. */
25
34
  export declare function buildStandalone(options: StandaloneBuildOptions): Promise<{
26
35
  outputs: string[];
36
+ warnings: string[];
27
37
  }>;