@synopackageland/cli 0.9.7 → 0.10.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 (111) hide show
  1. package/CHANGELOG.md +121 -0
  2. package/README.md +5 -0
  3. package/dist/add.js +7 -8
  4. package/dist/build-spk/dsm-arch.js +1 -1
  5. package/dist/build-spk/dsm-icons.d.ts +8 -1
  6. package/dist/build-spk/dsm-icons.js +26 -12
  7. package/dist/build-spk/dsm-version.d.ts +1 -1
  8. package/dist/build-spk/dsm-version.js +4 -4
  9. package/dist/build-spk/gateway.js +2 -2
  10. package/dist/build-spk/generator.js +1 -1
  11. package/dist/build-spk/png.js +16 -16
  12. package/dist/capabilities.js +1 -1
  13. package/dist/capability-overlays.d.ts +16 -5
  14. package/dist/capability-overlays.js +30 -16
  15. package/dist/cli.js +107 -107
  16. package/dist/compose/analyze.js +23 -23
  17. package/dist/compose/privilege.js +12 -12
  18. package/dist/contract/i18n.js +3 -3
  19. package/dist/contract/icon.js +2 -2
  20. package/dist/contract/posix-all-shares.js +2 -2
  21. package/dist/contract/schema-validate.js +3 -3
  22. package/dist/contract/validate.js +16 -16
  23. package/dist/contract/web-launch.d.ts +2 -1
  24. package/dist/contract/web-launch.js +3 -2
  25. package/dist/deploy/deploy.js +8 -8
  26. package/dist/deploy/homes-values.js +1 -1
  27. package/dist/deploy/identity-shared.js +1 -1
  28. package/dist/deploy/native-install-values.js +1 -1
  29. package/dist/deploy/param-values.js +4 -4
  30. package/dist/deploy/plan.d.ts +1 -1
  31. package/dist/deploy/port-preflight.js +3 -3
  32. package/dist/deploy/run-as-values.js +2 -2
  33. package/dist/deploy/share-permission-preflight.js +6 -6
  34. package/dist/deploy/share-values.js +3 -3
  35. package/dist/error-registry.js +369 -346
  36. package/dist/errors.js +1 -1
  37. package/dist/host/dsm-port-profile.d.ts +1 -1
  38. package/dist/host/dsm-port-profile.js +1 -1
  39. package/dist/info.js +11 -11
  40. package/dist/init.d.ts +2 -0
  41. package/dist/init.js +85 -38
  42. package/dist/inspect.js +5 -5
  43. package/dist/portal/alias.d.ts +1 -1
  44. package/dist/portal/alias.js +4 -4
  45. package/dist/runtime/executor-build.js +12 -1
  46. package/dist/runtime/executor-digests.json +8 -96
  47. package/dist/runtime/executor-inspect.js +11 -4
  48. package/dist/runtime/executor-policy.d.ts +9 -2
  49. package/dist/runtime/executor-policy.js +27 -8
  50. package/dist/runtime/root-programs.d.ts +47 -0
  51. package/dist/runtime/root-programs.js +153 -0
  52. package/dist/runtime/sdk-source.d.ts +5 -4
  53. package/dist/runtime/sdk-source.js +8 -4
  54. package/dist/skill.js +14 -14
  55. package/dist/spk/check-info.js +17 -17
  56. package/dist/spk/check-metadata.js +18 -18
  57. package/dist/spk/check-payload.js +10 -10
  58. package/dist/spk/rules.d.ts +57 -57
  59. package/dist/spk/rules.js +50 -50
  60. package/dist/spk/validate-spk.js +5 -5
  61. package/dist/standalone/api-permissions.js +1 -1
  62. package/dist/standalone/background.d.ts +3 -1
  63. package/dist/standalone/background.js +8 -4
  64. package/dist/standalone/binary.js +7 -7
  65. package/dist/standalone/bridge-app.d.ts +23 -0
  66. package/dist/standalone/bridge-app.js +141 -0
  67. package/dist/standalone/bridge-backend.d.ts +40 -0
  68. package/dist/standalone/bridge-backend.js +95 -0
  69. package/dist/standalone/bridge-build.d.ts +21 -0
  70. package/dist/standalone/bridge-build.js +62 -0
  71. package/dist/standalone/bridge-json.d.ts +16 -0
  72. package/dist/standalone/bridge-json.js +59 -0
  73. package/dist/standalone/bridge-runtime.d.ts +16 -0
  74. package/dist/standalone/bridge-runtime.js +46 -0
  75. package/dist/standalone/bridge-rust.d.ts +16 -0
  76. package/dist/standalone/bridge-rust.js +89 -0
  77. package/dist/standalone/build.js +18 -14
  78. package/dist/standalone/daemon.js +6 -6
  79. package/dist/standalone/dsm-window.d.ts +10 -5
  80. package/dist/standalone/dsm-window.js +64 -16
  81. package/dist/standalone/i18n.js +18 -18
  82. package/dist/standalone/inspect-bridge.d.ts +31 -0
  83. package/dist/standalone/inspect-bridge.js +111 -0
  84. package/dist/standalone/inspect-spk.d.ts +1 -1
  85. package/dist/standalone/inspect-spk.js +77 -69
  86. package/dist/standalone/lifecycle.js +22 -3
  87. package/dist/standalone/manifest.d.ts +17 -9
  88. package/dist/standalone/manifest.js +143 -65
  89. package/dist/standalone/portal-window.js +14 -7
  90. package/dist/standalone/request-timeout.d.ts +9 -0
  91. package/dist/standalone/request-timeout.js +13 -0
  92. package/dist/standalone/root-ops.d.ts +23 -2
  93. package/dist/standalone/root-ops.js +118 -13
  94. package/dist/standalone/sdk-check.js +4 -4
  95. package/dist/standalone/shared-folder.js +7 -7
  96. package/dist/standalone/spk.d.ts +2 -0
  97. package/dist/standalone/spk.js +30 -11
  98. package/dist/standalone/uninstall-hook.js +22 -4
  99. package/dist/standalone/uninstall.js +7 -7
  100. package/dist/standalone/window-size.d.ts +17 -0
  101. package/dist/standalone/window-size.js +31 -0
  102. package/dist/types.d.ts +1 -1
  103. package/dist/validate.js +13 -13
  104. package/package.json +2 -2
  105. package/schema/bridge-manifest.v1.schema.json +86 -0
  106. package/skills/reference/create.md +76 -2
  107. package/skills/reference/ui-json.md +2 -1
  108. package/skills/reference/ui-vue.md +9 -3
  109. package/skills/reference/wrap.md +1 -1
  110. package/dist/standalone/rust-build.d.ts +0 -35
  111. package/dist/standalone/rust-build.js +0 -127
