@synopackageland/cli 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (921) hide show
  1. package/CHANGELOG.md +124 -0
  2. package/README.md +26 -4
  3. package/dist/add.js +4 -17
  4. package/dist/authorization-sdk.d.ts +0 -1
  5. package/dist/authorization-sdk.js +0 -1
  6. package/dist/build-spk/gateway.js +2 -2
  7. package/dist/build-spk/notices.js +12 -8
  8. package/dist/capability-overlays.d.ts +15 -0
  9. package/dist/capability-overlays.js +18 -0
  10. package/dist/cli-version.d.ts +2 -0
  11. package/dist/cli-version.js +3 -0
  12. package/dist/cli.js +3 -1
  13. package/dist/error-registry.js +12 -4
  14. package/dist/info.js +2 -1
  15. package/dist/init.js +52 -58
  16. package/dist/reproducible.js +1 -1
  17. package/dist/runtime/delegate-contract.d.ts +15 -0
  18. package/dist/runtime/delegate-contract.js +2 -0
  19. package/dist/runtime/executor-build.d.ts +15 -1
  20. package/dist/runtime/executor-build.js +42 -11
  21. package/dist/runtime/executor-digests.json +13 -0
  22. package/dist/runtime/executor-inspect.d.ts +1 -0
  23. package/dist/runtime/executor-inspect.js +5 -2
  24. package/dist/runtime/executor-policy.d.ts +3 -1
  25. package/dist/runtime/executor-policy.js +7 -2
  26. package/dist/runtime/executor-source.d.ts +21 -0
  27. package/dist/runtime/executor-source.js +35 -0
  28. package/dist/runtime/executor-tasks.d.ts +5 -2
  29. package/dist/runtime/executor-tasks.js +6 -4
  30. package/dist/runtime/sdk-source.d.ts +31 -0
  31. package/dist/runtime/sdk-source.js +92 -0
  32. package/dist/standalone/api-permissions.d.ts +4 -1
  33. package/dist/standalone/api-permissions.js +10 -18
  34. package/dist/standalone/build.d.ts +1 -0
  35. package/dist/standalone/build.js +11 -4
  36. package/dist/standalone/daemon.js +2 -2
  37. package/dist/standalone/dsm-window.js +2 -2
  38. package/dist/standalone/manifest.d.ts +5 -2
  39. package/dist/standalone/manifest.js +9 -3
  40. package/dist/standalone/root-window.d.ts +1 -1
  41. package/dist/standalone/root-window.js +0 -1
  42. package/dist/standalone/sdk-check.d.ts +9 -0
  43. package/dist/standalone/sdk-check.js +43 -0
  44. package/dist/standalone/spk.js +1 -1
  45. package/dist/template-paths.d.ts +7 -2
  46. package/dist/template-paths.js +18 -6
  47. package/package.json +13 -3
  48. package/dist/templates/_executor/README.md +0 -318
  49. package/dist/templates/_executor/anchor.go +0 -156
  50. package/dist/templates/_executor/anchor_test.go +0 -161
  51. package/dist/templates/_executor/apppriv_review_test.go +0 -28
  52. package/dist/templates/_executor/auth_presence_review_test.go +0 -38
  53. package/dist/templates/_executor/cancel_contract_test.go +0 -236
  54. package/dist/templates/_executor/cmd/lifecycle/main.go +0 -42
  55. package/dist/templates/_executor/cookie_review_test.go +0 -27
  56. package/dist/templates/_executor/copy.go +0 -64
  57. package/dist/templates/_executor/copy_test.go +0 -88
  58. package/dist/templates/_executor/digest_review_test.go +0 -120
  59. package/dist/templates/_executor/directories.go +0 -40
  60. package/dist/templates/_executor/dsm.go +0 -369
  61. package/dist/templates/_executor/dsm_test.go +0 -290
  62. package/dist/templates/_executor/executor.go +0 -735
  63. package/dist/templates/_executor/executor_test.go +0 -314
  64. package/dist/templates/_executor/go.mod +0 -5
  65. package/dist/templates/_executor/identity.go +0 -74
  66. package/dist/templates/_executor/identity_kernel_linux_test.go +0 -60
  67. package/dist/templates/_executor/identity_linux.go +0 -82
  68. package/dist/templates/_executor/identity_security_test.go +0 -43
  69. package/dist/templates/_executor/internal/lifecycle/lifecycle.go +0 -95
  70. package/dist/templates/_executor/internal/lifecycle/lifecycle_test.go +0 -232
  71. package/dist/templates/_executor/internal/taskscript/boot.sh +0 -31
  72. package/dist/templates/_executor/internal/taskscript/cmd/main.go +0 -19
  73. package/dist/templates/_executor/internal/taskscript/control.sh +0 -31
  74. package/dist/templates/_executor/internal/taskscript/tasks.go +0 -44
  75. package/dist/templates/_executor/json_review_test.go +0 -40
  76. package/dist/templates/_executor/lifecycle_test.go +0 -97
  77. package/dist/templates/_executor/link_linux.go +0 -28
  78. package/dist/templates/_executor/long_running_test.go +0 -530
  79. package/dist/templates/_executor/main.go +0 -576
  80. package/dist/templates/_executor/managed.go +0 -117
  81. package/dist/templates/_executor/managed_test.go +0 -137
  82. package/dist/templates/_executor/move_linux.go +0 -490
  83. package/dist/templates/_executor/move_linux_test.go +0 -460
  84. package/dist/templates/_executor/move_validation.go +0 -46
  85. package/dist/templates/_executor/move_validation_test.go +0 -187
  86. package/dist/templates/_executor/operations.go +0 -926
  87. package/dist/templates/_executor/path_test.go +0 -35
  88. package/dist/templates/_executor/pid.go +0 -37
  89. package/dist/templates/_executor/pid_test.go +0 -113
  90. package/dist/templates/_executor/platform_linux.go +0 -187
  91. package/dist/templates/_executor/platform_linux_test.go +0 -191
  92. package/dist/templates/_executor/platform_other.go +0 -76
  93. package/dist/templates/_executor/process.go +0 -142
  94. package/dist/templates/_executor/purge_log.go +0 -18
  95. package/dist/templates/_executor/records.go +0 -242
  96. package/dist/templates/_executor/scope_cancel_contract_test.go +0 -91
  97. package/dist/templates/_executor/scope_client.go +0 -37
  98. package/dist/templates/_executor/scope_contract.go +0 -12
  99. package/dist/templates/_executor/selected_scope.go +0 -146
  100. package/dist/templates/_executor/selected_scope_test.go +0 -186
  101. package/dist/templates/_executor/socket_linux_test.go +0 -46
  102. package/dist/templates/_executor/status_disabled_test.go +0 -33
  103. package/dist/templates/_executor/store.go +0 -91
  104. package/dist/templates/_executor/supervise.go +0 -109
  105. package/dist/templates/_executor/supervise_test.go +0 -130
  106. package/dist/templates/_executor/task_race_review_test.go +0 -47
  107. package/dist/templates/_executor/tasks.go +0 -320
  108. package/dist/templates/_executor/tasks_dsm71_test.go +0 -114
  109. package/dist/templates/_executor/tasks_review_test.go +0 -43
  110. package/dist/templates/_executor/tasks_test.go +0 -223
  111. package/dist/templates/_executor/testdata/evidence/cleanup.json +0 -24
  112. package/dist/templates/_executor/testdata/evidence/final-smoke.jsonl +0 -9
  113. package/dist/templates/_executor/testdata/evidence/kernel-acl.json +0 -6
  114. package/dist/templates/_executor/testdata/evidence/linux-tests.log +0 -123
  115. package/dist/templates/_executor/testdata/evidence/live.jsonl +0 -23
  116. package/dist/templates/_executor/testdata/evidence/storage.json +0 -90
  117. package/dist/templates/_executor/testdata/evidence/validation.json +0 -55
  118. package/dist/templates/_executor/testdata/live_probe.py +0 -98
  119. package/dist/templates/_executor/upgrade_watch_test.go +0 -244
  120. package/dist/templates/_executor/watch.go +0 -164
  121. package/dist/templates/_executor/watch_test.go +0 -291
  122. package/dist/templates/_executor/write_review_linux_test.go +0 -87
  123. package/dist/templates/_shared/AGENTS.md +0 -146
  124. package/dist/templates/_shared/CLAUDE.md +0 -1
  125. package/dist/templates/_shared/third-party-notices.mjs +0 -51
  126. package/dist/templates/binary/LICENSES/GO-LICENSE +0 -27
  127. package/dist/templates/binary/LICENSES/GO-PATENTS +0 -22
  128. package/dist/templates/binary/dsm-package.yaml +0 -46
  129. package/dist/templates/binary/example/main.go +0 -16
  130. package/dist/templates/binary/gitignore +0 -2
  131. package/dist/templates/binary/i18n/messages/de.json +0 -4
  132. package/dist/templates/binary/i18n/messages/en.json +0 -4
  133. package/dist/templates/binary/i18n/messages/es.json +0 -4
  134. package/dist/templates/binary/i18n/messages/fr.json +0 -4
  135. package/dist/templates/binary/i18n/messages/it.json +0 -4
  136. package/dist/templates/binary/i18n/messages/ja.json +0 -4
  137. package/dist/templates/binary/i18n/messages/ko.json +0 -4
  138. package/dist/templates/binary/i18n/messages/zh-CN.json +0 -4
  139. package/dist/templates/binary/i18n/messages/zh-TW.json +0 -4
  140. package/dist/templates/binary/ui/app.css +0 -4
  141. package/dist/templates/binary/ui/app.js +0 -32
  142. package/dist/templates/compose/compose.yaml +0 -8
  143. package/dist/templates/compose/synology-app.yaml +0 -16
  144. package/dist/templates/native-authorization/AuthorizationGate.vue +0 -91
  145. package/dist/templates/native-authorization/i18n/de.json +0 -37
  146. package/dist/templates/native-authorization/i18n/en.json +0 -37
  147. package/dist/templates/native-authorization/i18n/es.json +0 -37
  148. package/dist/templates/native-authorization/i18n/fr.json +0 -37
  149. package/dist/templates/native-authorization/i18n/index.ts +0 -15
  150. package/dist/templates/native-authorization/i18n/it.json +0 -37
  151. package/dist/templates/native-authorization/i18n/ja.json +0 -37
  152. package/dist/templates/native-authorization/i18n/ko.json +0 -37
  153. package/dist/templates/native-authorization/i18n/zh-CN.json +0 -37
  154. package/dist/templates/native-authorization/i18n/zh-TW.json +0 -37
  155. package/dist/templates/native-go/README.md +0 -459
  156. package/dist/templates/native-go/backend/THIRD_PARTY_NOTICES.txt +0 -61
  157. package/dist/templates/native-go/backend/cmd/app/main.go +0 -95
  158. package/dist/templates/native-go/backend/cmd/background-worker/main.go +0 -38
  159. package/dist/templates/native-go/backend/go.mod +0 -9
  160. package/dist/templates/native-go/backend/go.sum +0 -4
  161. package/dist/templates/native-go/backend/internal/api/cgi_framing_test.go +0 -32
  162. package/dist/templates/native-go/backend/internal/api/cookie_review_test.go +0 -28
  163. package/dist/templates/native-go/backend/internal/api/deadline_test.go +0 -114
  164. package/dist/templates/native-go/backend/internal/api/dsm-session.go +0 -54
  165. package/dist/templates/native-go/backend/internal/api/dsm-session_test.go +0 -51
  166. package/dist/templates/native-go/backend/internal/api/entry_test.go +0 -47
  167. package/dist/templates/native-go/backend/internal/api/errors.go +0 -47
  168. package/dist/templates/native-go/backend/internal/api/permissions.go +0 -161
  169. package/dist/templates/native-go/backend/internal/api/permissions.json +0 -5
  170. package/dist/templates/native-go/backend/internal/api/permissions_test.go +0 -113
  171. package/dist/templates/native-go/backend/internal/api/policy_fixture_test.go +0 -8
  172. package/dist/templates/native-go/backend/internal/api/registry.go +0 -142
  173. package/dist/templates/native-go/backend/internal/api/registry_test.go +0 -344
  174. package/dist/templates/native-go/backend/internal/api/resource_limits_test.go +0 -87
  175. package/dist/templates/native-go/backend/internal/api/sdk-permissions.json +0 -59
  176. package/dist/templates/native-go/backend/internal/api/sdk_policy_test.go +0 -31
  177. package/dist/templates/native-go/backend/internal/api/server.go +0 -305
  178. package/dist/templates/native-go/backend/internal/api/testdata/permissions-cases.json +0 -172
  179. package/dist/templates/native-go/backend/internal/app/background.go +0 -249
  180. package/dist/templates/native-go/backend/internal/app/background_none.go +0 -8
  181. package/dist/templates/native-go/backend/internal/app/background_owner.go +0 -38
  182. package/dist/templates/native-go/backend/internal/app/background_owner_test.go +0 -163
  183. package/dist/templates/native-go/backend/internal/app/background_schedule.go +0 -69
  184. package/dist/templates/native-go/backend/internal/app/background_schedule_test.go +0 -62
  185. package/dist/templates/native-go/backend/internal/app/background_test.go +0 -320
  186. package/dist/templates/native-go/backend/internal/app/delegate_config.go +0 -57
  187. package/dist/templates/native-go/backend/internal/app/delegate_config_test.go +0 -28
  188. package/dist/templates/native-go/backend/internal/app/delegate_none.go +0 -5
  189. package/dist/templates/native-go/backend/internal/app/identity.go +0 -20
  190. package/dist/templates/native-go/backend/internal/app/identity_test.go +0 -15
  191. package/dist/templates/native-go/backend/internal/app/migrations.go +0 -41
  192. package/dist/templates/native-go/backend/internal/app/migrations_test.go +0 -41
  193. package/dist/templates/native-go/backend/internal/app/portal.go +0 -30
  194. package/dist/templates/native-go/backend/internal/app/portal_test.go +0 -55
  195. package/dist/templates/native-go/backend/internal/app/root_none.go +0 -9
  196. package/dist/templates/native-go/backend/internal/app/routes.go +0 -137
  197. package/dist/templates/native-go/backend/internal/app/routes_test.go +0 -165
  198. package/dist/templates/native-go/backend/internal/app/session_files.go +0 -9
  199. package/dist/templates/native-go/backend/internal/app/session_files_test.go +0 -14
  200. package/dist/templates/native-go/backend/internal/app/shared_folder.go +0 -144
  201. package/dist/templates/native-go/backend/internal/app/shared_folder_test.go +0 -158
  202. package/dist/templates/native-go/backend/internal/background/access.go +0 -57
  203. package/dist/templates/native-go/backend/internal/background/lock_test.go +0 -131
  204. package/dist/templates/native-go/backend/internal/background/owner_test.go +0 -118
  205. package/dist/templates/native-go/backend/internal/background/runner.go +0 -185
  206. package/dist/templates/native-go/backend/internal/background/runner_test.go +0 -209
  207. package/dist/templates/native-go/backend/internal/background/schedule.go +0 -336
  208. package/dist/templates/native-go/backend/internal/background/schedule_test.go +0 -368
  209. package/dist/templates/native-go/backend/internal/background/store.go +0 -825
  210. package/dist/templates/native-go/backend/internal/background/store_test.go +0 -365
  211. package/dist/templates/native-go/backend/internal/datamigrate/migrate.go +0 -191
  212. package/dist/templates/native-go/backend/internal/datamigrate/migrate_test.go +0 -177
  213. package/dist/templates/native-go/backend/internal/dsm/admin.go +0 -76
  214. package/dist/templates/native-go/backend/internal/dsm/admin_linux.go +0 -110
  215. package/dist/templates/native-go/backend/internal/dsm/admin_linux_test.go +0 -105
  216. package/dist/templates/native-go/backend/internal/dsm/admin_other.go +0 -15
  217. package/dist/templates/native-go/backend/internal/dsm/admin_test.go +0 -67
  218. package/dist/templates/native-go/backend/internal/dsm/apppriv.go +0 -30
  219. package/dist/templates/native-go/backend/internal/dsm/auth.go +0 -94
  220. package/dist/templates/native-go/backend/internal/dsm/auth_test.go +0 -159
  221. package/dist/templates/native-go/backend/internal/dsm/bridge_file.go +0 -75
  222. package/dist/templates/native-go/backend/internal/dsm/bridge_file_test.go +0 -57
  223. package/dist/templates/native-go/backend/internal/dsm/entry.go +0 -177
  224. package/dist/templates/native-go/backend/internal/dsm/entry_test.go +0 -315
  225. package/dist/templates/native-go/backend/internal/dsm/native/admin-aarch64.elf +0 -0
  226. package/dist/templates/native-go/backend/internal/dsm/native/admin-armv7.elf +0 -0
  227. package/dist/templates/native-go/backend/internal/dsm/native/admin-x86_64.elf +0 -0
  228. package/dist/templates/native-go/backend/internal/dsm/native/admin_check.c +0 -28
  229. package/dist/templates/native-go/backend/internal/dsm/native/apppriv-aarch64.elf +0 -0
  230. package/dist/templates/native-go/backend/internal/dsm/native/apppriv-armv7.elf +0 -0
  231. package/dist/templates/native-go/backend/internal/dsm/native/apppriv-x86_64.elf +0 -0
  232. package/dist/templates/native-go/backend/internal/dsm/native/apppriv_check.c +0 -33
  233. package/dist/templates/native-go/backend/internal/dsm/native/build.sh +0 -18
  234. package/dist/templates/native-go/backend/internal/dsm/native/licenses/GLIBC-NOTICES.txt +0 -400
  235. package/dist/templates/native-go/backend/internal/dsm/native/licenses/LGPL-2.1.txt +0 -501
  236. package/dist/templates/native-go/backend/internal/dsm/native/licenses/SOURCE.txt +0 -5
  237. package/dist/templates/native-go/backend/internal/dsm/native/licenses/ZIG-MIT.txt +0 -21
  238. package/dist/templates/native-go/backend/internal/dsm/native/provenance.json +0 -18
  239. package/dist/templates/native-go/backend/internal/filestation/browse_test.go +0 -67
  240. package/dist/templates/native-go/backend/internal/filestation/check_permission.go +0 -71
  241. package/dist/templates/native-go/backend/internal/filestation/check_permission_test.go +0 -77
  242. package/dist/templates/native-go/backend/internal/filestation/client.go +0 -337
  243. package/dist/templates/native-go/backend/internal/filestation/client_test.go +0 -155
  244. package/dist/templates/native-go/backend/internal/filestation/doc.go +0 -4
  245. package/dist/templates/native-go/backend/internal/filestation/download_dsm71_test.go +0 -82
  246. package/dist/templates/native-go/backend/internal/filestation/http.go +0 -70
  247. package/dist/templates/native-go/backend/internal/filestation/http_test.go +0 -188
  248. package/dist/templates/native-go/backend/internal/filestation/operations_test.go +0 -206
  249. package/dist/templates/native-go/backend/internal/filestation/read_file_test.go +0 -89
  250. package/dist/templates/native-go/backend/internal/filestation/sdk_policy_test.go +0 -39
  251. package/dist/templates/native-go/backend/internal/filestation/service.go +0 -254
  252. package/dist/templates/native-go/backend/internal/filestation/service_test.go +0 -74
  253. package/dist/templates/native-go/backend/internal/filestation/upload_stream.go +0 -76
  254. package/dist/templates/native-go/backend/internal/filestation/upload_stream_test.go +0 -77
  255. package/dist/templates/native-go/backend/internal/filestation/write.go +0 -32
  256. package/dist/templates/native-go/backend/internal/filestation/write_test.go +0 -124
  257. package/dist/templates/native-go/backend/internal/identity/README.md +0 -59
  258. package/dist/templates/native-go/backend/internal/identity/dsm.go +0 -115
  259. package/dist/templates/native-go/backend/internal/identity/http.go +0 -291
  260. package/dist/templates/native-go/backend/internal/identity/identity_test.go +0 -530
  261. package/dist/templates/native-go/backend/internal/identity/service.go +0 -159
  262. package/dist/templates/native-go/backend/internal/identity/store.go +0 -109
  263. package/dist/templates/native-go/backend/internal/jsonlimits/limits.go +0 -48
  264. package/dist/templates/native-go/backend/internal/jsonlimits/limits_test.go +0 -52
  265. package/dist/templates/native-go/backend/internal/portal/portal.go +0 -138
  266. package/dist/templates/native-go/backend/internal/portal/portal_test.go +0 -89
  267. package/dist/templates/native-go/dsm-package.yaml +0 -71
  268. package/dist/templates/native-go/gitignore +0 -1
  269. package/dist/templates/native-go/i18n/glossary.json +0 -663
  270. package/dist/templates/native-go/i18n/messages/de.json +0 -29
  271. package/dist/templates/native-go/i18n/messages/en.json +0 -29
  272. package/dist/templates/native-go/i18n/messages/es.json +0 -29
  273. package/dist/templates/native-go/i18n/messages/fr.json +0 -29
  274. package/dist/templates/native-go/i18n/messages/it.json +0 -29
  275. package/dist/templates/native-go/i18n/messages/ja.json +0 -29
  276. package/dist/templates/native-go/i18n/messages/ko.json +0 -29
  277. package/dist/templates/native-go/i18n/messages/zh-CN.json +0 -29
  278. package/dist/templates/native-go/i18n/messages/zh-TW.json +0 -29
  279. package/dist/templates/native-go/ui/app.css +0 -45
  280. package/dist/templates/native-go/ui/app.js +0 -111
  281. package/dist/templates/native-go-delegate/DELEGATE.md +0 -263
  282. package/dist/templates/native-go-delegate/backend/cmd/background-worker/main.go +0 -48
  283. package/dist/templates/native-go-delegate/backend/internal/app/delegate.go +0 -25
  284. package/dist/templates/native-go-delegate/backend/internal/app/delegate_on.go +0 -5
  285. package/dist/templates/native-go-delegate/backend/internal/app/delegate_routes_test.go +0 -31
  286. package/dist/templates/native-go-delegate/backend/internal/background/delegate_review_test.go +0 -174
  287. package/dist/templates/native-go-delegate/backend/internal/background/delegated.go +0 -277
  288. package/dist/templates/native-go-delegate/backend/internal/background/delegated_moves.go +0 -270
  289. package/dist/templates/native-go-delegate/backend/internal/background/delegated_test.go +0 -34
  290. package/dist/templates/native-go-delegate/backend/internal/delegate/admission_recovery_test.go +0 -410
  291. package/dist/templates/native-go-delegate/backend/internal/delegate/busy_review_test.go +0 -15
  292. package/dist/templates/native-go-delegate/backend/internal/delegate/cancel_contract_test.go +0 -95
  293. package/dist/templates/native-go-delegate/backend/internal/delegate/client.go +0 -151
  294. package/dist/templates/native-go-delegate/backend/internal/delegate/client_test.go +0 -214
  295. package/dist/templates/native-go-delegate/backend/internal/delegate/destination.go +0 -110
  296. package/dist/templates/native-go-delegate/backend/internal/delegate/destination_state.go +0 -117
  297. package/dist/templates/native-go-delegate/backend/internal/delegate/destination_state_test.go +0 -60
  298. package/dist/templates/native-go-delegate/backend/internal/delegate/destination_test.go +0 -116
  299. package/dist/templates/native-go-delegate/backend/internal/delegate/example.go +0 -81
  300. package/dist/templates/native-go-delegate/backend/internal/delegate/example_test.go +0 -91
  301. package/dist/templates/native-go-delegate/backend/internal/delegate/executor_contract_test.go +0 -511
  302. package/dist/templates/native-go-delegate/backend/internal/delegate/files.go +0 -132
  303. package/dist/templates/native-go-delegate/backend/internal/delegate/long_running_routes.go +0 -92
  304. package/dist/templates/native-go-delegate/backend/internal/delegate/long_running_routes_test.go +0 -99
  305. package/dist/templates/native-go-delegate/backend/internal/delegate/move.go +0 -348
  306. package/dist/templates/native-go-delegate/backend/internal/delegate/move_test.go +0 -351
  307. package/dist/templates/native-go-delegate/backend/internal/delegate/operations_list.go +0 -65
  308. package/dist/templates/native-go-delegate/backend/internal/delegate/operations_list_test.go +0 -114
  309. package/dist/templates/native-go-delegate/backend/internal/delegate/retry.go +0 -106
  310. package/dist/templates/native-go-delegate/backend/internal/delegate/retry_test.go +0 -143
  311. package/dist/templates/native-go-delegate/backend/internal/delegate/service.go +0 -364
  312. package/dist/templates/native-go-delegate/backend/internal/delegate/service_test.go +0 -318
  313. package/dist/templates/native-go-delegate/backend/internal/delegate/staging.go +0 -121
  314. package/dist/templates/native-go-delegate/backend/internal/delegate/status_disabled_test.go +0 -51
  315. package/dist/templates/native-go-delegate/backend/internal/delegate/testdata/executor_contract.txt +0 -112
  316. package/dist/templates/native-go-delegate/backend/internal/delegate/transient_contract_test.go +0 -137
  317. package/dist/templates/native-go-delegate/backend/internal/delegate/wait_cancel_test.go +0 -101
  318. package/dist/templates/native-go-delegate/backend/internal/delegate/worker.go +0 -225
  319. package/dist/templates/native-go-delegate/backend/internal/filestation/files.go +0 -43
  320. package/dist/templates/native-go-delegate/backend/internal/filestation/files_test.go +0 -59
  321. package/dist/templates/native-go-delegate/frontend/src/CapabilityPanels.vue +0 -37
  322. package/dist/templates/native-go-delegate/frontend/src/delegate/BackgroundSavePanel.vue +0 -113
  323. package/dist/templates/native-go-delegate/frontend/src/delegate/DelegatePanel.vue +0 -70
  324. package/dist/templates/native-go-delegate/frontend/src/delegate/copy.ts +0 -8
  325. package/dist/templates/native-go-delegate/frontend/src/delegate/i18n/waiting.json +0 -11
  326. package/dist/templates/native-go-delegate/frontend/test/background-save.test.ts +0 -121
  327. package/dist/templates/native-go-delegate/frontend/test/delegate.test.ts +0 -145
  328. package/dist/templates/native-go-delegate/frontend/test/scope-settings.test.ts +0 -49
  329. package/dist/templates/native-go-delegate/test-frontend.sh +0 -12
  330. package/dist/templates/native-go-delegate/test.sh +0 -18
  331. package/dist/templates/native-go-jobs/BACKGROUND.md +0 -108
  332. package/dist/templates/native-go-jobs/backend/internal/app/background_on.go +0 -7
  333. package/dist/templates/native-go-jobs/backend/internal/app/background_routes_test.go +0 -90
  334. package/dist/templates/native-go-jobs/frontend/src/background/BackgroundPanel.vue +0 -170
  335. package/dist/templates/native-go-jobs/frontend/src/background/i18n/de.json +0 -75
  336. package/dist/templates/native-go-jobs/frontend/src/background/i18n/en.json +0 -75
  337. package/dist/templates/native-go-jobs/frontend/src/background/i18n/es.json +0 -75
  338. package/dist/templates/native-go-jobs/frontend/src/background/i18n/fr.json +0 -75
  339. package/dist/templates/native-go-jobs/frontend/src/background/i18n/it.json +0 -75
  340. package/dist/templates/native-go-jobs/frontend/src/background/i18n/ja.json +0 -75
  341. package/dist/templates/native-go-jobs/frontend/src/background/i18n/ko.json +0 -75
  342. package/dist/templates/native-go-jobs/frontend/src/background/i18n/zh-CN.json +0 -75
  343. package/dist/templates/native-go-jobs/frontend/src/background/i18n/zh-TW.json +0 -75
  344. package/dist/templates/native-go-jobs/frontend/src/background/i18n.ts +0 -19
  345. package/dist/templates/native-go-jobs/frontend/src/background/picker-provider.ts +0 -12
  346. package/dist/templates/native-go-jobs/frontend/src/background/request-key.ts +0 -5
  347. package/dist/templates/native-go-jobs/frontend/test/background.test.ts +0 -205
  348. package/dist/templates/native-go-root-ops/backend/internal/app/executor.go +0 -140
  349. package/dist/templates/native-go-root-ops/backend/internal/app/executor_test.go +0 -117
  350. package/dist/templates/native-go-root-ops/root/whoami.sh +0 -3
  351. package/dist/templates/native-go-vue/README.md +0 -47
  352. package/dist/templates/native-go-vue/frontend/DESIGN.md +0 -61
  353. package/dist/templates/native-go-vue/frontend/package-lock.json +0 -2530
  354. package/dist/templates/native-go-vue/frontend/package.json +0 -6
  355. package/dist/templates/native-go-vue/frontend/src/App.vue +0 -96
  356. package/dist/templates/native-go-vue/frontend/src/CapabilityPanels.vue +0 -6
  357. package/dist/templates/native-go-vue/frontend/src/context.ts +0 -78
  358. package/dist/templates/native-go-vue/frontend/src/delegate/ExecutorSettings.vue +0 -70
  359. package/dist/templates/native-go-vue/frontend/src/delegate/catalogs.ts +0 -11
  360. package/dist/templates/native-go-vue/frontend/src/delegate/copy.test.ts +0 -12
  361. package/dist/templates/native-go-vue/frontend/src/delegate/copy.ts +0 -4
  362. package/dist/templates/native-go-vue/frontend/src/delegate/executor-settings.test.ts +0 -23
  363. package/dist/templates/native-go-vue/frontend/src/delegate/executor-setup.ts +0 -24
  364. package/dist/templates/native-go-vue/frontend/src/delegate/facade.test.ts +0 -100
  365. package/dist/templates/native-go-vue/frontend/src/delegate/facade.ts +0 -85
  366. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/de.json +0 -47
  367. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/en.json +0 -47
  368. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/es.json +0 -47
  369. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/fr.json +0 -47
  370. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/it.json +0 -47
  371. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/ja.json +0 -47
  372. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/ko.json +0 -47
  373. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/de.json +0 -42
  374. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/en.json +0 -42
  375. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/es.json +0 -42
  376. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/fr.json +0 -42
  377. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/it.json +0 -42
  378. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/ja.json +0 -42
  379. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/ko.json +0 -42
  380. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/zh-CN.json +0 -42
  381. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/save/zh-TW.json +0 -42
  382. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/zh-CN.json +0 -47
  383. package/dist/templates/native-go-vue/frontend/src/delegate/i18n/zh-TW.json +0 -47
  384. package/dist/templates/native-go-vue/frontend/src/delegate/long-running.ts +0 -57
  385. package/dist/templates/native-go-vue/frontend/src/delegate/save-copy.test.ts +0 -12
  386. package/dist/templates/native-go-vue/frontend/src/delegate/save-copy.ts +0 -24
  387. package/dist/templates/native-go-vue/frontend/src/delegate/scoped-picker.test.ts +0 -12
  388. package/dist/templates/native-go-vue/frontend/src/delegate/scoped-picker.ts +0 -21
  389. package/dist/templates/native-go-vue/frontend/src/files/FileBrowser.vue +0 -131
  390. package/dist/templates/native-go-vue/frontend/src/files/FilesPage.vue +0 -35
  391. package/dist/templates/native-go-vue/frontend/src/files/files.test.ts +0 -100
  392. package/dist/templates/native-go-vue/frontend/src/files/provider.test.ts +0 -48
  393. package/dist/templates/native-go-vue/frontend/src/files/transfers.test.ts +0 -27
  394. package/dist/templates/native-go-vue/frontend/src/files/transfers.ts +0 -25
  395. package/dist/templates/native-go-vue/frontend/src/i18n/de.json +0 -20
  396. package/dist/templates/native-go-vue/frontend/src/i18n/en.json +0 -20
  397. package/dist/templates/native-go-vue/frontend/src/i18n/es.json +0 -20
  398. package/dist/templates/native-go-vue/frontend/src/i18n/fr.json +0 -20
  399. package/dist/templates/native-go-vue/frontend/src/i18n/it.json +0 -20
  400. package/dist/templates/native-go-vue/frontend/src/i18n/ja.json +0 -20
  401. package/dist/templates/native-go-vue/frontend/src/i18n/ko.json +0 -20
  402. package/dist/templates/native-go-vue/frontend/src/i18n/zh-CN.json +0 -20
  403. package/dist/templates/native-go-vue/frontend/src/i18n/zh-TW.json +0 -20
  404. package/dist/templates/native-go-vue/frontend/src/i18n.ts +0 -13
  405. package/dist/templates/native-go-vue/frontend/src/identity/DESIGN.md +0 -46
  406. package/dist/templates/native-go-vue/frontend/src/identity/LoginPage.vue +0 -78
  407. package/dist/templates/native-go-vue/frontend/src/identity/i18n/de.json +0 -27
  408. package/dist/templates/native-go-vue/frontend/src/identity/i18n/en.json +0 -27
  409. package/dist/templates/native-go-vue/frontend/src/identity/i18n/es.json +0 -27
  410. package/dist/templates/native-go-vue/frontend/src/identity/i18n/fr.json +0 -27
  411. package/dist/templates/native-go-vue/frontend/src/identity/i18n/it.json +0 -27
  412. package/dist/templates/native-go-vue/frontend/src/identity/i18n/ja.json +0 -27
  413. package/dist/templates/native-go-vue/frontend/src/identity/i18n/ko.json +0 -27
  414. package/dist/templates/native-go-vue/frontend/src/identity/i18n/zh-CN.json +0 -27
  415. package/dist/templates/native-go-vue/frontend/src/identity/i18n/zh-TW.json +0 -27
  416. package/dist/templates/native-go-vue/frontend/src/identity/i18n.ts +0 -14
  417. package/dist/templates/native-go-vue/frontend/src/identity/login.test.ts +0 -32
  418. package/dist/templates/native-go-vue/frontend/src/identity/session.test.ts +0 -33
  419. package/dist/templates/native-go-vue/frontend/src/identity/session.ts +0 -74
  420. package/dist/templates/native-go-vue/frontend/src/main.ts +0 -32
  421. package/dist/templates/native-go-vue/frontend/src/nas/NasPicker.vue +0 -42
  422. package/dist/templates/native-go-vue/frontend/src/nas/contract.ts +0 -12
  423. package/dist/templates/native-go-vue/frontend/src/nas/destination.test.ts +0 -48
  424. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/de.json +0 -41
  425. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/en.json +0 -41
  426. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/es.json +0 -41
  427. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/fr.json +0 -41
  428. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/it.json +0 -41
  429. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/ja.json +0 -41
  430. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/ko.json +0 -41
  431. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/zh-CN.json +0 -41
  432. package/dist/templates/native-go-vue/frontend/src/nas/i18n/files/zh-TW.json +0 -41
  433. package/dist/templates/native-go-vue/frontend/src/nas/i18n.ts +0 -2
  434. package/dist/templates/native-go-vue/frontend/src/nas/locale.ts +0 -24
  435. package/dist/templates/native-go-vue/frontend/src/nas/provider.ts +0 -50
  436. package/dist/templates/native-go-vue/frontend/src/nas/use-request.ts +0 -18
  437. package/dist/templates/native-go-vue/frontend/src/portal/PortalSettings.vue +0 -39
  438. package/dist/templates/native-go-vue/frontend/src/shell/AppShell.vue +0 -48
  439. package/dist/templates/native-go-vue/frontend/src/shell/i18n/de.json +0 -4
  440. package/dist/templates/native-go-vue/frontend/src/shell/i18n/en.json +0 -4
  441. package/dist/templates/native-go-vue/frontend/src/shell/i18n/es.json +0 -4
  442. package/dist/templates/native-go-vue/frontend/src/shell/i18n/fr.json +0 -4
  443. package/dist/templates/native-go-vue/frontend/src/shell/i18n/it.json +0 -4
  444. package/dist/templates/native-go-vue/frontend/src/shell/i18n/ja.json +0 -4
  445. package/dist/templates/native-go-vue/frontend/src/shell/i18n/ko.json +0 -4
  446. package/dist/templates/native-go-vue/frontend/src/shell/i18n/zh-CN.json +0 -4
  447. package/dist/templates/native-go-vue/frontend/src/shell/i18n/zh-TW.json +0 -4
  448. package/dist/templates/native-go-vue/frontend/src/shell/i18n.ts +0 -17
  449. package/dist/templates/native-go-vue/frontend/src/shell/pages.ts +0 -15
  450. package/dist/templates/native-go-vue/frontend/src/style.css +0 -27
  451. package/dist/templates/native-go-vue/frontend/test/apps.test.ts +0 -57
  452. package/dist/templates/native-go-vue/frontend/test/native-controls.test.ts +0 -27
  453. package/dist/templates/native-go-vue/frontend/test/portal-settings.test.ts +0 -71
  454. package/dist/templates/native-go-vue/frontend/test/shell-i18n.test.ts +0 -50
  455. package/dist/templates/native-go-vue/frontend/test/shell-ui.test.ts +0 -20
  456. package/dist/templates/native-go-vue/frontend/test/shell.test.ts +0 -30
  457. package/dist/templates/native-go-vue/frontend/tsconfig.json +0 -1
  458. package/dist/templates/native-go-vue/frontend/vite.config.ts +0 -10
  459. package/dist/templates/native-go-vue/gitignore +0 -2
  460. package/templates/_daemon/fixture_linux_test.go +0 -15
  461. package/templates/_daemon/fixture_other_test.go +0 -7
  462. package/templates/_daemon/go.mod +0 -5
  463. package/templates/_daemon/main.go +0 -611
  464. package/templates/_daemon/main_test.go +0 -315
  465. package/templates/_daemon/process_linux.go +0 -55
  466. package/templates/_daemon/process_linux_test.go +0 -161
  467. package/templates/_daemon/process_other.go +0 -14
  468. package/templates/_daemon/testdata/child.go +0 -44
  469. package/templates/_executor/README.md +0 -318
  470. package/templates/_executor/anchor.go +0 -156
  471. package/templates/_executor/anchor_test.go +0 -161
  472. package/templates/_executor/apppriv_review_test.go +0 -28
  473. package/templates/_executor/auth_presence_review_test.go +0 -38
  474. package/templates/_executor/cancel_contract_test.go +0 -236
  475. package/templates/_executor/cmd/lifecycle/main.go +0 -42
  476. package/templates/_executor/cookie_review_test.go +0 -27
  477. package/templates/_executor/copy.go +0 -64
  478. package/templates/_executor/copy_test.go +0 -88
  479. package/templates/_executor/digest_review_test.go +0 -120
  480. package/templates/_executor/directories.go +0 -40
  481. package/templates/_executor/dsm.go +0 -369
  482. package/templates/_executor/dsm_test.go +0 -290
  483. package/templates/_executor/executor.go +0 -735
  484. package/templates/_executor/executor_test.go +0 -314
  485. package/templates/_executor/go.mod +0 -5
  486. package/templates/_executor/identity.go +0 -74
  487. package/templates/_executor/identity_kernel_linux_test.go +0 -60
  488. package/templates/_executor/identity_linux.go +0 -82
  489. package/templates/_executor/identity_security_test.go +0 -43
  490. package/templates/_executor/internal/lifecycle/lifecycle.go +0 -95
  491. package/templates/_executor/internal/lifecycle/lifecycle_test.go +0 -232
  492. package/templates/_executor/internal/taskscript/boot.sh +0 -31
  493. package/templates/_executor/internal/taskscript/cmd/main.go +0 -19
  494. package/templates/_executor/internal/taskscript/control.sh +0 -31
  495. package/templates/_executor/internal/taskscript/tasks.go +0 -44
  496. package/templates/_executor/json_review_test.go +0 -40
  497. package/templates/_executor/lifecycle_test.go +0 -97
  498. package/templates/_executor/link_linux.go +0 -28
  499. package/templates/_executor/long_running_test.go +0 -530
  500. package/templates/_executor/main.go +0 -576
  501. package/templates/_executor/managed.go +0 -117
  502. package/templates/_executor/managed_test.go +0 -137
  503. package/templates/_executor/move_linux.go +0 -490
  504. package/templates/_executor/move_linux_test.go +0 -460
  505. package/templates/_executor/move_validation.go +0 -46
  506. package/templates/_executor/move_validation_test.go +0 -187
  507. package/templates/_executor/operations.go +0 -926
  508. package/templates/_executor/path_test.go +0 -35
  509. package/templates/_executor/pid.go +0 -37
  510. package/templates/_executor/pid_test.go +0 -113
  511. package/templates/_executor/platform_linux.go +0 -187
  512. package/templates/_executor/platform_linux_test.go +0 -191
  513. package/templates/_executor/platform_other.go +0 -76
  514. package/templates/_executor/process.go +0 -142
  515. package/templates/_executor/purge_log.go +0 -18
  516. package/templates/_executor/records.go +0 -242
  517. package/templates/_executor/scope_cancel_contract_test.go +0 -91
  518. package/templates/_executor/scope_client.go +0 -37
  519. package/templates/_executor/scope_contract.go +0 -12
  520. package/templates/_executor/selected_scope.go +0 -146
  521. package/templates/_executor/selected_scope_test.go +0 -186
  522. package/templates/_executor/socket_linux_test.go +0 -46
  523. package/templates/_executor/status_disabled_test.go +0 -33
  524. package/templates/_executor/store.go +0 -91
  525. package/templates/_executor/supervise.go +0 -109
  526. package/templates/_executor/supervise_test.go +0 -130
  527. package/templates/_executor/task_race_review_test.go +0 -47
  528. package/templates/_executor/tasks.go +0 -320
  529. package/templates/_executor/tasks_dsm71_test.go +0 -114
  530. package/templates/_executor/tasks_review_test.go +0 -43
  531. package/templates/_executor/tasks_test.go +0 -223
  532. package/templates/_executor/testdata/evidence/cleanup.json +0 -24
  533. package/templates/_executor/testdata/evidence/final-smoke.jsonl +0 -9
  534. package/templates/_executor/testdata/evidence/kernel-acl.json +0 -6
  535. package/templates/_executor/testdata/evidence/linux-tests.log +0 -123
  536. package/templates/_executor/testdata/evidence/live.jsonl +0 -23
  537. package/templates/_executor/testdata/evidence/storage.json +0 -90
  538. package/templates/_executor/testdata/evidence/validation.json +0 -55
  539. package/templates/_executor/testdata/live_probe.py +0 -98
  540. package/templates/_executor/upgrade_watch_test.go +0 -244
  541. package/templates/_executor/watch.go +0 -164
  542. package/templates/_executor/watch_test.go +0 -291
  543. package/templates/_executor/write_review_linux_test.go +0 -87
  544. package/templates/_gateway/auth.go +0 -101
  545. package/templates/_gateway/auth_test.go +0 -216
  546. package/templates/_gateway/cgi.go +0 -133
  547. package/templates/_gateway/cgi_test.go +0 -156
  548. package/templates/_gateway/csrf.go +0 -73
  549. package/templates/_gateway/csrf_test.go +0 -155
  550. package/templates/_gateway/directory.go +0 -108
  551. package/templates/_gateway/directory_test.go +0 -202
  552. package/templates/_gateway/gateway.go +0 -412
  553. package/templates/_gateway/gateway_test.go +0 -676
  554. package/templates/_gateway/go.mod +0 -5
  555. package/templates/_gateway/groups.go +0 -66
  556. package/templates/_gateway/main.go +0 -45
  557. package/templates/_shared/AGENTS.md +0 -146
  558. package/templates/_shared/CLAUDE.md +0 -1
  559. package/templates/_shared/GO-LICENSE +0 -27
  560. package/templates/_shared/GO-PATENTS +0 -22
  561. package/templates/_shared/LICENSES/TEMPLATE.txt +0 -21
  562. package/templates/_shared/third-party-notices.mjs +0 -51
  563. package/templates/binary/LICENSES/GO-LICENSE +0 -27
  564. package/templates/binary/LICENSES/GO-PATENTS +0 -22
  565. package/templates/binary/dsm-package.yaml +0 -46
  566. package/templates/binary/example/main.go +0 -16
  567. package/templates/binary/gitignore +0 -2
  568. package/templates/binary/i18n/messages/de.json +0 -4
  569. package/templates/binary/i18n/messages/en.json +0 -4
  570. package/templates/binary/i18n/messages/es.json +0 -4
  571. package/templates/binary/i18n/messages/fr.json +0 -4
  572. package/templates/binary/i18n/messages/it.json +0 -4
  573. package/templates/binary/i18n/messages/ja.json +0 -4
  574. package/templates/binary/i18n/messages/ko.json +0 -4
  575. package/templates/binary/i18n/messages/zh-CN.json +0 -4
  576. package/templates/binary/i18n/messages/zh-TW.json +0 -4
  577. package/templates/binary/ui/app.css +0 -4
  578. package/templates/binary/ui/app.js +0 -32
  579. package/templates/compose/compose.yaml +0 -8
  580. package/templates/compose/synology-app.yaml +0 -16
  581. package/templates/native-authorization/AuthorizationGate.vue +0 -91
  582. package/templates/native-authorization/i18n/de.json +0 -37
  583. package/templates/native-authorization/i18n/en.json +0 -37
  584. package/templates/native-authorization/i18n/es.json +0 -37
  585. package/templates/native-authorization/i18n/fr.json +0 -37
  586. package/templates/native-authorization/i18n/index.ts +0 -15
  587. package/templates/native-authorization/i18n/it.json +0 -37
  588. package/templates/native-authorization/i18n/ja.json +0 -37
  589. package/templates/native-authorization/i18n/ko.json +0 -37
  590. package/templates/native-authorization/i18n/zh-CN.json +0 -37
  591. package/templates/native-authorization/i18n/zh-TW.json +0 -37
  592. package/templates/native-go/README.md +0 -459
  593. package/templates/native-go/backend/THIRD_PARTY_NOTICES.txt +0 -61
  594. package/templates/native-go/backend/cmd/app/main.go +0 -95
  595. package/templates/native-go/backend/cmd/background-worker/main.go +0 -38
  596. package/templates/native-go/backend/go.mod +0 -9
  597. package/templates/native-go/backend/go.sum +0 -4
  598. package/templates/native-go/backend/internal/api/cgi_framing_test.go +0 -32
  599. package/templates/native-go/backend/internal/api/cookie_review_test.go +0 -28
  600. package/templates/native-go/backend/internal/api/deadline_test.go +0 -114
  601. package/templates/native-go/backend/internal/api/dsm-session.go +0 -54
  602. package/templates/native-go/backend/internal/api/dsm-session_test.go +0 -51
  603. package/templates/native-go/backend/internal/api/entry_test.go +0 -47
  604. package/templates/native-go/backend/internal/api/errors.go +0 -47
  605. package/templates/native-go/backend/internal/api/permissions.go +0 -161
  606. package/templates/native-go/backend/internal/api/permissions.json +0 -5
  607. package/templates/native-go/backend/internal/api/permissions_test.go +0 -113
  608. package/templates/native-go/backend/internal/api/policy_fixture_test.go +0 -8
  609. package/templates/native-go/backend/internal/api/registry.go +0 -142
  610. package/templates/native-go/backend/internal/api/registry_test.go +0 -344
  611. package/templates/native-go/backend/internal/api/resource_limits_test.go +0 -87
  612. package/templates/native-go/backend/internal/api/sdk-permissions.json +0 -59
  613. package/templates/native-go/backend/internal/api/sdk_policy_test.go +0 -31
  614. package/templates/native-go/backend/internal/api/server.go +0 -305
  615. package/templates/native-go/backend/internal/api/testdata/permissions-cases.json +0 -172
  616. package/templates/native-go/backend/internal/app/background.go +0 -249
  617. package/templates/native-go/backend/internal/app/background_none.go +0 -8
  618. package/templates/native-go/backend/internal/app/background_owner.go +0 -38
  619. package/templates/native-go/backend/internal/app/background_owner_test.go +0 -163
  620. package/templates/native-go/backend/internal/app/background_schedule.go +0 -69
  621. package/templates/native-go/backend/internal/app/background_schedule_test.go +0 -62
  622. package/templates/native-go/backend/internal/app/background_test.go +0 -320
  623. package/templates/native-go/backend/internal/app/delegate_config.go +0 -57
  624. package/templates/native-go/backend/internal/app/delegate_config_test.go +0 -28
  625. package/templates/native-go/backend/internal/app/delegate_none.go +0 -5
  626. package/templates/native-go/backend/internal/app/identity.go +0 -20
  627. package/templates/native-go/backend/internal/app/identity_test.go +0 -15
  628. package/templates/native-go/backend/internal/app/migrations.go +0 -41
  629. package/templates/native-go/backend/internal/app/migrations_test.go +0 -41
  630. package/templates/native-go/backend/internal/app/portal.go +0 -30
  631. package/templates/native-go/backend/internal/app/portal_test.go +0 -55
  632. package/templates/native-go/backend/internal/app/root_none.go +0 -9
  633. package/templates/native-go/backend/internal/app/routes.go +0 -137
  634. package/templates/native-go/backend/internal/app/routes_test.go +0 -165
  635. package/templates/native-go/backend/internal/app/session_files.go +0 -9
  636. package/templates/native-go/backend/internal/app/session_files_test.go +0 -14
  637. package/templates/native-go/backend/internal/app/shared_folder.go +0 -144
  638. package/templates/native-go/backend/internal/app/shared_folder_test.go +0 -158
  639. package/templates/native-go/backend/internal/background/access.go +0 -57
  640. package/templates/native-go/backend/internal/background/lock_test.go +0 -131
  641. package/templates/native-go/backend/internal/background/owner_test.go +0 -118
  642. package/templates/native-go/backend/internal/background/runner.go +0 -185
  643. package/templates/native-go/backend/internal/background/runner_test.go +0 -209
  644. package/templates/native-go/backend/internal/background/schedule.go +0 -336
  645. package/templates/native-go/backend/internal/background/schedule_test.go +0 -368
  646. package/templates/native-go/backend/internal/background/store.go +0 -825
  647. package/templates/native-go/backend/internal/background/store_test.go +0 -365
  648. package/templates/native-go/backend/internal/datamigrate/migrate.go +0 -191
  649. package/templates/native-go/backend/internal/datamigrate/migrate_test.go +0 -177
  650. package/templates/native-go/backend/internal/dsm/admin.go +0 -76
  651. package/templates/native-go/backend/internal/dsm/admin_linux.go +0 -110
  652. package/templates/native-go/backend/internal/dsm/admin_linux_test.go +0 -105
  653. package/templates/native-go/backend/internal/dsm/admin_other.go +0 -15
  654. package/templates/native-go/backend/internal/dsm/admin_test.go +0 -67
  655. package/templates/native-go/backend/internal/dsm/apppriv.go +0 -30
  656. package/templates/native-go/backend/internal/dsm/auth.go +0 -94
  657. package/templates/native-go/backend/internal/dsm/auth_test.go +0 -159
  658. package/templates/native-go/backend/internal/dsm/bridge_file.go +0 -75
  659. package/templates/native-go/backend/internal/dsm/bridge_file_test.go +0 -57
  660. package/templates/native-go/backend/internal/dsm/entry.go +0 -177
  661. package/templates/native-go/backend/internal/dsm/entry_test.go +0 -315
  662. package/templates/native-go/backend/internal/dsm/native/admin-aarch64.elf +0 -0
  663. package/templates/native-go/backend/internal/dsm/native/admin-armv7.elf +0 -0
  664. package/templates/native-go/backend/internal/dsm/native/admin-x86_64.elf +0 -0
  665. package/templates/native-go/backend/internal/dsm/native/admin_check.c +0 -28
  666. package/templates/native-go/backend/internal/dsm/native/apppriv-aarch64.elf +0 -0
  667. package/templates/native-go/backend/internal/dsm/native/apppriv-armv7.elf +0 -0
  668. package/templates/native-go/backend/internal/dsm/native/apppriv-x86_64.elf +0 -0
  669. package/templates/native-go/backend/internal/dsm/native/apppriv_check.c +0 -33
  670. package/templates/native-go/backend/internal/dsm/native/build.sh +0 -18
  671. package/templates/native-go/backend/internal/dsm/native/licenses/GLIBC-NOTICES.txt +0 -400
  672. package/templates/native-go/backend/internal/dsm/native/licenses/LGPL-2.1.txt +0 -501
  673. package/templates/native-go/backend/internal/dsm/native/licenses/SOURCE.txt +0 -5
  674. package/templates/native-go/backend/internal/dsm/native/licenses/ZIG-MIT.txt +0 -21
  675. package/templates/native-go/backend/internal/dsm/native/provenance.json +0 -18
  676. package/templates/native-go/backend/internal/filestation/browse_test.go +0 -67
  677. package/templates/native-go/backend/internal/filestation/check_permission.go +0 -71
  678. package/templates/native-go/backend/internal/filestation/check_permission_test.go +0 -77
  679. package/templates/native-go/backend/internal/filestation/client.go +0 -337
  680. package/templates/native-go/backend/internal/filestation/client_test.go +0 -155
  681. package/templates/native-go/backend/internal/filestation/doc.go +0 -4
  682. package/templates/native-go/backend/internal/filestation/download_dsm71_test.go +0 -82
  683. package/templates/native-go/backend/internal/filestation/http.go +0 -70
  684. package/templates/native-go/backend/internal/filestation/http_test.go +0 -188
  685. package/templates/native-go/backend/internal/filestation/operations_test.go +0 -206
  686. package/templates/native-go/backend/internal/filestation/read_file_test.go +0 -89
  687. package/templates/native-go/backend/internal/filestation/sdk_policy_test.go +0 -39
  688. package/templates/native-go/backend/internal/filestation/service.go +0 -254
  689. package/templates/native-go/backend/internal/filestation/service_test.go +0 -74
  690. package/templates/native-go/backend/internal/filestation/upload_stream.go +0 -76
  691. package/templates/native-go/backend/internal/filestation/upload_stream_test.go +0 -77
  692. package/templates/native-go/backend/internal/filestation/write.go +0 -32
  693. package/templates/native-go/backend/internal/filestation/write_test.go +0 -124
  694. package/templates/native-go/backend/internal/identity/README.md +0 -59
  695. package/templates/native-go/backend/internal/identity/dsm.go +0 -115
  696. package/templates/native-go/backend/internal/identity/http.go +0 -291
  697. package/templates/native-go/backend/internal/identity/identity_test.go +0 -530
  698. package/templates/native-go/backend/internal/identity/service.go +0 -159
  699. package/templates/native-go/backend/internal/identity/store.go +0 -109
  700. package/templates/native-go/backend/internal/jsonlimits/limits.go +0 -48
  701. package/templates/native-go/backend/internal/jsonlimits/limits_test.go +0 -52
  702. package/templates/native-go/backend/internal/portal/portal.go +0 -138
  703. package/templates/native-go/backend/internal/portal/portal_test.go +0 -89
  704. package/templates/native-go/dsm-package.yaml +0 -71
  705. package/templates/native-go/gitignore +0 -1
  706. package/templates/native-go/i18n/glossary.json +0 -663
  707. package/templates/native-go/i18n/messages/de.json +0 -29
  708. package/templates/native-go/i18n/messages/en.json +0 -29
  709. package/templates/native-go/i18n/messages/es.json +0 -29
  710. package/templates/native-go/i18n/messages/fr.json +0 -29
  711. package/templates/native-go/i18n/messages/it.json +0 -29
  712. package/templates/native-go/i18n/messages/ja.json +0 -29
  713. package/templates/native-go/i18n/messages/ko.json +0 -29
  714. package/templates/native-go/i18n/messages/zh-CN.json +0 -29
  715. package/templates/native-go/i18n/messages/zh-TW.json +0 -29
  716. package/templates/native-go/ui/app.css +0 -45
  717. package/templates/native-go/ui/app.js +0 -111
  718. package/templates/native-go-delegate/DELEGATE.md +0 -263
  719. package/templates/native-go-delegate/backend/cmd/background-worker/main.go +0 -48
  720. package/templates/native-go-delegate/backend/internal/app/delegate.go +0 -25
  721. package/templates/native-go-delegate/backend/internal/app/delegate_on.go +0 -5
  722. package/templates/native-go-delegate/backend/internal/app/delegate_routes_test.go +0 -31
  723. package/templates/native-go-delegate/backend/internal/background/delegate_review_test.go +0 -174
  724. package/templates/native-go-delegate/backend/internal/background/delegated.go +0 -277
  725. package/templates/native-go-delegate/backend/internal/background/delegated_moves.go +0 -270
  726. package/templates/native-go-delegate/backend/internal/background/delegated_test.go +0 -34
  727. package/templates/native-go-delegate/backend/internal/delegate/admission_recovery_test.go +0 -410
  728. package/templates/native-go-delegate/backend/internal/delegate/busy_review_test.go +0 -15
  729. package/templates/native-go-delegate/backend/internal/delegate/cancel_contract_test.go +0 -95
  730. package/templates/native-go-delegate/backend/internal/delegate/client.go +0 -151
  731. package/templates/native-go-delegate/backend/internal/delegate/client_test.go +0 -214
  732. package/templates/native-go-delegate/backend/internal/delegate/destination.go +0 -110
  733. package/templates/native-go-delegate/backend/internal/delegate/destination_state.go +0 -117
  734. package/templates/native-go-delegate/backend/internal/delegate/destination_state_test.go +0 -60
  735. package/templates/native-go-delegate/backend/internal/delegate/destination_test.go +0 -116
  736. package/templates/native-go-delegate/backend/internal/delegate/example.go +0 -81
  737. package/templates/native-go-delegate/backend/internal/delegate/example_test.go +0 -91
  738. package/templates/native-go-delegate/backend/internal/delegate/executor_contract_test.go +0 -511
  739. package/templates/native-go-delegate/backend/internal/delegate/files.go +0 -132
  740. package/templates/native-go-delegate/backend/internal/delegate/long_running_routes.go +0 -92
  741. package/templates/native-go-delegate/backend/internal/delegate/long_running_routes_test.go +0 -99
  742. package/templates/native-go-delegate/backend/internal/delegate/move.go +0 -348
  743. package/templates/native-go-delegate/backend/internal/delegate/move_test.go +0 -351
  744. package/templates/native-go-delegate/backend/internal/delegate/operations_list.go +0 -65
  745. package/templates/native-go-delegate/backend/internal/delegate/operations_list_test.go +0 -114
  746. package/templates/native-go-delegate/backend/internal/delegate/retry.go +0 -106
  747. package/templates/native-go-delegate/backend/internal/delegate/retry_test.go +0 -143
  748. package/templates/native-go-delegate/backend/internal/delegate/service.go +0 -364
  749. package/templates/native-go-delegate/backend/internal/delegate/service_test.go +0 -318
  750. package/templates/native-go-delegate/backend/internal/delegate/staging.go +0 -121
  751. package/templates/native-go-delegate/backend/internal/delegate/status_disabled_test.go +0 -51
  752. package/templates/native-go-delegate/backend/internal/delegate/testdata/executor_contract.txt +0 -112
  753. package/templates/native-go-delegate/backend/internal/delegate/transient_contract_test.go +0 -137
  754. package/templates/native-go-delegate/backend/internal/delegate/wait_cancel_test.go +0 -101
  755. package/templates/native-go-delegate/backend/internal/delegate/worker.go +0 -225
  756. package/templates/native-go-delegate/backend/internal/filestation/files.go +0 -43
  757. package/templates/native-go-delegate/backend/internal/filestation/files_test.go +0 -59
  758. package/templates/native-go-delegate/frontend/src/CapabilityPanels.vue +0 -37
  759. package/templates/native-go-delegate/frontend/src/delegate/BackgroundSavePanel.vue +0 -113
  760. package/templates/native-go-delegate/frontend/src/delegate/DelegatePanel.vue +0 -70
  761. package/templates/native-go-delegate/frontend/src/delegate/copy.ts +0 -8
  762. package/templates/native-go-delegate/frontend/src/delegate/i18n/waiting.json +0 -11
  763. package/templates/native-go-delegate/frontend/test/background-save.test.ts +0 -121
  764. package/templates/native-go-delegate/frontend/test/delegate.test.ts +0 -145
  765. package/templates/native-go-delegate/frontend/test/scope-settings.test.ts +0 -49
  766. package/templates/native-go-delegate/test-frontend.sh +0 -12
  767. package/templates/native-go-delegate/test.sh +0 -18
  768. package/templates/native-go-jobs/BACKGROUND.md +0 -108
  769. package/templates/native-go-jobs/backend/internal/app/background_on.go +0 -7
  770. package/templates/native-go-jobs/backend/internal/app/background_routes_test.go +0 -90
  771. package/templates/native-go-jobs/frontend/src/background/BackgroundPanel.vue +0 -170
  772. package/templates/native-go-jobs/frontend/src/background/i18n/de.json +0 -75
  773. package/templates/native-go-jobs/frontend/src/background/i18n/en.json +0 -75
  774. package/templates/native-go-jobs/frontend/src/background/i18n/es.json +0 -75
  775. package/templates/native-go-jobs/frontend/src/background/i18n/fr.json +0 -75
  776. package/templates/native-go-jobs/frontend/src/background/i18n/it.json +0 -75
  777. package/templates/native-go-jobs/frontend/src/background/i18n/ja.json +0 -75
  778. package/templates/native-go-jobs/frontend/src/background/i18n/ko.json +0 -75
  779. package/templates/native-go-jobs/frontend/src/background/i18n/zh-CN.json +0 -75
  780. package/templates/native-go-jobs/frontend/src/background/i18n/zh-TW.json +0 -75
  781. package/templates/native-go-jobs/frontend/src/background/i18n.ts +0 -19
  782. package/templates/native-go-jobs/frontend/src/background/picker-provider.ts +0 -12
  783. package/templates/native-go-jobs/frontend/src/background/request-key.ts +0 -5
  784. package/templates/native-go-jobs/frontend/test/background.test.ts +0 -205
  785. package/templates/native-go-root-ops/backend/internal/app/executor.go +0 -140
  786. package/templates/native-go-root-ops/backend/internal/app/executor_test.go +0 -117
  787. package/templates/native-go-root-ops/root/whoami.sh +0 -3
  788. package/templates/native-go-vue/README.md +0 -47
  789. package/templates/native-go-vue/frontend/DESIGN.md +0 -61
  790. package/templates/native-go-vue/frontend/package-lock.json +0 -2530
  791. package/templates/native-go-vue/frontend/package.json +0 -6
  792. package/templates/native-go-vue/frontend/src/App.vue +0 -96
  793. package/templates/native-go-vue/frontend/src/CapabilityPanels.vue +0 -6
  794. package/templates/native-go-vue/frontend/src/context.ts +0 -78
  795. package/templates/native-go-vue/frontend/src/delegate/ExecutorSettings.vue +0 -70
  796. package/templates/native-go-vue/frontend/src/delegate/catalogs.ts +0 -11
  797. package/templates/native-go-vue/frontend/src/delegate/copy.test.ts +0 -12
  798. package/templates/native-go-vue/frontend/src/delegate/copy.ts +0 -4
  799. package/templates/native-go-vue/frontend/src/delegate/executor-settings.test.ts +0 -23
  800. package/templates/native-go-vue/frontend/src/delegate/executor-setup.ts +0 -24
  801. package/templates/native-go-vue/frontend/src/delegate/facade.test.ts +0 -100
  802. package/templates/native-go-vue/frontend/src/delegate/facade.ts +0 -85
  803. package/templates/native-go-vue/frontend/src/delegate/i18n/de.json +0 -47
  804. package/templates/native-go-vue/frontend/src/delegate/i18n/en.json +0 -47
  805. package/templates/native-go-vue/frontend/src/delegate/i18n/es.json +0 -47
  806. package/templates/native-go-vue/frontend/src/delegate/i18n/fr.json +0 -47
  807. package/templates/native-go-vue/frontend/src/delegate/i18n/it.json +0 -47
  808. package/templates/native-go-vue/frontend/src/delegate/i18n/ja.json +0 -47
  809. package/templates/native-go-vue/frontend/src/delegate/i18n/ko.json +0 -47
  810. package/templates/native-go-vue/frontend/src/delegate/i18n/save/de.json +0 -42
  811. package/templates/native-go-vue/frontend/src/delegate/i18n/save/en.json +0 -42
  812. package/templates/native-go-vue/frontend/src/delegate/i18n/save/es.json +0 -42
  813. package/templates/native-go-vue/frontend/src/delegate/i18n/save/fr.json +0 -42
  814. package/templates/native-go-vue/frontend/src/delegate/i18n/save/it.json +0 -42
  815. package/templates/native-go-vue/frontend/src/delegate/i18n/save/ja.json +0 -42
  816. package/templates/native-go-vue/frontend/src/delegate/i18n/save/ko.json +0 -42
  817. package/templates/native-go-vue/frontend/src/delegate/i18n/save/zh-CN.json +0 -42
  818. package/templates/native-go-vue/frontend/src/delegate/i18n/save/zh-TW.json +0 -42
  819. package/templates/native-go-vue/frontend/src/delegate/i18n/zh-CN.json +0 -47
  820. package/templates/native-go-vue/frontend/src/delegate/i18n/zh-TW.json +0 -47
  821. package/templates/native-go-vue/frontend/src/delegate/long-running.ts +0 -57
  822. package/templates/native-go-vue/frontend/src/delegate/save-copy.test.ts +0 -12
  823. package/templates/native-go-vue/frontend/src/delegate/save-copy.ts +0 -24
  824. package/templates/native-go-vue/frontend/src/delegate/scoped-picker.test.ts +0 -12
  825. package/templates/native-go-vue/frontend/src/delegate/scoped-picker.ts +0 -21
  826. package/templates/native-go-vue/frontend/src/files/FileBrowser.vue +0 -131
  827. package/templates/native-go-vue/frontend/src/files/FilesPage.vue +0 -35
  828. package/templates/native-go-vue/frontend/src/files/files.test.ts +0 -100
  829. package/templates/native-go-vue/frontend/src/files/provider.test.ts +0 -48
  830. package/templates/native-go-vue/frontend/src/files/transfers.test.ts +0 -27
  831. package/templates/native-go-vue/frontend/src/files/transfers.ts +0 -25
  832. package/templates/native-go-vue/frontend/src/i18n/de.json +0 -20
  833. package/templates/native-go-vue/frontend/src/i18n/en.json +0 -20
  834. package/templates/native-go-vue/frontend/src/i18n/es.json +0 -20
  835. package/templates/native-go-vue/frontend/src/i18n/fr.json +0 -20
  836. package/templates/native-go-vue/frontend/src/i18n/it.json +0 -20
  837. package/templates/native-go-vue/frontend/src/i18n/ja.json +0 -20
  838. package/templates/native-go-vue/frontend/src/i18n/ko.json +0 -20
  839. package/templates/native-go-vue/frontend/src/i18n/zh-CN.json +0 -20
  840. package/templates/native-go-vue/frontend/src/i18n/zh-TW.json +0 -20
  841. package/templates/native-go-vue/frontend/src/i18n.ts +0 -13
  842. package/templates/native-go-vue/frontend/src/identity/DESIGN.md +0 -46
  843. package/templates/native-go-vue/frontend/src/identity/LoginPage.vue +0 -78
  844. package/templates/native-go-vue/frontend/src/identity/i18n/de.json +0 -27
  845. package/templates/native-go-vue/frontend/src/identity/i18n/en.json +0 -27
  846. package/templates/native-go-vue/frontend/src/identity/i18n/es.json +0 -27
  847. package/templates/native-go-vue/frontend/src/identity/i18n/fr.json +0 -27
  848. package/templates/native-go-vue/frontend/src/identity/i18n/it.json +0 -27
  849. package/templates/native-go-vue/frontend/src/identity/i18n/ja.json +0 -27
  850. package/templates/native-go-vue/frontend/src/identity/i18n/ko.json +0 -27
  851. package/templates/native-go-vue/frontend/src/identity/i18n/zh-CN.json +0 -27
  852. package/templates/native-go-vue/frontend/src/identity/i18n/zh-TW.json +0 -27
  853. package/templates/native-go-vue/frontend/src/identity/i18n.ts +0 -14
  854. package/templates/native-go-vue/frontend/src/identity/login.test.ts +0 -32
  855. package/templates/native-go-vue/frontend/src/identity/session.test.ts +0 -33
  856. package/templates/native-go-vue/frontend/src/identity/session.ts +0 -74
  857. package/templates/native-go-vue/frontend/src/main.ts +0 -32
  858. package/templates/native-go-vue/frontend/src/nas/NasPicker.vue +0 -42
  859. package/templates/native-go-vue/frontend/src/nas/contract.ts +0 -12
  860. package/templates/native-go-vue/frontend/src/nas/destination.test.ts +0 -48
  861. package/templates/native-go-vue/frontend/src/nas/i18n/files/de.json +0 -41
  862. package/templates/native-go-vue/frontend/src/nas/i18n/files/en.json +0 -41
  863. package/templates/native-go-vue/frontend/src/nas/i18n/files/es.json +0 -41
  864. package/templates/native-go-vue/frontend/src/nas/i18n/files/fr.json +0 -41
  865. package/templates/native-go-vue/frontend/src/nas/i18n/files/it.json +0 -41
  866. package/templates/native-go-vue/frontend/src/nas/i18n/files/ja.json +0 -41
  867. package/templates/native-go-vue/frontend/src/nas/i18n/files/ko.json +0 -41
  868. package/templates/native-go-vue/frontend/src/nas/i18n/files/zh-CN.json +0 -41
  869. package/templates/native-go-vue/frontend/src/nas/i18n/files/zh-TW.json +0 -41
  870. package/templates/native-go-vue/frontend/src/nas/i18n.ts +0 -2
  871. package/templates/native-go-vue/frontend/src/nas/locale.ts +0 -24
  872. package/templates/native-go-vue/frontend/src/nas/provider.ts +0 -50
  873. package/templates/native-go-vue/frontend/src/nas/use-request.ts +0 -18
  874. package/templates/native-go-vue/frontend/src/portal/PortalSettings.vue +0 -39
  875. package/templates/native-go-vue/frontend/src/shell/AppShell.vue +0 -48
  876. package/templates/native-go-vue/frontend/src/shell/i18n/de.json +0 -4
  877. package/templates/native-go-vue/frontend/src/shell/i18n/en.json +0 -4
  878. package/templates/native-go-vue/frontend/src/shell/i18n/es.json +0 -4
  879. package/templates/native-go-vue/frontend/src/shell/i18n/fr.json +0 -4
  880. package/templates/native-go-vue/frontend/src/shell/i18n/it.json +0 -4
  881. package/templates/native-go-vue/frontend/src/shell/i18n/ja.json +0 -4
  882. package/templates/native-go-vue/frontend/src/shell/i18n/ko.json +0 -4
  883. package/templates/native-go-vue/frontend/src/shell/i18n/zh-CN.json +0 -4
  884. package/templates/native-go-vue/frontend/src/shell/i18n/zh-TW.json +0 -4
  885. package/templates/native-go-vue/frontend/src/shell/i18n.ts +0 -17
  886. package/templates/native-go-vue/frontend/src/shell/pages.ts +0 -15
  887. package/templates/native-go-vue/frontend/src/style.css +0 -27
  888. package/templates/native-go-vue/frontend/test/apps.test.ts +0 -57
  889. package/templates/native-go-vue/frontend/test/native-controls.test.ts +0 -27
  890. package/templates/native-go-vue/frontend/test/portal-settings.test.ts +0 -71
  891. package/templates/native-go-vue/frontend/test/shell-i18n.test.ts +0 -50
  892. package/templates/native-go-vue/frontend/test/shell-ui.test.ts +0 -20
  893. package/templates/native-go-vue/frontend/test/shell.test.ts +0 -30
  894. package/templates/native-go-vue/frontend/tsconfig.json +0 -1
  895. package/templates/native-go-vue/frontend/vite.config.ts +0 -10
  896. package/templates/native-go-vue/gitignore +0 -2
  897. /package/{dist/templates/_daemon → assets/go/daemon}/fixture_linux_test.go +0 -0
  898. /package/{dist/templates/_daemon → assets/go/daemon}/fixture_other_test.go +0 -0
  899. /package/{dist/templates/_daemon → assets/go/daemon}/go.mod +0 -0
  900. /package/{dist/templates/_daemon → assets/go/daemon}/main.go +0 -0
  901. /package/{dist/templates/_daemon → assets/go/daemon}/main_test.go +0 -0
  902. /package/{dist/templates/_daemon → assets/go/daemon}/process_linux.go +0 -0
  903. /package/{dist/templates/_daemon → assets/go/daemon}/process_linux_test.go +0 -0
  904. /package/{dist/templates/_daemon → assets/go/daemon}/process_other.go +0 -0
  905. /package/{dist/templates/_daemon → assets/go/daemon}/testdata/child.go +0 -0
  906. /package/{dist/templates/_gateway → assets/go/gateway}/auth.go +0 -0
  907. /package/{dist/templates/_gateway → assets/go/gateway}/auth_test.go +0 -0
  908. /package/{dist/templates/_gateway → assets/go/gateway}/cgi.go +0 -0
  909. /package/{dist/templates/_gateway → assets/go/gateway}/cgi_test.go +0 -0
  910. /package/{dist/templates/_gateway → assets/go/gateway}/csrf.go +0 -0
  911. /package/{dist/templates/_gateway → assets/go/gateway}/csrf_test.go +0 -0
  912. /package/{dist/templates/_gateway → assets/go/gateway}/directory.go +0 -0
  913. /package/{dist/templates/_gateway → assets/go/gateway}/directory_test.go +0 -0
  914. /package/{dist/templates/_gateway → assets/go/gateway}/gateway.go +0 -0
  915. /package/{dist/templates/_gateway → assets/go/gateway}/gateway_test.go +0 -0
  916. /package/{dist/templates/_gateway → assets/go/gateway}/go.mod +0 -0
  917. /package/{dist/templates/_gateway → assets/go/gateway}/groups.go +0 -0
  918. /package/{dist/templates/_gateway → assets/go/gateway}/main.go +0 -0
  919. /package/{dist/templates/_shared → assets/licenses}/GO-LICENSE +0 -0
  920. /package/{dist/templates/_shared → assets/licenses}/GO-PATENTS +0 -0
  921. /package/{dist/templates/_shared/LICENSES → assets/licenses}/TEMPLATE.txt +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,129 @@
