@helyx/cli 0.5.3 → 0.5.5
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 +16 -0
- package/README.md +4 -0
- package/dist/self-host/catalogue.d.ts +40 -0
- package/dist/self-host/catalogue.js +24 -0
- package/dist/self-host/manifest.d.ts +6 -0
- package/dist/self-host/manifest.js +9 -0
- package/dist/self-host/project-generator.js +1 -0
- package/package.json +2 -2
- package/self-host-catalogue.json +263 -83
- package/templates/self-host/DOCUMENTATION.md +15 -0
- package/templates/self-host/README.md +3 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.5.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Add manifest-backed deployment support and credential-risk policy, enforce it
|
|
8
|
+
through hosted and self-host composition, and carry it into generated build
|
|
9
|
+
manifests and self-host module labels.
|
|
10
|
+
- Updated dependencies
|
|
11
|
+
- @helyx/database@0.9.0
|
|
12
|
+
|
|
13
|
+
## 0.5.4
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- 38c70f7: Ship maintained public documentation with the bot package and point newly generated self-host projects to its version-matched offline copy.
|
|
18
|
+
|
|
3
19
|
## 0.5.3
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -16,6 +16,10 @@ helyx self-host update --confirm
|
|
|
16
16
|
|
|
17
17
|
`self-host init` retrieves the current reviewed catalogue from the fixed Helyx API endpoint, validates a downloaded build manifest against it, creates a new starter-project directory, pins the runtime and selected official modules, generates a lockfile with lifecycle scripts disabled, and writes checksums. The request has strict timeout, response-size, JSON-schema and official-package checks; no arbitrary catalogue URL or stale bundled fallback is accepted. Add `--install` only when the dependencies should also be installed locally. Unknown, unpublished, duplicated, stale or modified package selections fail closed.
|
|
18
18
|
|
|
19
|
+
Generated projects include `DOCUMENTATION.md`, which points to the
|
|
20
|
+
version-matched public documentation bundled with the installed `@helyx/bot`
|
|
21
|
+
package.
|
|
22
|
+
|
|
19
23
|
`self-host update --check` reads the current project and the reviewed catalogue from `api.helyx.gg`, then reports the complete compatible release-set change without writing files. `--confirm` backs up the managed metadata under `.helyx/backups`, updates exact core, CLI and selected live-module versions together, refreshes and validates the lockfile with lifecycle scripts disabled, and restores the original metadata if generation fails. Run `npm ci` and `npm run doctor` after applying an update. The updater never changes `.env` or customer database data.
|
|
20
24
|
|
|
21
25
|
The package is published under the Helyx Source Available Licence. Generated projects contain deployment configuration and exact public npm dependencies; they do not contain Helyx source code or credentials.
|
|
@@ -79,6 +79,16 @@ export declare const selfHostModuleV2Schema: z.ZodDiscriminatedUnion<[z.ZodObjec
|
|
|
79
79
|
customerSelectable: z.ZodLiteral<true>;
|
|
80
80
|
countsAsInstalledModule: z.ZodLiteral<true>;
|
|
81
81
|
healthExposure: z.ZodLiteral<"direct">;
|
|
82
|
+
deploymentSupport: z.ZodEnum<{
|
|
83
|
+
"self-hosted": "self-hosted";
|
|
84
|
+
both: "both";
|
|
85
|
+
unclassified: "unclassified";
|
|
86
|
+
}>;
|
|
87
|
+
credentialRisk: z.ZodEnum<{
|
|
88
|
+
unclassified: "unclassified";
|
|
89
|
+
none: "none";
|
|
90
|
+
}>;
|
|
91
|
+
deploymentReason: z.ZodString;
|
|
82
92
|
}, z.core.$strict>, z.ZodObject<{
|
|
83
93
|
id: z.ZodString;
|
|
84
94
|
package: z.ZodString;
|
|
@@ -119,6 +129,16 @@ export declare const selfHostModuleV2Schema: z.ZodDiscriminatedUnion<[z.ZodObjec
|
|
|
119
129
|
customerSelectable: z.ZodLiteral<false>;
|
|
120
130
|
countsAsInstalledModule: z.ZodLiteral<false>;
|
|
121
131
|
healthExposure: z.ZodLiteral<"delegated">;
|
|
132
|
+
deploymentSupport: z.ZodEnum<{
|
|
133
|
+
"self-hosted": "self-hosted";
|
|
134
|
+
both: "both";
|
|
135
|
+
unclassified: "unclassified";
|
|
136
|
+
}>;
|
|
137
|
+
credentialRisk: z.ZodEnum<{
|
|
138
|
+
unclassified: "unclassified";
|
|
139
|
+
none: "none";
|
|
140
|
+
}>;
|
|
141
|
+
deploymentReason: z.ZodString;
|
|
122
142
|
}, z.core.$strict>], "moduleKind">;
|
|
123
143
|
export declare const selfHostCatalogueSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
124
144
|
schemaVersion: z.ZodLiteral<1>;
|
|
@@ -233,6 +253,16 @@ export declare const selfHostCatalogueSchema: z.ZodDiscriminatedUnion<[z.ZodObje
|
|
|
233
253
|
customerSelectable: z.ZodLiteral<true>;
|
|
234
254
|
countsAsInstalledModule: z.ZodLiteral<true>;
|
|
235
255
|
healthExposure: z.ZodLiteral<"direct">;
|
|
256
|
+
deploymentSupport: z.ZodEnum<{
|
|
257
|
+
"self-hosted": "self-hosted";
|
|
258
|
+
both: "both";
|
|
259
|
+
unclassified: "unclassified";
|
|
260
|
+
}>;
|
|
261
|
+
credentialRisk: z.ZodEnum<{
|
|
262
|
+
unclassified: "unclassified";
|
|
263
|
+
none: "none";
|
|
264
|
+
}>;
|
|
265
|
+
deploymentReason: z.ZodString;
|
|
236
266
|
}, z.core.$strict>, z.ZodObject<{
|
|
237
267
|
id: z.ZodString;
|
|
238
268
|
package: z.ZodString;
|
|
@@ -273,6 +303,16 @@ export declare const selfHostCatalogueSchema: z.ZodDiscriminatedUnion<[z.ZodObje
|
|
|
273
303
|
customerSelectable: z.ZodLiteral<false>;
|
|
274
304
|
countsAsInstalledModule: z.ZodLiteral<false>;
|
|
275
305
|
healthExposure: z.ZodLiteral<"delegated">;
|
|
306
|
+
deploymentSupport: z.ZodEnum<{
|
|
307
|
+
"self-hosted": "self-hosted";
|
|
308
|
+
both: "both";
|
|
309
|
+
unclassified: "unclassified";
|
|
310
|
+
}>;
|
|
311
|
+
credentialRisk: z.ZodEnum<{
|
|
312
|
+
unclassified: "unclassified";
|
|
313
|
+
none: "none";
|
|
314
|
+
}>;
|
|
315
|
+
deploymentReason: z.ZodString;
|
|
276
316
|
}, z.core.$strict>], "moduleKind">>;
|
|
277
317
|
}, z.core.$strict>], "schemaVersion">;
|
|
278
318
|
export type SelfHostModule = z.infer<typeof selfHostModuleSchema>;
|
|
@@ -40,6 +40,11 @@ export const selfHostReleaseStatusSchema = z.enum([
|
|
|
40
40
|
"live",
|
|
41
41
|
]);
|
|
42
42
|
const moduleTier = z.enum(["free", "premium"]);
|
|
43
|
+
const selfHostDeploymentPolicy = {
|
|
44
|
+
deploymentSupport: z.enum(["self-hosted", "both", "unclassified"]),
|
|
45
|
+
credentialRisk: z.enum(["none", "unclassified"]),
|
|
46
|
+
deploymentReason: z.string().trim().min(1).max(300),
|
|
47
|
+
};
|
|
43
48
|
const componentSchema = z
|
|
44
49
|
.object({
|
|
45
50
|
package: helyxPackage,
|
|
@@ -101,6 +106,7 @@ export const selfHostModuleSchema = z
|
|
|
101
106
|
}
|
|
102
107
|
});
|
|
103
108
|
const selfHostCustomerModuleV2Schema = selfHostModuleSchema.safeExtend({
|
|
109
|
+
...selfHostDeploymentPolicy,
|
|
104
110
|
dependencies: z.array(moduleDependency),
|
|
105
111
|
moduleKind: z.literal("customer_feature"),
|
|
106
112
|
customerSelectable: z.literal(true),
|
|
@@ -108,6 +114,7 @@ const selfHostCustomerModuleV2Schema = selfHostModuleSchema.safeExtend({
|
|
|
108
114
|
healthExposure: z.literal("direct"),
|
|
109
115
|
});
|
|
110
116
|
const selfHostInternalModuleV2Schema = selfHostModuleSchema.safeExtend({
|
|
117
|
+
...selfHostDeploymentPolicy,
|
|
111
118
|
dependencies: z.array(moduleDependency),
|
|
112
119
|
moduleKind: z.literal("internal_dependency"),
|
|
113
120
|
customerSelectable: z.literal(false),
|
|
@@ -167,6 +174,23 @@ export const selfHostCatalogueSchema = z
|
|
|
167
174
|
}
|
|
168
175
|
if (catalogue.schemaVersion === 2) {
|
|
169
176
|
for (const [index, module] of catalogue.modules.entries()) {
|
|
177
|
+
const unclassified = module.deploymentSupport === "unclassified";
|
|
178
|
+
if (unclassified !== (module.credentialRisk === "unclassified")) {
|
|
179
|
+
context.addIssue({
|
|
180
|
+
code: "custom",
|
|
181
|
+
path: ["modules", index, "deploymentSupport"],
|
|
182
|
+
message: "deployment and credential policy must be classified together",
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
if (unclassified &&
|
|
186
|
+
(module.availability !== "planned" ||
|
|
187
|
+
module.releaseStatus !== "planned")) {
|
|
188
|
+
context.addIssue({
|
|
189
|
+
code: "custom",
|
|
190
|
+
path: ["modules", index, "deploymentSupport"],
|
|
191
|
+
message: "unclassified policy is allowed only for planned modules",
|
|
192
|
+
});
|
|
193
|
+
}
|
|
170
194
|
const dependencyIds = new Set();
|
|
171
195
|
for (const dependency of module.dependencies) {
|
|
172
196
|
if (dependencyIds.has(dependency.id)) {
|
|
@@ -31,6 +31,12 @@ export declare const selfHostBuildManifestSchema: z.ZodDiscriminatedUnion<[z.Zod
|
|
|
31
31
|
id: z.ZodString;
|
|
32
32
|
package: z.ZodString;
|
|
33
33
|
version: z.ZodString;
|
|
34
|
+
deploymentSupport: z.ZodEnum<{
|
|
35
|
+
"self-hosted": "self-hosted";
|
|
36
|
+
both: "both";
|
|
37
|
+
}>;
|
|
38
|
+
credentialRisk: z.ZodLiteral<"none">;
|
|
39
|
+
deploymentReason: z.ZodString;
|
|
34
40
|
moduleKind: z.ZodEnum<{
|
|
35
41
|
customer_feature: "customer_feature";
|
|
36
42
|
internal_dependency: "internal_dependency";
|
|
@@ -31,6 +31,9 @@ const selfHostBuildManifestV1Schema = z
|
|
|
31
31
|
.strict();
|
|
32
32
|
const buildModuleV2Schema = buildModuleSchema
|
|
33
33
|
.extend({
|
|
34
|
+
deploymentSupport: z.enum(["self-hosted", "both"]),
|
|
35
|
+
credentialRisk: z.literal("none"),
|
|
36
|
+
deploymentReason: z.string().trim().min(1).max(300),
|
|
34
37
|
moduleKind: z.enum(["customer_feature", "internal_dependency"]),
|
|
35
38
|
dependencies: z.array(z
|
|
36
39
|
.object({
|
|
@@ -141,6 +144,9 @@ function createSelfHostBuildManifestV2(catalogue, selectedModuleIds) {
|
|
|
141
144
|
if (!module)
|
|
142
145
|
throw new Error(`Unknown self-host module: ${id}`);
|
|
143
146
|
assertLiveModule(module, id);
|
|
147
|
+
if (module.deploymentSupport === "unclassified" ||
|
|
148
|
+
module.credentialRisk === "unclassified")
|
|
149
|
+
throw new Error(`Self-host module policy is unclassified: ${id}`);
|
|
144
150
|
visiting.add(id);
|
|
145
151
|
for (const dependency of module.dependencies) {
|
|
146
152
|
const required = byId.get(dependency.id);
|
|
@@ -163,6 +169,9 @@ function createSelfHostBuildManifestV2(catalogue, selectedModuleIds) {
|
|
|
163
169
|
package: module.package,
|
|
164
170
|
version: module.version,
|
|
165
171
|
moduleKind: module.moduleKind,
|
|
172
|
+
deploymentSupport: module.deploymentSupport,
|
|
173
|
+
credentialRisk: module.credentialRisk,
|
|
174
|
+
deploymentReason: module.deploymentReason,
|
|
166
175
|
dependencies: module.dependencies.map((dependency) => ({
|
|
167
176
|
...dependency,
|
|
168
177
|
})),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@helyx/cli",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.5",
|
|
4
4
|
"description": "Command-line tools for running and generating self-hosted Helyx deployments.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"helyx",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@helyx/bot": ">=0.4.0 <0.5.0",
|
|
56
56
|
"@helyx/config": ">=0.5.0 <0.6.0",
|
|
57
|
-
"@helyx/database": ">=0.
|
|
57
|
+
"@helyx/database": ">=0.9.0 <0.10.0",
|
|
58
58
|
"semver": "7.8.5",
|
|
59
59
|
"zod": "4.4.3"
|
|
60
60
|
},
|
package/self-host-catalogue.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
|
-
"catalogueVersion":
|
|
3
|
+
"catalogueVersion": 48,
|
|
4
4
|
"core": {
|
|
5
5
|
"package": "@helyx/bot",
|
|
6
|
-
"version": "0.4.
|
|
6
|
+
"version": "0.4.43",
|
|
7
7
|
"availability": "published"
|
|
8
8
|
},
|
|
9
9
|
"generator": {
|
|
10
10
|
"package": "@helyx/cli",
|
|
11
|
-
"version": "0.5.
|
|
11
|
+
"version": "0.5.5",
|
|
12
12
|
"command": "helyx",
|
|
13
13
|
"availability": "published"
|
|
14
14
|
},
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
{
|
|
17
17
|
"id": "helyx.feedback",
|
|
18
18
|
"package": "@helyx/module-feedback",
|
|
19
|
-
"version": "1.1.
|
|
19
|
+
"version": "1.1.18",
|
|
20
20
|
"name": "Feedback",
|
|
21
21
|
"description": "Collects simple feedback from Discord server members.",
|
|
22
22
|
"category": "Community",
|
|
@@ -26,12 +26,15 @@
|
|
|
26
26
|
"moduleKind": "customer_feature",
|
|
27
27
|
"customerSelectable": true,
|
|
28
28
|
"countsAsInstalledModule": true,
|
|
29
|
-
"healthExposure": "direct"
|
|
29
|
+
"healthExposure": "direct",
|
|
30
|
+
"deploymentSupport": "both",
|
|
31
|
+
"credentialRisk": "none",
|
|
32
|
+
"deploymentReason": "Uses only the Helyx runtime and Discord capabilities available in hosted and self-hosted installations."
|
|
30
33
|
},
|
|
31
34
|
{
|
|
32
35
|
"id": "helyx.welcome",
|
|
33
36
|
"package": "@helyx/module-welcome",
|
|
34
|
-
"version": "1.1.
|
|
37
|
+
"version": "1.1.15",
|
|
35
38
|
"name": "Welcome",
|
|
36
39
|
"description": "Greets new members and can give them a starting role.",
|
|
37
40
|
"category": "Community",
|
|
@@ -41,12 +44,15 @@
|
|
|
41
44
|
"moduleKind": "customer_feature",
|
|
42
45
|
"customerSelectable": true,
|
|
43
46
|
"countsAsInstalledModule": true,
|
|
44
|
-
"healthExposure": "direct"
|
|
47
|
+
"healthExposure": "direct",
|
|
48
|
+
"deploymentSupport": "both",
|
|
49
|
+
"credentialRisk": "none",
|
|
50
|
+
"deploymentReason": "Uses only the Helyx runtime and Discord capabilities available in hosted and self-hosted installations."
|
|
45
51
|
},
|
|
46
52
|
{
|
|
47
53
|
"id": "helyx.suggestions",
|
|
48
54
|
"package": "@helyx/module-suggestions",
|
|
49
|
-
"version": "1.1.
|
|
55
|
+
"version": "1.1.18",
|
|
50
56
|
"name": "Suggestions",
|
|
51
57
|
"description": "Collects community ideas with configurable reaction or button voting.",
|
|
52
58
|
"category": "Community",
|
|
@@ -56,12 +62,15 @@
|
|
|
56
62
|
"moduleKind": "customer_feature",
|
|
57
63
|
"customerSelectable": true,
|
|
58
64
|
"countsAsInstalledModule": true,
|
|
59
|
-
"healthExposure": "direct"
|
|
65
|
+
"healthExposure": "direct",
|
|
66
|
+
"deploymentSupport": "both",
|
|
67
|
+
"credentialRisk": "none",
|
|
68
|
+
"deploymentReason": "Uses only the Helyx runtime and Discord capabilities available in hosted and self-hosted installations."
|
|
60
69
|
},
|
|
61
70
|
{
|
|
62
71
|
"id": "helyx.polls",
|
|
63
72
|
"package": "@helyx/module-polls",
|
|
64
|
-
"version": "1.0.
|
|
73
|
+
"version": "1.0.15",
|
|
65
74
|
"name": "Polls",
|
|
66
75
|
"description": "Run clear single or multiple-choice polls.",
|
|
67
76
|
"category": "Community",
|
|
@@ -71,12 +80,15 @@
|
|
|
71
80
|
"moduleKind": "customer_feature",
|
|
72
81
|
"customerSelectable": true,
|
|
73
82
|
"countsAsInstalledModule": true,
|
|
74
|
-
"healthExposure": "direct"
|
|
83
|
+
"healthExposure": "direct",
|
|
84
|
+
"deploymentSupport": "both",
|
|
85
|
+
"credentialRisk": "none",
|
|
86
|
+
"deploymentReason": "Uses only the Helyx runtime and Discord capabilities available in hosted and self-hosted installations."
|
|
75
87
|
},
|
|
76
88
|
{
|
|
77
89
|
"id": "helyx.starboard",
|
|
78
90
|
"package": "@helyx/module-starboard",
|
|
79
|
-
"version": "1.0.
|
|
91
|
+
"version": "1.0.4",
|
|
80
92
|
"name": "Starboard",
|
|
81
93
|
"description": "Highlight messages your community values.",
|
|
82
94
|
"category": "Community",
|
|
@@ -86,12 +98,15 @@
|
|
|
86
98
|
"moduleKind": "customer_feature",
|
|
87
99
|
"customerSelectable": true,
|
|
88
100
|
"countsAsInstalledModule": true,
|
|
89
|
-
"healthExposure": "direct"
|
|
101
|
+
"healthExposure": "direct",
|
|
102
|
+
"deploymentSupport": "both",
|
|
103
|
+
"credentialRisk": "none",
|
|
104
|
+
"deploymentReason": "Uses only the Helyx runtime and Discord capabilities available in hosted and self-hosted installations."
|
|
90
105
|
},
|
|
91
106
|
{
|
|
92
107
|
"id": "helyx.levels",
|
|
93
108
|
"package": "@helyx/module-levels",
|
|
94
|
-
"version": "1.0.
|
|
109
|
+
"version": "1.0.13",
|
|
95
110
|
"name": "Levels",
|
|
96
111
|
"description": "Optional participation levels and rewards.",
|
|
97
112
|
"category": "Community",
|
|
@@ -101,7 +116,10 @@
|
|
|
101
116
|
"moduleKind": "customer_feature",
|
|
102
117
|
"customerSelectable": true,
|
|
103
118
|
"countsAsInstalledModule": true,
|
|
104
|
-
"healthExposure": "direct"
|
|
119
|
+
"healthExposure": "direct",
|
|
120
|
+
"deploymentSupport": "both",
|
|
121
|
+
"credentialRisk": "none",
|
|
122
|
+
"deploymentReason": "Uses only the Helyx runtime and Discord capabilities available in hosted and self-hosted installations."
|
|
105
123
|
},
|
|
106
124
|
{
|
|
107
125
|
"id": "helyx.confessions",
|
|
@@ -116,7 +134,10 @@
|
|
|
116
134
|
"moduleKind": "customer_feature",
|
|
117
135
|
"customerSelectable": true,
|
|
118
136
|
"countsAsInstalledModule": true,
|
|
119
|
-
"healthExposure": "direct"
|
|
137
|
+
"healthExposure": "direct",
|
|
138
|
+
"deploymentSupport": "unclassified",
|
|
139
|
+
"credentialRisk": "unclassified",
|
|
140
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
120
141
|
},
|
|
121
142
|
{
|
|
122
143
|
"id": "helyx.quotes",
|
|
@@ -131,7 +152,10 @@
|
|
|
131
152
|
"moduleKind": "customer_feature",
|
|
132
153
|
"customerSelectable": true,
|
|
133
154
|
"countsAsInstalledModule": true,
|
|
134
|
-
"healthExposure": "direct"
|
|
155
|
+
"healthExposure": "direct",
|
|
156
|
+
"deploymentSupport": "unclassified",
|
|
157
|
+
"credentialRisk": "unclassified",
|
|
158
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
135
159
|
},
|
|
136
160
|
{
|
|
137
161
|
"id": "helyx.introductions",
|
|
@@ -146,7 +170,10 @@
|
|
|
146
170
|
"moduleKind": "customer_feature",
|
|
147
171
|
"customerSelectable": true,
|
|
148
172
|
"countsAsInstalledModule": true,
|
|
149
|
-
"healthExposure": "direct"
|
|
173
|
+
"healthExposure": "direct",
|
|
174
|
+
"deploymentSupport": "unclassified",
|
|
175
|
+
"credentialRisk": "unclassified",
|
|
176
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
150
177
|
},
|
|
151
178
|
{
|
|
152
179
|
"id": "helyx.kudos",
|
|
@@ -161,7 +188,10 @@
|
|
|
161
188
|
"moduleKind": "customer_feature",
|
|
162
189
|
"customerSelectable": true,
|
|
163
190
|
"countsAsInstalledModule": true,
|
|
164
|
-
"healthExposure": "direct"
|
|
191
|
+
"healthExposure": "direct",
|
|
192
|
+
"deploymentSupport": "unclassified",
|
|
193
|
+
"credentialRisk": "unclassified",
|
|
194
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
165
195
|
},
|
|
166
196
|
{
|
|
167
197
|
"id": "helyx.member-directory",
|
|
@@ -176,7 +206,10 @@
|
|
|
176
206
|
"moduleKind": "customer_feature",
|
|
177
207
|
"customerSelectable": true,
|
|
178
208
|
"countsAsInstalledModule": true,
|
|
179
|
-
"healthExposure": "direct"
|
|
209
|
+
"healthExposure": "direct",
|
|
210
|
+
"deploymentSupport": "unclassified",
|
|
211
|
+
"credentialRisk": "unclassified",
|
|
212
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
180
213
|
},
|
|
181
214
|
{
|
|
182
215
|
"id": "helyx.moderation",
|
|
@@ -191,7 +224,10 @@
|
|
|
191
224
|
"moduleKind": "customer_feature",
|
|
192
225
|
"customerSelectable": true,
|
|
193
226
|
"countsAsInstalledModule": true,
|
|
194
|
-
"healthExposure": "direct"
|
|
227
|
+
"healthExposure": "direct",
|
|
228
|
+
"deploymentSupport": "unclassified",
|
|
229
|
+
"credentialRisk": "unclassified",
|
|
230
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
195
231
|
},
|
|
196
232
|
{
|
|
197
233
|
"id": "helyx.automod",
|
|
@@ -206,12 +242,15 @@
|
|
|
206
242
|
"moduleKind": "customer_feature",
|
|
207
243
|
"customerSelectable": true,
|
|
208
244
|
"countsAsInstalledModule": true,
|
|
209
|
-
"healthExposure": "direct"
|
|
245
|
+
"healthExposure": "direct",
|
|
246
|
+
"deploymentSupport": "unclassified",
|
|
247
|
+
"credentialRisk": "unclassified",
|
|
248
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
210
249
|
},
|
|
211
250
|
{
|
|
212
251
|
"id": "helyx.account-gate",
|
|
213
252
|
"package": "@helyx/module-account-gate",
|
|
214
|
-
"version": "1.0.
|
|
253
|
+
"version": "1.0.15",
|
|
215
254
|
"name": "Access Control",
|
|
216
255
|
"description": "Require new members to complete configurable Discord interaction checks before gaining access.",
|
|
217
256
|
"category": "Safety",
|
|
@@ -221,7 +260,10 @@
|
|
|
221
260
|
"moduleKind": "customer_feature",
|
|
222
261
|
"customerSelectable": true,
|
|
223
262
|
"countsAsInstalledModule": true,
|
|
224
|
-
"healthExposure": "direct"
|
|
263
|
+
"healthExposure": "direct",
|
|
264
|
+
"deploymentSupport": "both",
|
|
265
|
+
"credentialRisk": "none",
|
|
266
|
+
"deploymentReason": "Uses only the Helyx runtime and Discord capabilities available in hosted and self-hosted installations."
|
|
225
267
|
},
|
|
226
268
|
{
|
|
227
269
|
"id": "helyx.raid-protection",
|
|
@@ -236,7 +278,10 @@
|
|
|
236
278
|
"moduleKind": "customer_feature",
|
|
237
279
|
"customerSelectable": true,
|
|
238
280
|
"countsAsInstalledModule": true,
|
|
239
|
-
"healthExposure": "direct"
|
|
281
|
+
"healthExposure": "direct",
|
|
282
|
+
"deploymentSupport": "unclassified",
|
|
283
|
+
"credentialRisk": "unclassified",
|
|
284
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
240
285
|
},
|
|
241
286
|
{
|
|
242
287
|
"id": "helyx.tickets",
|
|
@@ -251,12 +296,15 @@
|
|
|
251
296
|
"moduleKind": "customer_feature",
|
|
252
297
|
"customerSelectable": true,
|
|
253
298
|
"countsAsInstalledModule": true,
|
|
254
|
-
"healthExposure": "direct"
|
|
299
|
+
"healthExposure": "direct",
|
|
300
|
+
"deploymentSupport": "unclassified",
|
|
301
|
+
"credentialRisk": "unclassified",
|
|
302
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
255
303
|
},
|
|
256
304
|
{
|
|
257
305
|
"id": "helyx.forms",
|
|
258
306
|
"package": "@helyx/module-forms",
|
|
259
|
-
"version": "1.0.
|
|
307
|
+
"version": "1.0.7",
|
|
260
308
|
"name": "Forms",
|
|
261
309
|
"description": "Collect reusable structured responses through Discord modals.",
|
|
262
310
|
"category": "Support & Staff",
|
|
@@ -266,12 +314,15 @@
|
|
|
266
314
|
"moduleKind": "customer_feature",
|
|
267
315
|
"customerSelectable": true,
|
|
268
316
|
"countsAsInstalledModule": true,
|
|
269
|
-
"healthExposure": "direct"
|
|
317
|
+
"healthExposure": "direct",
|
|
318
|
+
"deploymentSupport": "both",
|
|
319
|
+
"credentialRisk": "none",
|
|
320
|
+
"deploymentReason": "Uses only the Helyx runtime and Discord capabilities available in hosted and self-hosted installations."
|
|
270
321
|
},
|
|
271
322
|
{
|
|
272
323
|
"id": "helyx.faq",
|
|
273
324
|
"package": "@helyx/module-faq",
|
|
274
|
-
"version": "1.0.
|
|
325
|
+
"version": "1.0.3",
|
|
275
326
|
"name": "FAQ",
|
|
276
327
|
"description": "Create reusable server answers with exact text triggers.",
|
|
277
328
|
"category": "Support & Staff",
|
|
@@ -281,7 +332,10 @@
|
|
|
281
332
|
"moduleKind": "customer_feature",
|
|
282
333
|
"customerSelectable": true,
|
|
283
334
|
"countsAsInstalledModule": true,
|
|
284
|
-
"healthExposure": "direct"
|
|
335
|
+
"healthExposure": "direct",
|
|
336
|
+
"deploymentSupport": "both",
|
|
337
|
+
"credentialRisk": "none",
|
|
338
|
+
"deploymentReason": "Uses only the Helyx runtime and Discord capabilities available in hosted and self-hosted installations."
|
|
285
339
|
},
|
|
286
340
|
{
|
|
287
341
|
"id": "helyx.staff-rota",
|
|
@@ -296,7 +350,10 @@
|
|
|
296
350
|
"moduleKind": "customer_feature",
|
|
297
351
|
"customerSelectable": true,
|
|
298
352
|
"countsAsInstalledModule": true,
|
|
299
|
-
"healthExposure": "direct"
|
|
353
|
+
"healthExposure": "direct",
|
|
354
|
+
"deploymentSupport": "unclassified",
|
|
355
|
+
"credentialRisk": "unclassified",
|
|
356
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
300
357
|
},
|
|
301
358
|
{
|
|
302
359
|
"id": "helyx.shift-checkin",
|
|
@@ -311,7 +368,10 @@
|
|
|
311
368
|
"moduleKind": "customer_feature",
|
|
312
369
|
"customerSelectable": true,
|
|
313
370
|
"countsAsInstalledModule": true,
|
|
314
|
-
"healthExposure": "direct"
|
|
371
|
+
"healthExposure": "direct",
|
|
372
|
+
"deploymentSupport": "unclassified",
|
|
373
|
+
"credentialRisk": "unclassified",
|
|
374
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
315
375
|
},
|
|
316
376
|
{
|
|
317
377
|
"id": "helyx.staff-training",
|
|
@@ -326,7 +386,10 @@
|
|
|
326
386
|
"moduleKind": "customer_feature",
|
|
327
387
|
"customerSelectable": true,
|
|
328
388
|
"countsAsInstalledModule": true,
|
|
329
|
-
"healthExposure": "direct"
|
|
389
|
+
"healthExposure": "direct",
|
|
390
|
+
"deploymentSupport": "unclassified",
|
|
391
|
+
"credentialRisk": "unclassified",
|
|
392
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
330
393
|
},
|
|
331
394
|
{
|
|
332
395
|
"id": "helyx.autoroles",
|
|
@@ -341,7 +404,10 @@
|
|
|
341
404
|
"moduleKind": "customer_feature",
|
|
342
405
|
"customerSelectable": true,
|
|
343
406
|
"countsAsInstalledModule": true,
|
|
344
|
-
"healthExposure": "direct"
|
|
407
|
+
"healthExposure": "direct",
|
|
408
|
+
"deploymentSupport": "unclassified",
|
|
409
|
+
"credentialRisk": "unclassified",
|
|
410
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
345
411
|
},
|
|
346
412
|
{
|
|
347
413
|
"id": "helyx.autoban",
|
|
@@ -356,7 +422,10 @@
|
|
|
356
422
|
"moduleKind": "customer_feature",
|
|
357
423
|
"customerSelectable": true,
|
|
358
424
|
"countsAsInstalledModule": true,
|
|
359
|
-
"healthExposure": "direct"
|
|
425
|
+
"healthExposure": "direct",
|
|
426
|
+
"deploymentSupport": "unclassified",
|
|
427
|
+
"credentialRisk": "unclassified",
|
|
428
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
360
429
|
},
|
|
361
430
|
{
|
|
362
431
|
"id": "helyx.auto-delete",
|
|
@@ -371,7 +440,10 @@
|
|
|
371
440
|
"moduleKind": "customer_feature",
|
|
372
441
|
"customerSelectable": true,
|
|
373
442
|
"countsAsInstalledModule": true,
|
|
374
|
-
"healthExposure": "direct"
|
|
443
|
+
"healthExposure": "direct",
|
|
444
|
+
"deploymentSupport": "unclassified",
|
|
445
|
+
"credentialRisk": "unclassified",
|
|
446
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
375
447
|
},
|
|
376
448
|
{
|
|
377
449
|
"id": "helyx.auto-message",
|
|
@@ -386,7 +458,10 @@
|
|
|
386
458
|
"moduleKind": "customer_feature",
|
|
387
459
|
"customerSelectable": true,
|
|
388
460
|
"countsAsInstalledModule": true,
|
|
389
|
-
"healthExposure": "direct"
|
|
461
|
+
"healthExposure": "direct",
|
|
462
|
+
"deploymentSupport": "unclassified",
|
|
463
|
+
"credentialRisk": "unclassified",
|
|
464
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
390
465
|
},
|
|
391
466
|
{
|
|
392
467
|
"id": "helyx.message-embedder",
|
|
@@ -401,7 +476,10 @@
|
|
|
401
476
|
"moduleKind": "customer_feature",
|
|
402
477
|
"customerSelectable": true,
|
|
403
478
|
"countsAsInstalledModule": true,
|
|
404
|
-
"healthExposure": "direct"
|
|
479
|
+
"healthExposure": "direct",
|
|
480
|
+
"deploymentSupport": "unclassified",
|
|
481
|
+
"credentialRisk": "unclassified",
|
|
482
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
405
483
|
},
|
|
406
484
|
{
|
|
407
485
|
"id": "helyx.autoresponder",
|
|
@@ -416,7 +494,10 @@
|
|
|
416
494
|
"moduleKind": "customer_feature",
|
|
417
495
|
"customerSelectable": true,
|
|
418
496
|
"countsAsInstalledModule": true,
|
|
419
|
-
"healthExposure": "direct"
|
|
497
|
+
"healthExposure": "direct",
|
|
498
|
+
"deploymentSupport": "unclassified",
|
|
499
|
+
"credentialRisk": "unclassified",
|
|
500
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
420
501
|
},
|
|
421
502
|
{
|
|
422
503
|
"id": "helyx.afk",
|
|
@@ -431,12 +512,15 @@
|
|
|
431
512
|
"moduleKind": "customer_feature",
|
|
432
513
|
"customerSelectable": true,
|
|
433
514
|
"countsAsInstalledModule": true,
|
|
434
|
-
"healthExposure": "direct"
|
|
515
|
+
"healthExposure": "direct",
|
|
516
|
+
"deploymentSupport": "unclassified",
|
|
517
|
+
"credentialRisk": "unclassified",
|
|
518
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
435
519
|
},
|
|
436
520
|
{
|
|
437
521
|
"id": "helyx.reactionroles",
|
|
438
522
|
"package": "@helyx/module-reactionroles",
|
|
439
|
-
"version": "1.0.
|
|
523
|
+
"version": "1.0.15",
|
|
440
524
|
"name": "Reaction Roles",
|
|
441
525
|
"description": "Let members select approved roles themselves.",
|
|
442
526
|
"category": "Automation",
|
|
@@ -446,7 +530,10 @@
|
|
|
446
530
|
"moduleKind": "customer_feature",
|
|
447
531
|
"customerSelectable": true,
|
|
448
532
|
"countsAsInstalledModule": true,
|
|
449
|
-
"healthExposure": "direct"
|
|
533
|
+
"healthExposure": "direct",
|
|
534
|
+
"deploymentSupport": "both",
|
|
535
|
+
"credentialRisk": "none",
|
|
536
|
+
"deploymentReason": "Uses only the Helyx runtime and Discord capabilities available in hosted and self-hosted installations."
|
|
450
537
|
},
|
|
451
538
|
{
|
|
452
539
|
"id": "helyx.reminders",
|
|
@@ -461,7 +548,10 @@
|
|
|
461
548
|
"moduleKind": "customer_feature",
|
|
462
549
|
"customerSelectable": true,
|
|
463
550
|
"countsAsInstalledModule": true,
|
|
464
|
-
"healthExposure": "direct"
|
|
551
|
+
"healthExposure": "direct",
|
|
552
|
+
"deploymentSupport": "unclassified",
|
|
553
|
+
"credentialRisk": "unclassified",
|
|
554
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
465
555
|
},
|
|
466
556
|
{
|
|
467
557
|
"id": "helyx.tempvoice",
|
|
@@ -476,7 +566,10 @@
|
|
|
476
566
|
"moduleKind": "customer_feature",
|
|
477
567
|
"customerSelectable": true,
|
|
478
568
|
"countsAsInstalledModule": true,
|
|
479
|
-
"healthExposure": "direct"
|
|
569
|
+
"healthExposure": "direct",
|
|
570
|
+
"deploymentSupport": "unclassified",
|
|
571
|
+
"credentialRisk": "unclassified",
|
|
572
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
480
573
|
},
|
|
481
574
|
{
|
|
482
575
|
"id": "helyx.scheduler",
|
|
@@ -491,7 +584,10 @@
|
|
|
491
584
|
"moduleKind": "customer_feature",
|
|
492
585
|
"customerSelectable": true,
|
|
493
586
|
"countsAsInstalledModule": true,
|
|
494
|
-
"healthExposure": "direct"
|
|
587
|
+
"healthExposure": "direct",
|
|
588
|
+
"deploymentSupport": "unclassified",
|
|
589
|
+
"credentialRisk": "unclassified",
|
|
590
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
495
591
|
},
|
|
496
592
|
{
|
|
497
593
|
"id": "helyx.custom-commands",
|
|
@@ -506,12 +602,15 @@
|
|
|
506
602
|
"moduleKind": "customer_feature",
|
|
507
603
|
"customerSelectable": true,
|
|
508
604
|
"countsAsInstalledModule": true,
|
|
509
|
-
"healthExposure": "direct"
|
|
605
|
+
"healthExposure": "direct",
|
|
606
|
+
"deploymentSupport": "unclassified",
|
|
607
|
+
"credentialRisk": "unclassified",
|
|
608
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
510
609
|
},
|
|
511
610
|
{
|
|
512
611
|
"id": "helyx.tags",
|
|
513
612
|
"package": "@helyx/module-tags",
|
|
514
|
-
"version": "1.0.
|
|
613
|
+
"version": "1.0.3",
|
|
515
614
|
"name": "Tags",
|
|
516
615
|
"description": "Save and share short server snippets.",
|
|
517
616
|
"category": "Automation",
|
|
@@ -521,7 +620,10 @@
|
|
|
521
620
|
"moduleKind": "customer_feature",
|
|
522
621
|
"customerSelectable": true,
|
|
523
622
|
"countsAsInstalledModule": true,
|
|
524
|
-
"healthExposure": "direct"
|
|
623
|
+
"healthExposure": "direct",
|
|
624
|
+
"deploymentSupport": "both",
|
|
625
|
+
"credentialRisk": "none",
|
|
626
|
+
"deploymentReason": "Uses only the Helyx runtime and Discord capabilities available in hosted and self-hosted installations."
|
|
525
627
|
},
|
|
526
628
|
{
|
|
527
629
|
"id": "helyx.sticky-messages",
|
|
@@ -536,7 +638,10 @@
|
|
|
536
638
|
"moduleKind": "customer_feature",
|
|
537
639
|
"customerSelectable": true,
|
|
538
640
|
"countsAsInstalledModule": true,
|
|
539
|
-
"healthExposure": "direct"
|
|
641
|
+
"healthExposure": "direct",
|
|
642
|
+
"deploymentSupport": "unclassified",
|
|
643
|
+
"credentialRisk": "unclassified",
|
|
644
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
540
645
|
},
|
|
541
646
|
{
|
|
542
647
|
"id": "helyx.role-expiry",
|
|
@@ -551,7 +656,10 @@
|
|
|
551
656
|
"moduleKind": "customer_feature",
|
|
552
657
|
"customerSelectable": true,
|
|
553
658
|
"countsAsInstalledModule": true,
|
|
554
|
-
"healthExposure": "direct"
|
|
659
|
+
"healthExposure": "direct",
|
|
660
|
+
"deploymentSupport": "unclassified",
|
|
661
|
+
"credentialRisk": "unclassified",
|
|
662
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
555
663
|
},
|
|
556
664
|
{
|
|
557
665
|
"id": "helyx.webhook-inbox",
|
|
@@ -566,7 +674,10 @@
|
|
|
566
674
|
"moduleKind": "customer_feature",
|
|
567
675
|
"customerSelectable": true,
|
|
568
676
|
"countsAsInstalledModule": true,
|
|
569
|
-
"healthExposure": "direct"
|
|
677
|
+
"healthExposure": "direct",
|
|
678
|
+
"deploymentSupport": "unclassified",
|
|
679
|
+
"credentialRisk": "unclassified",
|
|
680
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
570
681
|
},
|
|
571
682
|
{
|
|
572
683
|
"id": "helyx.events",
|
|
@@ -581,12 +692,15 @@
|
|
|
581
692
|
"moduleKind": "customer_feature",
|
|
582
693
|
"customerSelectable": true,
|
|
583
694
|
"countsAsInstalledModule": true,
|
|
584
|
-
"healthExposure": "direct"
|
|
695
|
+
"healthExposure": "direct",
|
|
696
|
+
"deploymentSupport": "unclassified",
|
|
697
|
+
"credentialRisk": "unclassified",
|
|
698
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
585
699
|
},
|
|
586
700
|
{
|
|
587
701
|
"id": "helyx.giveaways",
|
|
588
702
|
"package": "@helyx/module-giveaways",
|
|
589
|
-
"version": "1.0.
|
|
703
|
+
"version": "1.0.17",
|
|
590
704
|
"name": "Giveaways",
|
|
591
705
|
"description": "Run auditable giveaways with eligibility rules.",
|
|
592
706
|
"category": "Engagement",
|
|
@@ -596,7 +710,10 @@
|
|
|
596
710
|
"moduleKind": "customer_feature",
|
|
597
711
|
"customerSelectable": true,
|
|
598
712
|
"countsAsInstalledModule": true,
|
|
599
|
-
"healthExposure": "direct"
|
|
713
|
+
"healthExposure": "direct",
|
|
714
|
+
"deploymentSupport": "both",
|
|
715
|
+
"credentialRisk": "none",
|
|
716
|
+
"deploymentReason": "Uses only the Helyx runtime and Discord capabilities available in hosted and self-hosted installations."
|
|
600
717
|
},
|
|
601
718
|
{
|
|
602
719
|
"id": "helyx.birthdays",
|
|
@@ -611,12 +728,15 @@
|
|
|
611
728
|
"moduleKind": "customer_feature",
|
|
612
729
|
"customerSelectable": true,
|
|
613
730
|
"countsAsInstalledModule": true,
|
|
614
|
-
"healthExposure": "direct"
|
|
731
|
+
"healthExposure": "direct",
|
|
732
|
+
"deploymentSupport": "unclassified",
|
|
733
|
+
"credentialRisk": "unclassified",
|
|
734
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
615
735
|
},
|
|
616
736
|
{
|
|
617
737
|
"id": "helyx.counting",
|
|
618
738
|
"package": "@helyx/module-counting",
|
|
619
|
-
"version": "1.0.
|
|
739
|
+
"version": "1.0.5",
|
|
620
740
|
"name": "Counting",
|
|
621
741
|
"description": "A focused, server-scoped Discord counting game.",
|
|
622
742
|
"category": "Gaming",
|
|
@@ -626,12 +746,15 @@
|
|
|
626
746
|
"moduleKind": "customer_feature",
|
|
627
747
|
"customerSelectable": true,
|
|
628
748
|
"countsAsInstalledModule": true,
|
|
629
|
-
"healthExposure": "direct"
|
|
749
|
+
"healthExposure": "direct",
|
|
750
|
+
"deploymentSupport": "both",
|
|
751
|
+
"credentialRisk": "none",
|
|
752
|
+
"deploymentReason": "Uses only the Helyx runtime and Discord capabilities available in hosted and self-hosted installations."
|
|
630
753
|
},
|
|
631
754
|
{
|
|
632
755
|
"id": "helyx.trivia",
|
|
633
756
|
"package": "@helyx/module-trivia",
|
|
634
|
-
"version": "1.0.
|
|
757
|
+
"version": "1.0.5",
|
|
635
758
|
"name": "Trivia",
|
|
636
759
|
"description": "Play private trivia rounds from a saved question catalogue.",
|
|
637
760
|
"category": "Gaming",
|
|
@@ -641,7 +764,10 @@
|
|
|
641
764
|
"moduleKind": "customer_feature",
|
|
642
765
|
"customerSelectable": true,
|
|
643
766
|
"countsAsInstalledModule": true,
|
|
644
|
-
"healthExposure": "direct"
|
|
767
|
+
"healthExposure": "direct",
|
|
768
|
+
"deploymentSupport": "both",
|
|
769
|
+
"credentialRisk": "none",
|
|
770
|
+
"deploymentReason": "Uses only the Helyx runtime and Discord capabilities available in hosted and self-hosted installations."
|
|
645
771
|
},
|
|
646
772
|
{
|
|
647
773
|
"id": "helyx.minigames",
|
|
@@ -656,7 +782,10 @@
|
|
|
656
782
|
"moduleKind": "customer_feature",
|
|
657
783
|
"customerSelectable": true,
|
|
658
784
|
"countsAsInstalledModule": true,
|
|
659
|
-
"healthExposure": "direct"
|
|
785
|
+
"healthExposure": "direct",
|
|
786
|
+
"deploymentSupport": "unclassified",
|
|
787
|
+
"credentialRisk": "unclassified",
|
|
788
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
660
789
|
},
|
|
661
790
|
{
|
|
662
791
|
"id": "helyx.tournaments",
|
|
@@ -671,7 +800,10 @@
|
|
|
671
800
|
"moduleKind": "customer_feature",
|
|
672
801
|
"customerSelectable": true,
|
|
673
802
|
"countsAsInstalledModule": true,
|
|
674
|
-
"healthExposure": "direct"
|
|
803
|
+
"healthExposure": "direct",
|
|
804
|
+
"deploymentSupport": "unclassified",
|
|
805
|
+
"credentialRisk": "unclassified",
|
|
806
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
675
807
|
},
|
|
676
808
|
{
|
|
677
809
|
"id": "helyx.looking-for-group",
|
|
@@ -686,7 +818,10 @@
|
|
|
686
818
|
"moduleKind": "customer_feature",
|
|
687
819
|
"customerSelectable": true,
|
|
688
820
|
"countsAsInstalledModule": true,
|
|
689
|
-
"healthExposure": "direct"
|
|
821
|
+
"healthExposure": "direct",
|
|
822
|
+
"deploymentSupport": "unclassified",
|
|
823
|
+
"credentialRisk": "unclassified",
|
|
824
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
690
825
|
},
|
|
691
826
|
{
|
|
692
827
|
"id": "helyx.tabletop",
|
|
@@ -701,7 +836,10 @@
|
|
|
701
836
|
"moduleKind": "customer_feature",
|
|
702
837
|
"customerSelectable": true,
|
|
703
838
|
"countsAsInstalledModule": true,
|
|
704
|
-
"healthExposure": "direct"
|
|
839
|
+
"healthExposure": "direct",
|
|
840
|
+
"deploymentSupport": "unclassified",
|
|
841
|
+
"credentialRisk": "unclassified",
|
|
842
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
705
843
|
},
|
|
706
844
|
{
|
|
707
845
|
"id": "helyx.economy",
|
|
@@ -716,12 +854,15 @@
|
|
|
716
854
|
"moduleKind": "customer_feature",
|
|
717
855
|
"customerSelectable": true,
|
|
718
856
|
"countsAsInstalledModule": true,
|
|
719
|
-
"healthExposure": "direct"
|
|
857
|
+
"healthExposure": "direct",
|
|
858
|
+
"deploymentSupport": "unclassified",
|
|
859
|
+
"credentialRisk": "unclassified",
|
|
860
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
720
861
|
},
|
|
721
862
|
{
|
|
722
863
|
"id": "helyx.achievements",
|
|
723
864
|
"package": "@helyx/module-achievements",
|
|
724
|
-
"version": "1.0.
|
|
865
|
+
"version": "1.0.8",
|
|
725
866
|
"name": "Achievements",
|
|
726
867
|
"description": "Configurable member milestones, scores and optional rewards.",
|
|
727
868
|
"category": "Gaming",
|
|
@@ -731,7 +872,10 @@
|
|
|
731
872
|
"moduleKind": "customer_feature",
|
|
732
873
|
"customerSelectable": true,
|
|
733
874
|
"countsAsInstalledModule": true,
|
|
734
|
-
"healthExposure": "direct"
|
|
875
|
+
"healthExposure": "direct",
|
|
876
|
+
"deploymentSupport": "both",
|
|
877
|
+
"credentialRisk": "none",
|
|
878
|
+
"deploymentReason": "Uses only the Helyx runtime and Discord capabilities available in hosted and self-hosted installations."
|
|
735
879
|
},
|
|
736
880
|
{
|
|
737
881
|
"id": "helyx.guild-quests",
|
|
@@ -746,12 +890,15 @@
|
|
|
746
890
|
"moduleKind": "customer_feature",
|
|
747
891
|
"customerSelectable": true,
|
|
748
892
|
"countsAsInstalledModule": true,
|
|
749
|
-
"healthExposure": "direct"
|
|
893
|
+
"healthExposure": "direct",
|
|
894
|
+
"deploymentSupport": "unclassified",
|
|
895
|
+
"credentialRisk": "unclassified",
|
|
896
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
750
897
|
},
|
|
751
898
|
{
|
|
752
899
|
"id": "helyx.logging",
|
|
753
900
|
"package": "@helyx/module-logging",
|
|
754
|
-
"version": "1.1.
|
|
901
|
+
"version": "1.1.15",
|
|
755
902
|
"name": "Logging",
|
|
756
903
|
"description": "Posts configurable activity records from enabled Helyx modules.",
|
|
757
904
|
"category": "Insights",
|
|
@@ -761,7 +908,10 @@
|
|
|
761
908
|
"moduleKind": "customer_feature",
|
|
762
909
|
"customerSelectable": true,
|
|
763
910
|
"countsAsInstalledModule": true,
|
|
764
|
-
"healthExposure": "direct"
|
|
911
|
+
"healthExposure": "direct",
|
|
912
|
+
"deploymentSupport": "both",
|
|
913
|
+
"credentialRisk": "none",
|
|
914
|
+
"deploymentReason": "Uses only the Helyx runtime and Discord capabilities available in hosted and self-hosted installations."
|
|
765
915
|
},
|
|
766
916
|
{
|
|
767
917
|
"id": "helyx.analytics",
|
|
@@ -776,7 +926,10 @@
|
|
|
776
926
|
"moduleKind": "customer_feature",
|
|
777
927
|
"customerSelectable": true,
|
|
778
928
|
"countsAsInstalledModule": true,
|
|
779
|
-
"healthExposure": "direct"
|
|
929
|
+
"healthExposure": "direct",
|
|
930
|
+
"deploymentSupport": "unclassified",
|
|
931
|
+
"credentialRisk": "unclassified",
|
|
932
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
780
933
|
},
|
|
781
934
|
{
|
|
782
935
|
"id": "helyx.invite-tracking",
|
|
@@ -791,12 +944,15 @@
|
|
|
791
944
|
"moduleKind": "customer_feature",
|
|
792
945
|
"customerSelectable": true,
|
|
793
946
|
"countsAsInstalledModule": true,
|
|
794
|
-
"healthExposure": "direct"
|
|
947
|
+
"healthExposure": "direct",
|
|
948
|
+
"deploymentSupport": "unclassified",
|
|
949
|
+
"credentialRisk": "unclassified",
|
|
950
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
795
951
|
},
|
|
796
952
|
{
|
|
797
953
|
"id": "helyx.health",
|
|
798
954
|
"package": "@helyx/module-health",
|
|
799
|
-
"version": "1.0.
|
|
955
|
+
"version": "1.0.4",
|
|
800
956
|
"name": "Server Health",
|
|
801
957
|
"description": "Scan your Discord server for configuration, safety and capacity issues.",
|
|
802
958
|
"category": "Insights",
|
|
@@ -806,7 +962,10 @@
|
|
|
806
962
|
"moduleKind": "customer_feature",
|
|
807
963
|
"customerSelectable": true,
|
|
808
964
|
"countsAsInstalledModule": true,
|
|
809
|
-
"healthExposure": "direct"
|
|
965
|
+
"healthExposure": "direct",
|
|
966
|
+
"deploymentSupport": "both",
|
|
967
|
+
"credentialRisk": "none",
|
|
968
|
+
"deploymentReason": "Uses only the Helyx runtime and Discord capabilities available in hosted and self-hosted installations."
|
|
810
969
|
},
|
|
811
970
|
{
|
|
812
971
|
"id": "helyx.youtube",
|
|
@@ -821,7 +980,10 @@
|
|
|
821
980
|
"moduleKind": "customer_feature",
|
|
822
981
|
"customerSelectable": true,
|
|
823
982
|
"countsAsInstalledModule": true,
|
|
824
|
-
"healthExposure": "direct"
|
|
983
|
+
"healthExposure": "direct",
|
|
984
|
+
"deploymentSupport": "unclassified",
|
|
985
|
+
"credentialRisk": "unclassified",
|
|
986
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
825
987
|
},
|
|
826
988
|
{
|
|
827
989
|
"id": "helyx.twitch",
|
|
@@ -836,7 +998,10 @@
|
|
|
836
998
|
"moduleKind": "customer_feature",
|
|
837
999
|
"customerSelectable": true,
|
|
838
1000
|
"countsAsInstalledModule": true,
|
|
839
|
-
"healthExposure": "direct"
|
|
1001
|
+
"healthExposure": "direct",
|
|
1002
|
+
"deploymentSupport": "unclassified",
|
|
1003
|
+
"credentialRisk": "unclassified",
|
|
1004
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
840
1005
|
},
|
|
841
1006
|
{
|
|
842
1007
|
"id": "helyx.rss",
|
|
@@ -851,7 +1016,10 @@
|
|
|
851
1016
|
"moduleKind": "customer_feature",
|
|
852
1017
|
"customerSelectable": true,
|
|
853
1018
|
"countsAsInstalledModule": true,
|
|
854
|
-
"healthExposure": "direct"
|
|
1019
|
+
"healthExposure": "direct",
|
|
1020
|
+
"deploymentSupport": "unclassified",
|
|
1021
|
+
"credentialRisk": "unclassified",
|
|
1022
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
855
1023
|
},
|
|
856
1024
|
{
|
|
857
1025
|
"id": "helyx.github",
|
|
@@ -866,12 +1034,15 @@
|
|
|
866
1034
|
"moduleKind": "customer_feature",
|
|
867
1035
|
"customerSelectable": true,
|
|
868
1036
|
"countsAsInstalledModule": true,
|
|
869
|
-
"healthExposure": "direct"
|
|
1037
|
+
"healthExposure": "direct",
|
|
1038
|
+
"deploymentSupport": "unclassified",
|
|
1039
|
+
"credentialRisk": "unclassified",
|
|
1040
|
+
"deploymentReason": "No canonical v0.4 manifest exists; deployment and credential policy remain undecided."
|
|
870
1041
|
},
|
|
871
1042
|
{
|
|
872
1043
|
"id": "helyx.nexus-core",
|
|
873
1044
|
"package": "@helyx/module-nexus-core",
|
|
874
|
-
"version": "1.0.
|
|
1045
|
+
"version": "1.0.4",
|
|
875
1046
|
"name": "Nexus Core",
|
|
876
1047
|
"description": "Provides the shared Nexus balance, ledger, terminology and command namespace.",
|
|
877
1048
|
"category": "Gaming",
|
|
@@ -881,12 +1052,15 @@
|
|
|
881
1052
|
"moduleKind": "internal_dependency",
|
|
882
1053
|
"customerSelectable": false,
|
|
883
1054
|
"countsAsInstalledModule": false,
|
|
884
|
-
"healthExposure": "delegated"
|
|
1055
|
+
"healthExposure": "delegated",
|
|
1056
|
+
"deploymentSupport": "both",
|
|
1057
|
+
"credentialRisk": "none",
|
|
1058
|
+
"deploymentReason": "Provides an internal runtime dependency in hosted and self-hosted installations without provider credentials."
|
|
885
1059
|
},
|
|
886
1060
|
{
|
|
887
1061
|
"id": "helyx.nexus-rewards",
|
|
888
1062
|
"package": "@helyx/module-nexus-rewards",
|
|
889
|
-
"version": "1.0.
|
|
1063
|
+
"version": "1.0.3",
|
|
890
1064
|
"name": "Nexus Rewards",
|
|
891
1065
|
"description": "Configure Daily Claim and approved ways members earn Nexus units.",
|
|
892
1066
|
"category": "Community",
|
|
@@ -901,12 +1075,15 @@
|
|
|
901
1075
|
"moduleKind": "customer_feature",
|
|
902
1076
|
"customerSelectable": true,
|
|
903
1077
|
"countsAsInstalledModule": true,
|
|
904
|
-
"healthExposure": "direct"
|
|
1078
|
+
"healthExposure": "direct",
|
|
1079
|
+
"deploymentSupport": "both",
|
|
1080
|
+
"credentialRisk": "none",
|
|
1081
|
+
"deploymentReason": "Uses only the Helyx runtime and Discord capabilities available in hosted and self-hosted installations."
|
|
905
1082
|
},
|
|
906
1083
|
{
|
|
907
1084
|
"id": "helyx.nexus-economy",
|
|
908
1085
|
"package": "@helyx/module-nexus-economy",
|
|
909
|
-
"version": "1.0.
|
|
1086
|
+
"version": "1.0.4",
|
|
910
1087
|
"name": "Nexus Economy",
|
|
911
1088
|
"description": "Run a Nexus Exchange with server rewards and member inventory.",
|
|
912
1089
|
"category": "Gaming",
|
|
@@ -921,7 +1098,10 @@
|
|
|
921
1098
|
"moduleKind": "customer_feature",
|
|
922
1099
|
"customerSelectable": true,
|
|
923
1100
|
"countsAsInstalledModule": true,
|
|
924
|
-
"healthExposure": "direct"
|
|
1101
|
+
"healthExposure": "direct",
|
|
1102
|
+
"deploymentSupport": "both",
|
|
1103
|
+
"credentialRisk": "none",
|
|
1104
|
+
"deploymentReason": "Uses only the Helyx runtime and Discord capabilities available in hosted and self-hosted installations."
|
|
925
1105
|
}
|
|
926
1106
|
]
|
|
927
1107
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Helyx documentation
|
|
2
|
+
|
|
3
|
+
The public documentation matching this installed Helyx runtime ships inside
|
|
4
|
+
`@helyx/bot`. Run `npm ci` first, then open:
|
|
5
|
+
|
|
6
|
+
[`node_modules/@helyx/bot/documentation/README.md`](node_modules/@helyx/bot/documentation/README.md)
|
|
7
|
+
|
|
8
|
+
That directory contains self-hosting guides, environment reference material,
|
|
9
|
+
operator runbooks, and module-authoring instructions. It is replaced when the
|
|
10
|
+
bot package is updated, so keep deployment-specific notes outside
|
|
11
|
+
`node_modules`.
|
|
12
|
+
|
|
13
|
+
The generated project's `.env.example` is the active configuration template.
|
|
14
|
+
Never add the real `.env` file, credentials, database dumps, or private logs to
|
|
15
|
+
a support bundle or source repository.
|
|
@@ -8,6 +8,9 @@ This self-host starter was generated from the reviewed Helyx catalogue. It conta
|
|
|
8
8
|
|
|
9
9
|
Package installation and module activation are separate. Installed feature modules start disabled for every Discord server. Enable and configure them only after the bot is running.
|
|
10
10
|
|
|
11
|
+
The matching offline operator and module-author documentation is listed in
|
|
12
|
+
[`DOCUMENTATION.md`](DOCUMENTATION.md) after the project has been generated.
|
|
13
|
+
|
|
11
14
|
## Requirements
|
|
12
15
|
|
|
13
16
|
- A Discord application and bot token
|