@synopackageland/cli 0.8.0 → 0.9.1

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 (946) hide show
  1. package/CHANGELOG.md +267 -0
  2. package/README.md +27 -5
  3. package/dist/add.js +16 -17
  4. package/dist/authorization-sdk.d.ts +0 -1
  5. package/dist/authorization-sdk.js +0 -1
  6. package/dist/build-spk/dsm-version.d.ts +0 -2
  7. package/dist/build-spk/dsm-version.js +0 -6
  8. package/dist/build-spk/gateway.js +2 -2
  9. package/dist/build-spk/generator.js +4 -23
  10. package/dist/build-spk/notices.js +12 -8
  11. package/dist/build-spk/resource-worker.js +0 -3
  12. package/dist/build-spk/uninstall-wizard.d.ts +8 -3
  13. package/dist/build-spk/uninstall-wizard.js +4 -2
  14. package/dist/build-spk/wizard-messages.d.ts +33 -0
  15. package/dist/build-spk/wizard-messages.js +33 -0
  16. package/dist/capability-overlays.d.ts +15 -0
  17. package/dist/capability-overlays.js +18 -0
  18. package/dist/cli-version.d.ts +2 -0
  19. package/dist/cli-version.js +3 -0
  20. package/dist/cli.js +6 -4
  21. package/dist/contract/validate.js +4 -21
  22. package/dist/error-registry.js +22 -15
  23. package/dist/host/dsm-client.js +51 -30
  24. package/dist/host/types.d.ts +5 -0
  25. package/dist/info.js +16 -2
  26. package/dist/init.js +53 -59
  27. package/dist/portal/alias.d.ts +6 -4
  28. package/dist/portal/alias.js +6 -11
  29. package/dist/portal/package.d.ts +0 -3
  30. package/dist/portal/package.js +1 -7
  31. package/dist/reproducible.js +1 -1
  32. package/dist/runtime/delegate-contract.d.ts +15 -0
  33. package/dist/runtime/delegate-contract.js +2 -0
  34. package/dist/runtime/executor-build.d.ts +15 -1
  35. package/dist/runtime/executor-build.js +42 -11
  36. package/dist/runtime/executor-digests.json +24 -0
  37. package/dist/runtime/executor-inspect.d.ts +1 -0
  38. package/dist/runtime/executor-inspect.js +5 -2
  39. package/dist/runtime/executor-policy.d.ts +3 -1
  40. package/dist/runtime/executor-policy.js +7 -2
  41. package/dist/runtime/executor-source.d.ts +21 -0
  42. package/dist/runtime/executor-source.js +35 -0
  43. package/dist/runtime/executor-tasks.d.ts +5 -2
  44. package/dist/runtime/executor-tasks.js +6 -4
  45. package/dist/runtime/sdk-source.d.ts +31 -0
  46. package/dist/runtime/sdk-source.js +92 -0
  47. package/dist/runtime/uninstall-cleanup.d.ts +7 -1
  48. package/dist/runtime/uninstall-cleanup.js +7 -1
  49. package/dist/standalone/api-permissions.d.ts +4 -1
  50. package/dist/standalone/api-permissions.js +10 -18
  51. package/dist/standalone/build.d.ts +1 -0
  52. package/dist/standalone/build.js +11 -4
  53. package/dist/standalone/daemon.js +2 -2
  54. package/dist/standalone/dsm-window.js +9 -12
  55. package/dist/standalone/inspect-spk.js +8 -7
  56. package/dist/standalone/manifest.d.ts +5 -2
  57. package/dist/standalone/manifest.js +20 -5
  58. package/dist/standalone/root-window.d.ts +11 -4
  59. package/dist/standalone/root-window.js +54 -30
  60. package/dist/standalone/sdk-check.d.ts +9 -0
  61. package/dist/standalone/sdk-check.js +43 -0
  62. package/dist/standalone/spk.js +2 -2
  63. package/dist/template-paths.d.ts +7 -2
  64. package/dist/template-paths.js +18 -6
  65. package/dist/validate.js +2 -1
  66. package/package.json +13 -3
  67. package/schema/synology-app.schema.json +1 -10
  68. package/skills/SKILL.md +1 -1
  69. package/skills/reference/create.md +7 -2
  70. package/skills/reference/deploy.md +1 -1
  71. package/skills/reference/identity.md +1 -1
  72. package/skills/reference/portal.md +7 -3
  73. package/dist/templates/_executor/README.md +0 -318
  74. package/dist/templates/_executor/anchor.go +0 -156
  75. package/dist/templates/_executor/anchor_test.go +0 -161
  76. package/dist/templates/_executor/apppriv_review_test.go +0 -28
  77. package/dist/templates/_executor/auth_presence_review_test.go +0 -38
  78. package/dist/templates/_executor/cancel_contract_test.go +0 -236
  79. package/dist/templates/_executor/cmd/lifecycle/main.go +0 -42
  80. package/dist/templates/_executor/cookie_review_test.go +0 -27
  81. package/dist/templates/_executor/copy.go +0 -64
  82. package/dist/templates/_executor/copy_test.go +0 -88
  83. package/dist/templates/_executor/digest_review_test.go +0 -120
  84. package/dist/templates/_executor/directories.go +0 -40
  85. package/dist/templates/_executor/dsm.go +0 -369
  86. package/dist/templates/_executor/dsm_test.go +0 -290
  87. package/dist/templates/_executor/executor.go +0 -735
  88. package/dist/templates/_executor/executor_test.go +0 -314
  89. package/dist/templates/_executor/go.mod +0 -5
  90. package/dist/templates/_executor/identity.go +0 -74
  91. package/dist/templates/_executor/identity_kernel_linux_test.go +0 -60
  92. package/dist/templates/_executor/identity_linux.go +0 -82
  93. package/dist/templates/_executor/identity_security_test.go +0 -43
  94. package/dist/templates/_executor/internal/lifecycle/lifecycle.go +0 -95
  95. package/dist/templates/_executor/internal/lifecycle/lifecycle_test.go +0 -232
  96. package/dist/templates/_executor/internal/taskscript/boot.sh +0 -31
  97. package/dist/templates/_executor/internal/taskscript/cmd/main.go +0 -19
  98. package/dist/templates/_executor/internal/taskscript/control.sh +0 -31
  99. package/dist/templates/_executor/internal/taskscript/tasks.go +0 -44
  100. package/dist/templates/_executor/json_review_test.go +0 -40
  101. package/dist/templates/_executor/lifecycle_test.go +0 -97
  102. package/dist/templates/_executor/link_linux.go +0 -28
  103. package/dist/templates/_executor/long_running_test.go +0 -530
  104. package/dist/templates/_executor/main.go +0 -576
  105. package/dist/templates/_executor/managed.go +0 -117
  106. package/dist/templates/_executor/managed_test.go +0 -137
  107. package/dist/templates/_executor/move_linux.go +0 -490
  108. package/dist/templates/_executor/move_linux_test.go +0 -460
  109. package/dist/templates/_executor/move_validation.go +0 -46
  110. package/dist/templates/_executor/move_validation_test.go +0 -187
  111. package/dist/templates/_executor/operations.go +0 -926
  112. package/dist/templates/_executor/path_test.go +0 -35
  113. package/dist/templates/_executor/pid.go +0 -37
  114. package/dist/templates/_executor/pid_test.go +0 -113
  115. package/dist/templates/_executor/platform_linux.go +0 -187
  116. package/dist/templates/_executor/platform_linux_test.go +0 -191
  117. package/dist/templates/_executor/platform_other.go +0 -76
  118. package/dist/templates/_executor/process.go +0 -142
  119. package/dist/templates/_executor/purge_log.go +0 -18
  120. package/dist/templates/_executor/records.go +0 -242
  121. package/dist/templates/_executor/scope_cancel_contract_test.go +0 -91
  122. package/dist/templates/_executor/scope_client.go +0 -37
  123. package/dist/templates/_executor/scope_contract.go +0 -12
  124. package/dist/templates/_executor/selected_scope.go +0 -146
  125. package/dist/templates/_executor/selected_scope_test.go +0 -186
  126. package/dist/templates/_executor/socket_linux_test.go +0 -46
  127. package/dist/templates/_executor/status_disabled_test.go +0 -33
  128. package/dist/templates/_executor/store.go +0 -91
  129. package/dist/templates/_executor/supervise.go +0 -109
  130. package/dist/templates/_executor/supervise_test.go +0 -130
  131. package/dist/templates/_executor/task_race_review_test.go +0 -47
  132. package/dist/templates/_executor/tasks.go +0 -320
  133. package/dist/templates/_executor/tasks_dsm71_test.go +0 -114
  134. package/dist/templates/_executor/tasks_review_test.go +0 -43
  135. package/dist/templates/_executor/tasks_test.go +0 -223
  136. package/dist/templates/_executor/testdata/evidence/cleanup.json +0 -24
  137. package/dist/templates/_executor/testdata/evidence/final-smoke.jsonl +0 -9
  138. package/dist/templates/_executor/testdata/evidence/kernel-acl.json +0 -6
  139. package/dist/templates/_executor/testdata/evidence/linux-tests.log +0 -123
  140. package/dist/templates/_executor/testdata/evidence/live.jsonl +0 -23
  141. package/dist/templates/_executor/testdata/evidence/storage.json +0 -90
  142. package/dist/templates/_executor/testdata/evidence/validation.json +0 -55
  143. package/dist/templates/_executor/testdata/live_probe.py +0 -98
  144. package/dist/templates/_executor/upgrade_watch_test.go +0 -244
  145. package/dist/templates/_executor/watch.go +0 -164
  146. package/dist/templates/_executor/watch_test.go +0 -291
  147. package/dist/templates/_executor/write_review_linux_test.go +0 -87
  148. package/dist/templates/_shared/AGENTS.md +0 -146
  149. package/dist/templates/_shared/CLAUDE.md +0 -1
  150. package/dist/templates/_shared/third-party-notices.mjs +0 -51
  151. package/dist/templates/binary/LICENSES/GO-LICENSE +0 -27
  152. package/dist/templates/binary/LICENSES/GO-PATENTS +0 -22
  153. package/dist/templates/binary/dsm-package.yaml +0 -46
  154. package/dist/templates/binary/example/main.go +0 -16
  155. package/dist/templates/binary/gitignore +0 -2
  156. package/dist/templates/binary/i18n/messages/de.json +0 -4
  157. package/dist/templates/binary/i18n/messages/en.json +0 -4
  158. package/dist/templates/binary/i18n/messages/es.json +0 -4
  159. package/dist/templates/binary/i18n/messages/fr.json +0 -4
  160. package/dist/templates/binary/i18n/messages/it.json +0 -4
  161. package/dist/templates/binary/i18n/messages/ja.json +0 -4
  162. package/dist/templates/binary/i18n/messages/ko.json +0 -4
  163. package/dist/templates/binary/i18n/messages/zh-CN.json +0 -4
  164. package/dist/templates/binary/i18n/messages/zh-TW.json +0 -4
  165. package/dist/templates/binary/ui/app.css +0 -4
  166. package/dist/templates/binary/ui/app.js +0 -32
  167. package/dist/templates/compose/compose.yaml +0 -8
  168. package/dist/templates/compose/synology-app.yaml +0 -16
  169. package/dist/templates/native-authorization/AuthorizationGate.vue +0 -91
  170. package/dist/templates/native-authorization/i18n/de.json +0 -37
  171. package/dist/templates/native-authorization/i18n/en.json +0 -37
  172. package/dist/templates/native-authorization/i18n/es.json +0 -37
  173. package/dist/templates/native-authorization/i18n/fr.json +0 -37
  174. package/dist/templates/native-authorization/i18n/index.ts +0 -15
  175. package/dist/templates/native-authorization/i18n/it.json +0 -37
  176. package/dist/templates/native-authorization/i18n/ja.json +0 -37
  177. package/dist/templates/native-authorization/i18n/ko.json +0 -37
  178. package/dist/templates/native-authorization/i18n/zh-CN.json +0 -37
  179. package/dist/templates/native-authorization/i18n/zh-TW.json +0 -37
  180. package/dist/templates/native-go/README.md +0 -459
  181. package/dist/templates/native-go/backend/THIRD_PARTY_NOTICES.txt +0 -61
  182. package/dist/templates/native-go/backend/cmd/app/main.go +0 -95
  183. package/dist/templates/native-go/backend/cmd/background-worker/main.go +0 -38
  184. package/dist/templates/native-go/backend/go.mod +0 -9
  185. package/dist/templates/native-go/backend/go.sum +0 -4
  186. package/dist/templates/native-go/backend/internal/api/cgi_framing_test.go +0 -32
  187. package/dist/templates/native-go/backend/internal/api/cookie_review_test.go +0 -28
  188. package/dist/templates/native-go/backend/internal/api/deadline_test.go +0 -114
  189. package/dist/templates/native-go/backend/internal/api/dsm-session.go +0 -54
  190. package/dist/templates/native-go/backend/internal/api/dsm-session_test.go +0 -51
  191. package/dist/templates/native-go/backend/internal/api/entry_test.go +0 -47
  192. package/dist/templates/native-go/backend/internal/api/errors.go +0 -47
  193. package/dist/templates/native-go/backend/internal/api/permissions.go +0 -161
  194. package/dist/templates/native-go/backend/internal/api/permissions.json +0 -5
  195. package/dist/templates/native-go/backend/internal/api/permissions_test.go +0 -113
  196. package/dist/templates/native-go/backend/internal/api/policy_fixture_test.go +0 -8
  197. package/dist/templates/native-go/backend/internal/api/registry.go +0 -142
  198. package/dist/templates/native-go/backend/internal/api/registry_test.go +0 -344
  199. package/dist/templates/native-go/backend/internal/api/resource_limits_test.go +0 -87
  200. package/dist/templates/native-go/backend/internal/api/sdk-permissions.json +0 -59
  201. package/dist/templates/native-go/backend/internal/api/sdk_policy_test.go +0 -31
  202. package/dist/templates/native-go/backend/internal/api/server.go +0 -305
  203. package/dist/templates/native-go/backend/internal/api/testdata/permissions-cases.json +0 -172
  204. package/dist/templates/native-go/backend/internal/app/background.go +0 -249
  205. package/dist/templates/native-go/backend/internal/app/background_none.go +0 -8
  206. package/dist/templates/native-go/backend/internal/app/background_owner.go +0 -38
  207. package/dist/templates/native-go/backend/internal/app/background_owner_test.go +0 -163
  208. package/dist/templates/native-go/backend/internal/app/background_schedule.go +0 -69
  209. package/dist/templates/native-go/backend/internal/app/background_schedule_test.go +0 -62
  210. package/dist/templates/native-go/backend/internal/app/background_test.go +0 -320
  211. package/dist/templates/native-go/backend/internal/app/delegate_config.go +0 -57
  212. package/dist/templates/native-go/backend/internal/app/delegate_config_test.go +0 -28
  213. package/dist/templates/native-go/backend/internal/app/delegate_none.go +0 -5
  214. package/dist/templates/native-go/backend/internal/app/identity.go +0 -20
  215. package/dist/templates/native-go/backend/internal/app/identity_test.go +0 -15
  216. package/dist/templates/native-go/backend/internal/app/migrations.go +0 -41
  217. package/dist/templates/native-go/backend/internal/app/migrations_test.go +0 -41
  218. package/dist/templates/native-go/backend/internal/app/portal.go +0 -30
  219. package/dist/templates/native-go/backend/internal/app/portal_test.go +0 -55
  220. package/dist/templates/native-go/backend/internal/app/root_none.go +0 -9
  221. package/dist/templates/native-go/backend/internal/app/routes.go +0 -137
  222. package/dist/templates/native-go/backend/internal/app/routes_test.go +0 -165
  223. package/dist/templates/native-go/backend/internal/app/session_files.go +0 -9
  224. package/dist/templates/native-go/backend/internal/app/session_files_test.go +0 -14
  225. package/dist/templates/native-go/backend/internal/app/shared_folder.go +0 -144
  226. package/dist/templates/native-go/backend/internal/app/shared_folder_test.go +0 -158
  227. package/dist/templates/native-go/backend/internal/background/access.go +0 -57
  228. package/dist/templates/native-go/backend/internal/background/lock_test.go +0 -131
  229. package/dist/templates/native-go/backend/internal/background/owner_test.go +0 -118
  230. package/dist/templates/native-go/backend/internal/background/runner.go +0 -185
  231. package/dist/templates/native-go/backend/internal/background/runner_test.go +0 -209
  232. package/dist/templates/native-go/backend/internal/background/schedule.go +0 -336
  233. package/dist/templates/native-go/backend/internal/background/schedule_test.go +0 -368
  234. package/dist/templates/native-go/backend/internal/background/store.go +0 -825
  235. package/dist/templates/native-go/backend/internal/background/store_test.go +0 -365
  236. package/dist/templates/native-go/backend/internal/datamigrate/migrate.go +0 -191
  237. package/dist/templates/native-go/backend/internal/datamigrate/migrate_test.go +0 -177
  238. package/dist/templates/native-go/backend/internal/dsm/admin.go +0 -76
  239. package/dist/templates/native-go/backend/internal/dsm/admin_linux.go +0 -110
  240. package/dist/templates/native-go/backend/internal/dsm/admin_linux_test.go +0 -105
  241. package/dist/templates/native-go/backend/internal/dsm/admin_other.go +0 -15
  242. package/dist/templates/native-go/backend/internal/dsm/admin_test.go +0 -67
  243. package/dist/templates/native-go/backend/internal/dsm/apppriv.go +0 -30
  244. package/dist/templates/native-go/backend/internal/dsm/auth.go +0 -94
  245. package/dist/templates/native-go/backend/internal/dsm/auth_test.go +0 -159
  246. package/dist/templates/native-go/backend/internal/dsm/bridge_file.go +0 -75
  247. package/dist/templates/native-go/backend/internal/dsm/bridge_file_test.go +0 -57
  248. package/dist/templates/native-go/backend/internal/dsm/entry.go +0 -177
  249. package/dist/templates/native-go/backend/internal/dsm/entry_test.go +0 -315
  250. package/dist/templates/native-go/backend/internal/dsm/native/admin-aarch64.elf +0 -0
  251. package/dist/templates/native-go/backend/internal/dsm/native/admin-armv7.elf +0 -0
  252. package/dist/templates/native-go/backend/internal/dsm/native/admin-x86_64.elf +0 -0
  253. package/dist/templates/native-go/backend/internal/dsm/native/admin_check.c +0 -28
  254. package/dist/templates/native-go/backend/internal/dsm/native/apppriv-aarch64.elf +0 -0
  255. package/dist/templates/native-go/backend/internal/dsm/native/apppriv-armv7.elf +0 -0
  256. package/dist/templates/native-go/backend/internal/dsm/native/apppriv-x86_64.elf +0 -0
  257. package/dist/templates/native-go/backend/internal/dsm/native/apppriv_check.c +0 -33
  258. package/dist/templates/native-go/backend/internal/dsm/native/build.sh +0 -18
  259. package/dist/templates/native-go/backend/internal/dsm/native/licenses/GLIBC-NOTICES.txt +0 -400
  260. package/dist/templates/native-go/backend/internal/dsm/native/licenses/LGPL-2.1.txt +0 -501
  261. package/dist/templates/native-go/backend/internal/dsm/native/licenses/SOURCE.txt +0 -5
  262. package/dist/templates/native-go/backend/internal/dsm/native/licenses/ZIG-MIT.txt +0 -21
  263. package/dist/templates/native-go/backend/internal/dsm/native/provenance.json +0 -18
  264. package/dist/templates/native-go/backend/internal/filestation/browse_test.go +0 -67
  265. package/dist/templates/native-go/backend/internal/filestation/check_permission.go +0 -71
  266. package/dist/templates/native-go/backend/internal/filestation/check_permission_test.go +0 -77
  267. package/dist/templates/native-go/backend/internal/filestation/client.go +0 -337
  268. package/dist/templates/native-go/backend/internal/filestation/client_test.go +0 -155
  269. package/dist/templates/native-go/backend/internal/filestation/doc.go +0 -4
  270. package/dist/templates/native-go/backend/internal/filestation/download_dsm71_test.go +0 -82
  271. package/dist/templates/native-go/backend/internal/filestation/http.go +0 -70
  272. package/dist/templates/native-go/backend/internal/filestation/http_test.go +0 -188
  273. package/dist/templates/native-go/backend/internal/filestation/operations_test.go +0 -206
  274. package/dist/templates/native-go/backend/internal/filestation/read_file_test.go +0 -89
  275. package/dist/templates/native-go/backend/internal/filestation/sdk_policy_test.go +0 -39
  276. package/dist/templates/native-go/backend/internal/filestation/service.go +0 -254
  277. package/dist/templates/native-go/backend/internal/filestation/service_test.go +0 -74
  278. package/dist/templates/native-go/backend/internal/filestation/upload_stream.go +0 -76
  279. package/dist/templates/native-go/backend/internal/filestation/upload_stream_test.go +0 -77
  280. package/dist/templates/native-go/backend/internal/filestation/write.go +0 -32
  281. package/dist/templates/native-go/backend/internal/filestation/write_test.go +0 -124
  282. package/dist/templates/native-go/backend/internal/identity/README.md +0 -59
  283. package/dist/templates/native-go/backend/internal/identity/dsm.go +0 -115
  284. package/dist/templates/native-go/backend/internal/identity/http.go +0 -291
  285. package/dist/templates/native-go/backend/internal/identity/identity_test.go +0 -530
  286. package/dist/templates/native-go/backend/internal/identity/service.go +0 -159
  287. package/dist/templates/native-go/backend/internal/identity/store.go +0 -109
  288. package/dist/templates/native-go/backend/internal/jsonlimits/limits.go +0 -48
  289. package/dist/templates/native-go/backend/internal/jsonlimits/limits_test.go +0 -52
  290. package/dist/templates/native-go/backend/internal/portal/portal.go +0 -138
  291. package/dist/templates/native-go/backend/internal/portal/portal_test.go +0 -89
  292. package/dist/templates/native-go/dsm-package.yaml +0 -71
  293. package/dist/templates/native-go/gitignore +0 -1
  294. package/dist/templates/native-go/i18n/glossary.json +0 -663
  295. package/dist/templates/native-go/i18n/messages/de.json +0 -29
  296. package/dist/templates/native-go/i18n/messages/en.json +0 -29
  297. package/dist/templates/native-go/i18n/messages/es.json +0 -29
  298. package/dist/templates/native-go/i18n/messages/fr.json +0 -29
  299. package/dist/templates/native-go/i18n/messages/it.json +0 -29
  300. package/dist/templates/native-go/i18n/messages/ja.json +0 -29
  301. package/dist/templates/native-go/i18n/messages/ko.json +0 -29
  302. package/dist/templates/native-go/i18n/messages/zh-CN.json +0 -29
  303. package/dist/templates/native-go/i18n/messages/zh-TW.json +0 -29
  304. package/dist/templates/native-go/ui/app.css +0 -45
  305. package/dist/templates/native-go/ui/app.js +0 -111
  306. package/dist/templates/native-go-delegate/DELEGATE.md +0 -263
  307. package/dist/templates/native-go-delegate/backend/cmd/background-worker/main.go +0 -48
  308. package/dist/templates/native-go-delegate/backend/internal/app/delegate.go +0 -25
  309. package/dist/templates/native-go-delegate/backend/internal/app/delegate_on.go +0 -5
  310. package/dist/templates/native-go-delegate/backend/internal/app/delegate_routes_test.go +0 -31
  311. package/dist/templates/native-go-delegate/backend/internal/background/delegate_review_test.go +0 -174
  312. package/dist/templates/native-go-delegate/backend/internal/background/delegated.go +0 -277
  313. package/dist/templates/native-go-delegate/backend/internal/background/delegated_moves.go +0 -270
  314. package/dist/templates/native-go-delegate/backend/internal/background/delegated_test.go +0 -34
  315. package/dist/templates/native-go-delegate/backend/internal/delegate/admission_recovery_test.go +0 -410
  316. package/dist/templates/native-go-delegate/backend/internal/delegate/busy_review_test.go +0 -15
  317. package/dist/templates/native-go-delegate/backend/internal/delegate/cancel_contract_test.go +0 -95
  318. package/dist/templates/native-go-delegate/backend/internal/delegate/client.go +0 -151
  319. package/dist/templates/native-go-delegate/backend/internal/delegate/client_test.go +0 -214
  320. package/dist/templates/native-go-delegate/backend/internal/delegate/destination.go +0 -110
  321. package/dist/templates/native-go-delegate/backend/internal/delegate/destination_state.go +0 -117
  322. package/dist/templates/native-go-delegate/backend/internal/delegate/destination_state_test.go +0 -60
  323. package/dist/templates/native-go-delegate/backend/internal/delegate/destination_test.go +0 -116
  324. package/dist/templates/native-go-delegate/backend/internal/delegate/example.go +0 -81
  325. package/dist/templates/native-go-delegate/backend/internal/delegate/example_test.go +0 -91
  326. package/dist/templates/native-go-delegate/backend/internal/delegate/executor_contract_test.go +0 -511
  327. package/dist/templates/native-go-delegate/backend/internal/delegate/files.go +0 -132
  328. package/dist/templates/native-go-delegate/backend/internal/delegate/long_running_routes.go +0 -92
  329. package/dist/templates/native-go-delegate/backend/internal/delegate/long_running_routes_test.go +0 -99
  330. package/dist/templates/native-go-delegate/backend/internal/delegate/move.go +0 -348
  331. package/dist/templates/native-go-delegate/backend/internal/delegate/move_test.go +0 -351
  332. package/dist/templates/native-go-delegate/backend/internal/delegate/operations_list.go +0 -65
  333. package/dist/templates/native-go-delegate/backend/internal/delegate/operations_list_test.go +0 -114
  334. package/dist/templates/native-go-delegate/backend/internal/delegate/retry.go +0 -106
  335. package/dist/templates/native-go-delegate/backend/internal/delegate/retry_test.go +0 -143
  336. package/dist/templates/native-go-delegate/backend/internal/delegate/service.go +0 -364
  337. package/dist/templates/native-go-delegate/backend/internal/delegate/service_test.go +0 -318
  338. package/dist/templates/native-go-delegate/backend/internal/delegate/staging.go +0 -121
  339. package/dist/templates/native-go-delegate/backend/internal/delegate/status_disabled_test.go +0 -51
  340. package/dist/templates/native-go-delegate/backend/internal/delegate/testdata/executor_contract.txt +0 -112
  341. package/dist/templates/native-go-delegate/backend/internal/delegate/transient_contract_test.go +0 -137
  342. package/dist/templates/native-go-delegate/backend/internal/delegate/wait_cancel_test.go +0 -101
  343. package/dist/templates/native-go-delegate/backend/internal/delegate/worker.go +0 -225
  344. package/dist/templates/native-go-delegate/backend/internal/filestation/files.go +0 -43
  345. package/dist/templates/native-go-delegate/backend/internal/filestation/files_test.go +0 -59
  346. package/dist/templates/native-go-delegate/frontend/src/CapabilityPanels.vue +0 -37
  347. package/dist/templates/native-go-delegate/frontend/src/delegate/BackgroundSavePanel.vue +0 -113
  348. package/dist/templates/native-go-delegate/frontend/src/delegate/DelegatePanel.vue +0 -70
  349. package/dist/templates/native-go-delegate/frontend/src/delegate/copy.ts +0 -8
  350. package/dist/templates/native-go-delegate/frontend/src/delegate/i18n/waiting.json +0 -11
  351. package/dist/templates/native-go-delegate/frontend/test/background-save.test.ts +0 -121
  352. package/dist/templates/native-go-delegate/frontend/test/delegate.test.ts +0 -145
  353. package/dist/templates/native-go-delegate/frontend/test/scope-settings.test.ts +0 -49
  354. package/dist/templates/native-go-delegate/test-frontend.sh +0 -12
  355. package/dist/templates/native-go-delegate/test.sh +0 -18
  356. package/dist/templates/native-go-jobs/BACKGROUND.md +0 -108
  357. package/dist/templates/native-go-jobs/backend/internal/app/background_on.go +0 -7
  358. package/dist/templates/native-go-jobs/backend/internal/app/background_routes_test.go +0 -90
  359. package/dist/templates/native-go-jobs/frontend/src/background/BackgroundPanel.vue +0 -170
  360. package/dist/templates/native-go-jobs/frontend/src/background/i18n/de.json +0 -75
  361. package/dist/templates/native-go-jobs/frontend/src/background/i18n/en.json +0 -75
  362. package/dist/templates/native-go-jobs/frontend/src/background/i18n/es.json +0 -75
  363. package/dist/templates/native-go-jobs/frontend/src/background/i18n/fr.json +0 -75
  364. package/dist/templates/native-go-jobs/frontend/src/background/i18n/it.json +0 -75
  365. package/dist/templates/native-go-jobs/frontend/src/background/i18n/ja.json +0 -75
  366. package/dist/templates/native-go-jobs/frontend/src/background/i18n/ko.json +0 -75
  367. package/dist/templates/native-go-jobs/frontend/src/background/i18n/zh-CN.json +0 -75
  368. package/dist/templates/native-go-jobs/frontend/src/background/i18n/zh-TW.json +0 -75
  369. package/dist/templates/native-go-jobs/frontend/src/background/i18n.ts +0 -19
  370. package/dist/templates/native-go-jobs/frontend/src/background/picker-provider.ts +0 -12
  371. package/dist/templates/native-go-jobs/frontend/src/background/request-key.ts +0 -5
  372. package/dist/templates/native-go-jobs/frontend/test/background.test.ts +0 -205
  373. package/dist/templates/native-go-root-ops/backend/internal/app/executor.go +0 -140
  374. package/dist/templates/native-go-root-ops/backend/internal/app/executor_test.go +0 -117
  375. package/dist/templates/native-go-root-ops/root/whoami.sh +0 -3
  376. package/dist/templates/native-go-vue/README.md +0 -47
  377. package/dist/templates/native-go-vue/frontend/DESIGN.md +0 -61
  378. package/dist/templates/native-go-vue/frontend/package-lock.json +0 -2530
  379. package/dist/templates/native-go-vue/frontend/package.json +0 -6
  380. package/dist/templates/native-go-vue/frontend/src/App.vue +0 -96
  381. package/dist/templates/native-go-vue/frontend/src/CapabilityPanels.vue +0 -6
  382. package/dist/templates/native-go-vue/frontend/src/context.ts +0 -78
  383. package/dist/templates/native-go-vue/frontend/src/delegate/ExecutorSettings.vue +0 -70
  384. package/dist/templates/native-go-vue/frontend/src/delegate/catalogs.ts +0 -11
  385. package/dist/templates/native-go-vue/frontend/src/delegate/copy.test.ts +0 -12
  386. package/dist/templates/native-go-vue/frontend/src/delegate/copy.ts +0 -4
  387. package/dist/templates/native-go-vue/frontend/src/delegate/executor-settings.test.ts +0 -23
  388. package/dist/templates/native-go-vue/frontend/src/delegate/executor-setup.ts +0 -24
  389. package/dist/templates/native-go-vue/frontend/src/delegate/facade.test.ts +0 -100
  390. package/dist/templates/native-go-vue/frontend/src/delegate/facade.ts +0 -85
  391. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/de.json +0 -47
  392. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/en.json +0 -47
  393. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/es.json +0 -47
  394. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/fr.json +0 -47
  395. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/it.json +0 -47
  396. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/ja.json +0 -47
  397. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/ko.json +0 -47
  398. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/de.json +0 -42
  399. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/en.json +0 -42
  400. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/es.json +0 -42
  401. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/fr.json +0 -42
  402. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/it.json +0 -42
  403. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/ja.json +0 -42
  404. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/ko.json +0 -42
  405. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/zh-CN.json +0 -42
  406. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/zh-TW.json +0 -42
  407. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/zh-CN.json +0 -47
  408. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/zh-TW.json +0 -47
  409. package/dist/templates/native-go-vue/frontend/src/delegate/long-running.ts +0 -57
  410. package/dist/templates/native-go-vue/frontend/src/delegate/save-copy.test.ts +0 -12
  411. package/dist/templates/native-go-vue/frontend/src/delegate/save-copy.ts +0 -24
  412. package/dist/templates/native-go-vue/frontend/src/delegate/scoped-picker.test.ts +0 -12
  413. package/dist/templates/native-go-vue/frontend/src/delegate/scoped-picker.ts +0 -21
  414. package/dist/templates/native-go-vue/frontend/src/files/FileBrowser.vue +0 -131
  415. package/dist/templates/native-go-vue/frontend/src/files/FilesPage.vue +0 -35
  416. package/dist/templates/native-go-vue/frontend/src/files/files.test.ts +0 -100
  417. package/dist/templates/native-go-vue/frontend/src/files/provider.test.ts +0 -48
  418. package/dist/templates/native-go-vue/frontend/src/files/transfers.test.ts +0 -27
  419. package/dist/templates/native-go-vue/frontend/src/files/transfers.ts +0 -25
  420. package/dist/templates/native-go-vue/frontend/src/i18n/de.json +0 -20
  421. package/dist/templates/native-go-vue/frontend/src/i18n/en.json +0 -20
  422. package/dist/templates/native-go-vue/frontend/src/i18n/es.json +0 -20
  423. package/dist/templates/native-go-vue/frontend/src/i18n/fr.json +0 -20
  424. package/dist/templates/native-go-vue/frontend/src/i18n/it.json +0 -20
  425. package/dist/templates/native-go-vue/frontend/src/i18n/ja.json +0 -20
  426. package/dist/templates/native-go-vue/frontend/src/i18n/ko.json +0 -20
  427. package/dist/templates/native-go-vue/frontend/src/i18n/zh-CN.json +0 -20
  428. package/dist/templates/native-go-vue/frontend/src/i18n/zh-TW.json +0 -20
  429. package/dist/templates/native-go-vue/frontend/src/i18n.ts +0 -13
  430. package/dist/templates/native-go-vue/frontend/src/identity/DESIGN.md +0 -46
  431. package/dist/templates/native-go-vue/frontend/src/identity/LoginPage.vue +0 -78
  432. package/dist/templates/native-go-vue/frontend/src/identity/i18n/de.json +0 -27
  433. package/dist/templates/native-go-vue/frontend/src/identity/i18n/en.json +0 -27
  434. package/dist/templates/native-go-vue/frontend/src/identity/i18n/es.json +0 -27
  435. package/dist/templates/native-go-vue/frontend/src/identity/i18n/fr.json +0 -27
  436. package/dist/templates/native-go-vue/frontend/src/identity/i18n/it.json +0 -27
  437. package/dist/templates/native-go-vue/frontend/src/identity/i18n/ja.json +0 -27
  438. package/dist/templates/native-go-vue/frontend/src/identity/i18n/ko.json +0 -27
  439. package/dist/templates/native-go-vue/frontend/src/identity/i18n/zh-CN.json +0 -27
  440. package/dist/templates/native-go-vue/frontend/src/identity/i18n/zh-TW.json +0 -27
  441. package/dist/templates/native-go-vue/frontend/src/identity/i18n.ts +0 -14
  442. package/dist/templates/native-go-vue/frontend/src/identity/login.test.ts +0 -32
  443. package/dist/templates/native-go-vue/frontend/src/identity/session.test.ts +0 -33
  444. package/dist/templates/native-go-vue/frontend/src/identity/session.ts +0 -74
  445. package/dist/templates/native-go-vue/frontend/src/main.ts +0 -32
  446. package/dist/templates/native-go-vue/frontend/src/nas/NasPicker.vue +0 -42
  447. package/dist/templates/native-go-vue/frontend/src/nas/contract.ts +0 -12
  448. package/dist/templates/native-go-vue/frontend/src/nas/destination.test.ts +0 -48
  449. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/de.json +0 -41
  450. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/en.json +0 -41
  451. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/es.json +0 -41
  452. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/fr.json +0 -41
  453. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/it.json +0 -41
  454. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/ja.json +0 -41
  455. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/ko.json +0 -41
  456. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/zh-CN.json +0 -41
  457. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/zh-TW.json +0 -41
  458. package/dist/templates/native-go-vue/frontend/src/nas/i18n.ts +0 -2
  459. package/dist/templates/native-go-vue/frontend/src/nas/locale.ts +0 -24
  460. package/dist/templates/native-go-vue/frontend/src/nas/provider.ts +0 -50
  461. package/dist/templates/native-go-vue/frontend/src/nas/use-request.ts +0 -18
  462. package/dist/templates/native-go-vue/frontend/src/portal/PortalSettings.vue +0 -39
  463. package/dist/templates/native-go-vue/frontend/src/shell/AppShell.vue +0 -48
  464. package/dist/templates/native-go-vue/frontend/src/shell/i18n/de.json +0 -4
  465. package/dist/templates/native-go-vue/frontend/src/shell/i18n/en.json +0 -4
  466. package/dist/templates/native-go-vue/frontend/src/shell/i18n/es.json +0 -4
  467. package/dist/templates/native-go-vue/frontend/src/shell/i18n/fr.json +0 -4
  468. package/dist/templates/native-go-vue/frontend/src/shell/i18n/it.json +0 -4
  469. package/dist/templates/native-go-vue/frontend/src/shell/i18n/ja.json +0 -4
  470. package/dist/templates/native-go-vue/frontend/src/shell/i18n/ko.json +0 -4
  471. package/dist/templates/native-go-vue/frontend/src/shell/i18n/zh-CN.json +0 -4
  472. package/dist/templates/native-go-vue/frontend/src/shell/i18n/zh-TW.json +0 -4
  473. package/dist/templates/native-go-vue/frontend/src/shell/i18n.ts +0 -17
  474. package/dist/templates/native-go-vue/frontend/src/shell/pages.ts +0 -15
  475. package/dist/templates/native-go-vue/frontend/src/style.css +0 -27
  476. package/dist/templates/native-go-vue/frontend/test/apps.test.ts +0 -57
  477. package/dist/templates/native-go-vue/frontend/test/native-controls.test.ts +0 -27
  478. package/dist/templates/native-go-vue/frontend/test/portal-settings.test.ts +0 -71
  479. package/dist/templates/native-go-vue/frontend/test/shell-i18n.test.ts +0 -50
  480. package/dist/templates/native-go-vue/frontend/test/shell-ui.test.ts +0 -20
  481. package/dist/templates/native-go-vue/frontend/test/shell.test.ts +0 -30
  482. package/dist/templates/native-go-vue/frontend/tsconfig.json +0 -1
  483. package/dist/templates/native-go-vue/frontend/vite.config.ts +0 -10
  484. package/dist/templates/native-go-vue/gitignore +0 -2
  485. package/templates/_daemon/fixture_linux_test.go +0 -15
  486. package/templates/_daemon/fixture_other_test.go +0 -7
  487. package/templates/_daemon/go.mod +0 -5
  488. package/templates/_daemon/main.go +0 -611
  489. package/templates/_daemon/main_test.go +0 -315
  490. package/templates/_daemon/process_linux.go +0 -55
  491. package/templates/_daemon/process_linux_test.go +0 -161
  492. package/templates/_daemon/process_other.go +0 -14
  493. package/templates/_daemon/testdata/child.go +0 -44
  494. package/templates/_executor/README.md +0 -318
  495. package/templates/_executor/anchor.go +0 -156
  496. package/templates/_executor/anchor_test.go +0 -161
  497. package/templates/_executor/apppriv_review_test.go +0 -28
  498. package/templates/_executor/auth_presence_review_test.go +0 -38
  499. package/templates/_executor/cancel_contract_test.go +0 -236
  500. package/templates/_executor/cmd/lifecycle/main.go +0 -42
  501. package/templates/_executor/cookie_review_test.go +0 -27
  502. package/templates/_executor/copy.go +0 -64
  503. package/templates/_executor/copy_test.go +0 -88
  504. package/templates/_executor/digest_review_test.go +0 -120
  505. package/templates/_executor/directories.go +0 -40
  506. package/templates/_executor/dsm.go +0 -369
  507. package/templates/_executor/dsm_test.go +0 -290
  508. package/templates/_executor/executor.go +0 -735
  509. package/templates/_executor/executor_test.go +0 -314
  510. package/templates/_executor/go.mod +0 -5
  511. package/templates/_executor/identity.go +0 -74
  512. package/templates/_executor/identity_kernel_linux_test.go +0 -60
  513. package/templates/_executor/identity_linux.go +0 -82
  514. package/templates/_executor/identity_security_test.go +0 -43
  515. package/templates/_executor/internal/lifecycle/lifecycle.go +0 -95
  516. package/templates/_executor/internal/lifecycle/lifecycle_test.go +0 -232
  517. package/templates/_executor/internal/taskscript/boot.sh +0 -31
  518. package/templates/_executor/internal/taskscript/cmd/main.go +0 -19
  519. package/templates/_executor/internal/taskscript/control.sh +0 -31
  520. package/templates/_executor/internal/taskscript/tasks.go +0 -44
  521. package/templates/_executor/json_review_test.go +0 -40
  522. package/templates/_executor/lifecycle_test.go +0 -97
  523. package/templates/_executor/link_linux.go +0 -28
  524. package/templates/_executor/long_running_test.go +0 -530
  525. package/templates/_executor/main.go +0 -576
  526. package/templates/_executor/managed.go +0 -117
  527. package/templates/_executor/managed_test.go +0 -137
  528. package/templates/_executor/move_linux.go +0 -490
  529. package/templates/_executor/move_linux_test.go +0 -460
  530. package/templates/_executor/move_validation.go +0 -46
  531. package/templates/_executor/move_validation_test.go +0 -187
  532. package/templates/_executor/operations.go +0 -926
  533. package/templates/_executor/path_test.go +0 -35
  534. package/templates/_executor/pid.go +0 -37
  535. package/templates/_executor/pid_test.go +0 -113
  536. package/templates/_executor/platform_linux.go +0 -187
  537. package/templates/_executor/platform_linux_test.go +0 -191
  538. package/templates/_executor/platform_other.go +0 -76
  539. package/templates/_executor/process.go +0 -142
  540. package/templates/_executor/purge_log.go +0 -18
  541. package/templates/_executor/records.go +0 -242
  542. package/templates/_executor/scope_cancel_contract_test.go +0 -91
  543. package/templates/_executor/scope_client.go +0 -37
  544. package/templates/_executor/scope_contract.go +0 -12
  545. package/templates/_executor/selected_scope.go +0 -146
  546. package/templates/_executor/selected_scope_test.go +0 -186
  547. package/templates/_executor/socket_linux_test.go +0 -46
  548. package/templates/_executor/status_disabled_test.go +0 -33
  549. package/templates/_executor/store.go +0 -91
  550. package/templates/_executor/supervise.go +0 -109
  551. package/templates/_executor/supervise_test.go +0 -130
  552. package/templates/_executor/task_race_review_test.go +0 -47
  553. package/templates/_executor/tasks.go +0 -320
  554. package/templates/_executor/tasks_dsm71_test.go +0 -114
  555. package/templates/_executor/tasks_review_test.go +0 -43
  556. package/templates/_executor/tasks_test.go +0 -223
  557. package/templates/_executor/testdata/evidence/cleanup.json +0 -24
  558. package/templates/_executor/testdata/evidence/final-smoke.jsonl +0 -9
  559. package/templates/_executor/testdata/evidence/kernel-acl.json +0 -6
  560. package/templates/_executor/testdata/evidence/linux-tests.log +0 -123
  561. package/templates/_executor/testdata/evidence/live.jsonl +0 -23
  562. package/templates/_executor/testdata/evidence/storage.json +0 -90
  563. package/templates/_executor/testdata/evidence/validation.json +0 -55
  564. package/templates/_executor/testdata/live_probe.py +0 -98
  565. package/templates/_executor/upgrade_watch_test.go +0 -244
  566. package/templates/_executor/watch.go +0 -164
  567. package/templates/_executor/watch_test.go +0 -291
  568. package/templates/_executor/write_review_linux_test.go +0 -87
  569. package/templates/_gateway/auth.go +0 -101
  570. package/templates/_gateway/auth_test.go +0 -216
  571. package/templates/_gateway/cgi.go +0 -133
  572. package/templates/_gateway/cgi_test.go +0 -156
  573. package/templates/_gateway/csrf.go +0 -73
  574. package/templates/_gateway/csrf_test.go +0 -155
  575. package/templates/_gateway/directory.go +0 -108
  576. package/templates/_gateway/directory_test.go +0 -202
  577. package/templates/_gateway/gateway.go +0 -412
  578. package/templates/_gateway/gateway_test.go +0 -676
  579. package/templates/_gateway/go.mod +0 -5
  580. package/templates/_gateway/groups.go +0 -66
  581. package/templates/_gateway/main.go +0 -45
  582. package/templates/_shared/AGENTS.md +0 -146
  583. package/templates/_shared/CLAUDE.md +0 -1
  584. package/templates/_shared/GO-LICENSE +0 -27
  585. package/templates/_shared/GO-PATENTS +0 -22
  586. package/templates/_shared/LICENSES/TEMPLATE.txt +0 -21
  587. package/templates/_shared/third-party-notices.mjs +0 -51
  588. package/templates/binary/LICENSES/GO-LICENSE +0 -27
  589. package/templates/binary/LICENSES/GO-PATENTS +0 -22
  590. package/templates/binary/dsm-package.yaml +0 -46
  591. package/templates/binary/example/main.go +0 -16
  592. package/templates/binary/gitignore +0 -2
  593. package/templates/binary/i18n/messages/de.json +0 -4
  594. package/templates/binary/i18n/messages/en.json +0 -4
  595. package/templates/binary/i18n/messages/es.json +0 -4
  596. package/templates/binary/i18n/messages/fr.json +0 -4
  597. package/templates/binary/i18n/messages/it.json +0 -4
  598. package/templates/binary/i18n/messages/ja.json +0 -4
  599. package/templates/binary/i18n/messages/ko.json +0 -4
  600. package/templates/binary/i18n/messages/zh-CN.json +0 -4
  601. package/templates/binary/i18n/messages/zh-TW.json +0 -4
  602. package/templates/binary/ui/app.css +0 -4
  603. package/templates/binary/ui/app.js +0 -32
  604. package/templates/compose/compose.yaml +0 -8
  605. package/templates/compose/synology-app.yaml +0 -16
  606. package/templates/native-authorization/AuthorizationGate.vue +0 -91
  607. package/templates/native-authorization/i18n/de.json +0 -37
  608. package/templates/native-authorization/i18n/en.json +0 -37
  609. package/templates/native-authorization/i18n/es.json +0 -37
  610. package/templates/native-authorization/i18n/fr.json +0 -37
  611. package/templates/native-authorization/i18n/index.ts +0 -15
  612. package/templates/native-authorization/i18n/it.json +0 -37
  613. package/templates/native-authorization/i18n/ja.json +0 -37
  614. package/templates/native-authorization/i18n/ko.json +0 -37
  615. package/templates/native-authorization/i18n/zh-CN.json +0 -37
  616. package/templates/native-authorization/i18n/zh-TW.json +0 -37
  617. package/templates/native-go/README.md +0 -459
  618. package/templates/native-go/backend/THIRD_PARTY_NOTICES.txt +0 -61
  619. package/templates/native-go/backend/cmd/app/main.go +0 -95
  620. package/templates/native-go/backend/cmd/background-worker/main.go +0 -38
  621. package/templates/native-go/backend/go.mod +0 -9
  622. package/templates/native-go/backend/go.sum +0 -4
  623. package/templates/native-go/backend/internal/api/cgi_framing_test.go +0 -32
  624. package/templates/native-go/backend/internal/api/cookie_review_test.go +0 -28
  625. package/templates/native-go/backend/internal/api/deadline_test.go +0 -114
  626. package/templates/native-go/backend/internal/api/dsm-session.go +0 -54
  627. package/templates/native-go/backend/internal/api/dsm-session_test.go +0 -51
  628. package/templates/native-go/backend/internal/api/entry_test.go +0 -47
  629. package/templates/native-go/backend/internal/api/errors.go +0 -47
  630. package/templates/native-go/backend/internal/api/permissions.go +0 -161
  631. package/templates/native-go/backend/internal/api/permissions.json +0 -5
  632. package/templates/native-go/backend/internal/api/permissions_test.go +0 -113
  633. package/templates/native-go/backend/internal/api/policy_fixture_test.go +0 -8
  634. package/templates/native-go/backend/internal/api/registry.go +0 -142
  635. package/templates/native-go/backend/internal/api/registry_test.go +0 -344
  636. package/templates/native-go/backend/internal/api/resource_limits_test.go +0 -87
  637. package/templates/native-go/backend/internal/api/sdk-permissions.json +0 -59
  638. package/templates/native-go/backend/internal/api/sdk_policy_test.go +0 -31
  639. package/templates/native-go/backend/internal/api/server.go +0 -305
  640. package/templates/native-go/backend/internal/api/testdata/permissions-cases.json +0 -172
  641. package/templates/native-go/backend/internal/app/background.go +0 -249
  642. package/templates/native-go/backend/internal/app/background_none.go +0 -8
  643. package/templates/native-go/backend/internal/app/background_owner.go +0 -38
  644. package/templates/native-go/backend/internal/app/background_owner_test.go +0 -163
  645. package/templates/native-go/backend/internal/app/background_schedule.go +0 -69
  646. package/templates/native-go/backend/internal/app/background_schedule_test.go +0 -62
  647. package/templates/native-go/backend/internal/app/background_test.go +0 -320
  648. package/templates/native-go/backend/internal/app/delegate_config.go +0 -57
  649. package/templates/native-go/backend/internal/app/delegate_config_test.go +0 -28
  650. package/templates/native-go/backend/internal/app/delegate_none.go +0 -5
  651. package/templates/native-go/backend/internal/app/identity.go +0 -20
  652. package/templates/native-go/backend/internal/app/identity_test.go +0 -15
  653. package/templates/native-go/backend/internal/app/migrations.go +0 -41
  654. package/templates/native-go/backend/internal/app/migrations_test.go +0 -41
  655. package/templates/native-go/backend/internal/app/portal.go +0 -30
  656. package/templates/native-go/backend/internal/app/portal_test.go +0 -55
  657. package/templates/native-go/backend/internal/app/root_none.go +0 -9
  658. package/templates/native-go/backend/internal/app/routes.go +0 -137
  659. package/templates/native-go/backend/internal/app/routes_test.go +0 -165
  660. package/templates/native-go/backend/internal/app/session_files.go +0 -9
  661. package/templates/native-go/backend/internal/app/session_files_test.go +0 -14
  662. package/templates/native-go/backend/internal/app/shared_folder.go +0 -144
  663. package/templates/native-go/backend/internal/app/shared_folder_test.go +0 -158
  664. package/templates/native-go/backend/internal/background/access.go +0 -57
  665. package/templates/native-go/backend/internal/background/lock_test.go +0 -131
  666. package/templates/native-go/backend/internal/background/owner_test.go +0 -118
  667. package/templates/native-go/backend/internal/background/runner.go +0 -185
  668. package/templates/native-go/backend/internal/background/runner_test.go +0 -209
  669. package/templates/native-go/backend/internal/background/schedule.go +0 -336
  670. package/templates/native-go/backend/internal/background/schedule_test.go +0 -368
  671. package/templates/native-go/backend/internal/background/store.go +0 -825
  672. package/templates/native-go/backend/internal/background/store_test.go +0 -365
  673. package/templates/native-go/backend/internal/datamigrate/migrate.go +0 -191
  674. package/templates/native-go/backend/internal/datamigrate/migrate_test.go +0 -177
  675. package/templates/native-go/backend/internal/dsm/admin.go +0 -76
  676. package/templates/native-go/backend/internal/dsm/admin_linux.go +0 -110
  677. package/templates/native-go/backend/internal/dsm/admin_linux_test.go +0 -105
  678. package/templates/native-go/backend/internal/dsm/admin_other.go +0 -15
  679. package/templates/native-go/backend/internal/dsm/admin_test.go +0 -67
  680. package/templates/native-go/backend/internal/dsm/apppriv.go +0 -30
  681. package/templates/native-go/backend/internal/dsm/auth.go +0 -94
  682. package/templates/native-go/backend/internal/dsm/auth_test.go +0 -159
  683. package/templates/native-go/backend/internal/dsm/bridge_file.go +0 -75
  684. package/templates/native-go/backend/internal/dsm/bridge_file_test.go +0 -57
  685. package/templates/native-go/backend/internal/dsm/entry.go +0 -177
  686. package/templates/native-go/backend/internal/dsm/entry_test.go +0 -315
  687. package/templates/native-go/backend/internal/dsm/native/admin-aarch64.elf +0 -0
  688. package/templates/native-go/backend/internal/dsm/native/admin-armv7.elf +0 -0
  689. package/templates/native-go/backend/internal/dsm/native/admin-x86_64.elf +0 -0
  690. package/templates/native-go/backend/internal/dsm/native/admin_check.c +0 -28
  691. package/templates/native-go/backend/internal/dsm/native/apppriv-aarch64.elf +0 -0
  692. package/templates/native-go/backend/internal/dsm/native/apppriv-armv7.elf +0 -0
  693. package/templates/native-go/backend/internal/dsm/native/apppriv-x86_64.elf +0 -0
  694. package/templates/native-go/backend/internal/dsm/native/apppriv_check.c +0 -33
  695. package/templates/native-go/backend/internal/dsm/native/build.sh +0 -18
  696. package/templates/native-go/backend/internal/dsm/native/licenses/GLIBC-NOTICES.txt +0 -400
  697. package/templates/native-go/backend/internal/dsm/native/licenses/LGPL-2.1.txt +0 -501
  698. package/templates/native-go/backend/internal/dsm/native/licenses/SOURCE.txt +0 -5
  699. package/templates/native-go/backend/internal/dsm/native/licenses/ZIG-MIT.txt +0 -21
  700. package/templates/native-go/backend/internal/dsm/native/provenance.json +0 -18
  701. package/templates/native-go/backend/internal/filestation/browse_test.go +0 -67
  702. package/templates/native-go/backend/internal/filestation/check_permission.go +0 -71
  703. package/templates/native-go/backend/internal/filestation/check_permission_test.go +0 -77
  704. package/templates/native-go/backend/internal/filestation/client.go +0 -337
  705. package/templates/native-go/backend/internal/filestation/client_test.go +0 -155
  706. package/templates/native-go/backend/internal/filestation/doc.go +0 -4
  707. package/templates/native-go/backend/internal/filestation/download_dsm71_test.go +0 -82
  708. package/templates/native-go/backend/internal/filestation/http.go +0 -70
  709. package/templates/native-go/backend/internal/filestation/http_test.go +0 -188
  710. package/templates/native-go/backend/internal/filestation/operations_test.go +0 -206
  711. package/templates/native-go/backend/internal/filestation/read_file_test.go +0 -89
  712. package/templates/native-go/backend/internal/filestation/sdk_policy_test.go +0 -39
  713. package/templates/native-go/backend/internal/filestation/service.go +0 -254
  714. package/templates/native-go/backend/internal/filestation/service_test.go +0 -74
  715. package/templates/native-go/backend/internal/filestation/upload_stream.go +0 -76
  716. package/templates/native-go/backend/internal/filestation/upload_stream_test.go +0 -77
  717. package/templates/native-go/backend/internal/filestation/write.go +0 -32
  718. package/templates/native-go/backend/internal/filestation/write_test.go +0 -124
  719. package/templates/native-go/backend/internal/identity/README.md +0 -59
  720. package/templates/native-go/backend/internal/identity/dsm.go +0 -115
  721. package/templates/native-go/backend/internal/identity/http.go +0 -291
  722. package/templates/native-go/backend/internal/identity/identity_test.go +0 -530
  723. package/templates/native-go/backend/internal/identity/service.go +0 -159
  724. package/templates/native-go/backend/internal/identity/store.go +0 -109
  725. package/templates/native-go/backend/internal/jsonlimits/limits.go +0 -48
  726. package/templates/native-go/backend/internal/jsonlimits/limits_test.go +0 -52
  727. package/templates/native-go/backend/internal/portal/portal.go +0 -138
  728. package/templates/native-go/backend/internal/portal/portal_test.go +0 -89
  729. package/templates/native-go/dsm-package.yaml +0 -71
  730. package/templates/native-go/gitignore +0 -1
  731. package/templates/native-go/i18n/glossary.json +0 -663
  732. package/templates/native-go/i18n/messages/de.json +0 -29
  733. package/templates/native-go/i18n/messages/en.json +0 -29
  734. package/templates/native-go/i18n/messages/es.json +0 -29
  735. package/templates/native-go/i18n/messages/fr.json +0 -29
  736. package/templates/native-go/i18n/messages/it.json +0 -29
  737. package/templates/native-go/i18n/messages/ja.json +0 -29
  738. package/templates/native-go/i18n/messages/ko.json +0 -29
  739. package/templates/native-go/i18n/messages/zh-CN.json +0 -29
  740. package/templates/native-go/i18n/messages/zh-TW.json +0 -29
  741. package/templates/native-go/ui/app.css +0 -45
  742. package/templates/native-go/ui/app.js +0 -111
  743. package/templates/native-go-delegate/DELEGATE.md +0 -263
  744. package/templates/native-go-delegate/backend/cmd/background-worker/main.go +0 -48
  745. package/templates/native-go-delegate/backend/internal/app/delegate.go +0 -25
  746. package/templates/native-go-delegate/backend/internal/app/delegate_on.go +0 -5
  747. package/templates/native-go-delegate/backend/internal/app/delegate_routes_test.go +0 -31
  748. package/templates/native-go-delegate/backend/internal/background/delegate_review_test.go +0 -174
  749. package/templates/native-go-delegate/backend/internal/background/delegated.go +0 -277
  750. package/templates/native-go-delegate/backend/internal/background/delegated_moves.go +0 -270
  751. package/templates/native-go-delegate/backend/internal/background/delegated_test.go +0 -34
  752. package/templates/native-go-delegate/backend/internal/delegate/admission_recovery_test.go +0 -410
  753. package/templates/native-go-delegate/backend/internal/delegate/busy_review_test.go +0 -15
  754. package/templates/native-go-delegate/backend/internal/delegate/cancel_contract_test.go +0 -95
  755. package/templates/native-go-delegate/backend/internal/delegate/client.go +0 -151
  756. package/templates/native-go-delegate/backend/internal/delegate/client_test.go +0 -214
  757. package/templates/native-go-delegate/backend/internal/delegate/destination.go +0 -110
  758. package/templates/native-go-delegate/backend/internal/delegate/destination_state.go +0 -117
  759. package/templates/native-go-delegate/backend/internal/delegate/destination_state_test.go +0 -60
  760. package/templates/native-go-delegate/backend/internal/delegate/destination_test.go +0 -116
  761. package/templates/native-go-delegate/backend/internal/delegate/example.go +0 -81
  762. package/templates/native-go-delegate/backend/internal/delegate/example_test.go +0 -91
  763. package/templates/native-go-delegate/backend/internal/delegate/executor_contract_test.go +0 -511
  764. package/templates/native-go-delegate/backend/internal/delegate/files.go +0 -132
  765. package/templates/native-go-delegate/backend/internal/delegate/long_running_routes.go +0 -92
  766. package/templates/native-go-delegate/backend/internal/delegate/long_running_routes_test.go +0 -99
  767. package/templates/native-go-delegate/backend/internal/delegate/move.go +0 -348
  768. package/templates/native-go-delegate/backend/internal/delegate/move_test.go +0 -351
  769. package/templates/native-go-delegate/backend/internal/delegate/operations_list.go +0 -65
  770. package/templates/native-go-delegate/backend/internal/delegate/operations_list_test.go +0 -114
  771. package/templates/native-go-delegate/backend/internal/delegate/retry.go +0 -106
  772. package/templates/native-go-delegate/backend/internal/delegate/retry_test.go +0 -143
  773. package/templates/native-go-delegate/backend/internal/delegate/service.go +0 -364
  774. package/templates/native-go-delegate/backend/internal/delegate/service_test.go +0 -318
  775. package/templates/native-go-delegate/backend/internal/delegate/staging.go +0 -121
  776. package/templates/native-go-delegate/backend/internal/delegate/status_disabled_test.go +0 -51
  777. package/templates/native-go-delegate/backend/internal/delegate/testdata/executor_contract.txt +0 -112
  778. package/templates/native-go-delegate/backend/internal/delegate/transient_contract_test.go +0 -137
  779. package/templates/native-go-delegate/backend/internal/delegate/wait_cancel_test.go +0 -101
  780. package/templates/native-go-delegate/backend/internal/delegate/worker.go +0 -225
  781. package/templates/native-go-delegate/backend/internal/filestation/files.go +0 -43
  782. package/templates/native-go-delegate/backend/internal/filestation/files_test.go +0 -59
  783. package/templates/native-go-delegate/frontend/src/CapabilityPanels.vue +0 -37
  784. package/templates/native-go-delegate/frontend/src/delegate/BackgroundSavePanel.vue +0 -113
  785. package/templates/native-go-delegate/frontend/src/delegate/DelegatePanel.vue +0 -70
  786. package/templates/native-go-delegate/frontend/src/delegate/copy.ts +0 -8
  787. package/templates/native-go-delegate/frontend/src/delegate/i18n/waiting.json +0 -11
  788. package/templates/native-go-delegate/frontend/test/background-save.test.ts +0 -121
  789. package/templates/native-go-delegate/frontend/test/delegate.test.ts +0 -145
  790. package/templates/native-go-delegate/frontend/test/scope-settings.test.ts +0 -49
  791. package/templates/native-go-delegate/test-frontend.sh +0 -12
  792. package/templates/native-go-delegate/test.sh +0 -18
  793. package/templates/native-go-jobs/BACKGROUND.md +0 -108
  794. package/templates/native-go-jobs/backend/internal/app/background_on.go +0 -7
  795. package/templates/native-go-jobs/backend/internal/app/background_routes_test.go +0 -90
  796. package/templates/native-go-jobs/frontend/src/background/BackgroundPanel.vue +0 -170
  797. package/templates/native-go-jobs/frontend/src/background/i18n/de.json +0 -75
  798. package/templates/native-go-jobs/frontend/src/background/i18n/en.json +0 -75
  799. package/templates/native-go-jobs/frontend/src/background/i18n/es.json +0 -75
  800. package/templates/native-go-jobs/frontend/src/background/i18n/fr.json +0 -75
  801. package/templates/native-go-jobs/frontend/src/background/i18n/it.json +0 -75
  802. package/templates/native-go-jobs/frontend/src/background/i18n/ja.json +0 -75
  803. package/templates/native-go-jobs/frontend/src/background/i18n/ko.json +0 -75
  804. package/templates/native-go-jobs/frontend/src/background/i18n/zh-CN.json +0 -75
  805. package/templates/native-go-jobs/frontend/src/background/i18n/zh-TW.json +0 -75
  806. package/templates/native-go-jobs/frontend/src/background/i18n.ts +0 -19
  807. package/templates/native-go-jobs/frontend/src/background/picker-provider.ts +0 -12
  808. package/templates/native-go-jobs/frontend/src/background/request-key.ts +0 -5
  809. package/templates/native-go-jobs/frontend/test/background.test.ts +0 -205
  810. package/templates/native-go-root-ops/backend/internal/app/executor.go +0 -140
  811. package/templates/native-go-root-ops/backend/internal/app/executor_test.go +0 -117
  812. package/templates/native-go-root-ops/root/whoami.sh +0 -3
  813. package/templates/native-go-vue/README.md +0 -47
  814. package/templates/native-go-vue/frontend/DESIGN.md +0 -61
  815. package/templates/native-go-vue/frontend/package-lock.json +0 -2530
  816. package/templates/native-go-vue/frontend/package.json +0 -6
  817. package/templates/native-go-vue/frontend/src/App.vue +0 -96
  818. package/templates/native-go-vue/frontend/src/CapabilityPanels.vue +0 -6
  819. package/templates/native-go-vue/frontend/src/context.ts +0 -78
  820. package/templates/native-go-vue/frontend/src/delegate/ExecutorSettings.vue +0 -70
  821. package/templates/native-go-vue/frontend/src/delegate/catalogs.ts +0 -11
  822. package/templates/native-go-vue/frontend/src/delegate/copy.test.ts +0 -12
  823. package/templates/native-go-vue/frontend/src/delegate/copy.ts +0 -4
  824. package/templates/native-go-vue/frontend/src/delegate/executor-settings.test.ts +0 -23
  825. package/templates/native-go-vue/frontend/src/delegate/executor-setup.ts +0 -24
  826. package/templates/native-go-vue/frontend/src/delegate/facade.test.ts +0 -100
  827. package/templates/native-go-vue/frontend/src/delegate/facade.ts +0 -85
  828. package/templates/native-go-vue/frontend/src/delegate/i18n/de.json +0 -47
  829. package/templates/native-go-vue/frontend/src/delegate/i18n/en.json +0 -47
  830. package/templates/native-go-vue/frontend/src/delegate/i18n/es.json +0 -47
  831. package/templates/native-go-vue/frontend/src/delegate/i18n/fr.json +0 -47
  832. package/templates/native-go-vue/frontend/src/delegate/i18n/it.json +0 -47
  833. package/templates/native-go-vue/frontend/src/delegate/i18n/ja.json +0 -47
  834. package/templates/native-go-vue/frontend/src/delegate/i18n/ko.json +0 -47
  835. package/templates/native-go-vue/frontend/src/delegate/i18n/save/de.json +0 -42
  836. package/templates/native-go-vue/frontend/src/delegate/i18n/save/en.json +0 -42
  837. package/templates/native-go-vue/frontend/src/delegate/i18n/save/es.json +0 -42
  838. package/templates/native-go-vue/frontend/src/delegate/i18n/save/fr.json +0 -42
  839. package/templates/native-go-vue/frontend/src/delegate/i18n/save/it.json +0 -42
  840. package/templates/native-go-vue/frontend/src/delegate/i18n/save/ja.json +0 -42
  841. package/templates/native-go-vue/frontend/src/delegate/i18n/save/ko.json +0 -42
  842. package/templates/native-go-vue/frontend/src/delegate/i18n/save/zh-CN.json +0 -42
  843. package/templates/native-go-vue/frontend/src/delegate/i18n/save/zh-TW.json +0 -42
  844. package/templates/native-go-vue/frontend/src/delegate/i18n/zh-CN.json +0 -47
  845. package/templates/native-go-vue/frontend/src/delegate/i18n/zh-TW.json +0 -47
  846. package/templates/native-go-vue/frontend/src/delegate/long-running.ts +0 -57
  847. package/templates/native-go-vue/frontend/src/delegate/save-copy.test.ts +0 -12
  848. package/templates/native-go-vue/frontend/src/delegate/save-copy.ts +0 -24
  849. package/templates/native-go-vue/frontend/src/delegate/scoped-picker.test.ts +0 -12
  850. package/templates/native-go-vue/frontend/src/delegate/scoped-picker.ts +0 -21
  851. package/templates/native-go-vue/frontend/src/files/FileBrowser.vue +0 -131
  852. package/templates/native-go-vue/frontend/src/files/FilesPage.vue +0 -35
  853. package/templates/native-go-vue/frontend/src/files/files.test.ts +0 -100
  854. package/templates/native-go-vue/frontend/src/files/provider.test.ts +0 -48
  855. package/templates/native-go-vue/frontend/src/files/transfers.test.ts +0 -27
  856. package/templates/native-go-vue/frontend/src/files/transfers.ts +0 -25
  857. package/templates/native-go-vue/frontend/src/i18n/de.json +0 -20
  858. package/templates/native-go-vue/frontend/src/i18n/en.json +0 -20
  859. package/templates/native-go-vue/frontend/src/i18n/es.json +0 -20
  860. package/templates/native-go-vue/frontend/src/i18n/fr.json +0 -20
  861. package/templates/native-go-vue/frontend/src/i18n/it.json +0 -20
  862. package/templates/native-go-vue/frontend/src/i18n/ja.json +0 -20
  863. package/templates/native-go-vue/frontend/src/i18n/ko.json +0 -20
  864. package/templates/native-go-vue/frontend/src/i18n/zh-CN.json +0 -20
  865. package/templates/native-go-vue/frontend/src/i18n/zh-TW.json +0 -20
  866. package/templates/native-go-vue/frontend/src/i18n.ts +0 -13
  867. package/templates/native-go-vue/frontend/src/identity/DESIGN.md +0 -46
  868. package/templates/native-go-vue/frontend/src/identity/LoginPage.vue +0 -78
  869. package/templates/native-go-vue/frontend/src/identity/i18n/de.json +0 -27
  870. package/templates/native-go-vue/frontend/src/identity/i18n/en.json +0 -27
  871. package/templates/native-go-vue/frontend/src/identity/i18n/es.json +0 -27
  872. package/templates/native-go-vue/frontend/src/identity/i18n/fr.json +0 -27
  873. package/templates/native-go-vue/frontend/src/identity/i18n/it.json +0 -27
  874. package/templates/native-go-vue/frontend/src/identity/i18n/ja.json +0 -27
  875. package/templates/native-go-vue/frontend/src/identity/i18n/ko.json +0 -27
  876. package/templates/native-go-vue/frontend/src/identity/i18n/zh-CN.json +0 -27
  877. package/templates/native-go-vue/frontend/src/identity/i18n/zh-TW.json +0 -27
  878. package/templates/native-go-vue/frontend/src/identity/i18n.ts +0 -14
  879. package/templates/native-go-vue/frontend/src/identity/login.test.ts +0 -32
  880. package/templates/native-go-vue/frontend/src/identity/session.test.ts +0 -33
  881. package/templates/native-go-vue/frontend/src/identity/session.ts +0 -74
  882. package/templates/native-go-vue/frontend/src/main.ts +0 -32
  883. package/templates/native-go-vue/frontend/src/nas/NasPicker.vue +0 -42
  884. package/templates/native-go-vue/frontend/src/nas/contract.ts +0 -12
  885. package/templates/native-go-vue/frontend/src/nas/destination.test.ts +0 -48
  886. package/templates/native-go-vue/frontend/src/nas/i18n/files/de.json +0 -41
  887. package/templates/native-go-vue/frontend/src/nas/i18n/files/en.json +0 -41
  888. package/templates/native-go-vue/frontend/src/nas/i18n/files/es.json +0 -41
  889. package/templates/native-go-vue/frontend/src/nas/i18n/files/fr.json +0 -41
  890. package/templates/native-go-vue/frontend/src/nas/i18n/files/it.json +0 -41
  891. package/templates/native-go-vue/frontend/src/nas/i18n/files/ja.json +0 -41
  892. package/templates/native-go-vue/frontend/src/nas/i18n/files/ko.json +0 -41
  893. package/templates/native-go-vue/frontend/src/nas/i18n/files/zh-CN.json +0 -41
  894. package/templates/native-go-vue/frontend/src/nas/i18n/files/zh-TW.json +0 -41
  895. package/templates/native-go-vue/frontend/src/nas/i18n.ts +0 -2
  896. package/templates/native-go-vue/frontend/src/nas/locale.ts +0 -24
  897. package/templates/native-go-vue/frontend/src/nas/provider.ts +0 -50
  898. package/templates/native-go-vue/frontend/src/nas/use-request.ts +0 -18
  899. package/templates/native-go-vue/frontend/src/portal/PortalSettings.vue +0 -39
  900. package/templates/native-go-vue/frontend/src/shell/AppShell.vue +0 -48
  901. package/templates/native-go-vue/frontend/src/shell/i18n/de.json +0 -4
  902. package/templates/native-go-vue/frontend/src/shell/i18n/en.json +0 -4
  903. package/templates/native-go-vue/frontend/src/shell/i18n/es.json +0 -4
  904. package/templates/native-go-vue/frontend/src/shell/i18n/fr.json +0 -4
  905. package/templates/native-go-vue/frontend/src/shell/i18n/it.json +0 -4
  906. package/templates/native-go-vue/frontend/src/shell/i18n/ja.json +0 -4
  907. package/templates/native-go-vue/frontend/src/shell/i18n/ko.json +0 -4
  908. package/templates/native-go-vue/frontend/src/shell/i18n/zh-CN.json +0 -4
  909. package/templates/native-go-vue/frontend/src/shell/i18n/zh-TW.json +0 -4
  910. package/templates/native-go-vue/frontend/src/shell/i18n.ts +0 -17
  911. package/templates/native-go-vue/frontend/src/shell/pages.ts +0 -15
  912. package/templates/native-go-vue/frontend/src/style.css +0 -27
  913. package/templates/native-go-vue/frontend/test/apps.test.ts +0 -57
  914. package/templates/native-go-vue/frontend/test/native-controls.test.ts +0 -27
  915. package/templates/native-go-vue/frontend/test/portal-settings.test.ts +0 -71
  916. package/templates/native-go-vue/frontend/test/shell-i18n.test.ts +0 -50
  917. package/templates/native-go-vue/frontend/test/shell-ui.test.ts +0 -20
  918. package/templates/native-go-vue/frontend/test/shell.test.ts +0 -30
  919. package/templates/native-go-vue/frontend/tsconfig.json +0 -1
  920. package/templates/native-go-vue/frontend/vite.config.ts +0 -10
  921. package/templates/native-go-vue/gitignore +0 -2
  922. /package/{dist/templates/_daemon → assets/go/daemon}/fixture_linux_test.go +0 -0
  923. /package/{dist/templates/_daemon → assets/go/daemon}/fixture_other_test.go +0 -0
  924. /package/{dist/templates/_daemon → assets/go/daemon}/go.mod +0 -0
  925. /package/{dist/templates/_daemon → assets/go/daemon}/main.go +0 -0
  926. /package/{dist/templates/_daemon → assets/go/daemon}/main_test.go +0 -0
  927. /package/{dist/templates/_daemon → assets/go/daemon}/process_linux.go +0 -0
  928. /package/{dist/templates/_daemon → assets/go/daemon}/process_linux_test.go +0 -0
  929. /package/{dist/templates/_daemon → assets/go/daemon}/process_other.go +0 -0
  930. /package/{dist/templates/_daemon → assets/go/daemon}/testdata/child.go +0 -0
  931. /package/{dist/templates/_gateway → assets/go/gateway}/auth.go +0 -0
  932. /package/{dist/templates/_gateway → assets/go/gateway}/auth_test.go +0 -0
  933. /package/{dist/templates/_gateway → assets/go/gateway}/cgi.go +0 -0
  934. /package/{dist/templates/_gateway → assets/go/gateway}/cgi_test.go +0 -0
  935. /package/{dist/templates/_gateway → assets/go/gateway}/csrf.go +0 -0
  936. /package/{dist/templates/_gateway → assets/go/gateway}/csrf_test.go +0 -0
  937. /package/{dist/templates/_gateway → assets/go/gateway}/directory.go +0 -0
  938. /package/{dist/templates/_gateway → assets/go/gateway}/directory_test.go +0 -0
  939. /package/{dist/templates/_gateway → assets/go/gateway}/gateway.go +0 -0
  940. /package/{dist/templates/_gateway → assets/go/gateway}/gateway_test.go +0 -0
  941. /package/{dist/templates/_gateway → assets/go/gateway}/go.mod +0 -0
  942. /package/{dist/templates/_gateway → assets/go/gateway}/groups.go +0 -0
  943. /package/{dist/templates/_gateway → assets/go/gateway}/main.go +0 -0
  944. /package/{dist/templates/_shared → assets/licenses}/GO-LICENSE +0 -0
  945. /package/{dist/templates/_shared → assets/licenses}/GO-PATENTS +0 -0
  946. /package/{dist/templates/_shared/LICENSES → assets/licenses}/TEMPLATE.txt +0 -0