1
1
  # Changelog
2
2
 
3
+ ## Unreleased (0.9.0)
4
+
5
+ The CLI, the SDK and the project templates are now three repositories, and
6
+ the CLI only packages, deploys and checks. An App names its SDK version once,
7
+ in `backend/go.mod`. Background saves can create subfolders and choose what
8
+ happens on a name conflict, and time-limited delegate jobs gain read, rename,
9
+ copy, move and delete.
10
+
11
+ 繁中摘要:CLI 移到 github.com/synopackageland/syno-pkg-land-cli,只負責打包、部署與檢查;
12
+ 範本改由 `@synopackageland/templates`(精確 pin)提供;SDK 是
13
+ `github.com/synopackageland/syno-pkg-land-sdk`(Go)與 `@synopackageland/sdk`(前端,含
14
+ `./vue`),版本只寫在 `backend/go.mod`。`build` 依該版本 `go mod download`
15
+ executor 並比對 CLI 內建的 sha256 表。`check` 新增 `SDK_REQUIRED`、
16
+ `SDK_VERSION_MISMATCH`、`SDK_UNSUPPORTED`。`files.moveFromStaging` 的 `name`
17
+ 可帶子資料夾,新增 `conflict: fail|overwrite|rename`;有時限的 delegate 新增
18
+ `files.read`、`files.rename`、`files.copy`、`files.move`、`files.delete`。
19
+ 管理員只在 executor policy 改變時需要重新核准;0.9.0 的 policy 有改變。
20
+
21
+ ### Repositories and the SDK version
22
+
23
+ - The CLI is github.com/synopackageland/syno-pkg-land-cli, published as
24
+ `@synopackageland/cli`. The SDK is github.com/synopackageland/syno-pkg-land-sdk: the Go
25
+ module `github.com/synopackageland/syno-pkg-land-sdk` and the npm package
26
+ `@synopackageland/sdk`, which includes the Vue components at
27
+ `@synopackageland/sdk/vue`.
28
+ - The `require github.com/synopackageland/syno-pkg-land-sdk` line in `backend/go.mod` is the
29
+ only SDK version. `dsm-package.yaml` has no SDK field.
30
+ - `check` and `build` report `SDK_REQUIRED` when `capabilities.delegate` or
31
+ `rootOps` is declared without that line (an `entry` mode without it fails
32
+ with `STANDALONE_ENTRY_UNSUPPORTED`), `SDK_UNSUPPORTED` when its minor version is not the CLI's (CLI 0.9.x builds
33
+ SDK 0.9.x), and `SDK_VERSION_MISMATCH` when the frontend's
34
+ `@synopackageland/sdk` differs from it. A `file:` frontend dependency is
35
+ compared through that folder's `package.json` version.
36
+ - `build` reads the SDK version from `backend/go.mod`, runs `go mod download`
37
+ for the executor of that version, and builds it with go1.26.9. Its sha256
38
+ must match the table shipped in this CLI, or the build fails with
39
+ `EXECUTOR_DIGEST_MISMATCH`. A version Go cannot fetch fails with
40
+ `SDK_DOWNLOAD_FAILED`. While the SDK repositories are private, set
41
+ `GOPRIVATE=github.com/synopackageland/*` and give git a credential for
42
+ github.com; the error says which of the two is missing. Root task scripts
43
+ and `sdk-permissions.json` come from the same SDK version.
44
+ - The CGI binds both policy digests at link time:
45
+ `<module>/internal/api.expectedPermissionsDigest` for the App and
46
+ `github.com/synopackageland/syno-pkg-land-sdk/api.expectedSDKPermissionsDigest` for the
47
+ SDK.
48
+ - `@synopackageland/cli/authorization-sdk` exports `AUTHORIZATION_RUNTIME`
49
+ and `ROOT_RUNTIME`. `authorizationTemplateDirectory` is removed;
50
+ `AuthorizationGate` is in `@synopackageland/sdk/vue`.
51
+
52
+ ### Templates
53
+
54
+ - `init` and `add` read the templates from `@synopackageland/templates`, a
55
+ dependency pinned to an exact version. `SYNOPKGLAND_TEMPLATES_DIR` points
56
+ them at a templates checkout; without either, `TEMPLATES_MISSING`.
57
+ - `init` fills the placeholders in every generated file; the Go module path
58
+ of a new backend is the package id. The next steps say
59
+ `(cd frontend && npm install)`: the templates ship no lockfile.
60
+ - `init` and `add` share one capability overlay table (`root-ops`, `jobs`,
61
+ `delegate`).
62
+
63
+ ### Local SDK checkout
64
+
65
+ - With `SYNOPKGLAND_SDK_DIR`, `init` adds
66
+ `replace github.com/synopackageland/syno-pkg-land-sdk => $SYNOPKGLAND_SDK_DIR` to
67
+ `backend/go.mod` and sets the frontend dependency to
68
+ `file:$SYNOPKGLAND_SDK_DIR/ts`; install it with
69
+ `(cd frontend && npm install --install-links)`, which packs the SDK like the
70
+ released package. npm does not build a `file:` package, so a Vue project
71
+ needs `(cd $SYNOPKGLAND_SDK_DIR/ts && npm ci && npm run build)` first, and
72
+ again after SDK changes; `init` refuses a checkout without `ts/dist`, or
73
+ without a root `go.mod`, with `SDK_DIR_NOT_READY`.
74
+ - `build` uses `$SYNOPKGLAND_SDK_DIR/executor`, skips the digest table and
75
+ warns with `EXECUTOR_DIGEST_UNVERIFIED`. Do not
76
+ publish such an SPK; the release script refuses to run while
77
+ `SYNOPKGLAND_SDK_DIR` or `SYNOPKGLAND_TEMPLATES_DIR` is set.
78
+
79
+ ### Delegate: subfolders and conflict policy
80
+
81
+ - `files.moveFromStaging` (Go: `delegate.MoveParams.Name`) accepts folders
82
+ below the destination, for example `Album/CD1/01.flac`. The executor's move
83
+ child creates missing folders as the user, after the final revoke check, so
84
+ a canceled move leaves none behind. Existing folders are reused. Limits: 16
85
+ folders, 255 bytes per name, 1024 bytes in total. A name without folders
86
+ behaves exactly as before.
87
+ - New `conflict` field for `files.moveFromStaging` and the time-limited
88
+ `files.write`: `fail` (default, unchanged), `overwrite` (atomic replace of a
89
+ regular file the user can write) or `rename` (`name (1).ext` up to
90
+ `name (99).ext`; the receipt path reports the name used).
91
+ - New error codes: `invalid-path`, `path-too-deep`,
92
+ `destination-not-directory`, `name-too-long`.
93
+
94
+ ### Delegate: file operations for time-limited grants
95
+
96
+ - New operations `files.read`, `files.rename`, `files.copy`, `files.move` and
97
+ `files.delete`, each declared on its own; a write operation never implies
98
+ delete. Go: `job.Files()` returns `delegate.JobFiles` with `Read`, `Rename`,
99
+ `CreateFolderAll`, `Copy`, `Move`, `Delete`, `TaskStatus` and `CancelTask`.
100
+ - `files.createFolder` takes `parents` (`CreateFolderAll`, like `mkdir -p`).
101
+ - Except `files.write` and `files.read`, the executor calls File Station as the
102
+ user through one root-side allowlist of methods, and re-checks the paths File
103
+ Station reports against the grant. `files.read` copies the file into staging
104
+ in a child that drops to the user and never follows symlinks.
105
+ - Copy, move and delete run as File Station background tasks followed with the
106
+ implied `files.taskStatus` and `files.taskCancel`; revoking the grant stops
107
+ them. Delete needs `recursive` for folders and goes to the recycle bin; a
108
+ Shared Folder without one needs `permanent`.
109
+ - File Station refusals now report SDK codes (`PERMISSION_DENIED`,
110
+ `not-found`, `destination-exists`, `NO_SPACE`, `invalid-path`,
111
+ `name-too-long`) instead of `DSM_FAILED`. New codes: `not-a-file`,
112
+ `recursive-required`, `recycle-bin-disabled`, `task-not-found`,
113
+ `too-many-tasks`, `READ_FAILED`.
114
+
115
+ ### Approval
116
+
117
+ - An administrator approves the executor policy (operations, scope and root
118
+ tasks), not the executor binary. When an upgrade keeps the policy and the
119
+ new executor matches the `INFO` anchor, it installs without a new approval.
120
+ When the policy changes, the App stays at `needs-admin-approval` until an
121
+ administrator approves again.
122
+ - The 0.9.0 policy changes (new operations and `conflict`), so a delegate App
123
+ rebuilt with this CLI needs one new approval after the upgrade.
124
+ Moving the SDK to its own repository does not add one. Apps not rebuilt are
125
+ not affected.
126
+
3
127
  ## 0.8.0 (2026-10-11)
