@helyx/bot 0.4.39 → 0.4.40

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.40
4
+
5
+ ### Patch Changes
6
+
7
+ - Refresh the packaged public guides and operational documentation shipped with the bot.
8
+
3
9
  ## 0.4.39
4
10
 
5
11
  ### Patch Changes
@@ -4,6 +4,11 @@ This is the portable, versioned documentation set for Helyx operators and
4
4
  module authors. It contains only material intended for public release and ships
5
5
  inside the matching `@helyx/bot` npm package.
6
6
 
7
+ Use the copy shipped with your installed bot when a command, environment value
8
+ or package boundary must match that release. Use
9
+ [docs.helyx.gg](https://docs.helyx.gg/) for the current Hosted Helyx dashboard
10
+ and module guides.
11
+
7
12
  ## Start here
8
13
 
9
14
  - [Install a self-hosted Helyx instance](guides/getting-started.md)
@@ -11,13 +16,25 @@ inside the matching `@helyx/bot` npm package.
11
16
  - [Configure the environment](reference/environment.md)
12
17
  - [Operate installations and upgrades](runbooks/installation-and-upgrades.md)
13
18
  - [Plan backup and recovery](runbooks/backup-and-recovery.md)
19
+ - [Handle privacy and support](guides/privacy-and-support.md)
14
20
  - [Build an independent module](modules/building-a-module.md)
15
21
  - [Test a module](modules/testing-a-module.md)
16
22
  - [Prepare a module package](modules/publishing-a-module.md)
17
23
 
18
24
  The complete working example is published separately as
19
25
  `@helyx/module-example`. It is intentionally independent: module-specific
20
- commands, settings, tests, and lifecycle behavior remain inside that module.
26
+ commands, settings, tests, and lifecycle behaviour remain inside that module.
27
+
28
+ ## Choose the right path
29
+
30
+ - **Running the generated starter:** begin with
31
+ [Getting started](guides/getting-started.md), then read the environment,
32
+ backup and upgrade guides before production use.
33
+ - **Operating local data:** read
34
+ [Privacy and support](guides/privacy-and-support.md) and document the provider,
35
+ retention and access controls chosen for your deployment.
36
+ - **Building a module:** start from `@helyx/module-example`, then follow the
37
+ build, test and packaging guides without importing another module's source.
21
38
 
22
39
  ## Publication boundary
23
40
 
@@ -1,5 +1,13 @@
1
1
  # Getting started with self-hosted Helyx
2
2
 
3
+ Use this guide to generate a reviewed Helyx Self-Hosted project, validate its
4
+ configuration and prove one module works in a private Discord server.
5
+
6
+ > **Availability:** use the builder as the source of truth. If it does not offer
7
+ > a starter or manifest download, no production Helyx Self-Hosted release is
8
+ > available through the supported flow. Do not assemble one by installing
9
+ > packages manually.
10
+
3
11
  ## Requirements
4
12
 
5
13
  - Node.js 24 or 26 and npm 11 or later.
@@ -12,21 +20,25 @@ outside source control.
12
20
 
13
21
  ## Create the project
14
22
 
15
- Install the Helyx CLI, then generate a reviewed starter project using the
16
- release manifest supplied by Helyx:
23
+ The simplest path is to sign in at
24
+ [app.helyx.gg/self-host](https://app.helyx.gg/self-host), choose the Live
25
+ modules you need and download a complete starter ZIP. Extract it into a new
26
+ private directory and read its generated `README.md`.
27
+
28
+ For scripted generation, download a build manifest from the same builder and
29
+ use the current CLI:
17
30
 
18
31
  ```sh
19
- npm install --global @helyx/cli
20
- helyx self-host init --manifest ./helyx-build.json --output ./helyx --install
32
+ npx --yes @helyx/cli@latest self-host init --manifest ./helyx-build.json --output ./helyx --install
21
33
  cd helyx
22
- helyx setup
34
+ npm run setup
23
35
  ```
24
36
 
25
37
  `helyx setup` creates `.env` from `.env.example` only when `.env` does not
26
38
  already exist. Edit the required Discord and database values before continuing.
27
39
  See the [environment reference](../reference/environment.md).
28
40
 
29
- ## Validate before login
41
+ ## Validate before Discord sign-in
30
42
 
31
43
  ```sh
32
44
  npm run doctor
@@ -47,5 +59,40 @@ your operating system or hosting platform. Configure automatic restarts with a
47
59
  bounded delay, retain logs without secrets, and arrange database backups before
48
60
  inviting production traffic.
49
61
 
62
+ ## Complete the Discord setup
63
+
64
+ 1. Create or select an application in the Discord Developer Portal and add its
65
+ bot user.
66
+ 2. Put the application ID and bot token in the protected environment.
67
+ 3. Add the bot with the `bot` and `applications.commands` scopes.
68
+ 4. Grant only the Discord permissions required by selected modules; Helyx core
69
+ does not require Administrator.
70
+ 5. Start Helyx and wait for its ready result.
71
+ 6. Run `/helyx modules` in a private test server where you can manage Helyx.
72
+ 7. Enable and configure one installed module, then restart once to confirm its
73
+ saved state remains available.
74
+
75
+ Installing a module package and enabling its feature for a Discord server are
76
+ separate actions. Installed customer modules start disabled.
77
+
78
+ ## Troubleshooting
79
+
80
+ ### Doctor cannot reach PostgreSQL
81
+
82
+ Check the connection URL, credentials, network allowlist and `DATABASE_SSL`
83
+ against the provider's instructions. Do not paste the URL into a support
84
+ request.
85
+
86
+ ### The bot starts but a module is unavailable
87
+
88
+ Confirm the package appears in `helyx.modules.json`, its installed metadata
89
+ passes `npm run doctor` and it is enabled for that Discord server.
90
+
91
+ ### Helyx cannot act on a channel or role
92
+
93
+ Check the exact channel/category overrides and place Helyx's role above roles
94
+ it must manage. Administrator is optional and should not be used to hide a
95
+ narrow permission or hierarchy problem.
96
+
50
97
  Next read the [self-hosting guide](self-hosting.md) and the
51
98
  [installation and upgrade runbook](../runbooks/installation-and-upgrades.md).
@@ -0,0 +1,86 @@
1
+ # Privacy and support for Helyx Self-Hosted
2
+
3
+ Use this guide to separate locally controlled records from Helyx-hosted data,
4
+ route a request to the correct owner and ask for help without exposing secrets.
5
+
6
+ ## Identify who controls the record
7
+
8
+ - **Local Helyx Self-Hosted data:** the deployment owner controls the local
9
+ PostgreSQL database, module records, logs and backups.
10
+ - **Cloud Connect and Helyx account data:** Helyx controls the bounded hosted
11
+ installation, session, support and connector records it receives.
12
+ - **Discord data:** Discord controls platform messages, roles, channels and
13
+ account records separately.
14
+
15
+ Cloud Connect does not provide Helyx with unrestricted access to the local
16
+ database. A request submitted to the Helyx Privacy Centre therefore does not
17
+ automatically reach local-only records.
18
+
19
+ ## Handle a local request
20
+
21
+ 1. Confirm the requester through an authorised route without asking them to
22
+ send a password, token or unrelated identity document.
23
+ 2. Record the request scope and the exact local deployment concerned.
24
+ 3. Identify the module providers and local operational records that can contain
25
+ the subject's Discord user ID.
26
+ 4. Preserve another person's data, required security evidence and auditable
27
+ server actions while applying the supported access, correction, restriction
28
+ or deletion operation.
29
+ 5. Include active data and backups in the deployment's documented retention
30
+ process.
31
+ 6. Record the outcome without copying unnecessary personal data into support
32
+ logs.
33
+
34
+ Self-host privacy tooling ships disabled until its dedicated least-privilege
35
+ executor connection is configured. Do not grant the normal bot or a support
36
+ account unrestricted database access as a shortcut.
37
+
38
+ ## Use the Helyx Privacy Centre
39
+
40
+ For records held by Helyx, use
41
+ [app.helyx.gg/privacy](https://app.helyx.gg/privacy). If Discord sign-in is
42
+ unavailable, email `privacy@helyx.gg`. The central workflow can prepare an
43
+ access export, start erasure with a seven-day cancellation period, accept a
44
+ display-name correction or route a restriction, objection, portability request
45
+ or complaint for review.
46
+
47
+ ## Contact support safely
48
+
49
+ For an ordinary product or Self-Hosted question, open
50
+ [Helyx Support](https://app.helyx.gg/support). Include the installed Helyx and
51
+ module versions, safe error text, approximate time with timezone, expected
52
+ result and repeatable steps.
53
+
54
+ Never include:
55
+
56
+ - `.env` or a database URL;
57
+ - Discord, OAuth, Cloud Connect or status credentials;
58
+ - the data-encryption key;
59
+ - database dumps or unrestricted logs; or
60
+ - unrelated member content.
61
+
62
+ For a repeatable product fault, use
63
+ [Report a bug](https://app.helyx.gg/report-bug). For a suspected vulnerability,
64
+ use the [private security route](https://helyx.gg/security/) and follow its safe
65
+ testing rules. Modified source, unsupported package combinations and provider
66
+ administration remain outside the normal generated-project support boundary.
67
+
68
+ ## Troubleshooting
69
+
70
+ ### The central export does not contain a local record
71
+
72
+ This is expected when the record exists only in the deployment owner's
73
+ PostgreSQL database. Contact that owner and follow the local request process.
74
+
75
+ ### A support reply asks for more evidence
76
+
77
+ Provide the smallest redacted item that answers the question. Do not transmit a
78
+ secret or complete database dump; ask for an authorised route if a file is
79
+ genuinely required.
80
+
81
+ ## Related guides
82
+
83
+ - [Self-hosting responsibilities](self-hosting.md)
84
+ - [Environment reference](../reference/environment.md)
85
+ - [Backup and recovery](../runbooks/backup-and-recovery.md)
86
+ - [Online Helyx data guides](https://docs.helyx.gg/your-data/)
@@ -9,7 +9,7 @@ configuration, updates, monitoring, backups, and recovery testing.
9
9
  A normal installation contains one generated Helyx project, one PostgreSQL
10
10
  database, the reviewed core packages, and independently selected modules. Keep
11
11
  module boundaries intact: a module must be installable, configurable, testable,
12
- and removable without relying on unrelated module behavior.
12
+ and removable without relying on unrelated module behaviour.
13
13
 
14
14
  Helyx supports Docker Compose and direct Node.js operation. The generated
15
15
  project is the source of truth for its pinned public packages and module
@@ -38,3 +38,53 @@ installation.
38
38
 
39
39
  Cloud Connect is optional. Enabling it does not transfer responsibility for the
40
40
  self-hosted process, database, secrets, or backups to Helyx.
41
+
42
+ Cloud Connect enrolment is available only when the dashboard offers the
43
+ one-use-code control for a compatible release. Setting the local environment
44
+ switch does not make an unavailable hosted service available.
45
+
46
+ ## Cloud Connect boundary
47
+
48
+ Generated configuration is ready for Cloud Connect by default but remains
49
+ unpaired. A configured deployment owner or Discord application owner or team
50
+ member creates a one-use code in the Helyx dashboard and enters it with
51
+ `/helyx cloud connect`. Check the result with `/helyx cloud status`.
52
+
53
+ The connector sends bounded capabilities, health and dashboard
54
+ request/response data over an outbound authenticated connection. It does not
55
+ send the Discord token, database URL or data-encryption key. Local Discord
56
+ features continue if the hosted dashboard is temporarily unavailable.
57
+
58
+ Set `HELYX_CLOUD_CONNECT_ENABLED=false` before startup when the installation
59
+ must remain entirely local.
60
+
61
+ ## Before production use
62
+
63
+ 1. Prove `npm run doctor` from the production environment.
64
+ 2. Test one stateful module in a private server.
65
+ 3. Restart the process and confirm settings remain available.
66
+ 4. Create and test a PostgreSQL restore in a disposable environment.
67
+ 5. Record package versions, log access, monitoring and the responsible owner.
68
+ 6. Document how local data access, correction, restriction and deletion will be
69
+ handled.
70
+
71
+ ## Troubleshooting
72
+
73
+ ### Cloud Connect cannot decrypt its local identity
74
+
75
+ Restore the original `HELYX_DATA_ENCRYPTION_KEY`. If it cannot be recovered,
76
+ revoke the old installation in the dashboard and enrol a new identity with a
77
+ fresh one-use code.
78
+
79
+ ### A hosting provider cannot run the starter
80
+
81
+ The provider must support the release's Node.js and npm versions, run
82
+ `npm start`, preserve protected environment values and reach PostgreSQL. A
83
+ provider that cannot meet those requirements is not a supported runtime path.
84
+
85
+ ## Related guides
86
+
87
+ - [Getting started](getting-started.md)
88
+ - [Environment reference](../reference/environment.md)
89
+ - [Backup and recovery](../runbooks/backup-and-recovery.md)
90
+ - [Privacy and support](privacy-and-support.md)
@@ -4,6 +4,14 @@ Start from the published `@helyx/module-example` package. It contains a
4
4
  self-contained TypeScript project, manifest, source, tests, and packaging
5
5
  allowlist that can be copied into a new repository or workspace.
6
6
 
7
+ ## Before you begin
8
+
9
+ - Use Node.js `>=24 <27` and npm `>=11`.
10
+ - Choose a unique package name and module ID.
11
+ - Decide whether the module is one independently useful feature; do not combine
12
+ unrelated functions to reduce file count.
13
+ - Choose and state the licence that will govern your independent module.
14
+
7
15
  ## Required parts
8
16
 
9
17
  Every module needs:
@@ -14,7 +22,7 @@ Every module needs:
14
22
  - explicit `start` and `stop` lifecycle functions;
15
23
  - a privacy declaration and provider, including when no personal data is held;
16
24
  - compiled JavaScript and declarations matching the package exports;
17
- - tests for manifest parity, loading, lifecycle behavior, and each declared
25
+ - tests for manifest parity, loading, lifecycle behaviour, and each declared
18
26
  contribution.
19
27
 
20
28
  Dashboard fields need matching configuration validation. Manifest command IDs
@@ -31,7 +39,13 @@ independently installable and usable.
31
39
 
32
40
  Do not import private Helyx applications, another module's source files, or
33
41
  repository-relative configuration. Depend only on published packages with
34
- compatible version ranges. Module behavior must fail clearly when an optional
42
+ compatible version ranges. Module behaviour must fail clearly when an optional
35
43
  external service is unavailable.
36
44
 
37
- See [testing a module](testing-a-module.md) before adding product behavior.
45
+ See [testing a module](testing-a-module.md) before adding product behaviour.
46
+
47
+ ## Related guides
48
+
49
+ - [Test a module](testing-a-module.md)
50
+ - [Prepare a module for npm](publishing-a-module.md)
51
+ - [`@helyx/module-example` on npm](https://www.npmjs.com/package/@helyx/module-example)
@@ -25,3 +25,9 @@ licence actually governs the module.
25
25
  Publishing a package does not make it an official or reviewed Helyx module.
26
26
  Catalogue inclusion, security review, permissions, privacy declarations, and
27
27
  release support are separate decisions.
28
+
29
+ ## Related guides
30
+
31
+ - [Build an independent module](building-a-module.md)
32
+ - [Test a module](testing-a-module.md)
33
+ - [`@helyx/module-example` on npm](https://www.npmjs.com/package/@helyx/module-example)
@@ -11,7 +11,7 @@ drifting away from executable contributions.
11
11
  ## Lifecycle
12
12
 
13
13
  Call `start`, `health`, and `stop` with a minimal SDK runtime context. Verify
14
- observable behavior and make both lifecycle functions safe for the runtime to
14
+ observable behaviour and make both lifecycle functions safe for the runtime to
15
15
  call. Do not start network listeners or timers at import time.
16
16
 
17
17
  ## Dashboard
@@ -44,3 +44,9 @@ The tarball needs compiled exports, declarations, the manifest, instructions,
44
44
  licence, and any source or tests deliberately offered as a template. It must
45
45
  not contain credentials, logs, source maps, build caches, or internal Helyx
46
46
  documentation.
47
+
48
+ ## Related guides
49
+
50
+ - [Build an independent module](building-a-module.md)
51
+ - [Prepare a module for npm](publishing-a-module.md)
52
+ - [`@helyx/module-example` on npm](https://www.npmjs.com/package/@helyx/module-example)
@@ -3,6 +3,9 @@
3
3
  Start from [the published example](../examples/.env.example). The example is a
4
4
  copy of the starter emitted by the supported CLI and is checked for drift.
5
5
 
6
+ This page explains the ownership and safe defaults of the generated variables;
7
+ the comments in `.env.example` remain the version-matched field reference.
8
+
6
9
  ## Required values
7
10
 
8
11
  `DISCORD_TOKEN` is the bot token from the Discord developer portal.
@@ -40,3 +43,29 @@ npm run doctor
40
43
 
41
44
  Never include the real `.env` file in an npm package, container image layer,
42
45
  source archive, or support bundle.
46
+
47
+ ## Common failures
48
+
49
+ ### A variable is present but still rejected
50
+
51
+ An empty environment variable counts as configured in many hosts. Remove
52
+ unused optional values instead of setting them to an empty string. Replace all
53
+ required placeholders with real protected values.
54
+
55
+ ### PostgreSQL works locally but not on the host
56
+
57
+ Check network access and `DATABASE_SSL` using the database provider's required
58
+ mode. The Docker default is for the included private container network and must
59
+ not be copied blindly to an Internet database.
60
+
61
+ ### Encrypted records fail after deployment
62
+
63
+ Restore the original `HELYX_DATA_ENCRYPTION_KEY`. Generate it once and preserve
64
+ it; replacing it is not a password reset.
65
+
66
+ ## Related guides
67
+
68
+ - [Getting started](../guides/getting-started.md)
69
+ - [Self-hosting responsibilities](../guides/self-hosting.md)
70
+ - [Backup and recovery](../runbooks/backup-and-recovery.md)
71
+ - [Privacy and support](../guides/privacy-and-support.md)
@@ -39,3 +39,24 @@ Stop writes before a destructive restore. Preserve evidence needed to
39
39
  understand the incident, select a known-good backup, restore into a new database
40
40
  when possible, validate it, then deliberately switch the runtime. Do not test a
41
41
  restore over the only production database.
42
+
43
+ ## Troubleshooting
44
+
45
+ ### PostgreSQL restored but Cloud Connect or protected records fail
46
+
47
+ Confirm the restored runtime uses the matching data-encryption key and any
48
+ generated enrolment material. Do not replace the key or delete affected rows to
49
+ hide the mismatch.
50
+
51
+ ### Doctor reports a migration checksum mismatch
52
+
53
+ Restore the reviewed package files that supplied the migration. Never edit an
54
+ applied migration or its history. Preserve the safe migration name and checksum
55
+ for support.
56
+
57
+ ## Related guides
58
+
59
+ - [Environment reference](../reference/environment.md)
60
+ - [Installation and upgrades](installation-and-upgrades.md)
61
+ - [Self-hosting responsibilities](../guides/self-hosting.md)
62
+ - [Privacy and support](../guides/privacy-and-support.md)
@@ -1,5 +1,8 @@
1
1
  # Installation and upgrade runbook
2
2
 
3
+ Use this runbook for the first start of a generated project and for a reviewed
4
+ release-set update that preserves the local environment and database.
5
+
3
6
  ## First installation
4
7
 
5
8
  1. Generate the project with `helyx self-host init` and a reviewed build
@@ -41,8 +44,34 @@ packages to simulate a rollback.
41
44
 
42
45
  ## Failed validation
43
46
 
44
- Leave the process stopped, retain sanitized logs, and determine whether the
47
+ Leave the process stopped, retain sanitised logs, and determine whether the
45
48
  failure is configuration, package integrity, database connectivity, or module
46
49
  compatibility. If the updater restored managed files, rerun `npm ci` and
47
50
  `npm run doctor` before restarting the previous version. Restore data only from
48
51
  a tested backup and only when the incident specifically requires it.
52
+
53
+ ## Troubleshooting
54
+
55
+ ### The updater reports an incompatible module
56
+
57
+ Keep the current working release set. Do not update core, CLI or modules
58
+ independently. Return to the Helyx Self-Hosted builder, keep every current
59
+ module selected and review which compatible set is available.
60
+
61
+ ### The previous managed files were restored
62
+
63
+ Leave the bot stopped. Run `npm ci` and `npm run doctor` against the restored
64
+ metadata. Restart the previous version only after doctor succeeds; restore data
65
+ only when a tested compatible backup is specifically required.
66
+
67
+ ### A newly installed package is not available in Discord
68
+
69
+ Confirm it is included in `helyx.modules.json` and enabled for that Discord
70
+ server. Package installation and per-server module activation are separate.
71
+
72
+ ## Related guides
73
+
74
+ - [Getting started](../guides/getting-started.md)
75
+ - [Environment reference](../reference/environment.md)
76
+ - [Backup and recovery](backup-and-recovery.md)
77
+ - [Privacy and support](../guides/privacy-and-support.md)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helyx/bot",
3
- "version": "0.4.39",
3
+ "version": "0.4.40",
4
4
  "description": "Production Discord runtime for the modular Helyx platform.",
5
5
  "keywords": [
6
6
  "helyx",