@synopackageland/cli 0.13.1 → 0.15.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.
- package/CHANGELOG.md +18 -0
- package/README.md +44 -1
- package/dist/build-spk/generator.d.ts +3 -2
- package/dist/build-spk/generator.js +6 -850
- package/dist/build-spk/resource-worker.d.ts +2 -14
- package/dist/build-spk/resource-worker.js +3 -166
- package/dist/cli.js +208 -56
- package/dist/compose/analyze.d.ts +3 -61
- package/dist/compose/analyze.js +35 -776
- package/dist/compose/env.d.ts +5 -3
- package/dist/compose/env.js +17 -25
- package/dist/compose/runner.js +23 -6
- package/dist/contract/app-launch.d.ts +11 -0
- package/dist/contract/app-launch.js +18 -0
- package/dist/contract/web-launch.d.ts +3 -13
- package/dist/contract/web-launch.js +14 -81
- package/dist/ctl/cli.d.ts +36 -0
- package/dist/ctl/cli.js +218 -0
- package/dist/ctl/descriptor.d.ts +81 -0
- package/dist/ctl/descriptor.js +93 -0
- package/dist/ctl/dsm-auth.d.ts +10 -0
- package/dist/ctl/dsm-auth.js +30 -0
- package/dist/ctl/errors.d.ts +17 -0
- package/dist/ctl/errors.js +32 -0
- package/dist/ctl/flows.d.ts +11 -0
- package/dist/ctl/flows.js +52 -0
- package/dist/ctl/input.d.ts +20 -0
- package/dist/ctl/input.js +128 -0
- package/dist/ctl/json.d.ts +2 -0
- package/dist/ctl/json.js +38 -0
- package/dist/ctl/redaction.d.ts +15 -0
- package/dist/ctl/redaction.js +198 -0
- package/dist/ctl/service.d.ts +38 -0
- package/dist/ctl/service.js +156 -0
- package/dist/ctl/store.d.ts +51 -0
- package/dist/ctl/store.js +93 -0
- package/dist/ctl/transfers.d.ts +14 -0
- package/dist/ctl/transfers.js +74 -0
- package/dist/ctl/transport.d.ts +11 -0
- package/dist/ctl/transport.js +79 -0
- package/dist/deploy/deploy.d.ts +4 -3
- package/dist/deploy/deploy.js +5 -210
- package/dist/deploy/plan.js +26 -7
- package/dist/dev.js +5 -4
- package/dist/error-registry.js +1020 -831
- package/dist/info.js +120 -28
- package/dist/init.js +188 -64
- package/dist/inspect.js +21 -6
- package/dist/runtime/executor-digests.json +1 -12
- package/dist/skill.js +51 -9
- package/dist/standalone/api-description-inspect.d.ts +4 -0
- package/dist/standalone/api-description-inspect.js +12 -0
- package/dist/standalone/api-description.d.ts +7 -0
- package/dist/standalone/api-description.js +73 -0
- package/dist/standalone/build.d.ts +3 -0
- package/dist/standalone/build.js +140 -33
- package/dist/standalone/compose-errors.d.ts +3 -0
- package/dist/standalone/compose-errors.js +243 -0
- package/dist/standalone/compose.d.ts +97 -10
- package/dist/standalone/compose.js +306 -75
- package/dist/standalone/daemon.js +111 -29
- package/dist/standalone/dsm-window.js +55 -9
- package/dist/standalone/identity-gateway.d.ts +9 -2
- package/dist/standalone/identity-gateway.js +282 -66
- package/dist/standalone/inspect-spk.d.ts +15 -0
- package/dist/standalone/inspect-spk.js +714 -128
- package/dist/standalone/lifecycle.js +124 -42
- package/dist/standalone/manifest.d.ts +10 -1
- package/dist/standalone/manifest.js +308 -87
- package/dist/standalone/resource.js +6 -2
- package/dist/standalone/spk.d.ts +4 -1
- package/dist/standalone/spk.js +139 -39
- package/dist/template-paths.d.ts +0 -2
- package/dist/template-paths.js +0 -5
- package/dist/test-command.d.ts +1 -1
- package/dist/test-command.js +1 -1
- package/dist/validate.d.ts +3 -3
- package/dist/validate.js +32 -140
- package/package.json +5 -3
- package/schema/synology-app.schema.json +1 -1
- package/schema/synopkgland-api-v1.schema.json +423 -0
- package/skills/SKILL.md +34 -1
- package/skills/reference/compose.md +349 -0
- package/skills/reference/create.md +26 -4
- package/skills/reference/ctl.md +41 -0
- package/skills/reference/deploy.md +1 -1
- package/skills/reference/files.md +4 -0
- package/skills/reference/identity-gateway.md +8 -138
- package/skills/reference/portal.md +31 -0
- package/skills/reference/ui-vue.md +31 -0
- package/skills/reference/wrap.md +10 -30
- package/assets/go/daemon/fixture_linux_test.go +0 -15
- package/assets/go/daemon/fixture_other_test.go +0 -7
- package/assets/go/daemon/go.mod +0 -5
- package/assets/go/daemon/main.go +0 -636
- package/assets/go/daemon/main_test.go +0 -315
- package/assets/go/daemon/network.go +0 -107
- package/assets/go/daemon/network_test.go +0 -86
- package/assets/go/daemon/process_linux.go +0 -55
- package/assets/go/daemon/process_linux_test.go +0 -161
- package/assets/go/daemon/process_other.go +0 -14
- package/assets/go/daemon/testdata/child.go +0 -44
- package/assets/go/gateway/auth.go +0 -101
- package/assets/go/gateway/auth_test.go +0 -216
- package/assets/go/gateway/cgi.go +0 -133
- package/assets/go/gateway/cgi_test.go +0 -156
- package/assets/go/gateway/csrf.go +0 -73
- package/assets/go/gateway/csrf_test.go +0 -155
- package/assets/go/gateway/directory.go +0 -108
- package/assets/go/gateway/directory_test.go +0 -202
- package/assets/go/gateway/gateway.go +0 -412
- package/assets/go/gateway/gateway_test.go +0 -676
- package/assets/go/gateway/go.mod +0 -5
- package/assets/go/gateway/groups.go +0 -66
- package/assets/go/gateway/main.go +0 -45
- package/dist/build-spk/gateway.d.ts +0 -31
- package/dist/build-spk/gateway.js +0 -60
- package/dist/compose/privilege.d.ts +0 -14
- package/dist/compose/privilege.js +0 -102
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "Syno Package Land API 描述 v1",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"additionalProperties": false,
|
|
6
|
+
"properties": {
|
|
7
|
+
"format": {
|
|
8
|
+
"const": "synopkgland.api"
|
|
9
|
+
},
|
|
10
|
+
"version": {
|
|
11
|
+
"const": 1
|
|
12
|
+
},
|
|
13
|
+
"payload": {
|
|
14
|
+
"type": "object",
|
|
15
|
+
"additionalProperties": false,
|
|
16
|
+
"properties": {
|
|
17
|
+
"package": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"additionalProperties": false,
|
|
20
|
+
"properties": {
|
|
21
|
+
"id": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"pattern": "^[A-Za-z][A-Za-z0-9_.+-]{0,127}$"
|
|
24
|
+
},
|
|
25
|
+
"version": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"minLength": 1,
|
|
28
|
+
"maxLength": 128
|
|
29
|
+
},
|
|
30
|
+
"displayName": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"minLength": 1,
|
|
33
|
+
"maxLength": 1024
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"required": [
|
|
37
|
+
"id",
|
|
38
|
+
"version",
|
|
39
|
+
"displayName"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"aliases": {
|
|
43
|
+
"type": "array",
|
|
44
|
+
"uniqueItems": true,
|
|
45
|
+
"maxItems": 8,
|
|
46
|
+
"items": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"pattern": "^[a-zA-Z][a-zA-Z0-9-]{0,63}$"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"provenance": {
|
|
52
|
+
"type": "object",
|
|
53
|
+
"additionalProperties": false,
|
|
54
|
+
"properties": {
|
|
55
|
+
"developedBy": {
|
|
56
|
+
"enum": [
|
|
57
|
+
"synopkgland",
|
|
58
|
+
"third-party",
|
|
59
|
+
"unknown"
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
"generator": {
|
|
63
|
+
"type": "string",
|
|
64
|
+
"minLength": 1,
|
|
65
|
+
"maxLength": 1024
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"required": [
|
|
69
|
+
"developedBy",
|
|
70
|
+
"generator"
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
"entry": {
|
|
74
|
+
"enum": [
|
|
75
|
+
"policy",
|
|
76
|
+
"admin-only",
|
|
77
|
+
"app-privilege"
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
"transport": {
|
|
81
|
+
"type": "object",
|
|
82
|
+
"additionalProperties": false,
|
|
83
|
+
"properties": {
|
|
84
|
+
"path": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"pattern": "^/webman/3rdparty/[A-Za-z][A-Za-z0-9_.+-]{0,127}/cgi/api\\.cgi$"
|
|
87
|
+
},
|
|
88
|
+
"auth": {
|
|
89
|
+
"enum": [
|
|
90
|
+
"dsm-session",
|
|
91
|
+
"dsm-app-session"
|
|
92
|
+
]
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"required": [
|
|
96
|
+
"path",
|
|
97
|
+
"auth"
|
|
98
|
+
]
|
|
99
|
+
},
|
|
100
|
+
"bindings": {
|
|
101
|
+
"type": "object",
|
|
102
|
+
"minProperties": 1,
|
|
103
|
+
"maxProperties": 1024,
|
|
104
|
+
"propertyNames": {
|
|
105
|
+
"type": "string",
|
|
106
|
+
"maxLength": 128,
|
|
107
|
+
"pattern": "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)+$"
|
|
108
|
+
},
|
|
109
|
+
"additionalProperties": {
|
|
110
|
+
"type": "object",
|
|
111
|
+
"additionalProperties": false,
|
|
112
|
+
"properties": {
|
|
113
|
+
"effect": {
|
|
114
|
+
"enum": [
|
|
115
|
+
"read",
|
|
116
|
+
"write",
|
|
117
|
+
"destructive"
|
|
118
|
+
]
|
|
119
|
+
},
|
|
120
|
+
"permission": {
|
|
121
|
+
"enum": [
|
|
122
|
+
"public",
|
|
123
|
+
"authenticated",
|
|
124
|
+
"administrators"
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
"required": [
|
|
129
|
+
"effect",
|
|
130
|
+
"permission"
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"commands": {
|
|
135
|
+
"type": "object",
|
|
136
|
+
"minProperties": 1,
|
|
137
|
+
"maxProperties": 1024,
|
|
138
|
+
"propertyNames": {
|
|
139
|
+
"type": "string",
|
|
140
|
+
"maxLength": 128,
|
|
141
|
+
"pattern": "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)+$"
|
|
142
|
+
},
|
|
143
|
+
"additionalProperties": {
|
|
144
|
+
"type": "object",
|
|
145
|
+
"additionalProperties": false,
|
|
146
|
+
"properties": {
|
|
147
|
+
"summary": {
|
|
148
|
+
"type": "string",
|
|
149
|
+
"minLength": 1,
|
|
150
|
+
"maxLength": 1024
|
|
151
|
+
},
|
|
152
|
+
"cli": {
|
|
153
|
+
"type": "array",
|
|
154
|
+
"minItems": 1,
|
|
155
|
+
"maxItems": 8,
|
|
156
|
+
"items": {
|
|
157
|
+
"type": "string",
|
|
158
|
+
"maxLength": 64,
|
|
159
|
+
"pattern": "^[a-z][a-z0-9-]*$"
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
"effect": {
|
|
163
|
+
"enum": [
|
|
164
|
+
"read",
|
|
165
|
+
"write",
|
|
166
|
+
"destructive"
|
|
167
|
+
]
|
|
168
|
+
},
|
|
169
|
+
"permission": {
|
|
170
|
+
"enum": [
|
|
171
|
+
"public",
|
|
172
|
+
"authenticated",
|
|
173
|
+
"administrators"
|
|
174
|
+
]
|
|
175
|
+
},
|
|
176
|
+
"paramsSchema": {
|
|
177
|
+
"type": "object"
|
|
178
|
+
},
|
|
179
|
+
"resultSchema": {
|
|
180
|
+
"type": "object"
|
|
181
|
+
},
|
|
182
|
+
"examples": {
|
|
183
|
+
"type": "array",
|
|
184
|
+
"maxItems": 16,
|
|
185
|
+
"items": {
|
|
186
|
+
"type": "object"
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
"flow": {
|
|
190
|
+
"oneOf": [
|
|
191
|
+
{
|
|
192
|
+
"type": "object",
|
|
193
|
+
"additionalProperties": false,
|
|
194
|
+
"properties": {
|
|
195
|
+
"type": {
|
|
196
|
+
"const": "invoke"
|
|
197
|
+
},
|
|
198
|
+
"method": {
|
|
199
|
+
"type": "string",
|
|
200
|
+
"maxLength": 128,
|
|
201
|
+
"pattern": "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)+$"
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
"required": [
|
|
205
|
+
"type",
|
|
206
|
+
"method"
|
|
207
|
+
]
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"type": "object",
|
|
211
|
+
"additionalProperties": false,
|
|
212
|
+
"properties": {
|
|
213
|
+
"type": {
|
|
214
|
+
"const": "ndjson"
|
|
215
|
+
},
|
|
216
|
+
"method": {
|
|
217
|
+
"type": "string",
|
|
218
|
+
"maxLength": 128,
|
|
219
|
+
"pattern": "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)+$"
|
|
220
|
+
}
|
|
221
|
+
},
|
|
222
|
+
"required": [
|
|
223
|
+
"type",
|
|
224
|
+
"method"
|
|
225
|
+
]
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"type": "object",
|
|
229
|
+
"additionalProperties": false,
|
|
230
|
+
"properties": {
|
|
231
|
+
"type": {
|
|
232
|
+
"const": "upload"
|
|
233
|
+
},
|
|
234
|
+
"method": {
|
|
235
|
+
"type": "string",
|
|
236
|
+
"maxLength": 128,
|
|
237
|
+
"pattern": "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)+$"
|
|
238
|
+
},
|
|
239
|
+
"fileParam": {
|
|
240
|
+
"type": "string",
|
|
241
|
+
"minLength": 1,
|
|
242
|
+
"maxLength": 1024
|
|
243
|
+
},
|
|
244
|
+
"parentParam": {
|
|
245
|
+
"type": "string",
|
|
246
|
+
"minLength": 1,
|
|
247
|
+
"maxLength": 1024
|
|
248
|
+
},
|
|
249
|
+
"nameParam": {
|
|
250
|
+
"type": "string",
|
|
251
|
+
"minLength": 1,
|
|
252
|
+
"maxLength": 1024
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
"required": [
|
|
256
|
+
"type",
|
|
257
|
+
"method",
|
|
258
|
+
"fileParam",
|
|
259
|
+
"parentParam",
|
|
260
|
+
"nameParam"
|
|
261
|
+
]
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"type": "object",
|
|
265
|
+
"additionalProperties": false,
|
|
266
|
+
"properties": {
|
|
267
|
+
"type": {
|
|
268
|
+
"const": "paginate"
|
|
269
|
+
},
|
|
270
|
+
"method": {
|
|
271
|
+
"type": "string",
|
|
272
|
+
"maxLength": 128,
|
|
273
|
+
"pattern": "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)+$"
|
|
274
|
+
},
|
|
275
|
+
"items": {
|
|
276
|
+
"type": "string",
|
|
277
|
+
"minLength": 1,
|
|
278
|
+
"maxLength": 1024
|
|
279
|
+
},
|
|
280
|
+
"offsetParam": {
|
|
281
|
+
"type": "string",
|
|
282
|
+
"minLength": 1,
|
|
283
|
+
"maxLength": 1024
|
|
284
|
+
},
|
|
285
|
+
"limitParam": {
|
|
286
|
+
"type": "string",
|
|
287
|
+
"minLength": 1,
|
|
288
|
+
"maxLength": 1024
|
|
289
|
+
},
|
|
290
|
+
"pageSize": {
|
|
291
|
+
"type": "integer",
|
|
292
|
+
"minimum": 1,
|
|
293
|
+
"maximum": 1000
|
|
294
|
+
},
|
|
295
|
+
"maxPages": {
|
|
296
|
+
"type": "integer",
|
|
297
|
+
"minimum": 1,
|
|
298
|
+
"maximum": 1000
|
|
299
|
+
}
|
|
300
|
+
},
|
|
301
|
+
"required": [
|
|
302
|
+
"type",
|
|
303
|
+
"method",
|
|
304
|
+
"items",
|
|
305
|
+
"offsetParam",
|
|
306
|
+
"limitParam",
|
|
307
|
+
"pageSize",
|
|
308
|
+
"maxPages"
|
|
309
|
+
]
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
"type": "object",
|
|
313
|
+
"additionalProperties": false,
|
|
314
|
+
"properties": {
|
|
315
|
+
"type": {
|
|
316
|
+
"const": "job"
|
|
317
|
+
},
|
|
318
|
+
"start": {
|
|
319
|
+
"type": "string",
|
|
320
|
+
"maxLength": 128,
|
|
321
|
+
"pattern": "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)+$"
|
|
322
|
+
},
|
|
323
|
+
"poll": {
|
|
324
|
+
"type": "string",
|
|
325
|
+
"maxLength": 128,
|
|
326
|
+
"pattern": "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)+$"
|
|
327
|
+
},
|
|
328
|
+
"result": {
|
|
329
|
+
"type": "string",
|
|
330
|
+
"maxLength": 128,
|
|
331
|
+
"pattern": "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)+$"
|
|
332
|
+
},
|
|
333
|
+
"jobId": {
|
|
334
|
+
"type": "string",
|
|
335
|
+
"minLength": 1,
|
|
336
|
+
"maxLength": 1024
|
|
337
|
+
},
|
|
338
|
+
"idParam": {
|
|
339
|
+
"type": "string",
|
|
340
|
+
"minLength": 1,
|
|
341
|
+
"maxLength": 1024
|
|
342
|
+
},
|
|
343
|
+
"state": {
|
|
344
|
+
"type": "string",
|
|
345
|
+
"minLength": 1,
|
|
346
|
+
"maxLength": 1024
|
|
347
|
+
},
|
|
348
|
+
"done": {
|
|
349
|
+
"type": "array",
|
|
350
|
+
"minItems": 1,
|
|
351
|
+
"items": {
|
|
352
|
+
"type": "string",
|
|
353
|
+
"minLength": 1,
|
|
354
|
+
"maxLength": 1024
|
|
355
|
+
}
|
|
356
|
+
},
|
|
357
|
+
"failed": {
|
|
358
|
+
"type": "array",
|
|
359
|
+
"items": {
|
|
360
|
+
"type": "string",
|
|
361
|
+
"minLength": 1,
|
|
362
|
+
"maxLength": 1024
|
|
363
|
+
}
|
|
364
|
+
},
|
|
365
|
+
"intervalMs": {
|
|
366
|
+
"type": "integer",
|
|
367
|
+
"minimum": 10,
|
|
368
|
+
"maximum": 60000
|
|
369
|
+
},
|
|
370
|
+
"timeoutMs": {
|
|
371
|
+
"type": "integer",
|
|
372
|
+
"minimum": 10,
|
|
373
|
+
"maximum": 3600000
|
|
374
|
+
}
|
|
375
|
+
},
|
|
376
|
+
"required": [
|
|
377
|
+
"type",
|
|
378
|
+
"start",
|
|
379
|
+
"poll",
|
|
380
|
+
"jobId",
|
|
381
|
+
"idParam",
|
|
382
|
+
"state",
|
|
383
|
+
"done",
|
|
384
|
+
"failed",
|
|
385
|
+
"intervalMs",
|
|
386
|
+
"timeoutMs"
|
|
387
|
+
]
|
|
388
|
+
}
|
|
389
|
+
]
|
|
390
|
+
}
|
|
391
|
+
},
|
|
392
|
+
"required": [
|
|
393
|
+
"summary",
|
|
394
|
+
"cli",
|
|
395
|
+
"effect",
|
|
396
|
+
"permission",
|
|
397
|
+
"flow"
|
|
398
|
+
]
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
},
|
|
402
|
+
"required": [
|
|
403
|
+
"package",
|
|
404
|
+
"aliases",
|
|
405
|
+
"provenance",
|
|
406
|
+
"entry",
|
|
407
|
+
"transport",
|
|
408
|
+
"bindings",
|
|
409
|
+
"commands"
|
|
410
|
+
]
|
|
411
|
+
},
|
|
412
|
+
"sha256": {
|
|
413
|
+
"type": "string",
|
|
414
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
415
|
+
}
|
|
416
|
+
},
|
|
417
|
+
"required": [
|
|
418
|
+
"format",
|
|
419
|
+
"version",
|
|
420
|
+
"payload",
|
|
421
|
+
"sha256"
|
|
422
|
+
]
|
|
423
|
+
}
|
package/skills/SKILL.md
CHANGED
|
@@ -7,7 +7,7 @@ description: Initialize, extend, check, build, inspect, and deploy Synology appl
|
|
|
7
7
|
|
|
8
8
|
Use this guide to initialize, build and inspect own applications or upstream OSS as independent packages. 依已實作能力區分 DSM session 檔案、私有 jobs 與 App 登入;delegate 已實作並隨 CLI 提供固定操作的離線委託(預設 `files.moveFromStaging`);共用 delegate/rootOps executor 的完整裝置生命週期驗收仍待完成,不得宣稱已通過;支援邊界依 delegate guide/support matrix,禁止發明新的身分平台。
|
|
9
9
|
|
|
10
|
-
Start with `synopkgland init -t native-go`, `synopkgland init -t binary`, or `synopkgland init -t compose`. Read reference/create.md or reference/wrap.md, then reference/deploy.md. Native CGI session checks belong to the package. For wrapping upstream OSS with DSM accounts, read [reference/identity-gateway.md](reference/identity-gateway.md) first.
|
|
10
|
+
Start with `synopkgland init -t native-go`, `synopkgland init -t binary`, or `synopkgland init -t compose`. Read reference/create.md or reference/wrap.md, then reference/deploy.md. Native CGI session checks belong to the package. For wrapping upstream OSS with DSM accounts, read [reference/identity-gateway.md](reference/identity-gateway.md) first. For all Compose work, read [reference/compose.md](reference/compose.md): schema-2 upstream files, generated override, SDK planner, fixed package identity and current DSM blockers. Containers do not inherit a signed-in user's File Station ACL. Existing Shared Folder mounts are blocked until official protected ACL/project control is verified.
|
|
11
11
|
|
|
12
12
|
Never install, uninstall, publish or modify NAS data without task authorization. Prefer check, inspect and deploy --dry-run for reviewable artifacts.
|
|
13
13
|
|
|
@@ -131,3 +131,36 @@ sweep forward the cancel instead of admitting it.
|
|
|
131
131
|
adapt a real producer; show Saved only from a protected committed receipt.
|
|
132
132
|
- Wizard support is measured on vt-nas DSM 7.4 via a session-only SSH local
|
|
133
133
|
forward. This is not proof of other DSM releases or full writer/reboot behavior.
|
|
134
|
+
|
|
135
|
+
## 開啟方式
|
|
136
|
+
|
|
137
|
+
原生 App 在 `dsm-package.yaml` 設定 `ui.launch: dsm-window | new-page`。
|
|
138
|
+
SDK 原生 App 的內建預設為 `dsm-window`。使用 `@synopackageland/ui` 的前端維持視窗;
|
|
139
|
+
其他前端必須明確設定 `new-page`,不宣告 Application Portal。
|
|
140
|
+
Scaffold 明確寫入此選擇,plain/binary 使用 `new-page`,Vue UI SDK 使用
|
|
141
|
+
預設的 `dsm-window`(省略 `ui.launch`)。原生 manifest 省略 `ui.launch` 時解析為 `dsm-window`,CLI 不猜測前端依賴。
|
|
142
|
+
|
|
143
|
+
`new-page` 產生 DSM `type: "standalone"` launcher,主選單及套件中心皆在 DSM
|
|
144
|
+
本身的 origin 開啟全頁。`ctx.fullPage`、`ctx.appIcon`、SynoToken/session、
|
|
145
|
+
`ctx.launchParams`/`onLaunch`、`entry` 權限沿用共用 wrapper;全頁的標題、
|
|
146
|
+
favicon 與手機 viewport 由 wrapper 設定。不需要 `pureEnv` 或 `allowAltPort`。
|
|
147
|
+
|
|
148
|
+
Application Portal 是獨立 opt-in:不想要別名就省略 `portal`,不生成
|
|
149
|
+
`defaultAlias`、Portal 面板/capability 或 Web Station alias;沒有 Portal
|
|
150
|
+
不是 inspect/info/doctor 問題。明確啟用 `portal` 時才將其 alias 作為 `defaultAlias`。
|
|
151
|
+
|
|
152
|
+
Docker/web service App 設定 `integration.web.launch`,內建預設是 `new-page`;
|
|
153
|
+
省略開啟方式時直接開新分頁,不宣告 Application Portal。SDK 原生 App
|
|
154
|
+
省略時使用 `dsm-window`;非 UI SDK 原生 App 必須明確寫 `ui.launch: new-page`。
|
|
155
|
+
Web service 主選單使用
|
|
156
|
+
`type: "url"` 與明確的 `url` 指向既有 DSM gateway。明確 `access: public` 才保留 Web Station
|
|
157
|
+
alias;這是服務入口,不是 SDK Application Portal。DSM 會將 standalone URL 改寫成 launchApp 頁面,
|
|
158
|
+
需要 AppInstance/AppWindow JS class;schema 1 web service 沒有該 class,因此使用 url。需要 DSM 視窗時明寫 `dsm-window`。
|
|
159
|
+
|
|
160
|
+
Schema 2 的 `dsm-package.yaml` + `identity_gateway` + `compose` 同樣視為
|
|
161
|
+
web service:省略 `ui.launch` 時預設 `new-page`,使用 standalone launcher,
|
|
162
|
+
不帶 Application Portal。兩條 Compose 路線共用 `contract/app-launch.ts`
|
|
163
|
+
解析開啟方式與選擇 launcher 型別;明確的 `ui.launch` 可覆寫預設。
|
|
164
|
+
只有沒有 web service 的 SDK 原生 App 省略時才預設 `dsm-window`。
|
|
165
|
+
|
|
166
|
+
For controlling installed Apps or designing task-level AI commands, read [reference/ctl.md](reference/ctl.md). Use ctl host list, register/renew explicitly, discover all commands, and always name the host when agents may operate multiple NAS machines.
|