@@ -384,6 +384,39 @@ export declare const WIZARD_MESSAGES: {
384
384
  es: string;
385
385
  it: string;
386
386
  };
387
+ "uninstall.appPrivilege": {
388
+ en: string;
389
+ "zh-TW": string;
390
+ "zh-CN": string;
391
+ ja: string;
392
+ ko: string;
393
+ de: string;
394
+ fr: string;
395
+ es: string;
396
+ it: string;
397
+ };
398
+ "uninstall.appPrivilege.auto": {
399
+ en: string;
400
+ "zh-TW": string;
401
+ "zh-CN": string;
402
+ ja: string;
403
+ ko: string;
404
+ de: string;
405
+ fr: string;
406
+ es: string;
407
+ it: string;
408
+ };
409
+ "uninstall.portal.auto": {
410
+ en: string;
411
+ "zh-TW": string;
412
+ "zh-CN": string;
413
+ ja: string;
414
+ ko: string;
415
+ de: string;
416
+ fr: string;
417
+ es: string;
418
+ it: string;
419
+ };
387
420
  "uninstall.keep.native": {
388
421
  en: string;
389
422
  "zh-TW": string;
@@ -384,6 +384,39 @@ export const WIZARD_MESSAGES = {
384
384
  "es": "La desinstalación elimina de forma asíncrona en segundo plano el runtime executor, el socket y las delegaciones. Borra las tareas «{package} executor boot» y «{package} executor control» tras verificar el nombre exacto, el propietario root y el resumen del script. El buzón purge de preuninst solicita la limpieza inmediatamente; esta se completa de forma asíncrona. El tiempo de espera agotado no bloquea la desinstalación. Como respaldo, el monitor pausa el servicio si falta el directorio del paquete o su identidad INFO y limpia solo tras 10 minutos de ausencia continua. Su reaparición reinicia el temporizador. Si el proceso no existe, la limpieza espera al próximo arranque. Las tareas modificadas o no verificables se conservan para revisión del administrador en Panel de control > Programador de tareas.",
385
385
  "it": "La disinstallazione elimina in modo asincrono in background runtime executor, socket e deleghe. Le attività “{package} executor boot” e “{package} executor control” vengono eliminate dopo aver verificato nome esatto, proprietario root e digest dello script. La mailbox purge di preuninst richiede subito la pulizia, che termina in modo asincrono. Un timeout non blocca la disinstallazione. Come riserva, il monitor sospende il servizio se mancano la directory del pacchetto o la sua identità INFO e pulisce solo dopo 10 minuti di assenza continua. La ricomparsa azzera il timer. Se il processo è assente, la pulizia attende il prossimo avvio. Le attività modificate o non verificabili restano da esaminare da un amministratore in Pannello di controllo > Utilità di pianificazione."
386
386
  },
387
+ "uninstall.appPrivilege": {
388
+ en: "DSM keeps the rules of {package} in Control Panel > Application Privileges after uninstall, and a later install under the same name applies them again. If the app will not be reinstalled, an administrator can remove its rules there.",
389
+ "zh-TW": "解除安裝後,DSM 會保留 {package} 在「控制台」>「應用程式權限」中的規則;之後以相同名稱安裝時會再次套用。若不再安裝此 App,管理員可在該處移除它的規則。",
390
+ "zh-CN": "卸载后,DSM 会保留 {package} 在“控制面板”>“应用程序权限”中的规则;之后以相同名称安装时会再次应用。如果不再安装此应用,管理员可在该处删除它的规则。",
391
+ ja: "アンインストール後も DSM は [コントロール パネル] > [アプリケーション権限] にある {package} のルールを保持し、同じ名前で再インストールすると再び適用します。再インストールしない場合は、管理者がそこでルールを削除できます。",
392
+ ko: "제거 후에도 DSM은 제어판 > 응용 프로그램 권한에 있는 {package}의 규칙을 유지하며, 같은 이름으로 다시 설치하면 다시 적용합니다. 다시 설치하지 않을 경우 관리자가 그곳에서 규칙을 삭제할 수 있습니다.",
393
+ de: "DSM behält die Regeln von {package} unter Systemsteuerung > Anwendungsberechtigungen nach der Deinstallation bei und wendet sie bei einer späteren Installation unter demselben Namen erneut an. Wird die App nicht erneut installiert, kann ein Administrator die Regeln dort entfernen.",
394
+ fr: "DSM conserve les règles de {package} dans Panneau de configuration > Privilèges d’application après la désinstallation et les applique de nouveau lors d’une installation ultérieure sous le même nom. Si l’application ne sera pas réinstallée, un administrateur peut y supprimer ses règles.",
395
+ es: "DSM conserva las reglas de {package} en Panel de control > Privilegios de aplicaciones tras la desinstalación y las aplica de nuevo en una instalación posterior con el mismo nombre. Si la aplicación no se va a reinstalar, un administrador puede eliminar allí sus reglas.",
396
+ it: "DSM mantiene le regole di {package} in Pannello di controllo > Privilegi applicazione dopo la disinstallazione e le applica di nuovo a una successiva installazione con lo stesso nome. Se l’applicazione non verrà reinstallata, un amministratore può rimuoverne le regole da lì.",
397
+ },
398
+ "uninstall.appPrivilege.auto": {
399
+ en: "Uninstall removes the rules of {package} in Control Panel > Application Privileges automatically, so a later install under the same name does not apply them again. Only if this cleanup failed, as the system log entry synopkgland-executor reports, an administrator can remove the rules there.",
400
+ "zh-TW": "解除安裝會自動移除 {package} 在「控制台」>「應用程式權限」中的規則,之後以相同名稱安裝時不會再次套用。只有在自動清除失敗時(系統日誌 synopkgland-executor 會記錄),管理員才需要在該處移除這些規則。",
401
+ "zh-CN": "卸载会自动删除 {package} 在“控制面板”>“应用程序权限”中的规则,之后以相同名称安装时不会再次应用。只有在自动清理失败时(系统日志 synopkgland-executor 会记录),管理员才需要在该处删除这些规则。",
402
+ ja: "アンインストール時に [コントロール パネル] > [アプリケーション権限] にある {package} のルールを自動的に削除するため、同じ名前で再インストールしても再び適用されません。この削除に失敗した場合 (システム ログの synopkgland-executor に記録されます) のみ、管理者がそこでルールを削除してください。",
403
+ ko: "제거 시 제어판 > 응용 프로그램 권한에 있는 {package}의 규칙을 자동으로 삭제하므로, 같은 이름으로 다시 설치해도 다시 적용되지 않습니다. 이 정리가 실패한 경우에만(시스템 로그 synopkgland-executor에 기록됨) 관리자가 그곳에서 규칙을 삭제하십시오.",
404
+ de: "Die Deinstallation entfernt die Regeln von {package} unter Systemsteuerung > Anwendungsberechtigungen automatisch, sodass eine spätere Installation unter demselben Namen sie nicht erneut anwendet. Nur wenn diese Bereinigung fehlschlägt, was der Systemprotokolleintrag synopkgland-executor meldet, muss ein Administrator die Regeln dort entfernen.",
405
+ fr: "La désinstallation supprime automatiquement les règles de {package} dans Panneau de configuration > Privilèges d’application, si bien qu’une installation ultérieure sous le même nom ne les applique pas de nouveau. Seulement si ce nettoyage échoue, ce que signale l’entrée synopkgland-executor du journal système, un administrateur doit y supprimer les règles.",
406
+ es: "La desinstalación elimina automáticamente las reglas de {package} en Panel de control > Privilegios de aplicaciones, de modo que una instalación posterior con el mismo nombre no las aplica de nuevo. Solo si esta limpieza falla, como indica la entrada synopkgland-executor del registro del sistema, un administrador debe eliminar allí las reglas.",
407
+ it: "La disinstallazione rimuove automaticamente le regole di {package} in Pannello di controllo > Privilegi applicazione, così una successiva installazione con lo stesso nome non le applica di nuovo. Solo se questa pulizia non riesce, come segnala la voce synopkgland-executor del registro di sistema, un amministratore deve rimuovere le regole da lì.",
408
+ },
409
+ "uninstall.portal.auto": {
410
+ en: "After DSM removes the Login Portal alias of {package}, uninstall reloads the web server automatically, so the alias stops at once. Only if this reload failed, as the system log entry synopkgland-executor reports, an administrator can save an application alias in Control Panel > Login Portal > Applications, which reloads the web server, or restart the NAS.",
411
+ "zh-TW": "DSM 移除 {package} 的登入入口別名後,解除安裝會自動重新載入網頁伺服器,讓該別名立即失效。只有在重新載入失敗時(系統日誌 synopkgland-executor 會記錄),管理員才需要在「控制台」>「登入入口」>「應用程式」儲存任一應用程式別名(會重新載入網頁伺服器),或重新啟動 NAS。",
412
+ "zh-CN": "DSM 删除 {package} 的登录门户别名后,卸载会自动重新加载网页服务器,使该别名立即失效。只有在重新加载失败时(系统日志 synopkgland-executor 会记录),管理员才需要在“控制面板”>“登录门户”>“应用程序”保存任一应用程序别名(会重新加载网页服务器),或重新启动 NAS。",
413
+ ja: "DSM が {package} のログイン ポータルのエイリアスを削除した後、アンインストール時に Web サーバーを自動的に再読み込みするため、エイリアスはすぐに無効になります。再読み込みに失敗した場合 (システム ログの synopkgland-executor に記録されます) のみ、管理者が [コントロール パネル] > [ログイン ポータル] > [アプリケーション] でいずれかのアプリケーションのエイリアスを保存する (Web サーバーが再読み込みされます) か、NAS を再起動してください。",
414
+ ko: "DSM이 {package}의 로그인 포털 별칭을 삭제한 후 제거 과정에서 웹 서버를 자동으로 다시 로드하므로 별칭이 즉시 중지됩니다. 다시 로드가 실패한 경우에만(시스템 로그 synopkgland-executor에 기록됨) 관리자가 제어판 > 로그인 포털 > 응용 프로그램에서 응용 프로그램 별칭을 저장하거나(웹 서버가 다시 로드됨) NAS를 다시 시작하십시오.",
415
+ de: "Nachdem DSM den Anmeldeportal-Alias von {package} entfernt hat, lädt die Deinstallation den Webserver automatisch neu, sodass der Alias sofort endet. Nur wenn dieses Neuladen fehlschlägt, was der Systemprotokolleintrag synopkgland-executor meldet, muss ein Administrator unter Systemsteuerung > Anmeldeportal > Anwendungen einen Anwendungsalias speichern, wodurch der Webserver neu geladen wird, oder das NAS neu starten.",
416
+ fr: "Après que DSM a supprimé l’alias du Portail de connexion de {package}, la désinstallation recharge automatiquement le serveur web, si bien que l’alias cesse immédiatement. Seulement si ce rechargement échoue, ce que signale l’entrée synopkgland-executor du journal système, un administrateur doit enregistrer un alias d’application dans Panneau de configuration > Portail de connexion > Applications, ce qui recharge le serveur web, ou redémarrer le NAS.",
417
+ es: "Después de que DSM elimine el alias del Portal de inicio de sesión de {package}, la desinstalación recarga automáticamente el servidor web, de modo que el alias deja de funcionar al instante. Solo si esta recarga falla, como indica la entrada synopkgland-executor del registro del sistema, un administrador debe guardar un alias de aplicación en Panel de control > Portal de inicio de sesión > Aplicaciones, lo que recarga el servidor web, o reiniciar el NAS.",
418
+ it: "Dopo che DSM ha rimosso l’alias del Portale di accesso di {package}, la disinstallazione ricarica automaticamente il server web, così l’alias smette subito di funzionare. Solo se questo ricaricamento non riesce, come segnala la voce synopkgland-executor del registro di sistema, un amministratore deve salvare un alias di applicazione in Pannello di controllo > Portale di accesso > Applicazioni, che ricarica il server web, oppure riavviare il NAS.",
419
+ },
387
420
  "uninstall.keep.native": {
388
421
  en: "Never deleted: Shared Folders, the package account, and other apps' data.",
389
422
  "zh-TW": "不會被刪除:共用資料夾(Shared Folder)、套件帳號,以及其他 App 的資料。",
@@ -0,0 +1,15 @@
1
+ /**
2
+ * How each native-go capability is laid over the base template: the template
3
+ * directories copied on top, files borrowed from another overlay, and the
4
+ * base files the overlay replaces. init and add both read this table.
5
+ */
6
+ export interface CapabilityOverlay {
7
+ overlays: string[];
8
+ borrowed: string[];
9
+ removed: string[];
10
+ }
11
+ export declare const CAPABILITY_OVERLAYS: Record<string, CapabilityOverlay>;
12
+ /** The overlays of these capabilities, in table order, each once; a capability without one adds nothing. */
13
+ export declare function capabilityOverlays(names: readonly string[]): CapabilityOverlay;
14
+ /** A borrowed path names its overlay first; this is where it lands in a project. */
15
+ export declare const borrowedTarget: (path: string) => string;
@@ -0,0 +1,18 @@
1
+ const EXECUTOR_SHELL = ['backend/internal/app/executor.go', 'backend/internal/app/executor_test.go'];
2
+ export const CAPABILITY_OVERLAYS = {
3
+ 'root-ops': { overlays: ['native-go-root-ops'], borrowed: [], removed: ['backend/internal/app/root_none.go'] },
4
+ jobs: { overlays: ['native-go-jobs'], borrowed: [], removed: ['backend/internal/app/background_none.go'] },
5
+ delegate: {
6
+ overlays: ['native-go-jobs', 'native-go-delegate'],
7
+ borrowed: EXECUTOR_SHELL.map(file => `native-go-root-ops/${file}`),
8
+ removed: ['backend/internal/app/background_none.go', 'backend/internal/app/root_none.go', 'backend/internal/app/delegate_none.go'],
9
+ },
10
+ };
11
+ /** The overlays of these capabilities, in table order, each once; a capability without one adds nothing. */
12
+ export function capabilityOverlays(names) {
13
+ const chosen = Object.entries(CAPABILITY_OVERLAYS).filter(([name]) => names.includes(name)).map(([, overlay]) => overlay);
14
+ const unique = (pick) => [...new Set(chosen.flatMap(pick))];
15
+ return { overlays: unique(o => o.overlays), borrowed: unique(o => o.borrowed), removed: unique(o => o.removed) };
16
+ }
17
+ /** A borrowed path names its overlay first; this is where it lands in a project. */
18
+ export const borrowedTarget = (path) => path.split('/').slice(1).join('/');
@@ -0,0 +1,2 @@
1
+ /** This CLI's own release, read from its package.json. */
2
+ export declare const CLI_VERSION: string;
@@ -0,0 +1,3 @@
1
+ import { readFileSync } from "node:fs";
2
+ /** This CLI's own release, read from its package.json. */
3
+ export const CLI_VERSION = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8")).version;
package/dist/cli.js CHANGED
@@ -118,6 +118,7 @@ async function standaloneBuild(root, arches, options) {
118
118
  const result = isNativeLayout(root)
119
119
  ? await buildNativeLayout({ root, arches, outDir, minDsm: options.minDsm, jobs: options.jobs })
120
120
  : await buildStandalone({ root, arches: arches, outDir, minDsm: options.minDsm, jobs: options.jobs });
121
+ result.warnings?.forEach((warning) => console.error(warning));
121
122
  return result.outputs.map((output) => {
122
123
  if (!options.output)
123
124
  return output;
@@ -306,8 +307,9 @@ export async function runCli(argv) {
306
307
  },
307
308
  });
308
309
  stdout(`已建立 ${options.template} 專案於 ${targetDir}`);
310
+ // --install-links packs a local SDK like the released package; a symlink would load the checkout's own node_modules.
309
311
  if (options.template === "native-go")
310
- stdout(`下一步:\n cd ${dir}\n (cd backend && go test ./...)\n${existsSync(join(targetDir, "frontend", "package.json")) ? " (cd frontend && npm ci)\n" : ""} synopkgland build\n說明見 README.md。`);
312
+ stdout(`下一步:\n cd ${dir}\n (cd backend && go test ./...)\n${existsSync(join(targetDir, "frontend", "package.json")) ? ` (cd frontend && npm install${process.env.SYNOPKGLAND_SDK_DIR ? " --install-links" : ""})\n` : ""} synopkgland build\n說明見 README.md。`);
311
313
  });
312
314
  program
313
315
  .command("add <caps...>")
@@ -458,7 +460,7 @@ export async function runCli(argv) {
458
460
  .option("--json", "輸出單一 JSON 物件")
459
461
  .option("-o, --output <path>", "輸出 SPK,搭配單一 --arch")
460
462
  .option("--out-dir <dir>", "輸出目錄,原生專案預設 dist/")
461
- .option("--arch <families>", `架構,可用逗號分隔:${NATIVE_ARCH_FAMILIES.join(",")}(armv7 用於 native-go 與 binary,不用於 Container Manager App);native layout 另支援 armv8`)
463
+ .option("--arch <families>", `架構,可用逗號分隔或重複指定:${NATIVE_ARCH_FAMILIES.join(",")}(armv7 用於 native-go 與 binary,不用於 Container Manager App);native layout 另支援 armv8`, (value, previous) => [...(previous ?? []), value])
462
464
  .option("--min-dsm <version>", "最低 DSM 版本,省略時使用 manifest 值")
463
465
  .option("--jobs <n>", "同時建置的架構數,預設 1(依序)", Number)
464
466
  .option("--verify-reproducible [when]", "從乾淨狀態再建置一次並比對;when:changed(預設,依賴指紋未變時略過)或 always")
@@ -474,12 +476,12 @@ export async function runCli(argv) {
474
476
  options.arch === undefined
475
477
  ? undefined
476
478
  : standalone && isNativeLayout(standalone)
477
- ? String(options.arch).split(",").map((arch) => {
479
+ ? options.arch.join(",").split(",").map((arch) => {
478
480
  if (!Object.hasOwn(LAYOUT_ARCHES, arch))
479
481
  throw new Error(`Native layout arch must be one of ${Object.keys(LAYOUT_ARCHES).join(", ")}`);
480
482
  return arch;
481
483
  })
482
- : parseArchList(String(options.arch));
484
+ : parseArchList(options.arch.join(","));
483
485
  }
484
486
  catch (error) {
485
487
  throw failure("CLI_ARCH_INVALID", error instanceof Error ? error.message : String(error));
@@ -4,13 +4,11 @@ import { contractSpan, makeError } from "../errors.js";
4
4
  import { collectInstallParameters, getValuePosition, stringViolations, } from "./load.js";
5
5
  import { validateContractSchema } from "./schema-validate.js";
6
6
  import { DSM_GROUP_NAME, isWebAccessMode, isWebLaunchMode, readWebIntegration } from "./web-launch.js";
7
- import { contractPortalSupported, readPortalDeclaration } from "../portal/alias.js";
8
7
  import { validateContractIcon } from "./icon.js";
9
8
  import { validateContractI18n } from "./i18n.js";
10
9
  import { loadCompose } from "../compose/analyze.js";
11
10
  import { collectPosixAllSharesParameters, isPosixAllSharesType, validatePosixAllSharesSources, } from "./posix-all-shares.js";
12
11
  import { getErrorCode } from "../error-registry.js";
13
- import { isDsmAtLeast, PORTAL_MIN_DSM, portalMinDsmMessage } from "../build-spk/dsm-version.js";
14
12
  import { FORMAL_PACKAGE_IDENTITY_MAX_LENGTH, PACKAGE_IDENTITY_MAX_LENGTH, } from "../deploy/identity-shared.js";
15
13
  /** DSM 7.4 Package Center rejects a longer package identity outright. */
16
14
  const DSM_PACKAGE_IDENTITY_MAX = 32;
@@ -133,26 +131,11 @@ function validateWebPortal(parsed, contractFile) {
133
131
  return [];
134
132
  }
135
133
  const pos = getValuePosition(doc, ["integration", "web", "portal"]) ?? { line: 1, column: 1 };
136
- const at = contractSpan(contractFile, pos.line, pos.column, "integration.web.portal");
137
- if (!contractPortalSupported(contract)) {
138
- return [
139
- makeError("CONTRACT_PORTAL_UNSUPPORTED", at, "Application Portal 只支援以 DSM 視窗開啟、經 DSM 登入閘道的網頁 App。", "請使用 adminport、launch: dsm-window 與非 public 的 access,或移除 integration.web.portal。public App 已有同名的 Web Station 網址。"),
140
- ];
141
- }
142
- if (!readPortalDeclaration(portal, String(contract.package ?? ""))) {
143
- return [
144
- makeError("CONTRACT_PORTAL_INVALID", at, "integration.web.portal 必須是 {} 或 { alias },alias 為 1–64 個小寫英數字或 -,且不是 DSM 保留路徑。", "請省略 alias 以使用套件名稱,或改成例如 alias: my-app。"),
145
- ];
146
- }
147
- const osMinVer = contract.os_min_ver;
148
- if (typeof osMinVer === "string" && FULL_OS_MIN_VER.test(osMinVer) && !isDsmAtLeast(osMinVer, PORTAL_MIN_DSM)) {
149
- return [
150
- makeError("CONTRACT_PORTAL_MIN_DSM", at, portalMinDsmMessage(osMinVer, "integration.web.portal"), `請把 os_min_ver 改成 "${PORTAL_MIN_DSM}" 或更新,或移除 integration.web.portal。`),
151
- ];
152
- }
153
- return [];
134
+ // A Compose App has no root executor, and only its purge can stop nginx serving the alias after uninstall.
135
+ return [
136
+ makeError("CONTRACT_PORTAL_REQUIRES_EXECUTOR", contractSpan(contractFile, pos.line, pos.column, "integration.web.portal"), "Compose App 沒有 executor,不能宣告 Application Portal:解除安裝後 DSM 不會 reload nginx,別名要 root 才能清除。", "請移除 integration.web.portal;需要登入入口別名時,由管理員在 DSM 手動設定反向代理。"),
137
+ ];
154
138
  }
155
- const FULL_OS_MIN_VER = /^7\.\d+(\.\d+)?-\d+$/;
156
139
  function validateDeveloperString(value, contractFile, path, pos) {
157
140
  const errors = [];
158
141
  const violations = stringViolations(value);
@@ -59,15 +59,10 @@ export const ERROR_REGISTRY = {
59
59
  "description": "Headless App 不需要宣告 Web Launch Mode。",
60
60
  "suggestion": "請省略 integration.web.launch,或補上對應 Compose published port 的 adminport。"
61
61
  },
62
- "CONTRACT_PORTAL_INVALID": {
63
- "code": "CONTRACT_PORTAL_INVALID",
64
- "description": "integration.web.portal 的格式或 alias 不正確。",
65
- "suggestion": "請使用 {} 或 { alias: my-app };alias 為 1–64 個小寫英數字或 -,且不是 DSM 保留路徑。"
66
- },
67
- "CONTRACT_PORTAL_UNSUPPORTED": {
68
- "code": "CONTRACT_PORTAL_UNSUPPORTED",
69
- "description": "這個 App 的網頁入口無法加入 DSM Application Portal。",
70
- "suggestion": "Application Portal 需要 adminport、launch: dsm-window 與非 public 的 access;否則請移除 integration.web.portal。"
62
+ "CONTRACT_PORTAL_REQUIRES_EXECUTOR": {
63
+ "code": "CONTRACT_PORTAL_REQUIRES_EXECUTOR",
64
+ "description": "Compose App 宣告了 integration.web.portal;Compose App 沒有 executor,登入入口別名在解除安裝後要 root 才能讓 nginx 停止提供。",
65
+ "suggestion": "請移除 integration.web.portal;需要登入入口別名時,由管理員在 DSM 手動設定反向代理。"
71
66
  },
72
67
  "CONTRACT_ACCESS_INVALID": {
73
68
  "code": "CONTRACT_ACCESS_INVALID",
@@ -102,7 +97,7 @@ export const ERROR_REGISTRY = {
102
97
  "GATEWAY_BUILD_FAILED": {
103
98
  "code": "GATEWAY_BUILD_FAILED",
104
99
  "description": "DSM 驗證閘道建置失敗或產出不是對應架構的靜態 ELF。",
105
- "suggestion": "請查看 go build 輸出;閘道固定以 go1.26.9 建置,離線時請安裝 go1.26.9 或讓 GOPROXY 可提供 golang.org/toolchain,並確認 templates/_gateway 未被修改。"
100
+ "suggestion": "請查看 go build 輸出;閘道固定以 go1.26.9 建置,離線時請安裝 go1.26.9 或讓 GOPROXY 可提供 golang.org/toolchain,並確認 CLI 套件的 assets/go/gateway 未被修改。"
106
101
  },
107
102
  "CONTRACT_INVALID_STRING": {
108
103
  "code": "CONTRACT_INVALID_STRING",
@@ -587,13 +582,18 @@ export const ERROR_REGISTRY = {
587
582
  "STANDALONE_GO_BUILD_FAILED": {
588
583
  "code": "STANDALONE_GO_BUILD_FAILED",
589
584
  "description": "go build 失敗。",
590
- "suggestion": "請在 backend 目錄執行 go build ./... 並修正錯誤。"
585
+ "suggestion": "請在 backend 目錄執行 go build ./... 並修正錯誤。取不到 github.com/synopackageland/syno-pkg-land-sdk 時,設定 GOPRIVATE=github.com/synopackageland/* 並讓 git 能以憑證讀 github.com。"
591
586
  },
592
587
  "STANDALONE_PORTAL_INVALID": {
593
588
  "code": "STANDALONE_PORTAL_INVALID",
594
589
  "description": "dsm-package.yaml 的 portal 格式或 alias 不正確。",
595
590
  "suggestion": "請使用 portal: {} 或 portal: { alias: my-app };alias 為 1–64 個小寫英數字或 -,且不是 DSM 保留路徑。"
596
591
  },
592
+ "STANDALONE_PORTAL_REQUIRES_EXECUTOR": {
593
+ "code": "STANDALONE_PORTAL_REQUIRES_EXECUTOR",
594
+ "description": "沒有 executor(capabilities.rootOps 或 delegate)的 App 宣告了 portal。",
595
+ "suggestion": "登入入口別名在解除安裝後要 root 才能讓 nginx 停止提供,而無升權 App 任何階段都不使用 root。請加 capabilities.rootOps 或 delegate(executor 層級),或移除 portal,改由管理員在 DSM 手動設定反向代理。"
596
+ },
597
597
  "STANDALONE_I18N_INVALID": {
598
598
  "code": "STANDALONE_I18N_INVALID",
599
599
  "description": "dsm-package.yaml 的 i18n 設定不合法。",
@@ -649,8 +649,7 @@ for (const [code, description, suggestion] of [
649
649
  ERROR_REGISTRY[code] = { code, description, suggestion };
650
650
  ERROR_REGISTRY["ADD_LAYOUT_UNSUPPORTED"] = { "code": "ADD_LAYOUT_UNSUPPORTED", "description": "SDK overlay 需要標準 backend 目錄。", "suggestion": "使用 backend.dir: backend,或手動合併 SDK overlay。" };
651
651
  ERROR_REGISTRY["MIN_DSM_CONTAINER_FLOOR"] = { "code": "MIN_DSM_CONTAINER_FLOOR", "description": "Compose 最低 DSM 版本過低。", "suggestion": "Compose 需要 DSM 7.2.1-69057 或以上。" };
652
- for (const code of ["STANDALONE_PORTAL_MIN_DSM", "CONTRACT_PORTAL_MIN_DSM"])
653
- ERROR_REGISTRY[code] = { code, "description": "宣告 portal 的套件 os_min_ver 低於 DSM 7.3.2-86009。", "suggestion": "DSM 7.1.1 以 320 拒裝帶 portal 的未簽章套件、7.2 未驗證;把 os_min_ver 提高到 7.3.2-86009 以上,或移除 portal。" };
652
+ ERROR_REGISTRY.STANDALONE_PORTAL_MIN_DSM = { "code": "STANDALONE_PORTAL_MIN_DSM", "description": "宣告 portal 的套件 os_min_ver 低於 DSM 7.3.2-86009。", "suggestion": "DSM 7.1.1 以 320 拒裝帶 portal 的未簽章套件、7.2 未驗證;把 os_min_ver 提高到 7.3.2-86009 以上,或移除 portal。" };
654
653
  ERROR_REGISTRY["MIN_DSM_INVALID"] = { "code": "MIN_DSM_INVALID", "description": "最低 DSM 版本格式不合法。", "suggestion": "指定 7.x release 或完整 7.x-build。" };
655
654
  ERROR_REGISTRY["NOTICE_UNSAFE"] = { "code": "NOTICE_UNSAFE", "description": "授權檔案不符合一般檔案限制。", "suggestion": "移除 symlink、特殊檔與超大授權檔案。" };
656
655
  ERROR_REGISTRY["NOTICE_MISSING"] = { "code": "NOTICE_MISSING", "description": "缺少第三方授權資訊。", "suggestion": "重新安裝模板依賴並產生 third-party notices。" };
@@ -695,7 +694,15 @@ export function getErrorCode(code) {
695
694
  return ERROR_REGISTRY[code];
696
695
  }
697
696
  for (const [code, description, suggestion] of [
698
- ["EXECUTOR_BUILD_FAILED", "executor 或 lifecycle helper 編譯失敗,或 CLI 套件缺少 executor 原始碼。", "確認已安裝 Go 1.21 以上且可取得 go1.26.9(離線時請先備妥),查看訊息中的編譯器輸出;原始碼缺少時重新安裝 CLI。"],
697
+ ["EXECUTOR_BUILD_FAILED", "從 App 相依的 SDK 版本編譯 executor 或 lifecycle helper 失敗。", "確認已安裝 Go 1.21 以上且可取得 go1.26.9(離線時請先備妥),查看訊息中的編譯器輸出。"],
698
+ ["EXECUTOR_DIGEST_MISMATCH", "由 SDK 版本建出的 executor 與 CLI 內建的 sha256 表不符,或表中沒有這個 SDK 版本。", "確認 backend/go.mod 的 github.com/synopackageland/syno-pkg-land-sdk 是正式版本且 Go 為 go1.26.9;表中沒有該版本時升級 CLI。"],
699
+ ["EXECUTOR_DIGEST_UNVERIFIED", "SYNOPKGLAND_SDK_DIR 指向本機 SDK,executor 未對照 sha256 表(警告)。", "只用於開發;要發佈的 SPK 請取消 SYNOPKGLAND_SDK_DIR 後重新 build。"],
700
+ ["SDK_REQUIRED", "rootOps 或 delegate 需要 SDK,但 backend/go.mod 沒有 require github.com/synopackageland/syno-pkg-land-sdk。", "在 backend/go.mod 加入 require github.com/synopackageland/syno-pkg-land-sdk 與 CLI 同一 minor 的版本,或改用 init 產生的 Go 後端。"],
701
+ ["SDK_VERSION_MISMATCH", "frontend/package.json 的 @synopackageland/sdk 與 backend/go.mod 要求的 SDK 版本不同。", "把兩邊改成同一個版本;file: 相依時,比對的是該目錄 package.json 的 version。"],
702
+ ["SDK_UNSUPPORTED", "backend/go.mod 要求的 SDK 不是這個 CLI 的 minor 版本線。", "改用與 SDK 同一 minor 的 CLI,或把 SDK 升到 CLI 支援的版本線(訊息列出)。"],
703
+ ["SDK_DIR_NOT_READY", "SYNOPKGLAND_SDK_DIR 指向的 SDK checkout 根目錄缺少 go.mod,或 Vue 專案需要的 ts 套件尚未建置(沒有 ts/dist)。", "指向 syno-pkg-land-sdk checkout;Vue 專案先在 $SYNOPKGLAND_SDK_DIR/ts 執行 npm ci && npm run build(npm 安裝 file: 套件時不會替它 build)。"],
704
+ ["SDK_DOWNLOAD_FAILED", "go mod download 取不到 backend/go.mod 要求的 SDK 版本。", "SDK repo 目前是 private,不能經 proxy.golang.org 取得:設定 GOPRIVATE=github.com/synopackageland/*(例如 go env -w),並讓 git 能以憑證讀 github.com(git ls-remote 可驗證);再確認版本存在。離線時先在同一台機器 go mod download 一次。"],
705
+ ["TEMPLATES_MISSING", "找不到 @synopackageland/templates。", "重新安裝 @synopackageland/cli,或把 SYNOPKGLAND_TEMPLATES_DIR 指向 templates checkout。"],
699
706
  ["EXECUTOR_PIN_REQUIRED", "宣告 rootOps 或 delegate 的套件建置時沒有 executor 產物。", "使用 synopkgland build,讓 CLI 編譯並 pin executor;不要直接呼叫低階 SPK API。"],
700
707
  ["EXECUTOR_POLICY", "capabilities.delegate 的 operations 或 scope 不合法,無法產生 executor policy。", "改用 init/add 產生的 delegate 宣告,或依 manifest 參考修正 scope 與 operations。"],
701
708
  ["EXECUTOR_PACKAGE", "pin 進 root task 的套件名稱不合法。", "package 必須以英文字母開頭,只含英數字(2–64 字)。"],
@@ -706,7 +713,7 @@ for (const [code, description, suggestion] of [
706
713
  ERROR_REGISTRY[code] = { code, description, suggestion };
707
714
  ERROR_REGISTRY["STANDALONE_ENTRY_INVALID"] = { "code": "STANDALONE_ENTRY_INVALID", "description": "entry 設定不合法。", "suggestion": "entry 填 admin-only 或 app-privilege;app-privilege 需要至少一個 authenticated route。" };
708
715
  ERROR_REGISTRY["STANDALONE_ENTRY_WIDENED"] = { "code": "STANDALONE_ENTRY_WIDENED", "description": "entry: admin-only 與放寬權限的 route 設定衝突。", "suggestion": "把 permissions.json 中 authenticated 或 public 的 route 改為 administrators;要開放給一般使用者請改用 entry: app-privilege 或省略 entry。" };
709
- ERROR_REGISTRY["STANDALONE_ENTRY_UNSUPPORTED"] = { "code": "STANDALONE_ENTRY_UNSUPPORTED", "description": "backend 無法強制 entry 模式。", "suggestion": "使用 Go backend,複製 SDK 的 internal/dsm entry gate 並在 cmd/app/main.go 呼叫 dsm.NewEntryGate。" };
716
+ ERROR_REGISTRY["STANDALONE_ENTRY_UNSUPPORTED"] = { "code": "STANDALONE_ENTRY_UNSUPPORTED", "description": "backend 無法強制 entry 模式。", "suggestion": "使用 Go backend:backend/go.mod require github.com/synopackageland/syno-pkg-land-sdk,並在 backend.main 的 main.go(init 預設為 cmd/app/main.go)以 dsm.NewEntryGate 包住 authenticator。" };
710
717
  ERROR_REGISTRY["DSM_TLS_UNTRUSTED"] = { "code": "DSM_TLS_UNTRUSTED", "description": "DSM 的 TLS 憑證不受這台電腦信任(自簽、過期或名稱不符)。", "suggestion": "把 NAS 憑證或其 CA 匯出成 PEM,用 NODE_EXTRA_CA_CERTS=<該檔> 執行;或讓 DSM 使用與 host profile 名稱相符的受信任憑證。不要關閉憑證驗證。" };
711
718
  ERROR_REGISTRY["STANDALONE_ICON_INVALID"] = { "code": "STANDALONE_ICON_INVALID", "description": "dsm-package.yaml 的 icon 不是可用的套件圖示。", "suggestion": "icon 填專案內的正方形 PNG(至少 256×256),或含 icon_256.png 的 icon_<size>.png 目錄;省略則使用 SDK 預設圖示。" };
712
719
  ERROR_REGISTRY["CONTRACT_ICON_INVALID"] = { "code": "CONTRACT_ICON_INVALID", "description": "synology-app.yaml 的 icon 不是可用的套件圖示。", "suggestion": "icon 填專案內的正方形 PNG(至少 256×256),或含 icon_256.png 的 icon_<size>.png 目錄;省略則使用 SDK 預設圖示。" };
@@ -92,6 +92,43 @@ function createDsmNasHost(credentials, profileName) {
92
92
  if (!cookieHeader)
93
93
  throw new Error("DSM login returned no session cookie");
94
94
  };
95
+ /**
96
+ * One read-only call of the App's own CGI as the administrator. identity:
97
+ * standalone wraps business methods in an App session: trade the DSM cookie
98
+ * for one (same Origin), read once, then end that session. Undefined when
99
+ * the App refuses; `error` when no App session could be opened.
100
+ */
101
+ const readApp = async (packageIdentity, method) => {
102
+ await ensureLogin();
103
+ const appCall = async (name, cookie) => {
104
+ const response = await dsmFetch(`${dsmOrigin}/webman/3rdparty/${encodeURIComponent(packageIdentity)}/cgi/api.cgi`, {
105
+ method: "POST", headers: { cookie, origin: dsmOrigin, "content-type": "application/json" },
106
+ body: JSON.stringify({ method: name, params: name === "identity.session" ? { bootstrap: true } : {} }),
107
+ });
108
+ const body = await response.json();
109
+ return { body, setCookie: setCookiePairs(response.headers) };
110
+ };
111
+ const direct = await appCall(method, cookieHeader ?? "");
112
+ if (direct.body.success)
113
+ return { data: direct.body.data };
114
+ if (direct.body.error?.code !== "session_required")
115
+ return undefined;
116
+ const session = await appCall("identity.session", cookieHeader ?? "");
117
+ if (!session.body.success) {
118
+ const code = session.body.error?.code;
119
+ return { error: code === "https_required"
120
+ ? "identity: standalone status needs an https:// DSM host profile to open an App session."
121
+ : `identity: standalone App session bootstrap failed (${code ?? "error"}).` };
122
+ }
123
+ const appCookie = [cookieHeader ?? "", ...session.setCookie].filter(Boolean).join("; ");
124
+ try {
125
+ const status = await appCall(method, appCookie);
126
+ return status.body.success ? { data: status.body.data } : undefined;
127
+ }
128
+ finally {
129
+ await appCall("identity.logout", appCookie).catch(() => undefined);
130
+ }
131
+ };
95
132
  return {
96
133
  dsmOrigin,
97
134
  async installFromLocalSpk(input) {
@@ -108,39 +145,23 @@ function createDsmNasHost(credentials, profileName) {
108
145
  },
109
146
  async getExecutorStatus(packageIdentity) {
110
147
  try {
111
- await ensureLogin();
112
- const appCall = async (method, cookie) => {
113
- const response = await dsmFetch(`${dsmOrigin}/webman/3rdparty/${encodeURIComponent(packageIdentity)}/cgi/api.cgi`, {
114
- method: "POST", headers: { cookie, origin: dsmOrigin, "content-type": "application/json" },
115
- body: JSON.stringify({ method, params: method === "identity.session" ? { bootstrap: true } : {} }),
116
- });
117
- const body = await response.json();
118
- return { body, setCookie: setCookiePairs(response.headers) };
119
- };
120
148
  // A paused executor answers with why and what to do next.
121
149
  const explain = (status) => status.state === "paused" ? { ...status, error: `Executor paused (${status.reason}). ${status.next}` } : status;
122
- const direct = await appCall("executor.status", cookieHeader ?? "");
123
- if (direct.body.success)
124
- return explain(direct.body.data);
125
- // identity: standalone wraps business methods in an App session; trade the
126
- // administrator's DSM cookie for one, read once, then end that session.
127
- if (direct.body.error?.code !== "session_required")
150
+ const read = await readApp(packageIdentity, "executor.status");
151
+ if (!read)
128
152
  return undefined;
129
- const session = await appCall("identity.session", cookieHeader ?? "");
130
- if (!session.body.success) {
131
- const code = session.body.error?.code;
132
- return { ready: false, executor_digest: "", policy_digest: "", error: code === "https_required"
133
- ? "identity: standalone status needs an https:// DSM host profile to open an App session."
134
- : `identity: standalone App session bootstrap failed (${code ?? "error"}).` };
135
- }
136
- const appCookie = [cookieHeader ?? "", ...session.setCookie].filter(Boolean).join("; ");
137
- try {
138
- const status = await appCall("executor.status", appCookie);
139
- return status.body.success ? explain(status.body.data) : undefined;
140
- }
141
- finally {
142
- await appCall("identity.logout", appCookie).catch(() => undefined);
143
- }
153
+ if ("error" in read)
154
+ return { ready: false, executor_digest: "", policy_digest: "", error: read.error };
155
+ return explain(read.data);
156
+ }
157
+ catch {
158
+ return undefined;
159
+ }
160
+ },
161
+ async getPortalStatus(packageIdentity) {
162
+ try {
163
+ const read = await readApp(packageIdentity, "portal.status");
164
+ return read && "data" in read ? read.data : undefined;
144
165
  }
145
166
  catch {
146
167
  return undefined;
@@ -35,6 +35,11 @@ export interface NasHost {
35
35
  policy_digest: string;
36
36
  error?: string;
37
37
  } | undefined>;
38
+ /** The App's `portal.status`: whether an administrator set its Application Portal alias. */
39
+ getPortalStatus?(packageIdentity: string): Promise<{
40
+ state: string;
41
+ alias?: string;
42
+ } | undefined>;
38
43
  getArchFamily?(): Promise<NativeArchFamily | undefined>;
39
44
  /** List the current logical Shared Folder names using an administrator session. */
40
45
  listShareNames?(): Promise<string[]>;
package/dist/info.js CHANGED
@@ -8,6 +8,7 @@ import { inspectSpk } from "./standalone/inspect-spk.js";
8
8
  import { isNativeLayout, loadNativeLayout } from "./standalone/native-layout.js";
9
9
  import { executorPolicy, executorPolicyText, sha256 } from "./runtime/executor-policy.js";
10
10
  import { executorTasks } from "./runtime/executor-tasks.js";
11
+ import { requiredSdk } from "./runtime/sdk-source.js";
11
12
  import { uninstallCleanup } from "./runtime/uninstall-cleanup.js";
12
13
  export async function projectInfo(options) {
13
14
  const identity = resolveDeployIdentity(options.project, { dev: options.dev });
@@ -68,7 +69,7 @@ export function classifyRootTasks(expected, inventory) {
68
69
  async function liveRootCapability(m, host) {
69
70
  try {
70
71
  const policyDigest = sha256(executorPolicyText(executorPolicy(m)));
71
- const classified = classifyRootTasks(executorTasks({ package: m.package, policyDigest }), await host.getRootTaskInventory?.(m.package));
72
+ const classified = classifyRootTasks(executorTasks({ package: m.package, policyDigest }, requiredSdk(m.backend.kind === "go" ? m.backend.dir : m.root).executorDir), await host.getRootTaskInventory?.(m.package));
72
73
  if (classified.state !== "ready")
73
74
  return classified;
74
75
  const observed = await host.getExecutorStatus?.(m.package);
@@ -160,13 +161,26 @@ export async function standaloneInfo(options) {
160
161
  reason: "Installed package supports this capability without administrator approval.",
161
162
  });
162
163
  }
164
+ if (m.portal)
165
+ capabilities.push(installed ? await portalCapability(m.package, m.portal.alias, options.host) : {
166
+ name: "portal", state: "blocked", reason: "Package is not installed; deploy first.",
167
+ });
163
168
  return {
164
169
  ...state,
165
170
  capabilities,
166
171
  ...(executor ? { executor } : {}),
167
- uninstallCleanup: uninstallCleanup(m.package, Boolean(m.capabilities.rootOps || m.capabilities.delegate)),
172
+ uninstallCleanup: uninstallCleanup(m.package, { executor: Boolean(m.capabilities.rootOps || m.capabilities.delegate), portal: Boolean(m.portal) }),
168
173
  };
169
174
  }
175
+ /** What the installed App's portal.status says; DSM owns the alias, an administrator sets it. */
176
+ async function portalCapability(pkg, defaultAlias, host) {
177
+ const status = await host.getPortalStatus?.(pkg);
178
+ if (status?.state === "active" && status.alias)
179
+ return { name: "portal", state: "ready", reason: `Users open the App at ${host.dsmOrigin.replace(/\/$/, "")}/${encodeURIComponent(status.alias)}/ after DSM sign-in.` };
180
+ if (status?.state === "inactive")
181
+ return { name: "portal", state: "needs-admin-approval", reason: `No alias is set; an administrator applies one (default ${defaultAlias}) in the App's Application Portal panel.` };
182
+ return { name: "portal", state: "blocked", reason: "The App's portal.status could not be read; open the App window to check the Application Portal." };
183
+ }
170
184
  /** A native layout has no SDK capabilities; report package state only. */
171
185
  async function nativeLayoutInfo(root, host) {
172
186
  const loaded = loadNativeLayout(root);