4
128
 
5
129
  Faster builds, one SPK checker for any package, and a guide for scripts and
package/README.md CHANGED
@@ -18,7 +18,7 @@ Native Go apps need Go 1.25+ and npm. The CLI is tested on Node.js 22.19.
18
18
  ```sh
19
19
  synopkgland init -t native-go --with files,jobs,login --package MyApp my-app
20
20
  cd my-app
21
- (cd frontend && npm ci)
21
+ (cd frontend && npm install)
22
22
  synopkgland check --json
23
23
  synopkgland build --arch x86_64 --json
24
24
  synopkgland inspect dist/MyApp-0.1.0-0001-x86_64.spk --json
@@ -40,6 +40,27 @@ the SPK with Package Center's Manual Install.
40
40
  Existing native products with their own payload layout use `backend: {kind: native}` in
41
41
  `dsm-package.yaml`.
42
42
 
43
+ ## SDK and templates
44
+
45
+ The CLI packages, deploys and checks. The app-side code is the SDK
46
+ ([synopackageland/syno-pkg-land-sdk](https://github.com/synopackageland/syno-pkg-land-sdk)): the Go module
47
+ `github.com/synopackageland/syno-pkg-land-sdk` and the npm package `@synopackageland/sdk` (Vue components at
48
+ `@synopackageland/sdk/vue`). The `require github.com/synopackageland/syno-pkg-land-sdk` line in
49
+ `backend/go.mod` is the app's only SDK version; `build` compiles the executor of that version
50
+ and checks it against the digests shipped in this CLI. CLI 0.9.x builds SDK 0.9.x.
51
+
52
+ The SDK repositories are private for now, so Go cannot fetch them from proxy.golang.org. Set
53
+ `go env -w GOPRIVATE=github.com/synopackageland/*` and give git a credential that can read
54
+ `https://github.com/synopackageland/syno-pkg-land-sdk` (check with `git ls-remote`); a failed
55
+ fetch reports `SDK_DOWNLOAD_FAILED` with the step that is missing.
56
+
57
+ `init` and `add` read their templates from `@synopackageland/templates`, an exact-pinned
58
+ dependency. For development against local checkouts, set `SYNOPKGLAND_TEMPLATES_DIR` to a
59
+ templates checkout and `SYNOPKGLAND_SDK_DIR` to an SDK checkout; SPKs built with
60
+ `SYNOPKGLAND_SDK_DIR` warn `EXECUTOR_DIGEST_UNVERIFIED` and must not be published. A Vue project
61
+ packs the local SDK into its frontend (`npm install --install-links`) without building it: run
62
+ `npm ci && npm run build` in `$SYNOPKGLAND_SDK_DIR/ts` first, and again after SDK changes.
63
+
43
64
  ## Capabilities
44
65
 
45
66
  Add them with `init --with …` or later with `synopkgland add <capability…>`.
@@ -86,14 +107,15 @@ UI components and `npx --no syno-pkg-land-ui describe Button --json` describes o
86
107
 
87
108
  ## Licensing
88
109
 
89
- The CLI and its original templates are MIT licensed, Copyright (c) 2026 synopkgland.
110
+ The CLI is MIT licensed, Copyright (c) 2026 synopkgland.
90
111
  Third-party components keep their own terms.
91
112
 
92
113
  - Generated projects keep the template terms in `LICENSES/TEMPLATE.txt`. `init` does not choose a
93
114
  license for your app: add your own `LICENSE`.
94
115
  - An SPK carries its legal notices under `LICENSES/` in the installed payload: `TEMPLATE.txt`,
95
- an optional `APP.txt`, Go's license, patents and third-party notices, and the Vue UI notices.
96
- - Vue builds generate the UI notices from the installed, locked dependencies; run `npm ci` in
116
+ an optional `APP.txt`, `SDK.txt` (the SDK's MIT license, when `backend/go.mod` requires the SDK),
117
+ Go's license, patents and third-party notices, and the Vue UI notices.
118
+ - Vue builds generate the UI notices from the installed dependencies; run `npm install` in
97
119
  `frontend/` first. A missing notice or version mismatch fails the build.
98
120
  - Keep `backend/THIRD_PARTY_NOTICES.txt` current when you change Go modules. Your own binaries,
99
121
  added modules, container images and upstream apps need their own notices.
package/dist/add.js CHANGED
@@ -5,19 +5,9 @@ import { isScalar, parseDocument } from 'yaml';
5
5
  import { capabilityNames, capabilitySettings } from './capabilities.js';
6
6
  import { initFromTemplate, nativeCapabilitySettings } from './init.js';
7
7
  import { templatesRoot } from './template-paths.js';
8
+ import { borrowedTarget, capabilityOverlays } from './capability-overlays.js';
8
9
  import { DEFAULT_MIN_DSM, isDsmAtLeast, PORTAL_MIN_DSM } from './build-spk/dsm-version.js';
9
10
  import { loadStandaloneManifest } from './standalone/manifest.js';
10
- const overlays = {
11
- jobs: ['native-go-jobs'],
12
- 'root-ops': ['native-go-root-ops'],
13
- delegate: ['native-go-jobs', 'native-go-delegate'],
14
- files: ['native-go-files'], login: ['native-go-identity'],
15
- };
16
- const removed = {
17
- jobs: ['backend/internal/app/background_none.go'],
18
- 'root-ops': ['backend/internal/app/root_none.go'],
19
- delegate: ['backend/internal/app/background_none.go', 'backend/internal/app/root_none.go', 'backend/internal/app/delegate_none.go'],
20
- };
21
11
  function files(root, dir = root) {
22
12
  if (!existsSync(dir))
23
13
  return [];
@@ -106,12 +96,9 @@ export function addCapabilities(root, requested) {
106
96
  const before = join(work, 'before'), generated = join(work, 'generated');
107
97
  initFromTemplate('native-go', before, { ui: m.ui.build ? 'vue' : 'plain', with: existingNames, packageId: m.package, displayName: m.displayname });
108
98
  initFromTemplate('native-go', generated, { ui: m.ui.build ? 'vue' : 'plain', with: [...existingNames, ...added], packageId: m.package, displayName: m.displayname });
109
- const destinations = [...new Set(added.flatMap(name => overlays[name].flatMap(overlay => files(join(templatesRoot(), overlay)))))].filter(file => existsSync(join(generated, file)));
110
- if (added.includes('delegate'))
111
- destinations.push('backend/internal/background/store.go', 'backend/internal/app/executor.go', 'backend/internal/app/executor_test.go', 'backend/internal/api/sdk-permissions.json');
112
- if (added.includes('jobs') || added.includes('delegate') || added.includes('root-ops'))
113
- destinations.push('backend/internal/app/routes_test.go');
114
- const deletions = added.flatMap(name => removed[name] ?? []);
99
+ const capability = capabilityOverlays(added);
100
+ const destinations = [...new Set([...capability.overlays.flatMap(overlay => files(join(templatesRoot(), overlay))), ...capability.borrowed.map(borrowedTarget)])].filter(file => existsSync(join(generated, file)));
101
+ const deletions = capability.removed;
115
102
  const conflicts = [];
116
103
  for (const file of destinations) {
117
104
  if (existsSync(join(before, file)) && safePath(root, file) && existsSync(join(root, file)) && lstatSync(join(root, file)).isFile() && readFileSync(join(root, file)).equals(readFileSync(join(before, file))))
@@ -4,4 +4,3 @@
4
4
  */