@@ -31,7 +31,7 @@ export function resolveDsmUserExtraValues(input) {
31
31
  return {
32
32
  ok: false,
33
33
  code: DSM_USER_LOGICAL_NAME_REQUIRED,
34
- message: `Container Run-as「${key}」必須是這台 NAS 上的 DSM 使用者邏輯名,不能傳數字 uid。`,
34
+ message: `The Container Run-as "${key}" must be a DSM user logical name on this NAS; a numeric uid is not accepted.`,
35
35
  };
36
36
  }
37
37
  extraValues[key] = logical;
@@ -41,7 +41,7 @@ export function resolveDsmUserExtraValues(input) {
41
41
  return {
42
42
  ok: false,
43
43
  code: DSM_USER_REQUIRED,
44
- message: `契約有 Container Run-as「${missing.join("、")}」。請傳這台 NAS 上的 DSM 使用者邏輯名(例如 ${example})。禁止把數字 uid 寫進 extra_values。`,
44
+ message: `The contract has Container Run-as slots "${missing.join(", ")}". Pass a DSM user logical name on this NAS (for example ${example}). Do not write a numeric uid into extra_values.`,
45
45
  };
46
46
  }
47
47
  return { ok: true, extraValues };
@@ -62,18 +62,18 @@ export async function runSharePermissionPreflight(input) {
62
62
  });
63
63
  if (verdict.access === "denied" || verdict.access === "none") {
64
64
  const cause = verdict.access === "denied"
65
- ? `被「${verdict.deniedBy}」明確拒絕`
66
- : "在使用者本身與其所屬群組都沒有任何授權";
65
+ ? `is explicitly denied by "${verdict.deniedBy}"`
66
+ : "has no permission through the user or any of their groups";
67
67
  return {
68
68
  ok: false,
69
69
  code: SHARE_RUN_AS_NO_ACCESS,
70
- message: `Container Run-as「${userKey}=${userName}」對 Shared Folder「${shareKey}=${shareName}」${cause}。` +
71
- "容器會以該使用者的身分掛載這個 Share,安裝雖然會成功,但讀寫會在 runtime 拿到 Permission denied。" +
72
- `請先在 DSM 控制台把 ${shareName} 的權限給 ${userName},或改選另一個使用者/Share。`,
70
+ message: `Container Run-as "${userKey}=${userName}" ${cause} for Shared Folder "${shareKey}=${shareName}".` +
71
+ "The container mounts this Share as that user, so the install succeeds but runtime reads and writes get Permission denied." +
72
+ `Grant ${userName} permission on ${shareName} in DSM Control Panel first, or choose another user/Share.`,
73
73
  };
74
74
  }
75
75
  if (verdict.access === "read") {
76
- notes.push(`Run-as「${userName}」對 Shared Folder「${shareName}」只有唯讀權限(來源 ${verdict.grantedBy})。若 App 需要寫入會在 runtime 失敗。`);
76
+ notes.push(`Run-as "${userName}" has read-only permission on Shared Folder "${shareName}" (source ${verdict.grantedBy}). If the App needs to write, it fails at runtime.`);
77
77
  }
78
78
  }
79
79
  }
@@ -35,7 +35,7 @@ export async function resolveSharedFolderExtraValues(input) {
35
35
  return {
36
36
  ok: false,
37
37
  code: SHARE_LOGICAL_NAME_REQUIRED,
38
- message: `Shared Folder「${key}」必須是這台 NAS 上的邏輯 Share 名,不能傳 /volume1/... 實體路徑。`,
38
+ message: `The Shared Folder "${key}" must be a logical Share name on this NAS; a /volume1/... physical path is not accepted.`,
39
39
  };
40
40
  }
41
41
  const resolved = await input.lookup(logical);
@@ -43,7 +43,7 @@ export async function resolveSharedFolderExtraValues(input) {
43
43
  return {
44
44
  ok: false,
45
45
  code: SHARE_NOT_FOUND,
46
- message: `這台 NAS 找不到 Shared Folder「${logical}」。請改傳已存在的邏輯名;不會猜測實體路徑。`,
46
+ message: `Shared Folder "${logical}" was not found on this NAS. Pass an existing logical name; physical paths are not guessed.`,
47
47
  };
48
48
  }
49
49
  extraValues[key] = resolved;
@@ -53,7 +53,7 @@ export async function resolveSharedFolderExtraValues(input) {
53
53
  return {
54
54
  ok: false,
55
55
  code: SHARE_VALUE_REQUIRED,
56
- message: `契約有 Shared Folder 槽「${missing.join("、")}」。請傳每個槽在這台 NAS 上的邏輯 Share 名(例如 ${example}),或改走會跳出 Package Center 安裝精靈的安裝。禁止以 extra_values={} 繼續,否則會 bind 空路徑(Container Manager 2202)。`,
56
+ message: `The contract has Shared Folder slots "${missing.join(", ")}". Pass the logical Share name of each slot on this NAS (for example ${example}), or use an install that opens the Package Center install wizard. Do not continue with extra_values={}, or it binds an empty path (Container Manager 2202).`,
57
57
  };
58
58
  }
59
59
  return { ok: true, extraValues };