5
5
  export { ROOT_RUNTIME, type RootTask } from './standalone/native-root-window.js';
6
6
  export { AUTHORIZATION_RUNTIME } from './standalone/native-authorization-window.js';
7
- export declare const authorizationTemplateDirectory: URL;
@@ -4,4 +4,3 @@
4
4
  */
5
5
  export { ROOT_RUNTIME } from './standalone/native-root-window.js';
6
6
  export { AUTHORIZATION_RUNTIME } from './standalone/native-authorization-window.js';
7
- export const authorizationTemplateDirectory = new URL('../templates/native-authorization/', import.meta.url);
@@ -3,7 +3,7 @@ import { join } from "node:path";
3
3
  import { checkCgiBinary } from "../standalone/binary.js";
4
4
  import { runCommand } from "../standalone/build.js";
5
5
  import { resolvedWebAccess } from "../contract/web-launch.js";
6
- import { templatesRoot } from "../template-paths.js";
6
+ import { goAssetDir } from "../template-paths.js";
7
7
  import { PINNED_GO_HINT, pinnedGoBuildEnv, pinnedGoProblem } from "./go-toolchain.js";
8
8
  export { gatewayEntryPath } from "../contract/web-launch.js";
9
9
  /** Where the gateway CGI sits in the package payload; DSM serves `ui/` under /webman/3rdparty/<package>/. */
@@ -28,7 +28,7 @@ export async function buildGatewayBinary(input) {
28
28
  const out = join(input.work, `gateway-${input.arch}.cgi`);
29
29
  const ldflags = ["-s", "-w", "-buildid=", `-X main.packageID=${input.packageId}`, `-X 'main.configJSON=${JSON.stringify(input.config)}'`].join(" ");
30
30
  const result = await (input.run ?? runCommand)("go", ["build", "-trimpath", "-buildvcs=false", "-ldflags", ldflags, "-o", out, "."], {
31
- cwd: join(templatesRoot(), "_gateway"),
31
+ cwd: goAssetDir("gateway"),
32
32
  env: { ...process.env, ...pinnedGoBuildEnv(input.arch) },
33
33
  });
34
34
  if (result.missing) {
@@ -1,5 +1,6 @@
1
1
  import { copyFileSync, existsSync, lstatSync, mkdirSync, readFileSync, readdirSync } from 'node:fs';
2
2
  import { dirname, join } from 'node:path';
3
+ import { sdkRequirement, sdkSource } from '../runtime/sdk-source.js';
3
4
  /** Copy legal text only; never follow a project-supplied symlink. */
4
5
  export function copyNoticeTree(source, target) {
5
6
  const stat = lstatSync(source);
@@ -28,7 +29,7 @@ export function copyProjectNotices(root, payload) {
28
29
  export function copyStandaloneNotices(root, uiDir, payload, go, goDir = join(root, 'backend')) {
29
30
  copyProjectNotices(root, payload);
30
31
  const dest = join(payload, 'LICENSES');
31
- const shared = new URL('../../templates/_shared/', import.meta.url);
32
+ const shared = new URL('../../assets/licenses/', import.meta.url);
32
33
  if (go) {
33
34
  mkdirSync(dest, { recursive: true });
34
35
  for (const name of ['GO-LICENSE', 'GO-PATENTS'])
@@ -36,14 +37,17 @@ export function copyStandaloneNotices(root, uiDir, payload, go, goDir = join(roo
36
37
  if (existsSync(join(goDir, 'THIRD_PARTY_NOTICES.txt')))
37
38
  copyNoticeTree(join(goDir, 'THIRD_PARTY_NOTICES.txt'), join(dest, 'GO-THIRD_PARTY_NOTICES.txt'));
38
39
  }
39
- const nativeAdmin = join(goDir, 'internal/dsm/native');
40
- if (go && existsSync(join(nativeAdmin, 'admin_check.c'))) {
41
- for (const name of ['admin_check.c', 'apppriv_check.c', 'build.sh', 'provenance.json', 'licenses']) {
42
- // Projects scaffolded before the AppPriv bridge carry only the administrator bridge.
43
- if (name === 'apppriv_check.c' && !existsSync(join(nativeAdmin, name)))
44
- continue;
40
+ // The SDK's dsm package embeds the native administrator and AppPriv bridges; their sources and terms ship with them.
41
+ const sdk = go ? sdkRequirement(goDir) : undefined;
42
+ if (sdk) {
43
+ const source = sdkSource(sdk);
44
+ const license = join(source.goDir, 'LICENSE');
45
+ if (!existsSync(license))
46
+ throw new Error(`[NOTICE_MISSING] SDK license missing: ${license}`);
47
+ copyNoticeTree(license, join(dest, 'SDK.txt'));
48
+ const nativeAdmin = join(source.goDir, 'dsm/native');
49
+ for (const name of ['admin_check.c', 'apppriv_check.c', 'build.sh', 'provenance.json', 'licenses'])
45
50
  copyNoticeTree(join(nativeAdmin, name), join(dest, 'native-admin', name));
46
- }
47
51
  }
48
52
  const frontend = join(root, 'frontend/package.json');
49
53
  const usesUi = existsSync(frontend) && Boolean(JSON.parse(readFileSync(frontend, 'utf8')).dependencies?.['@synopackageland/ui']);
@@ -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...>")
@@ -102,7 +102,7 @@ export const ERROR_REGISTRY = {
102
102
  "GATEWAY_BUILD_FAILED": {
103
103
  "code": "GATEWAY_BUILD_FAILED",
104
104
  "description": "DSM 驗證閘道建置失敗或產出不是對應架構的靜態 ELF。",
105
- "suggestion": "請查看 go build 輸出;閘道固定以 go1.26.9 建置,離線時請安裝 go1.26.9 或讓 GOPROXY 可提供 golang.org/toolchain,並確認 templates/_gateway 未被修改。"
105
+ "suggestion": "請查看 go build 輸出;閘道固定以 go1.26.9 建置,離線時請安裝 go1.26.9 或讓 GOPROXY 可提供 golang.org/toolchain,並確認 CLI 套件的 assets/go/gateway 未被修改。"
106
106
  },
107
107
  "CONTRACT_INVALID_STRING": {
108
108
  "code": "CONTRACT_INVALID_STRING",
@@ -587,7 +587,7 @@ export const ERROR_REGISTRY = {
587
587
  "STANDALONE_GO_BUILD_FAILED": {
588
588
  "code": "STANDALONE_GO_BUILD_FAILED",
589
589
  "description": "go build 失敗。",
590
- "suggestion": "請在 backend 目錄執行 go build ./... 並修正錯誤。"
590
+ "suggestion": "請在 backend 目錄執行 go build ./... 並修正錯誤。取不到 github.com/synopackageland/syno-pkg-land-sdk 時,設定 GOPRIVATE=github.com/synopackageland/* 並讓 git 能以憑證讀 github.com。"
591
591
  },
592
592
  "STANDALONE_PORTAL_INVALID": {
593
593
  "code": "STANDALONE_PORTAL_INVALID",
@@ -695,7 +695,15 @@ export function getErrorCode(code) {
695
695
  return ERROR_REGISTRY[code];
696
696
  }
697
697
  for (const [code, description, suggestion] of [
698
- ["EXECUTOR_BUILD_FAILED", "executor 或 lifecycle helper 編譯失敗,或 CLI 套件缺少 executor 原始碼。", "確認已安裝 Go 1.21 以上且可取得 go1.26.9(離線時請先備妥),查看訊息中的編譯器輸出;原始碼缺少時重新安裝 CLI。"],
698
+ ["EXECUTOR_BUILD_FAILED", "從 App 相依的 SDK 版本編譯 executor 或 lifecycle helper 失敗。", "確認已安裝 Go 1.21 以上且可取得 go1.26.9(離線時請先備妥),查看訊息中的編譯器輸出。"],
699
+ ["EXECUTOR_DIGEST_MISMATCH", "由 SDK 版本建出的 executor 與 CLI 內建的 sha256 表不符,或表中沒有這個 SDK 版本。", "確認 backend/go.mod 的 github.com/synopackageland/syno-pkg-land-sdk 是正式版本且 Go 為 go1.26.9;表中沒有該版本時升級 CLI。"],
700
+ ["EXECUTOR_DIGEST_UNVERIFIED", "SYNOPKGLAND_SDK_DIR 指向本機 SDK,executor 未對照 sha256 表(警告)。", "只用於開發;要發佈的 SPK 請取消 SYNOPKGLAND_SDK_DIR 後重新 build。"],
701
+ ["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 後端。"],
702
+ ["SDK_VERSION_MISMATCH", "frontend/package.json 的 @synopackageland/sdk 與 backend/go.mod 要求的 SDK 版本不同。", "把兩邊改成同一個版本;file: 相依時,比對的是該目錄 package.json 的 version。"],
703
+ ["SDK_UNSUPPORTED", "backend/go.mod 要求的 SDK 不是這個 CLI 的 minor 版本線。", "改用與 SDK 同一 minor 的 CLI,或把 SDK 升到 CLI 支援的版本線(訊息列出)。"],
704
+ ["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)。"],
705
+ ["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 一次。"],
706
+ ["TEMPLATES_MISSING", "找不到 @synopackageland/templates。", "重新安裝 @synopackageland/cli,或把 SYNOPKGLAND_TEMPLATES_DIR 指向 templates checkout。"],
699
707
  ["EXECUTOR_PIN_REQUIRED", "宣告 rootOps 或 delegate 的套件建置時沒有 executor 產物。", "使用 synopkgland build,讓 CLI 編譯並 pin executor;不要直接呼叫低階 SPK API。"],
700
708
  ["EXECUTOR_POLICY", "capabilities.delegate 的 operations 或 scope 不合法,無法產生 executor policy。", "改用 init/add 產生的 delegate 宣告,或依 manifest 參考修正 scope 與 operations。"],
701
709
  ["EXECUTOR_PACKAGE", "pin 進 root task 的套件名稱不合法。", "package 必須以英文字母開頭,只含英數字(2–64 字)。"],
@@ -706,7 +714,7 @@ for (const [code, description, suggestion] of [
706
714
  ERROR_REGISTRY[code] = { code, description, suggestion };
707
715
  ERROR_REGISTRY["STANDALONE_ENTRY_INVALID"] = { "code": "STANDALONE_ENTRY_INVALID", "description": "entry 設定不合法。", "suggestion": "entry 填 admin-only 或 app-privilege;app-privilege 需要至少一個 authenticated route。" };
708
716
  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。" };
717
+ 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,並在 cmd/app/main.go 以 dsm.NewEntryGate 包住 authenticator。" };
710
718
  ERROR_REGISTRY["DSM_TLS_UNTRUSTED"] = { "code": "DSM_TLS_UNTRUSTED", "description": "DSM 的 TLS 憑證不受這台電腦信任(自簽、過期或名稱不符)。", "suggestion": "把 NAS 憑證或其 CA 匯出成 PEM,用 NODE_EXTRA_CA_CERTS=<該檔> 執行;或讓 DSM 使用與 host profile 名稱相符的受信任憑證。不要關閉憑證驗證。" };
711
719
  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
720
  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 預設圖示。" };
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);
package/dist/init.js CHANGED
@@ -3,8 +3,10 @@ import { isMap, isScalar, parse, parseDocument, stringify } from "yaml";
3
3
  import { capabilityNames, capabilitySettings } from "./capabilities.js";
4
4
  import { MOVE_FROM_STAGING } from './runtime/delegate-contract.js';
5
5
  import { cpSync, existsSync, mkdirSync, readdirSync, readFileSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
6
- import { basename, join, relative } from "node:path";
6
+ import { basename, join, relative, resolve } from "node:path";
7
+ import { SDK_MODULE, SDK_PACKAGE } from "./runtime/sdk-source.js";
7
8
  import { templatesRoot } from "./template-paths.js";
9
+ import { borrowedTarget, capabilityOverlays } from "./capability-overlays.js";
8
10
  import { resolveMinDsm, assertContainerMinDsm, DEFAULT_MIN_DSM, isDsmAtLeast } from "./build-spk/dsm-version.js";
9
11
  import { readSharedFolder } from "./standalone/shared-folder.js";
10
12
  const TEMPLATE_NAMES = [
@@ -35,20 +37,8 @@ export function nativeCapabilitySettings(names) {
35
37
  };
36
38
  return settings;
37
39
  }
38
- /**
39
- * native-go --with root-ops: files laid over the native-go template, and the
40
- * files they replace.
41
- */
42
- const ROOT_OVERLAY = "native-go-root-ops";
43
- const ROOT_REPLACED = ["backend/internal/app/root_none.go"];
44
- /** native-go --with jobs: overlay with the routes, the UI panel and the docs. */
45
- const BACKGROUND_OVERLAY = "native-go-jobs";
46
- const BACKGROUND_REPLACED = ["backend/internal/app/background_none.go"];
47
- /** Templates whose identity is filled in at init (placeholders in these files). */
48
- const SUBSTITUTED = {
49
- "native-go": ["dsm-package.yaml", "README.md"],
50
- "binary": ["dsm-package.yaml", "ui/app.js"],
51
- };
40
+ /** Templates whose identity is filled in at init: every generated file may carry a placeholder. */
41
+ const IDENTIFIED = ["native-go", "binary"];
52
42
  const PACKAGE_ID = /^[A-Za-z][A-Za-z0-9]{1,63}$/;
53
43
  /** npm never publishes files named .gitignore, so templates ship them as `gitignore`. */
54
44
  const RENAMED = { gitignore: ".gitignore" };
@@ -105,8 +95,9 @@ export function initFromTemplate(template, targetDir, options = {}) {
105
95
  throw new Error("[INIT_OPTIONS_UNSUPPORTED] --from 只適用於 compose。");
106
96
  if (caps.length && template !== "native-go")
107
97
  throw new Error("[CAPABILITY_UNSUPPORTED] binary/compose 不支援 --with 能力。");
108
- const background = caps.includes("jobs") || caps.includes("delegate");
109
- const executor = caps.includes("root-ops") || caps.includes("delegate");
98
+ const localSdk = template === "native-go" && process.env.SYNOPKGLAND_SDK_DIR ? resolve(process.env.SYNOPKGLAND_SDK_DIR) : undefined;
99
+ if (localSdk)
100
+ assertLocalSdkReady(localSdk, resolvedUi(template, options) === "vue");
110
101
  const source = join(templatesRoot(), template);
111
102
  if (!existsSync(source)) {
112
103
  throw new Error(`找不到模板:${template}`);
@@ -121,14 +112,8 @@ export function initFromTemplate(template, targetDir, options = {}) {
121
112
  if (rootExample && minDsm !== undefined && !isDsmAtLeast(minDsm, DEFAULT_MIN_DSM)) {
122
113
  throw new Error(`[MIN_DSM_INVALID] root templates require DSM ${DEFAULT_MIN_DSM} or later.`);
123
114
  }
124
- const overlays = [
125
- ...(rootExample ? [ROOT_OVERLAY] : []),
126
- ...(ui === "vue" ? ["native-go-vue"] : []),
127
- ...(background ? [BACKGROUND_OVERLAY] : []),
128
- ...(caps.includes("login") && existsSync(join(templatesRoot(), "native-go-identity")) ? ["native-go-identity"] : []),
129
- ...(caps.includes("files") && existsSync(join(templatesRoot(), "native-go-files")) ? ["native-go-files"] : []),
130
- ...(caps.includes("delegate") ? ["native-go-delegate"] : []),
131
- ].map(name => join(templatesRoot(), name));
115
+ const capability = capabilityOverlays(caps);
116
+ const overlays = [...(ui === "vue" ? ["native-go-vue"] : []), ...capability.overlays].map(name => join(templatesRoot(), name));
132
117
  // Shared legal resources also live in the CLI package; only the template
133
118
  // terms are an unconditional part of a generated project.
134
119
  const shared = join(templatesRoot(), "_shared");
@@ -149,35 +134,25 @@ export function initFromTemplate(template, targetDir, options = {}) {
149
134
  for (const dir of (ui === "vue" ? ["frontend"] : [])) {
150
135
  cpSync(join(shared, "third-party-notices.mjs"), join(targetDir, dir, "third-party-notices.mjs"));
151
136
  }
152
- if (rootExample)
153
- ROOT_REPLACED.forEach(file => rmSync(join(targetDir, file)));
154
- if (caps.includes("delegate") && !rootExample) {
155
- cpSync(join(templatesRoot(), ROOT_OVERLAY, "backend/internal/app/executor.go"), join(targetDir, "backend/internal/app/executor.go"));
156
- cpSync(join(templatesRoot(), ROOT_OVERLAY, "backend/internal/app/executor_test.go"), join(targetDir, "backend/internal/app/executor_test.go"));
157
- ROOT_REPLACED.forEach(file => rmSync(join(targetDir, file), { force: true }));
158
- }
137
+ for (const path of capability.borrowed)
138
+ cpSync(join(templatesRoot(), path), join(targetDir, borrowedTarget(path)));
139
+ for (const file of capability.removed)
140
+ rmSync(join(targetDir, file));
159
141
  if (caps.includes("delegate")) {
160
- rmSync(join(targetDir, "backend/internal/app/delegate_none.go"));
161
142
  const path = join(targetDir, "backend/internal/api/permissions.json");
162
143
  const policy = JSON.parse(readFileSync(path, "utf8"));
163
144
  policy.methods["app.status"] = "authenticated";
164
145
  writeFileSync(path, JSON.stringify(policy, null, 2) + "\n");
165
146
  }
166
- if (background)
167
- BACKGROUND_REPLACED.forEach(file => rmSync(join(targetDir, file)));
168
147
  for (const [from, to] of Object.entries(RENAMED)) {
169
148
  if (files.includes(from)) {
170
149
  renameSync(join(targetDir, from), join(targetDir, to));
171
150
  }
172
151
  }
173
- for (const file of new Set([...(SUBSTITUTED[template] ?? []), ...overlays.flatMap(root => templateFiles(root))])) {
174
- const path = join(targetDir, targetName(file));
175
- let text = readFileSync(path, "utf8");
176
- for (const [token, value] of Object.entries(substitutions)) {
177
- text = text.replaceAll(token, value);
178
- }
179
- writeFileSync(path, text);
180
- }
152
+ for (const file of files.map(targetName))
153
+ substitute(join(targetDir, file), substitutions);
154
+ if (localSdk)
155
+ useLocalSdk(targetDir, localSdk);
181
156
  if (minDsm) {
182
157
  const manifest = join(targetDir, template !== "compose" ? "dsm-package.yaml" : "synology-app.yaml");
183
158
  writeFileSync(manifest, readFileSync(manifest, "utf8").replace(/^os_min_ver:.*$/m, `os_min_ver: "${minDsm}"`));
@@ -189,20 +164,6 @@ export function initFromTemplate(template, targetDir, options = {}) {
189
164
  }
190
165
  if (ui !== "vue")
191
166
  rmSync(join(targetDir, "frontend"), { recursive: true, force: true });
192
- if (background) {
193
- const routeTest = join(targetDir, "backend/internal/app/routes_test.go");
194
- writeFileSync(routeTest, readFileSync(routeTest, "utf8").replace('want := ""', 'want := sampleOutcome[r.Method()]'));
195
- }
196
- if (executor) {
197
- const path = join(targetDir, "backend/internal/app/routes_test.go");
198
- writeFileSync(path, readFileSync(path, "utf8").replace('if strings.HasPrefix(r.Method(), "jobs.") {', 'if r.Method() == "root.run" { want = "session_required" }\n\t\tif strings.HasPrefix(r.Method(), "jobs.") {'));
199
- }
200
- if (background && ui === "vue") {
201
- const app = join(targetDir, "frontend/src/App.vue");
202
- writeFileSync(app, readFileSync(app, "utf8")
203
- .replace("import AppShell from './shell/AppShell.vue'\n", "import AppShell from './shell/AppShell.vue'\nimport BackgroundPanel from './background/BackgroundPanel.vue'\n")
204
- .replace(" <!-- BACKGROUND_PANEL -->", " <BackgroundPanel v-if=\"app\" :key=\"app.user\" :ctx=\"ctx\" />"));
205
- }
206
167
  if (template !== "compose") {
207
168
  const path = join(targetDir, "dsm-package.yaml");
208
169
  const raw = parse(readFileSync(path, "utf8"));
@@ -262,6 +223,39 @@ function sharedFolderYaml(options) {
262
223
  }
263
224
  return `\ninstall:\n sharedFolder:\n${Object.entries(folder).map(([k, v]) => ` ${k}: ${v}\n`).join("")}`;
264
225
  }
226
+ /**
227
+ * A local sdk checkout must hold the Go module, and for a Vue frontend the
228
+ * built ts package: npm installs a file: package as it is, without its build.
229
+ */
230
+ function assertLocalSdkReady(sdkDir, vue) {
231
+ if (!existsSync(join(sdkDir, "go.mod"))) {
232
+ throw new Error(`[SDK_DIR_NOT_READY] SYNOPKGLAND_SDK_DIR=${sdkDir} 沒有 go.mod;請指向 syno-pkg-land-sdk 的 checkout。`);
233
+ }
234
+ const ts = join(sdkDir, "ts");
235
+ if (vue && !existsSync(join(ts, "dist"))) {
236
+ throw new Error(`[SDK_DIR_NOT_READY] ${ts} 尚未建置;前端安裝本機 SDK 時 npm 不會替它 build。請先執行 (cd ${ts} && npm ci && npm run build),SDK 原始碼改動後也要重新 build。`);
237
+ }
238
+ }
239
+ /** SYNOPKGLAND_SDK_DIR: the project builds against a local sdk checkout instead of the released version. */
240
+ function useLocalSdk(targetDir, sdkDir) {
241
+ const goMod = join(targetDir, "backend/go.mod");
242
+ writeFileSync(goMod, `${readFileSync(goMod, "utf8")}\nreplace ${SDK_MODULE} => ${sdkDir}\n`);
243
+ const frontend = join(targetDir, "frontend/package.json");
244
+ if (!existsSync(frontend))
245
+ return;
246
+ const pkg = JSON.parse(readFileSync(frontend, "utf8"));
247
+ pkg.dependencies[SDK_PACKAGE] = `file:${join(sdkDir, "ts")}`;
248
+ writeFileSync(frontend, JSON.stringify(pkg, null, 2) + "\n");
249
+ }
250
+ /** Fill the placeholders of one generated file; files without one, or removed by an overlay, stay untouched. */
251
+ function substitute(path, substitutions) {
252
+ if (!existsSync(path))
253
+ return;
254
+ const original = readFileSync(path, "utf8");
255
+ const text = Object.entries(substitutions).reduce((current, [token, value]) => current.replaceAll(token, value), original);
256
+ if (text !== original)
257
+ writeFileSync(path, text);
258
+ }
265
259
  function substitutionsFor(template, targetDir, options) {
266
260
  const ui = resolvedUi(template, options);
267
261
  const caps = capabilityNames(options.with ?? []);
@@ -274,7 +268,7 @@ function substitutionsFor(template, targetDir, options) {
274
268
  }
275
269
  if (options.ui !== undefined && !["plain", "vue"].includes(options.ui))
276
270
  throw new Error("[INIT_UI_INVALID] --ui 只接受 plain 或 vue。");
277
- if (!SUBSTITUTED[template]) {
271
+ if (!IDENTIFIED.includes(template)) {
278
272
  if (options.from && options.displayName !== undefined)
279
273
  validDisplayName(options.displayName);
280
274
  return {};
@@ -9,9 +9,9 @@ import { tmpdir } from "node:os";
9
9
  import { dirname, isAbsolute, join, relative, resolve } from "node:path";
10
10
  import { extractSpk, walkFiles } from "./build-spk/generator.js";
11
11
  import { invalid, readReproducible } from "./reproducible-config.js";
12
+ import { CLI_VERSION } from "./cli-version.js";
12
13
  export { readReproducible, validateReproducible } from "./reproducible-config.js";
13
14
  export const FINGERPRINT_RECORD = "reproducible-fingerprint.json";
14
- const CLI_VERSION = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8")).version;
15
15
  const sha256 = (bytes) => createHash("sha256").update(bytes).digest("hex");
16
16
  function insideProject(root, path) {
17
17
  const rel = relative(realpathSync(root), realpathSync(path));