@hexclave/shared 1.0.63 → 1.0.64
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/dist/{admin-interface-B9TRKVnU.d.ts → admin-interface-DaxVUjl4.d.ts} +2 -2
- package/dist/{admin-interface-B9TRKVnU.d.ts.map → admin-interface-DaxVUjl4.d.ts.map} +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt-parts/deployments-skill.js +22 -6
- package/dist/ai/unified-prompts/skill-site-prompt-parts/deployments-skill.js.map +1 -1
- package/dist/{email-outbox-CYmVerum.d.ts → email-outbox-B1wmVPRG.d.ts} +45 -45
- package/dist/{email-outbox-CYmVerum.d.ts.map → email-outbox-B1wmVPRG.d.ts.map} +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/deployments-skill.js +22 -6
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/deployments-skill.js.map +1 -1
- package/dist/esm/interface/crud/email-outbox.d.ts +44 -44
- package/dist/index.d.ts +1 -1
- package/dist/interface/admin-interface.d.ts +1 -1
- package/dist/interface/crud/email-outbox.d.ts +1 -1
- package/package.json +1 -1
- package/src/ai/unified-prompts/skill-site-prompt-parts/deployments-skill.ts +22 -6
|
@@ -5,7 +5,7 @@ import { n as MoneyAmount } from "./currency-constants-Cq_q8twn.js";
|
|
|
5
5
|
import { g as branchConfigSourceSchema, o as RestrictedReason, t as ConfigAgentRunApi } from "./schema-fields-DZtDQEEO.js";
|
|
6
6
|
import { i as RefreshToken, r as InternalSession, t as AccessToken } from "./sessions-CI-0TBQb.js";
|
|
7
7
|
import { J as UserActivityResponse, K as MetricsUserCounts, R as MetricsResponse, a as AnalyticsClickmapKind, c as AnalyticsClickmapResponse, r as AnalyticsClickmapDevice, u as AnalyticsClickmapTokenResponse } from "./admin-metrics-bsOkw4YQ.js";
|
|
8
|
-
import { t as EmailOutboxCrud } from "./email-outbox-
|
|
8
|
+
import { t as EmailOutboxCrud } from "./email-outbox-B1wmVPRG.js";
|
|
9
9
|
import { t as InternalEmailsCrud } from "./emails-Ba4yEaCS.js";
|
|
10
10
|
import { t as InternalApiKeysCrud } from "./internal-api-keys-D8IYDodH.js";
|
|
11
11
|
import { t as ProjectPermissionDefinitionsCrud } from "./project-permissions-kdi675F-.js";
|
|
@@ -456,4 +456,4 @@ declare class HexclaveAdminInterface extends HexclaveServerInterface {
|
|
|
456
456
|
}
|
|
457
457
|
//#endregion
|
|
458
458
|
export { AdminDeploymentRunJson as a, ChatContent as c, InternalApiKeyCreateCrudResponse as d, AdminDeploymentEnvVarOptions as i, HexclaveAdminInterface as l, AdminDeploymentDomainJson as n, AdminDeploymentServiceBuildOptions as o, AdminDeploymentEnvVarJson as r, AdminDeploymentServiceJson as s, AdminAuthApplicationOptions as t, InternalApiKeyCreateCrudRequest as u };
|
|
459
|
-
//# sourceMappingURL=admin-interface-
|
|
459
|
+
//# sourceMappingURL=admin-interface-DaxVUjl4.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-interface-
|
|
1
|
+
{"version":3,"file":"admin-interface-DaxVUjl4.d.ts","names":[],"sources":["../src/interface/admin-interface.ts"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ let _________utils_objects_js = require("../../../utils/objects.js");
|
|
|
5
5
|
let _________utils_strings_js = require("../../../utils/strings.js");
|
|
6
6
|
let ___reminders_js = require("../reminders.js");
|
|
7
7
|
//#region package.json
|
|
8
|
-
var version = "1.0.
|
|
8
|
+
var version = "1.0.64";
|
|
9
9
|
//#endregion
|
|
10
10
|
//#region \0@oxc-project+runtime@0.137.0/helpers/esm/taggedTemplateLiteral.js
|
|
11
11
|
function _taggedTemplateLiteral(e, t) {
|
|
@@ -47,13 +47,25 @@ const deploymentsSkillSection = require("../../../utils/strings.js").deindent`
|
|
|
47
47
|
|
|
48
48
|
Note also that the config file usually sits inside \`rootDirectory\`, which means it is uploaded with your source and compiled by the remote build like any other file. If the deployed app doesn't depend on the Hexclave SDK, add \`hexclave.config.ts\` to \`.vercelignore\`: the CLI reads the config from disk before packaging, so the build itself never needs it, and excluding it keeps an SDK import in the config from breaking a build that is otherwise unrelated to Hexclave.
|
|
49
49
|
|
|
50
|
-
##
|
|
50
|
+
## Agent workflow (do this — do not drive the dashboard UI)
|
|
51
|
+
|
|
52
|
+
AI agents must deploy and manage Deployments through the CLI and \`hexclave.config.ts\`, not by clicking around \`app.hexclave.com\` in a browser. The dashboard is a human fallback only.
|
|
51
53
|
|
|
52
|
-
|
|
54
|
+
Preferred sequence:
|
|
53
55
|
|
|
54
|
-
|
|
56
|
+
1. **Read this skill** (\`https://skill.hexclave.com/deployments\` or the Deployments addendum you already have) and ensure \`deployments-alpha\` is enabled in config as above.
|
|
57
|
+
2. **Authenticate for cloud deploys** (pick the first that works):
|
|
58
|
+
- If \`HEXCLAVE_SECRET_SERVER_KEY\` (or \`STACK_SECRET_SERVER_KEY\`) **and** \`HEXCLAVE_PROJECT_ID\` (or \`STACK_PROJECT_ID\`) are already in the environment, use them. No login step.
|
|
59
|
+
- Else if \`npx @hexclave/cli@latest whoami\` succeeds, you already have a CLI login session — proceed.
|
|
60
|
+
- Else ask the user to run \`npx @hexclave/cli@latest login\` (or run it for them). That command opens a **one-time browser login page for the human**. Do **not** use the browser yourself to open the Deployments dashboard, click Deploy, or configure the service in the UI. After login returns successfully, continue immediately with the CLI.
|
|
61
|
+
3. **Write/update \`hexclave.config.ts\`**, then deploy with \`npx @hexclave/cli@latest deploy <service> ...\` (see below). Pass every \`type: "secret"\` env via \`--secret\`.
|
|
62
|
+
4. **Poll status/logs with \`hexclave exec\`** (snippets below). Do not tell the user to "watch the dashboard" as the primary path.
|
|
55
63
|
|
|
56
|
-
|
|
64
|
+
\`deploy\` auth: \`HEXCLAVE_SECRET_SERVER_KEY\` if set, otherwise the \`hexclave login\` session. \`exec --cloud-project-id\` needs the login session (not the secret server key alone).
|
|
65
|
+
|
|
66
|
+
## Domains
|
|
67
|
+
|
|
68
|
+
Every Vercel service gets a Vercel domain autoprovisioned. Prefer the CLI to attach a custom domain:
|
|
57
69
|
|
|
58
70
|
\`\`\`sh title="Terminal"
|
|
59
71
|
npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\
|
|
@@ -62,6 +74,8 @@ const deploymentsSkillSection = require("../../../utils/strings.js").deindent`
|
|
|
62
74
|
return p.getDeploymentServiceDomain('api', 'app.example.com');"
|
|
63
75
|
\`\`\`
|
|
64
76
|
|
|
77
|
+
Humans can also add domains in the dashboard at \`https://app.hexclave.com/projects/<project-id>/deployments\` (service → Domains). Agents should not do that in a browser.
|
|
78
|
+
|
|
65
79
|
## Deploying
|
|
66
80
|
|
|
67
81
|
Before deploying, run the service's \`installCommand\` and \`buildCommand\` locally and confirm they succeed. The remote build runs the same commands, but \`deploy\` exits before the build finishes, so a broken build does not fail the command — it surfaces only when you check the run afterwards.
|
|
@@ -72,7 +86,7 @@ const deploymentsSkillSection = require("../../../utils/strings.js").deindent`
|
|
|
72
86
|
npx @hexclave/cli@latest deploy web --secret db_connection="$DATABASE_URL"
|
|
73
87
|
\`\`\`
|
|
74
88
|
|
|
75
|
-
The CLI packages the service's root directory (respecting \`.gitignore\` and \`.vercelignore\`, and always excluding \`node_modules\` and \`.git\`), uploads it, and starts a remote build. Without a config file, the configuration stored in Hexclave governs the deploy, with the root directory resolved against the current directory. It always deploys to production, never prompts, and exits as soon as the build is queued, printing the run id.
|
|
89
|
+
The CLI packages the service's root directory (respecting \`.gitignore\` and \`.vercelignore\`, and always excluding \`node_modules\` and \`.git\`), uploads it, and starts a remote build. Without a config file, the configuration stored in Hexclave governs the deploy, with the root directory resolved against the current directory. It always deploys to production, never prompts, and exits as soon as the build is queued, printing the run id. Check that run with \`exec\` (next section), not by opening the dashboard.
|
|
76
90
|
|
|
77
91
|
Every secret defined in the service's \`env\` must be passed via \`--secret\` on every deploy — a missing (or misspelled) one fails the deploy before anything is uploaded.
|
|
78
92
|
|
|
@@ -114,13 +128,15 @@ const deploymentsSkillSection = require("../../../utils/strings.js").deindent`
|
|
|
114
128
|
|
|
115
129
|
## Deleting a service
|
|
116
130
|
|
|
117
|
-
|
|
131
|
+
Prefer the CLI:
|
|
118
132
|
|
|
119
133
|
\`\`\`sh title="Terminal"
|
|
120
134
|
npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\
|
|
121
135
|
"const p = await hexclaveServerApp.getProject(); \\
|
|
122
136
|
await p.deleteDeploymentService('api');"
|
|
123
137
|
\`\`\`
|
|
138
|
+
|
|
139
|
+
Humans can also delete a service in the dashboard; agents should not.
|
|
124
140
|
`;
|
|
125
141
|
//#endregion
|
|
126
142
|
exports.deploymentsSkillSection = deploymentsSkillSection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployments-skill.js","names":[],"sources":["../../../../src/ai/unified-prompts/skill-site-prompt-parts/deployments-skill.ts"],"sourcesContent":["import { deindent } from \"../../../utils/strings\";\n\n// The Deployments-specific addendum served at https://skill.hexclave.com/deployments.\n// It is appended verbatim after the full base skill, so this section assumes the\n// reader already has the general Hexclave skill (CLI auth, config format, SDKs) in\n// context and only teaches what is specific to the Deployments app.\nexport const deploymentsSkillSection = deindent`\n # Hexclave Deployments\n\n The Deployments app makes deploying a service very easy. You select a type of service to deploy and provide your code, build instructions, run instructions, environment variables, and the code framework. You can set up multiple deployments per Hexclave project — for example, a backend service and a frontend service. Once a service is deployed, it is publicly accessible.\n\n For this iteration of the Deployments app, only the \\`vercel\\` service type is available. It can be used to set up serverless deployments.\n\n To use Hexclave Deployments, you must do a few things. First, the Deployments app must be enabled, by adding \\`deployments-alpha\\` under \\`apps.installed\\`. Second, you must edit your \\`hexclave.config.ts\\` file to add the relevant configuration, as specified below. Both keys are \\`deployments-alpha\\`, not \\`deployments\\` — the app is in alpha and its id says so. Because of the hyphen, quote it.\n\n ## Config\n\n \\`\\`\\`ts title=\"hexclave.config.ts\"\n import type { HexclaveConfig } from \"@hexclave/js/config\"; // replace \\`js\\` with the correct framework SDK package\n\n export const config: HexclaveConfig = {\n apps: {\n installed: {\n authentication: { enabled: true },\n \"deployments-alpha\": { enabled: true },\n },\n },\n \"deployments-alpha\": {\n services: {\n web: {\n type: \"vercel\",\n rootDirectory: \"./\",\n framework: \"nextjs\",\n installCommand: \"pnpm install\",\n buildCommand: \"pnpm build\",\n outputDirectory: \".next\",\n env: {\n \"MY_ENV_VAR\": { value: \"true\" },\n \"DATABASE_CONNECTION_STRING\": { type: \"secret\", key: \"db_connection\" },\n \"NEXT_PUBLIC_HEXCLAVE_PROJECT_ID\": { type: \"connection\", value: \"hexclave.projectId\" },\n },\n },\n },\n },\n };\n \\`\\`\\`\n\n Here, \\`web\\` is the name of your service. \\`type\\` refers to the type of service you want to set up; for now, as mentioned earlier, only \\`vercel\\` is supported. \\`rootDirectory\\` is the directory in which the install and build commands are run, and where the code for your service is found. \\`installCommand\\` is the command run to install your application's dependencies, and \\`buildCommand\\` is what is run to build the necessary packages and files. \\`framework\\` is the framework used by your service; from it and \\`outputDirectory\\`, the run command is inferred.\n\n The \\`HexclaveConfig\\` annotation requires the SDK package it is imported from to be a dependency of the project. If it isn't, either install it or drop the annotation (the config is plain TypeScript — the CLI does not type-check it).\n\n Note also that the config file usually sits inside \\`rootDirectory\\`, which means it is uploaded with your source and compiled by the remote build like any other file. If the deployed app doesn't depend on the Hexclave SDK, add \\`hexclave.config.ts\\` to \\`.vercelignore\\`: the CLI reads the config from disk before packaging, so the build itself never needs it, and excluding it keeps an SDK import in the config from breaking a build that is otherwise unrelated to Hexclave.\n\n ## Domains\n\n Every Vercel service gets a Vercel domain autoprovisioned. If you want to attach a custom domain, there are two ways to do so.\n\n **Option 1 — the dashboard.** Visit \\`https://app.hexclave.com/projects/<project-id>/deployments\\`, click the service of choice, go to the Domains tab, add your domain, and then create the returned DNS records at your DNS provider.\n\n **Option 2 — the CLI.** Here is an example of adding \\`app.example.com\\` to the service \\`api\\` and receiving the DNS records that then need to be set with your DNS provider:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\\\\n \"const p = await hexclaveServerApp.getProject(); \\\\\n await p.addDeploymentServiceDomain('api', 'app.example.com'); \\\\\n return p.getDeploymentServiceDomain('api', 'app.example.com');\"\n \\`\\`\\`\n\n ## Deploying\n\n Before deploying, run the service's \\`installCommand\\` and \\`buildCommand\\` locally and confirm they succeed. The remote build runs the same commands, but \\`deploy\\` exits before the build finishes, so a broken build does not fail the command — it surfaces only when you check the run afterwards.\n\n From the directory containing your config file:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest deploy web --secret db_connection=\"$DATABASE_URL\"\n \\`\\`\\`\n\n The CLI packages the service's root directory (respecting \\`.gitignore\\` and \\`.vercelignore\\`, and always excluding \\`node_modules\\` and \\`.git\\`), uploads it, and starts a remote build. Without a config file, the configuration stored in Hexclave governs the deploy, with the root directory resolved against the current directory. It always deploys to production, never prompts, and exits as soon as the build is queued, printing the run id. Follow the build in the dashboard's Deployments tab.\n\n Every secret defined in the service's \\`env\\` must be passed via \\`--secret\\` on every deploy — a missing (or misspelled) one fails the deploy before anything is uploaded.\n\n Options: \\`--config <path>\\` (default: auto-discover \\`hexclave.config.ts\\` in the current directory, dashboard configuration otherwise), \\`--cloud-project-id <id>\\` (default: the \\`HEXCLAVE_PROJECT_ID\\` env var), and \\`--secret KEY=VALUE\\` (repeatable, see above).\n\n You can also deploy through GitHub Actions, like so:\n\n \\`\\`\\`yaml title=\".github/workflows/deploy.yaml\"\n - run: npm i -g @hexclave/cli\n - run: hexclave deploy web --secret db_connection=\"$DATABASE_URL\"\n env:\n HEXCLAVE_PROJECT_ID: \\${{ secrets.HEXCLAVE_PROJECT_ID }}\n HEXCLAVE_SECRET_SERVER_KEY: \\${{ secrets.HEXCLAVE_SECRET_SERVER_KEY }}\n DATABASE_URL: \\${{ secrets.DATABASE_URL }}\n \\`\\`\\`\n\n ## Checking status and debugging failures\n\n Because \\`deploy\\` returns as soon as the build is queued, a successful exit does not mean the deploy succeeded. Check the service to find out:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\\\\n \"const p = await hexclaveServerApp.getProject(); \\\\\n const svc = (await p.listDeploymentServices()).find(s => s.id === 'web'); \\\\\n return { status: svc.status, url: svc.url, run: svc.latest_run };\"\n \\`\\`\\`\n\n A service's \\`status\\` is one of \\`not_deployed\\`, \\`queued\\`, \\`building\\`, \\`deployed\\`, \\`failed\\`, or \\`canceled\\`; a run's is \\`queued\\`, \\`building\\`, \\`ready\\`, \\`error\\`, or \\`canceled\\`. Poll until the run leaves \\`queued\\`/\\`building\\`.\n\n A failed run's \\`error\\` field is only a one-line summary (for example \\`Command \"npm run build\" exited with 1\\`). Do not try to guess the cause from it, and do not reproduce the build locally to find out — fetch the actual build output by run id:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\\\\n \"const p = await hexclaveServerApp.getProject(); \\\\\n return p.getDeploymentRunLogs('<run-id>');\"\n \\`\\`\\`\n\n \\`deploy\\` prints the run id it started. If you don't have one, \\`listDeploymentRuns('web', { limit: 5 })\\` returns the most recent runs, newest first — call it through \\`exec\\` like the snippets above.\n\n ## Deleting a service\n\n If you want to delete a deployed service, you can do so through the dashboard, or through the CLI like so:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\\\\n \"const p = await hexclaveServerApp.getProject(); \\\\\n await p.deleteDeploymentService('api');\"\n \\`\\`\\`\n`;\n"],"mappings":";;AAMA,MAAa,0BAA0B,mCAAA,CAAA,CAAA,QAAQ"}
|
|
1
|
+
{"version":3,"file":"deployments-skill.js","names":[],"sources":["../../../../src/ai/unified-prompts/skill-site-prompt-parts/deployments-skill.ts"],"sourcesContent":["import { deindent } from \"../../../utils/strings\";\n\n// The Deployments-specific addendum served at https://skill.hexclave.com/deployments.\n// It is appended verbatim after the full base skill, so this section assumes the\n// reader already has the general Hexclave skill (CLI auth, config format, SDKs) in\n// context and only teaches what is specific to the Deployments app.\nexport const deploymentsSkillSection = deindent`\n # Hexclave Deployments\n\n The Deployments app makes deploying a service very easy. You select a type of service to deploy and provide your code, build instructions, run instructions, environment variables, and the code framework. You can set up multiple deployments per Hexclave project — for example, a backend service and a frontend service. Once a service is deployed, it is publicly accessible.\n\n For this iteration of the Deployments app, only the \\`vercel\\` service type is available. It can be used to set up serverless deployments.\n\n To use Hexclave Deployments, you must do a few things. First, the Deployments app must be enabled, by adding \\`deployments-alpha\\` under \\`apps.installed\\`. Second, you must edit your \\`hexclave.config.ts\\` file to add the relevant configuration, as specified below. Both keys are \\`deployments-alpha\\`, not \\`deployments\\` — the app is in alpha and its id says so. Because of the hyphen, quote it.\n\n ## Config\n\n \\`\\`\\`ts title=\"hexclave.config.ts\"\n import type { HexclaveConfig } from \"@hexclave/js/config\"; // replace \\`js\\` with the correct framework SDK package\n\n export const config: HexclaveConfig = {\n apps: {\n installed: {\n authentication: { enabled: true },\n \"deployments-alpha\": { enabled: true },\n },\n },\n \"deployments-alpha\": {\n services: {\n web: {\n type: \"vercel\",\n rootDirectory: \"./\",\n framework: \"nextjs\",\n installCommand: \"pnpm install\",\n buildCommand: \"pnpm build\",\n outputDirectory: \".next\",\n env: {\n \"MY_ENV_VAR\": { value: \"true\" },\n \"DATABASE_CONNECTION_STRING\": { type: \"secret\", key: \"db_connection\" },\n \"NEXT_PUBLIC_HEXCLAVE_PROJECT_ID\": { type: \"connection\", value: \"hexclave.projectId\" },\n },\n },\n },\n },\n };\n \\`\\`\\`\n\n Here, \\`web\\` is the name of your service. \\`type\\` refers to the type of service you want to set up; for now, as mentioned earlier, only \\`vercel\\` is supported. \\`rootDirectory\\` is the directory in which the install and build commands are run, and where the code for your service is found. \\`installCommand\\` is the command run to install your application's dependencies, and \\`buildCommand\\` is what is run to build the necessary packages and files. \\`framework\\` is the framework used by your service; from it and \\`outputDirectory\\`, the run command is inferred.\n\n The \\`HexclaveConfig\\` annotation requires the SDK package it is imported from to be a dependency of the project. If it isn't, either install it or drop the annotation (the config is plain TypeScript — the CLI does not type-check it).\n\n Note also that the config file usually sits inside \\`rootDirectory\\`, which means it is uploaded with your source and compiled by the remote build like any other file. If the deployed app doesn't depend on the Hexclave SDK, add \\`hexclave.config.ts\\` to \\`.vercelignore\\`: the CLI reads the config from disk before packaging, so the build itself never needs it, and excluding it keeps an SDK import in the config from breaking a build that is otherwise unrelated to Hexclave.\n\n ## Agent workflow (do this — do not drive the dashboard UI)\n\n AI agents must deploy and manage Deployments through the CLI and \\`hexclave.config.ts\\`, not by clicking around \\`app.hexclave.com\\` in a browser. The dashboard is a human fallback only.\n\n Preferred sequence:\n\n 1. **Read this skill** (\\`https://skill.hexclave.com/deployments\\` or the Deployments addendum you already have) and ensure \\`deployments-alpha\\` is enabled in config as above.\n 2. **Authenticate for cloud deploys** (pick the first that works):\n - If \\`HEXCLAVE_SECRET_SERVER_KEY\\` (or \\`STACK_SECRET_SERVER_KEY\\`) **and** \\`HEXCLAVE_PROJECT_ID\\` (or \\`STACK_PROJECT_ID\\`) are already in the environment, use them. No login step.\n - Else if \\`npx @hexclave/cli@latest whoami\\` succeeds, you already have a CLI login session — proceed.\n - Else ask the user to run \\`npx @hexclave/cli@latest login\\` (or run it for them). That command opens a **one-time browser login page for the human**. Do **not** use the browser yourself to open the Deployments dashboard, click Deploy, or configure the service in the UI. After login returns successfully, continue immediately with the CLI.\n 3. **Write/update \\`hexclave.config.ts\\`**, then deploy with \\`npx @hexclave/cli@latest deploy <service> ...\\` (see below). Pass every \\`type: \"secret\"\\` env via \\`--secret\\`.\n 4. **Poll status/logs with \\`hexclave exec\\`** (snippets below). Do not tell the user to \"watch the dashboard\" as the primary path.\n\n \\`deploy\\` auth: \\`HEXCLAVE_SECRET_SERVER_KEY\\` if set, otherwise the \\`hexclave login\\` session. \\`exec --cloud-project-id\\` needs the login session (not the secret server key alone).\n\n ## Domains\n\n Every Vercel service gets a Vercel domain autoprovisioned. Prefer the CLI to attach a custom domain:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\\\\n \"const p = await hexclaveServerApp.getProject(); \\\\\n await p.addDeploymentServiceDomain('api', 'app.example.com'); \\\\\n return p.getDeploymentServiceDomain('api', 'app.example.com');\"\n \\`\\`\\`\n\n Humans can also add domains in the dashboard at \\`https://app.hexclave.com/projects/<project-id>/deployments\\` (service → Domains). Agents should not do that in a browser.\n\n ## Deploying\n\n Before deploying, run the service's \\`installCommand\\` and \\`buildCommand\\` locally and confirm they succeed. The remote build runs the same commands, but \\`deploy\\` exits before the build finishes, so a broken build does not fail the command — it surfaces only when you check the run afterwards.\n\n From the directory containing your config file:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest deploy web --secret db_connection=\"$DATABASE_URL\"\n \\`\\`\\`\n\n The CLI packages the service's root directory (respecting \\`.gitignore\\` and \\`.vercelignore\\`, and always excluding \\`node_modules\\` and \\`.git\\`), uploads it, and starts a remote build. Without a config file, the configuration stored in Hexclave governs the deploy, with the root directory resolved against the current directory. It always deploys to production, never prompts, and exits as soon as the build is queued, printing the run id. Check that run with \\`exec\\` (next section), not by opening the dashboard.\n\n Every secret defined in the service's \\`env\\` must be passed via \\`--secret\\` on every deploy — a missing (or misspelled) one fails the deploy before anything is uploaded.\n\n Options: \\`--config <path>\\` (default: auto-discover \\`hexclave.config.ts\\` in the current directory, dashboard configuration otherwise), \\`--cloud-project-id <id>\\` (default: the \\`HEXCLAVE_PROJECT_ID\\` env var), and \\`--secret KEY=VALUE\\` (repeatable, see above).\n\n You can also deploy through GitHub Actions, like so:\n\n \\`\\`\\`yaml title=\".github/workflows/deploy.yaml\"\n - run: npm i -g @hexclave/cli\n - run: hexclave deploy web --secret db_connection=\"$DATABASE_URL\"\n env:\n HEXCLAVE_PROJECT_ID: \\${{ secrets.HEXCLAVE_PROJECT_ID }}\n HEXCLAVE_SECRET_SERVER_KEY: \\${{ secrets.HEXCLAVE_SECRET_SERVER_KEY }}\n DATABASE_URL: \\${{ secrets.DATABASE_URL }}\n \\`\\`\\`\n\n ## Checking status and debugging failures\n\n Because \\`deploy\\` returns as soon as the build is queued, a successful exit does not mean the deploy succeeded. Check the service to find out:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\\\\n \"const p = await hexclaveServerApp.getProject(); \\\\\n const svc = (await p.listDeploymentServices()).find(s => s.id === 'web'); \\\\\n return { status: svc.status, url: svc.url, run: svc.latest_run };\"\n \\`\\`\\`\n\n A service's \\`status\\` is one of \\`not_deployed\\`, \\`queued\\`, \\`building\\`, \\`deployed\\`, \\`failed\\`, or \\`canceled\\`; a run's is \\`queued\\`, \\`building\\`, \\`ready\\`, \\`error\\`, or \\`canceled\\`. Poll until the run leaves \\`queued\\`/\\`building\\`.\n\n A failed run's \\`error\\` field is only a one-line summary (for example \\`Command \"npm run build\" exited with 1\\`). Do not try to guess the cause from it, and do not reproduce the build locally to find out — fetch the actual build output by run id:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\\\\n \"const p = await hexclaveServerApp.getProject(); \\\\\n return p.getDeploymentRunLogs('<run-id>');\"\n \\`\\`\\`\n\n \\`deploy\\` prints the run id it started. If you don't have one, \\`listDeploymentRuns('web', { limit: 5 })\\` returns the most recent runs, newest first — call it through \\`exec\\` like the snippets above.\n\n ## Deleting a service\n\n Prefer the CLI:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\\\\n \"const p = await hexclaveServerApp.getProject(); \\\\\n await p.deleteDeploymentService('api');\"\n \\`\\`\\`\n\n Humans can also delete a service in the dashboard; agents should not.\n`;\n"],"mappings":";;AAMA,MAAa,0BAA0B,mCAAA,CAAA,CAAA,QAAQ"}
|
|
@@ -162,6 +162,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
162
162
|
id: string;
|
|
163
163
|
subject: string;
|
|
164
164
|
created_at_millis: number;
|
|
165
|
+
html: string | null;
|
|
166
|
+
text: string | null;
|
|
165
167
|
updated_at_millis: number;
|
|
166
168
|
tsx_source: string;
|
|
167
169
|
theme_id: string | null;
|
|
@@ -198,8 +200,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
198
200
|
has_delivered: boolean;
|
|
199
201
|
started_rendering_at_millis: number;
|
|
200
202
|
rendered_at_millis: number;
|
|
201
|
-
html: string | null;
|
|
202
|
-
text: string | null;
|
|
203
203
|
is_transactional: boolean;
|
|
204
204
|
is_high_priority: boolean;
|
|
205
205
|
notification_category_id: string | null;
|
|
@@ -208,6 +208,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
208
208
|
id: string;
|
|
209
209
|
subject: string;
|
|
210
210
|
created_at_millis: number;
|
|
211
|
+
html: string | null;
|
|
212
|
+
text: string | null;
|
|
211
213
|
updated_at_millis: number;
|
|
212
214
|
tsx_source: string;
|
|
213
215
|
theme_id: string | null;
|
|
@@ -244,8 +246,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
244
246
|
has_delivered: boolean;
|
|
245
247
|
started_rendering_at_millis: number;
|
|
246
248
|
rendered_at_millis: number;
|
|
247
|
-
html: string | null;
|
|
248
|
-
text: string | null;
|
|
249
249
|
is_transactional: boolean;
|
|
250
250
|
is_high_priority: boolean;
|
|
251
251
|
notification_category_id: string | null;
|
|
@@ -254,6 +254,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
254
254
|
id: string;
|
|
255
255
|
subject: string;
|
|
256
256
|
created_at_millis: number;
|
|
257
|
+
html: string | null;
|
|
258
|
+
text: string | null;
|
|
257
259
|
updated_at_millis: number;
|
|
258
260
|
tsx_source: string;
|
|
259
261
|
theme_id: string | null;
|
|
@@ -290,8 +292,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
290
292
|
has_delivered: boolean;
|
|
291
293
|
started_rendering_at_millis: number;
|
|
292
294
|
rendered_at_millis: number;
|
|
293
|
-
html: string | null;
|
|
294
|
-
text: string | null;
|
|
295
295
|
is_transactional: boolean;
|
|
296
296
|
is_high_priority: boolean;
|
|
297
297
|
notification_category_id: string | null;
|
|
@@ -301,6 +301,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
301
301
|
id: string;
|
|
302
302
|
subject: string;
|
|
303
303
|
created_at_millis: number;
|
|
304
|
+
html: string | null;
|
|
305
|
+
text: string | null;
|
|
304
306
|
updated_at_millis: number;
|
|
305
307
|
tsx_source: string;
|
|
306
308
|
theme_id: string | null;
|
|
@@ -337,8 +339,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
337
339
|
has_delivered: boolean;
|
|
338
340
|
started_rendering_at_millis: number;
|
|
339
341
|
rendered_at_millis: number;
|
|
340
|
-
html: string | null;
|
|
341
|
-
text: string | null;
|
|
342
342
|
is_transactional: boolean;
|
|
343
343
|
is_high_priority: boolean;
|
|
344
344
|
notification_category_id: string | null;
|
|
@@ -347,10 +347,10 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
347
347
|
server_error: string;
|
|
348
348
|
} | {
|
|
349
349
|
subject?: string | undefined;
|
|
350
|
-
started_rendering_at_millis?: number | undefined;
|
|
351
|
-
rendered_at_millis?: number | undefined;
|
|
352
350
|
html?: string | null | undefined;
|
|
353
351
|
text?: string | null | undefined;
|
|
352
|
+
started_rendering_at_millis?: number | undefined;
|
|
353
|
+
rendered_at_millis?: number | undefined;
|
|
354
354
|
is_transactional?: boolean | undefined;
|
|
355
355
|
is_high_priority?: boolean | undefined;
|
|
356
356
|
notification_category_id?: string | null | undefined;
|
|
@@ -400,6 +400,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
400
400
|
id: string;
|
|
401
401
|
subject: string;
|
|
402
402
|
created_at_millis: number;
|
|
403
|
+
html: string | null;
|
|
404
|
+
text: string | null;
|
|
403
405
|
updated_at_millis: number;
|
|
404
406
|
tsx_source: string;
|
|
405
407
|
theme_id: string | null;
|
|
@@ -436,8 +438,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
436
438
|
has_delivered: boolean;
|
|
437
439
|
started_rendering_at_millis: number;
|
|
438
440
|
rendered_at_millis: number;
|
|
439
|
-
html: string | null;
|
|
440
|
-
text: string | null;
|
|
441
441
|
is_transactional: boolean;
|
|
442
442
|
is_high_priority: boolean;
|
|
443
443
|
notification_category_id: string | null;
|
|
@@ -448,6 +448,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
448
448
|
id: string;
|
|
449
449
|
subject: string;
|
|
450
450
|
created_at_millis: number;
|
|
451
|
+
html: string | null;
|
|
452
|
+
text: string | null;
|
|
451
453
|
updated_at_millis: number;
|
|
452
454
|
tsx_source: string;
|
|
453
455
|
theme_id: string | null;
|
|
@@ -484,8 +486,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
484
486
|
has_delivered: boolean;
|
|
485
487
|
started_rendering_at_millis: number;
|
|
486
488
|
rendered_at_millis: number;
|
|
487
|
-
html: string | null;
|
|
488
|
-
text: string | null;
|
|
489
489
|
is_transactional: boolean;
|
|
490
490
|
is_high_priority: boolean;
|
|
491
491
|
notification_category_id: string | null;
|
|
@@ -496,6 +496,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
496
496
|
id: string;
|
|
497
497
|
subject: string;
|
|
498
498
|
created_at_millis: number;
|
|
499
|
+
html: string | null;
|
|
500
|
+
text: string | null;
|
|
499
501
|
updated_at_millis: number;
|
|
500
502
|
tsx_source: string;
|
|
501
503
|
theme_id: string | null;
|
|
@@ -532,8 +534,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
532
534
|
has_delivered: boolean;
|
|
533
535
|
started_rendering_at_millis: number;
|
|
534
536
|
rendered_at_millis: number;
|
|
535
|
-
html: string | null;
|
|
536
|
-
text: string | null;
|
|
537
537
|
is_transactional: boolean;
|
|
538
538
|
is_high_priority: boolean;
|
|
539
539
|
notification_category_id: string | null;
|
|
@@ -545,6 +545,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
545
545
|
id: string;
|
|
546
546
|
subject: string;
|
|
547
547
|
created_at_millis: number;
|
|
548
|
+
html: string | null;
|
|
549
|
+
text: string | null;
|
|
548
550
|
updated_at_millis: number;
|
|
549
551
|
tsx_source: string;
|
|
550
552
|
theme_id: string | null;
|
|
@@ -581,8 +583,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
581
583
|
has_delivered: boolean;
|
|
582
584
|
started_rendering_at_millis: number;
|
|
583
585
|
rendered_at_millis: number;
|
|
584
|
-
html: string | null;
|
|
585
|
-
text: string | null;
|
|
586
586
|
is_transactional: boolean;
|
|
587
587
|
is_high_priority: boolean;
|
|
588
588
|
notification_category_id: string | null;
|
|
@@ -595,6 +595,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
595
595
|
id: string;
|
|
596
596
|
subject: string;
|
|
597
597
|
created_at_millis: number;
|
|
598
|
+
html: string | null;
|
|
599
|
+
text: string | null;
|
|
598
600
|
updated_at_millis: number;
|
|
599
601
|
tsx_source: string;
|
|
600
602
|
theme_id: string | null;
|
|
@@ -631,8 +633,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
631
633
|
has_delivered: boolean;
|
|
632
634
|
started_rendering_at_millis: number;
|
|
633
635
|
rendered_at_millis: number;
|
|
634
|
-
html: string | null;
|
|
635
|
-
text: string | null;
|
|
636
636
|
is_transactional: boolean;
|
|
637
637
|
is_high_priority: boolean;
|
|
638
638
|
notification_category_id: string | null;
|
|
@@ -645,6 +645,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
645
645
|
id: string;
|
|
646
646
|
subject: string;
|
|
647
647
|
created_at_millis: number;
|
|
648
|
+
html: string | null;
|
|
649
|
+
text: string | null;
|
|
648
650
|
updated_at_millis: number;
|
|
649
651
|
tsx_source: string;
|
|
650
652
|
theme_id: string | null;
|
|
@@ -681,8 +683,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
681
683
|
has_delivered: boolean;
|
|
682
684
|
started_rendering_at_millis: number;
|
|
683
685
|
rendered_at_millis: number;
|
|
684
|
-
html: string | null;
|
|
685
|
-
text: string | null;
|
|
686
686
|
is_transactional: boolean;
|
|
687
687
|
is_high_priority: boolean;
|
|
688
688
|
notification_category_id: string | null;
|
|
@@ -882,6 +882,8 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
882
882
|
id: string;
|
|
883
883
|
subject: string;
|
|
884
884
|
created_at_millis: number;
|
|
885
|
+
html: string | null;
|
|
886
|
+
text: string | null;
|
|
885
887
|
updated_at_millis: number;
|
|
886
888
|
tsx_source: string;
|
|
887
889
|
theme_id: string | null;
|
|
@@ -918,8 +920,6 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
918
920
|
has_delivered: boolean;
|
|
919
921
|
started_rendering_at_millis: number;
|
|
920
922
|
rendered_at_millis: number;
|
|
921
|
-
html: string | null;
|
|
922
|
-
text: string | null;
|
|
923
923
|
is_transactional: boolean;
|
|
924
924
|
is_high_priority: boolean;
|
|
925
925
|
notification_category_id: string | null;
|
|
@@ -928,6 +928,8 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
928
928
|
id: string;
|
|
929
929
|
subject: string;
|
|
930
930
|
created_at_millis: number;
|
|
931
|
+
html: string | null;
|
|
932
|
+
text: string | null;
|
|
931
933
|
updated_at_millis: number;
|
|
932
934
|
tsx_source: string;
|
|
933
935
|
theme_id: string | null;
|
|
@@ -964,8 +966,6 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
964
966
|
has_delivered: boolean;
|
|
965
967
|
started_rendering_at_millis: number;
|
|
966
968
|
rendered_at_millis: number;
|
|
967
|
-
html: string | null;
|
|
968
|
-
text: string | null;
|
|
969
969
|
is_transactional: boolean;
|
|
970
970
|
is_high_priority: boolean;
|
|
971
971
|
notification_category_id: string | null;
|
|
@@ -974,6 +974,8 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
974
974
|
id: string;
|
|
975
975
|
subject: string;
|
|
976
976
|
created_at_millis: number;
|
|
977
|
+
html: string | null;
|
|
978
|
+
text: string | null;
|
|
977
979
|
updated_at_millis: number;
|
|
978
980
|
tsx_source: string;
|
|
979
981
|
theme_id: string | null;
|
|
@@ -1010,8 +1012,6 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
1010
1012
|
has_delivered: boolean;
|
|
1011
1013
|
started_rendering_at_millis: number;
|
|
1012
1014
|
rendered_at_millis: number;
|
|
1013
|
-
html: string | null;
|
|
1014
|
-
text: string | null;
|
|
1015
1015
|
is_transactional: boolean;
|
|
1016
1016
|
is_high_priority: boolean;
|
|
1017
1017
|
notification_category_id: string | null;
|
|
@@ -1021,6 +1021,8 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
1021
1021
|
id: string;
|
|
1022
1022
|
subject: string;
|
|
1023
1023
|
created_at_millis: number;
|
|
1024
|
+
html: string | null;
|
|
1025
|
+
text: string | null;
|
|
1024
1026
|
updated_at_millis: number;
|
|
1025
1027
|
tsx_source: string;
|
|
1026
1028
|
theme_id: string | null;
|
|
@@ -1057,8 +1059,6 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
1057
1059
|
has_delivered: boolean;
|
|
1058
1060
|
started_rendering_at_millis: number;
|
|
1059
1061
|
rendered_at_millis: number;
|
|
1060
|
-
html: string | null;
|
|
1061
|
-
text: string | null;
|
|
1062
1062
|
is_transactional: boolean;
|
|
1063
1063
|
is_high_priority: boolean;
|
|
1064
1064
|
notification_category_id: string | null;
|
|
@@ -1067,10 +1067,10 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
1067
1067
|
server_error: string;
|
|
1068
1068
|
} | {
|
|
1069
1069
|
subject?: string | undefined;
|
|
1070
|
-
started_rendering_at_millis?: number | undefined;
|
|
1071
|
-
rendered_at_millis?: number | undefined;
|
|
1072
1070
|
html?: string | null | undefined;
|
|
1073
1071
|
text?: string | null | undefined;
|
|
1072
|
+
started_rendering_at_millis?: number | undefined;
|
|
1073
|
+
rendered_at_millis?: number | undefined;
|
|
1074
1074
|
is_transactional?: boolean | undefined;
|
|
1075
1075
|
is_high_priority?: boolean | undefined;
|
|
1076
1076
|
notification_category_id?: string | null | undefined;
|
|
@@ -1120,6 +1120,8 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
1120
1120
|
id: string;
|
|
1121
1121
|
subject: string;
|
|
1122
1122
|
created_at_millis: number;
|
|
1123
|
+
html: string | null;
|
|
1124
|
+
text: string | null;
|
|
1123
1125
|
updated_at_millis: number;
|
|
1124
1126
|
tsx_source: string;
|
|
1125
1127
|
theme_id: string | null;
|
|
@@ -1156,8 +1158,6 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
1156
1158
|
has_delivered: boolean;
|
|
1157
1159
|
started_rendering_at_millis: number;
|
|
1158
1160
|
rendered_at_millis: number;
|
|
1159
|
-
html: string | null;
|
|
1160
|
-
text: string | null;
|
|
1161
1161
|
is_transactional: boolean;
|
|
1162
1162
|
is_high_priority: boolean;
|
|
1163
1163
|
notification_category_id: string | null;
|
|
@@ -1168,6 +1168,8 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
1168
1168
|
id: string;
|
|
1169
1169
|
subject: string;
|
|
1170
1170
|
created_at_millis: number;
|
|
1171
|
+
html: string | null;
|
|
1172
|
+
text: string | null;
|
|
1171
1173
|
updated_at_millis: number;
|
|
1172
1174
|
tsx_source: string;
|
|
1173
1175
|
theme_id: string | null;
|
|
@@ -1204,8 +1206,6 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
1204
1206
|
has_delivered: boolean;
|
|
1205
1207
|
started_rendering_at_millis: number;
|
|
1206
1208
|
rendered_at_millis: number;
|
|
1207
|
-
html: string | null;
|
|
1208
|
-
text: string | null;
|
|
1209
1209
|
is_transactional: boolean;
|
|
1210
1210
|
is_high_priority: boolean;
|
|
1211
1211
|
notification_category_id: string | null;
|
|
@@ -1216,6 +1216,8 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
1216
1216
|
id: string;
|
|
1217
1217
|
subject: string;
|
|
1218
1218
|
created_at_millis: number;
|
|
1219
|
+
html: string | null;
|
|
1220
|
+
text: string | null;
|
|
1219
1221
|
updated_at_millis: number;
|
|
1220
1222
|
tsx_source: string;
|
|
1221
1223
|
theme_id: string | null;
|
|
@@ -1252,8 +1254,6 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
1252
1254
|
has_delivered: boolean;
|
|
1253
1255
|
started_rendering_at_millis: number;
|
|
1254
1256
|
rendered_at_millis: number;
|
|
1255
|
-
html: string | null;
|
|
1256
|
-
text: string | null;
|
|
1257
1257
|
is_transactional: boolean;
|
|
1258
1258
|
is_high_priority: boolean;
|
|
1259
1259
|
notification_category_id: string | null;
|
|
@@ -1265,6 +1265,8 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
1265
1265
|
id: string;
|
|
1266
1266
|
subject: string;
|
|
1267
1267
|
created_at_millis: number;
|
|
1268
|
+
html: string | null;
|
|
1269
|
+
text: string | null;
|
|
1268
1270
|
updated_at_millis: number;
|
|
1269
1271
|
tsx_source: string;
|
|
1270
1272
|
theme_id: string | null;
|
|
@@ -1301,8 +1303,6 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
1301
1303
|
has_delivered: boolean;
|
|
1302
1304
|
started_rendering_at_millis: number;
|
|
1303
1305
|
rendered_at_millis: number;
|
|
1304
|
-
html: string | null;
|
|
1305
|
-
text: string | null;
|
|
1306
1306
|
is_transactional: boolean;
|
|
1307
1307
|
is_high_priority: boolean;
|
|
1308
1308
|
notification_category_id: string | null;
|
|
@@ -1315,6 +1315,8 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
1315
1315
|
id: string;
|
|
1316
1316
|
subject: string;
|
|
1317
1317
|
created_at_millis: number;
|
|
1318
|
+
html: string | null;
|
|
1319
|
+
text: string | null;
|
|
1318
1320
|
updated_at_millis: number;
|
|
1319
1321
|
tsx_source: string;
|
|
1320
1322
|
theme_id: string | null;
|
|
@@ -1351,8 +1353,6 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
1351
1353
|
has_delivered: boolean;
|
|
1352
1354
|
started_rendering_at_millis: number;
|
|
1353
1355
|
rendered_at_millis: number;
|
|
1354
|
-
html: string | null;
|
|
1355
|
-
text: string | null;
|
|
1356
1356
|
is_transactional: boolean;
|
|
1357
1357
|
is_high_priority: boolean;
|
|
1358
1358
|
notification_category_id: string | null;
|
|
@@ -1365,6 +1365,8 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
1365
1365
|
id: string;
|
|
1366
1366
|
subject: string;
|
|
1367
1367
|
created_at_millis: number;
|
|
1368
|
+
html: string | null;
|
|
1369
|
+
text: string | null;
|
|
1368
1370
|
updated_at_millis: number;
|
|
1369
1371
|
tsx_source: string;
|
|
1370
1372
|
theme_id: string | null;
|
|
@@ -1401,8 +1403,6 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
1401
1403
|
has_delivered: boolean;
|
|
1402
1404
|
started_rendering_at_millis: number;
|
|
1403
1405
|
rendered_at_millis: number;
|
|
1404
|
-
html: string | null;
|
|
1405
|
-
text: string | null;
|
|
1406
1406
|
is_transactional: boolean;
|
|
1407
1407
|
is_high_priority: boolean;
|
|
1408
1408
|
notification_category_id: string | null;
|
|
@@ -1461,4 +1461,4 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
|
|
|
1461
1461
|
type EmailOutboxCrud = CrudTypeOf<typeof emailOutboxCrud>;
|
|
1462
1462
|
//#endregion
|
|
1463
1463
|
export { emailOutboxUpdateSchema as i, emailOutboxCrud as n, emailOutboxReadSchema as r, EmailOutboxCrud as t };
|
|
1464
|
-
//# sourceMappingURL=email-outbox-
|
|
1464
|
+
//# sourceMappingURL=email-outbox-B1wmVPRG.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-outbox-
|
|
1
|
+
{"version":3,"file":"email-outbox-B1wmVPRG.d.ts","names":[],"sources":["../src/interface/crud/email-outbox.ts"],"mappings":";;;cAiNa,qBAAA,gBAAqB,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAmBrB,uBAAA,gBAAuB,YAAA;;;;;;;;;;;;;;aASxB,MAAA;;;;;;;;;;;;;;;cAEC,eAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsBD,eAAA,GAAkB,UAAU,QAAQ,eAAA"}
|
|
@@ -4,7 +4,7 @@ import { typedEntries } from "../../../utils/objects.js";
|
|
|
4
4
|
import { deindent } from "../../../utils/strings.js";
|
|
5
5
|
import { remindersPrompt } from "../reminders.js";
|
|
6
6
|
//#region package.json
|
|
7
|
-
var version = "1.0.
|
|
7
|
+
var version = "1.0.64";
|
|
8
8
|
//#endregion
|
|
9
9
|
//#region \0@oxc-project+runtime@0.137.0/helpers/esm/taggedTemplateLiteral.js
|
|
10
10
|
function _taggedTemplateLiteral(e, t) {
|
|
@@ -47,13 +47,25 @@ const deploymentsSkillSection = deindent`
|
|
|
47
47
|
|
|
48
48
|
Note also that the config file usually sits inside \`rootDirectory\`, which means it is uploaded with your source and compiled by the remote build like any other file. If the deployed app doesn't depend on the Hexclave SDK, add \`hexclave.config.ts\` to \`.vercelignore\`: the CLI reads the config from disk before packaging, so the build itself never needs it, and excluding it keeps an SDK import in the config from breaking a build that is otherwise unrelated to Hexclave.
|
|
49
49
|
|
|
50
|
-
##
|
|
50
|
+
## Agent workflow (do this — do not drive the dashboard UI)
|
|
51
|
+
|
|
52
|
+
AI agents must deploy and manage Deployments through the CLI and \`hexclave.config.ts\`, not by clicking around \`app.hexclave.com\` in a browser. The dashboard is a human fallback only.
|
|
51
53
|
|
|
52
|
-
|
|
54
|
+
Preferred sequence:
|
|
53
55
|
|
|
54
|
-
|
|
56
|
+
1. **Read this skill** (\`https://skill.hexclave.com/deployments\` or the Deployments addendum you already have) and ensure \`deployments-alpha\` is enabled in config as above.
|
|
57
|
+
2. **Authenticate for cloud deploys** (pick the first that works):
|
|
58
|
+
- If \`HEXCLAVE_SECRET_SERVER_KEY\` (or \`STACK_SECRET_SERVER_KEY\`) **and** \`HEXCLAVE_PROJECT_ID\` (or \`STACK_PROJECT_ID\`) are already in the environment, use them. No login step.
|
|
59
|
+
- Else if \`npx @hexclave/cli@latest whoami\` succeeds, you already have a CLI login session — proceed.
|
|
60
|
+
- Else ask the user to run \`npx @hexclave/cli@latest login\` (or run it for them). That command opens a **one-time browser login page for the human**. Do **not** use the browser yourself to open the Deployments dashboard, click Deploy, or configure the service in the UI. After login returns successfully, continue immediately with the CLI.
|
|
61
|
+
3. **Write/update \`hexclave.config.ts\`**, then deploy with \`npx @hexclave/cli@latest deploy <service> ...\` (see below). Pass every \`type: "secret"\` env via \`--secret\`.
|
|
62
|
+
4. **Poll status/logs with \`hexclave exec\`** (snippets below). Do not tell the user to "watch the dashboard" as the primary path.
|
|
55
63
|
|
|
56
|
-
|
|
64
|
+
\`deploy\` auth: \`HEXCLAVE_SECRET_SERVER_KEY\` if set, otherwise the \`hexclave login\` session. \`exec --cloud-project-id\` needs the login session (not the secret server key alone).
|
|
65
|
+
|
|
66
|
+
## Domains
|
|
67
|
+
|
|
68
|
+
Every Vercel service gets a Vercel domain autoprovisioned. Prefer the CLI to attach a custom domain:
|
|
57
69
|
|
|
58
70
|
\`\`\`sh title="Terminal"
|
|
59
71
|
npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\
|
|
@@ -62,6 +74,8 @@ const deploymentsSkillSection = deindent`
|
|
|
62
74
|
return p.getDeploymentServiceDomain('api', 'app.example.com');"
|
|
63
75
|
\`\`\`
|
|
64
76
|
|
|
77
|
+
Humans can also add domains in the dashboard at \`https://app.hexclave.com/projects/<project-id>/deployments\` (service → Domains). Agents should not do that in a browser.
|
|
78
|
+
|
|
65
79
|
## Deploying
|
|
66
80
|
|
|
67
81
|
Before deploying, run the service's \`installCommand\` and \`buildCommand\` locally and confirm they succeed. The remote build runs the same commands, but \`deploy\` exits before the build finishes, so a broken build does not fail the command — it surfaces only when you check the run afterwards.
|
|
@@ -72,7 +86,7 @@ const deploymentsSkillSection = deindent`
|
|
|
72
86
|
npx @hexclave/cli@latest deploy web --secret db_connection="$DATABASE_URL"
|
|
73
87
|
\`\`\`
|
|
74
88
|
|
|
75
|
-
The CLI packages the service's root directory (respecting \`.gitignore\` and \`.vercelignore\`, and always excluding \`node_modules\` and \`.git\`), uploads it, and starts a remote build. Without a config file, the configuration stored in Hexclave governs the deploy, with the root directory resolved against the current directory. It always deploys to production, never prompts, and exits as soon as the build is queued, printing the run id.
|
|
89
|
+
The CLI packages the service's root directory (respecting \`.gitignore\` and \`.vercelignore\`, and always excluding \`node_modules\` and \`.git\`), uploads it, and starts a remote build. Without a config file, the configuration stored in Hexclave governs the deploy, with the root directory resolved against the current directory. It always deploys to production, never prompts, and exits as soon as the build is queued, printing the run id. Check that run with \`exec\` (next section), not by opening the dashboard.
|
|
76
90
|
|
|
77
91
|
Every secret defined in the service's \`env\` must be passed via \`--secret\` on every deploy — a missing (or misspelled) one fails the deploy before anything is uploaded.
|
|
78
92
|
|
|
@@ -114,13 +128,15 @@ const deploymentsSkillSection = deindent`
|
|
|
114
128
|
|
|
115
129
|
## Deleting a service
|
|
116
130
|
|
|
117
|
-
|
|
131
|
+
Prefer the CLI:
|
|
118
132
|
|
|
119
133
|
\`\`\`sh title="Terminal"
|
|
120
134
|
npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\
|
|
121
135
|
"const p = await hexclaveServerApp.getProject(); \\
|
|
122
136
|
await p.deleteDeploymentService('api');"
|
|
123
137
|
\`\`\`
|
|
138
|
+
|
|
139
|
+
Humans can also delete a service in the dashboard; agents should not.
|
|
124
140
|
`;
|
|
125
141
|
//#endregion
|
|
126
142
|
export { deploymentsSkillSection };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployments-skill.js","names":[],"sources":["../../../../../src/ai/unified-prompts/skill-site-prompt-parts/deployments-skill.ts"],"sourcesContent":["import { deindent } from \"../../../utils/strings\";\n\n// The Deployments-specific addendum served at https://skill.hexclave.com/deployments.\n// It is appended verbatim after the full base skill, so this section assumes the\n// reader already has the general Hexclave skill (CLI auth, config format, SDKs) in\n// context and only teaches what is specific to the Deployments app.\nexport const deploymentsSkillSection = deindent`\n # Hexclave Deployments\n\n The Deployments app makes deploying a service very easy. You select a type of service to deploy and provide your code, build instructions, run instructions, environment variables, and the code framework. You can set up multiple deployments per Hexclave project — for example, a backend service and a frontend service. Once a service is deployed, it is publicly accessible.\n\n For this iteration of the Deployments app, only the \\`vercel\\` service type is available. It can be used to set up serverless deployments.\n\n To use Hexclave Deployments, you must do a few things. First, the Deployments app must be enabled, by adding \\`deployments-alpha\\` under \\`apps.installed\\`. Second, you must edit your \\`hexclave.config.ts\\` file to add the relevant configuration, as specified below. Both keys are \\`deployments-alpha\\`, not \\`deployments\\` — the app is in alpha and its id says so. Because of the hyphen, quote it.\n\n ## Config\n\n \\`\\`\\`ts title=\"hexclave.config.ts\"\n import type { HexclaveConfig } from \"@hexclave/js/config\"; // replace \\`js\\` with the correct framework SDK package\n\n export const config: HexclaveConfig = {\n apps: {\n installed: {\n authentication: { enabled: true },\n \"deployments-alpha\": { enabled: true },\n },\n },\n \"deployments-alpha\": {\n services: {\n web: {\n type: \"vercel\",\n rootDirectory: \"./\",\n framework: \"nextjs\",\n installCommand: \"pnpm install\",\n buildCommand: \"pnpm build\",\n outputDirectory: \".next\",\n env: {\n \"MY_ENV_VAR\": { value: \"true\" },\n \"DATABASE_CONNECTION_STRING\": { type: \"secret\", key: \"db_connection\" },\n \"NEXT_PUBLIC_HEXCLAVE_PROJECT_ID\": { type: \"connection\", value: \"hexclave.projectId\" },\n },\n },\n },\n },\n };\n \\`\\`\\`\n\n Here, \\`web\\` is the name of your service. \\`type\\` refers to the type of service you want to set up; for now, as mentioned earlier, only \\`vercel\\` is supported. \\`rootDirectory\\` is the directory in which the install and build commands are run, and where the code for your service is found. \\`installCommand\\` is the command run to install your application's dependencies, and \\`buildCommand\\` is what is run to build the necessary packages and files. \\`framework\\` is the framework used by your service; from it and \\`outputDirectory\\`, the run command is inferred.\n\n The \\`HexclaveConfig\\` annotation requires the SDK package it is imported from to be a dependency of the project. If it isn't, either install it or drop the annotation (the config is plain TypeScript — the CLI does not type-check it).\n\n Note also that the config file usually sits inside \\`rootDirectory\\`, which means it is uploaded with your source and compiled by the remote build like any other file. If the deployed app doesn't depend on the Hexclave SDK, add \\`hexclave.config.ts\\` to \\`.vercelignore\\`: the CLI reads the config from disk before packaging, so the build itself never needs it, and excluding it keeps an SDK import in the config from breaking a build that is otherwise unrelated to Hexclave.\n\n ## Domains\n\n Every Vercel service gets a Vercel domain autoprovisioned. If you want to attach a custom domain, there are two ways to do so.\n\n **Option 1 — the dashboard.** Visit \\`https://app.hexclave.com/projects/<project-id>/deployments\\`, click the service of choice, go to the Domains tab, add your domain, and then create the returned DNS records at your DNS provider.\n\n **Option 2 — the CLI.** Here is an example of adding \\`app.example.com\\` to the service \\`api\\` and receiving the DNS records that then need to be set with your DNS provider:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\\\\n \"const p = await hexclaveServerApp.getProject(); \\\\\n await p.addDeploymentServiceDomain('api', 'app.example.com'); \\\\\n return p.getDeploymentServiceDomain('api', 'app.example.com');\"\n \\`\\`\\`\n\n ## Deploying\n\n Before deploying, run the service's \\`installCommand\\` and \\`buildCommand\\` locally and confirm they succeed. The remote build runs the same commands, but \\`deploy\\` exits before the build finishes, so a broken build does not fail the command — it surfaces only when you check the run afterwards.\n\n From the directory containing your config file:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest deploy web --secret db_connection=\"$DATABASE_URL\"\n \\`\\`\\`\n\n The CLI packages the service's root directory (respecting \\`.gitignore\\` and \\`.vercelignore\\`, and always excluding \\`node_modules\\` and \\`.git\\`), uploads it, and starts a remote build. Without a config file, the configuration stored in Hexclave governs the deploy, with the root directory resolved against the current directory. It always deploys to production, never prompts, and exits as soon as the build is queued, printing the run id. Follow the build in the dashboard's Deployments tab.\n\n Every secret defined in the service's \\`env\\` must be passed via \\`--secret\\` on every deploy — a missing (or misspelled) one fails the deploy before anything is uploaded.\n\n Options: \\`--config <path>\\` (default: auto-discover \\`hexclave.config.ts\\` in the current directory, dashboard configuration otherwise), \\`--cloud-project-id <id>\\` (default: the \\`HEXCLAVE_PROJECT_ID\\` env var), and \\`--secret KEY=VALUE\\` (repeatable, see above).\n\n You can also deploy through GitHub Actions, like so:\n\n \\`\\`\\`yaml title=\".github/workflows/deploy.yaml\"\n - run: npm i -g @hexclave/cli\n - run: hexclave deploy web --secret db_connection=\"$DATABASE_URL\"\n env:\n HEXCLAVE_PROJECT_ID: \\${{ secrets.HEXCLAVE_PROJECT_ID }}\n HEXCLAVE_SECRET_SERVER_KEY: \\${{ secrets.HEXCLAVE_SECRET_SERVER_KEY }}\n DATABASE_URL: \\${{ secrets.DATABASE_URL }}\n \\`\\`\\`\n\n ## Checking status and debugging failures\n\n Because \\`deploy\\` returns as soon as the build is queued, a successful exit does not mean the deploy succeeded. Check the service to find out:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\\\\n \"const p = await hexclaveServerApp.getProject(); \\\\\n const svc = (await p.listDeploymentServices()).find(s => s.id === 'web'); \\\\\n return { status: svc.status, url: svc.url, run: svc.latest_run };\"\n \\`\\`\\`\n\n A service's \\`status\\` is one of \\`not_deployed\\`, \\`queued\\`, \\`building\\`, \\`deployed\\`, \\`failed\\`, or \\`canceled\\`; a run's is \\`queued\\`, \\`building\\`, \\`ready\\`, \\`error\\`, or \\`canceled\\`. Poll until the run leaves \\`queued\\`/\\`building\\`.\n\n A failed run's \\`error\\` field is only a one-line summary (for example \\`Command \"npm run build\" exited with 1\\`). Do not try to guess the cause from it, and do not reproduce the build locally to find out — fetch the actual build output by run id:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\\\\n \"const p = await hexclaveServerApp.getProject(); \\\\\n return p.getDeploymentRunLogs('<run-id>');\"\n \\`\\`\\`\n\n \\`deploy\\` prints the run id it started. If you don't have one, \\`listDeploymentRuns('web', { limit: 5 })\\` returns the most recent runs, newest first — call it through \\`exec\\` like the snippets above.\n\n ## Deleting a service\n\n If you want to delete a deployed service, you can do so through the dashboard, or through the CLI like so:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\\\\n \"const p = await hexclaveServerApp.getProject(); \\\\\n await p.deleteDeploymentService('api');\"\n \\`\\`\\`\n`;\n"],"mappings":";;AAMA,MAAa,0BAA0B,QAAQ"}
|
|
1
|
+
{"version":3,"file":"deployments-skill.js","names":[],"sources":["../../../../../src/ai/unified-prompts/skill-site-prompt-parts/deployments-skill.ts"],"sourcesContent":["import { deindent } from \"../../../utils/strings\";\n\n// The Deployments-specific addendum served at https://skill.hexclave.com/deployments.\n// It is appended verbatim after the full base skill, so this section assumes the\n// reader already has the general Hexclave skill (CLI auth, config format, SDKs) in\n// context and only teaches what is specific to the Deployments app.\nexport const deploymentsSkillSection = deindent`\n # Hexclave Deployments\n\n The Deployments app makes deploying a service very easy. You select a type of service to deploy and provide your code, build instructions, run instructions, environment variables, and the code framework. You can set up multiple deployments per Hexclave project — for example, a backend service and a frontend service. Once a service is deployed, it is publicly accessible.\n\n For this iteration of the Deployments app, only the \\`vercel\\` service type is available. It can be used to set up serverless deployments.\n\n To use Hexclave Deployments, you must do a few things. First, the Deployments app must be enabled, by adding \\`deployments-alpha\\` under \\`apps.installed\\`. Second, you must edit your \\`hexclave.config.ts\\` file to add the relevant configuration, as specified below. Both keys are \\`deployments-alpha\\`, not \\`deployments\\` — the app is in alpha and its id says so. Because of the hyphen, quote it.\n\n ## Config\n\n \\`\\`\\`ts title=\"hexclave.config.ts\"\n import type { HexclaveConfig } from \"@hexclave/js/config\"; // replace \\`js\\` with the correct framework SDK package\n\n export const config: HexclaveConfig = {\n apps: {\n installed: {\n authentication: { enabled: true },\n \"deployments-alpha\": { enabled: true },\n },\n },\n \"deployments-alpha\": {\n services: {\n web: {\n type: \"vercel\",\n rootDirectory: \"./\",\n framework: \"nextjs\",\n installCommand: \"pnpm install\",\n buildCommand: \"pnpm build\",\n outputDirectory: \".next\",\n env: {\n \"MY_ENV_VAR\": { value: \"true\" },\n \"DATABASE_CONNECTION_STRING\": { type: \"secret\", key: \"db_connection\" },\n \"NEXT_PUBLIC_HEXCLAVE_PROJECT_ID\": { type: \"connection\", value: \"hexclave.projectId\" },\n },\n },\n },\n },\n };\n \\`\\`\\`\n\n Here, \\`web\\` is the name of your service. \\`type\\` refers to the type of service you want to set up; for now, as mentioned earlier, only \\`vercel\\` is supported. \\`rootDirectory\\` is the directory in which the install and build commands are run, and where the code for your service is found. \\`installCommand\\` is the command run to install your application's dependencies, and \\`buildCommand\\` is what is run to build the necessary packages and files. \\`framework\\` is the framework used by your service; from it and \\`outputDirectory\\`, the run command is inferred.\n\n The \\`HexclaveConfig\\` annotation requires the SDK package it is imported from to be a dependency of the project. If it isn't, either install it or drop the annotation (the config is plain TypeScript — the CLI does not type-check it).\n\n Note also that the config file usually sits inside \\`rootDirectory\\`, which means it is uploaded with your source and compiled by the remote build like any other file. If the deployed app doesn't depend on the Hexclave SDK, add \\`hexclave.config.ts\\` to \\`.vercelignore\\`: the CLI reads the config from disk before packaging, so the build itself never needs it, and excluding it keeps an SDK import in the config from breaking a build that is otherwise unrelated to Hexclave.\n\n ## Agent workflow (do this — do not drive the dashboard UI)\n\n AI agents must deploy and manage Deployments through the CLI and \\`hexclave.config.ts\\`, not by clicking around \\`app.hexclave.com\\` in a browser. The dashboard is a human fallback only.\n\n Preferred sequence:\n\n 1. **Read this skill** (\\`https://skill.hexclave.com/deployments\\` or the Deployments addendum you already have) and ensure \\`deployments-alpha\\` is enabled in config as above.\n 2. **Authenticate for cloud deploys** (pick the first that works):\n - If \\`HEXCLAVE_SECRET_SERVER_KEY\\` (or \\`STACK_SECRET_SERVER_KEY\\`) **and** \\`HEXCLAVE_PROJECT_ID\\` (or \\`STACK_PROJECT_ID\\`) are already in the environment, use them. No login step.\n - Else if \\`npx @hexclave/cli@latest whoami\\` succeeds, you already have a CLI login session — proceed.\n - Else ask the user to run \\`npx @hexclave/cli@latest login\\` (or run it for them). That command opens a **one-time browser login page for the human**. Do **not** use the browser yourself to open the Deployments dashboard, click Deploy, or configure the service in the UI. After login returns successfully, continue immediately with the CLI.\n 3. **Write/update \\`hexclave.config.ts\\`**, then deploy with \\`npx @hexclave/cli@latest deploy <service> ...\\` (see below). Pass every \\`type: \"secret\"\\` env via \\`--secret\\`.\n 4. **Poll status/logs with \\`hexclave exec\\`** (snippets below). Do not tell the user to \"watch the dashboard\" as the primary path.\n\n \\`deploy\\` auth: \\`HEXCLAVE_SECRET_SERVER_KEY\\` if set, otherwise the \\`hexclave login\\` session. \\`exec --cloud-project-id\\` needs the login session (not the secret server key alone).\n\n ## Domains\n\n Every Vercel service gets a Vercel domain autoprovisioned. Prefer the CLI to attach a custom domain:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\\\\n \"const p = await hexclaveServerApp.getProject(); \\\\\n await p.addDeploymentServiceDomain('api', 'app.example.com'); \\\\\n return p.getDeploymentServiceDomain('api', 'app.example.com');\"\n \\`\\`\\`\n\n Humans can also add domains in the dashboard at \\`https://app.hexclave.com/projects/<project-id>/deployments\\` (service → Domains). Agents should not do that in a browser.\n\n ## Deploying\n\n Before deploying, run the service's \\`installCommand\\` and \\`buildCommand\\` locally and confirm they succeed. The remote build runs the same commands, but \\`deploy\\` exits before the build finishes, so a broken build does not fail the command — it surfaces only when you check the run afterwards.\n\n From the directory containing your config file:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest deploy web --secret db_connection=\"$DATABASE_URL\"\n \\`\\`\\`\n\n The CLI packages the service's root directory (respecting \\`.gitignore\\` and \\`.vercelignore\\`, and always excluding \\`node_modules\\` and \\`.git\\`), uploads it, and starts a remote build. Without a config file, the configuration stored in Hexclave governs the deploy, with the root directory resolved against the current directory. It always deploys to production, never prompts, and exits as soon as the build is queued, printing the run id. Check that run with \\`exec\\` (next section), not by opening the dashboard.\n\n Every secret defined in the service's \\`env\\` must be passed via \\`--secret\\` on every deploy — a missing (or misspelled) one fails the deploy before anything is uploaded.\n\n Options: \\`--config <path>\\` (default: auto-discover \\`hexclave.config.ts\\` in the current directory, dashboard configuration otherwise), \\`--cloud-project-id <id>\\` (default: the \\`HEXCLAVE_PROJECT_ID\\` env var), and \\`--secret KEY=VALUE\\` (repeatable, see above).\n\n You can also deploy through GitHub Actions, like so:\n\n \\`\\`\\`yaml title=\".github/workflows/deploy.yaml\"\n - run: npm i -g @hexclave/cli\n - run: hexclave deploy web --secret db_connection=\"$DATABASE_URL\"\n env:\n HEXCLAVE_PROJECT_ID: \\${{ secrets.HEXCLAVE_PROJECT_ID }}\n HEXCLAVE_SECRET_SERVER_KEY: \\${{ secrets.HEXCLAVE_SECRET_SERVER_KEY }}\n DATABASE_URL: \\${{ secrets.DATABASE_URL }}\n \\`\\`\\`\n\n ## Checking status and debugging failures\n\n Because \\`deploy\\` returns as soon as the build is queued, a successful exit does not mean the deploy succeeded. Check the service to find out:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\\\\n \"const p = await hexclaveServerApp.getProject(); \\\\\n const svc = (await p.listDeploymentServices()).find(s => s.id === 'web'); \\\\\n return { status: svc.status, url: svc.url, run: svc.latest_run };\"\n \\`\\`\\`\n\n A service's \\`status\\` is one of \\`not_deployed\\`, \\`queued\\`, \\`building\\`, \\`deployed\\`, \\`failed\\`, or \\`canceled\\`; a run's is \\`queued\\`, \\`building\\`, \\`ready\\`, \\`error\\`, or \\`canceled\\`. Poll until the run leaves \\`queued\\`/\\`building\\`.\n\n A failed run's \\`error\\` field is only a one-line summary (for example \\`Command \"npm run build\" exited with 1\\`). Do not try to guess the cause from it, and do not reproduce the build locally to find out — fetch the actual build output by run id:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\\\\n \"const p = await hexclaveServerApp.getProject(); \\\\\n return p.getDeploymentRunLogs('<run-id>');\"\n \\`\\`\\`\n\n \\`deploy\\` prints the run id it started. If you don't have one, \\`listDeploymentRuns('web', { limit: 5 })\\` returns the most recent runs, newest first — call it through \\`exec\\` like the snippets above.\n\n ## Deleting a service\n\n Prefer the CLI:\n\n \\`\\`\\`sh title=\"Terminal\"\n npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\\\\n \"const p = await hexclaveServerApp.getProject(); \\\\\n await p.deleteDeploymentService('api');\"\n \\`\\`\\`\n\n Humans can also delete a service in the dashboard; agents should not.\n`;\n"],"mappings":";;AAMA,MAAa,0BAA0B,QAAQ"}
|
|
@@ -162,6 +162,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
162
162
|
id: string;
|
|
163
163
|
subject: string;
|
|
164
164
|
created_at_millis: number;
|
|
165
|
+
html: string | null;
|
|
166
|
+
text: string | null;
|
|
165
167
|
updated_at_millis: number;
|
|
166
168
|
tsx_source: string;
|
|
167
169
|
theme_id: string | null;
|
|
@@ -198,8 +200,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
198
200
|
has_delivered: boolean;
|
|
199
201
|
started_rendering_at_millis: number;
|
|
200
202
|
rendered_at_millis: number;
|
|
201
|
-
html: string | null;
|
|
202
|
-
text: string | null;
|
|
203
203
|
is_transactional: boolean;
|
|
204
204
|
is_high_priority: boolean;
|
|
205
205
|
notification_category_id: string | null;
|
|
@@ -208,6 +208,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
208
208
|
id: string;
|
|
209
209
|
subject: string;
|
|
210
210
|
created_at_millis: number;
|
|
211
|
+
html: string | null;
|
|
212
|
+
text: string | null;
|
|
211
213
|
updated_at_millis: number;
|
|
212
214
|
tsx_source: string;
|
|
213
215
|
theme_id: string | null;
|
|
@@ -244,8 +246,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
244
246
|
has_delivered: boolean;
|
|
245
247
|
started_rendering_at_millis: number;
|
|
246
248
|
rendered_at_millis: number;
|
|
247
|
-
html: string | null;
|
|
248
|
-
text: string | null;
|
|
249
249
|
is_transactional: boolean;
|
|
250
250
|
is_high_priority: boolean;
|
|
251
251
|
notification_category_id: string | null;
|
|
@@ -254,6 +254,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
254
254
|
id: string;
|
|
255
255
|
subject: string;
|
|
256
256
|
created_at_millis: number;
|
|
257
|
+
html: string | null;
|
|
258
|
+
text: string | null;
|
|
257
259
|
updated_at_millis: number;
|
|
258
260
|
tsx_source: string;
|
|
259
261
|
theme_id: string | null;
|
|
@@ -290,8 +292,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
290
292
|
has_delivered: boolean;
|
|
291
293
|
started_rendering_at_millis: number;
|
|
292
294
|
rendered_at_millis: number;
|
|
293
|
-
html: string | null;
|
|
294
|
-
text: string | null;
|
|
295
295
|
is_transactional: boolean;
|
|
296
296
|
is_high_priority: boolean;
|
|
297
297
|
notification_category_id: string | null;
|
|
@@ -301,6 +301,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
301
301
|
id: string;
|
|
302
302
|
subject: string;
|
|
303
303
|
created_at_millis: number;
|
|
304
|
+
html: string | null;
|
|
305
|
+
text: string | null;
|
|
304
306
|
updated_at_millis: number;
|
|
305
307
|
tsx_source: string;
|
|
306
308
|
theme_id: string | null;
|
|
@@ -337,8 +339,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
337
339
|
has_delivered: boolean;
|
|
338
340
|
started_rendering_at_millis: number;
|
|
339
341
|
rendered_at_millis: number;
|
|
340
|
-
html: string | null;
|
|
341
|
-
text: string | null;
|
|
342
342
|
is_transactional: boolean;
|
|
343
343
|
is_high_priority: boolean;
|
|
344
344
|
notification_category_id: string | null;
|
|
@@ -347,10 +347,10 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
347
347
|
server_error: string;
|
|
348
348
|
} | {
|
|
349
349
|
subject?: string | undefined;
|
|
350
|
-
started_rendering_at_millis?: number | undefined;
|
|
351
|
-
rendered_at_millis?: number | undefined;
|
|
352
350
|
html?: string | null | undefined;
|
|
353
351
|
text?: string | null | undefined;
|
|
352
|
+
started_rendering_at_millis?: number | undefined;
|
|
353
|
+
rendered_at_millis?: number | undefined;
|
|
354
354
|
is_transactional?: boolean | undefined;
|
|
355
355
|
is_high_priority?: boolean | undefined;
|
|
356
356
|
notification_category_id?: string | null | undefined;
|
|
@@ -400,6 +400,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
400
400
|
id: string;
|
|
401
401
|
subject: string;
|
|
402
402
|
created_at_millis: number;
|
|
403
|
+
html: string | null;
|
|
404
|
+
text: string | null;
|
|
403
405
|
updated_at_millis: number;
|
|
404
406
|
tsx_source: string;
|
|
405
407
|
theme_id: string | null;
|
|
@@ -436,8 +438,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
436
438
|
has_delivered: boolean;
|
|
437
439
|
started_rendering_at_millis: number;
|
|
438
440
|
rendered_at_millis: number;
|
|
439
|
-
html: string | null;
|
|
440
|
-
text: string | null;
|
|
441
441
|
is_transactional: boolean;
|
|
442
442
|
is_high_priority: boolean;
|
|
443
443
|
notification_category_id: string | null;
|
|
@@ -448,6 +448,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
448
448
|
id: string;
|
|
449
449
|
subject: string;
|
|
450
450
|
created_at_millis: number;
|
|
451
|
+
html: string | null;
|
|
452
|
+
text: string | null;
|
|
451
453
|
updated_at_millis: number;
|
|
452
454
|
tsx_source: string;
|
|
453
455
|
theme_id: string | null;
|
|
@@ -484,8 +486,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
484
486
|
has_delivered: boolean;
|
|
485
487
|
started_rendering_at_millis: number;
|
|
486
488
|
rendered_at_millis: number;
|
|
487
|
-
html: string | null;
|
|
488
|
-
text: string | null;
|
|
489
489
|
is_transactional: boolean;
|
|
490
490
|
is_high_priority: boolean;
|
|
491
491
|
notification_category_id: string | null;
|
|
@@ -496,6 +496,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
496
496
|
id: string;
|
|
497
497
|
subject: string;
|
|
498
498
|
created_at_millis: number;
|
|
499
|
+
html: string | null;
|
|
500
|
+
text: string | null;
|
|
499
501
|
updated_at_millis: number;
|
|
500
502
|
tsx_source: string;
|
|
501
503
|
theme_id: string | null;
|
|
@@ -532,8 +534,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
532
534
|
has_delivered: boolean;
|
|
533
535
|
started_rendering_at_millis: number;
|
|
534
536
|
rendered_at_millis: number;
|
|
535
|
-
html: string | null;
|
|
536
|
-
text: string | null;
|
|
537
537
|
is_transactional: boolean;
|
|
538
538
|
is_high_priority: boolean;
|
|
539
539
|
notification_category_id: string | null;
|
|
@@ -545,6 +545,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
545
545
|
id: string;
|
|
546
546
|
subject: string;
|
|
547
547
|
created_at_millis: number;
|
|
548
|
+
html: string | null;
|
|
549
|
+
text: string | null;
|
|
548
550
|
updated_at_millis: number;
|
|
549
551
|
tsx_source: string;
|
|
550
552
|
theme_id: string | null;
|
|
@@ -581,8 +583,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
581
583
|
has_delivered: boolean;
|
|
582
584
|
started_rendering_at_millis: number;
|
|
583
585
|
rendered_at_millis: number;
|
|
584
|
-
html: string | null;
|
|
585
|
-
text: string | null;
|
|
586
586
|
is_transactional: boolean;
|
|
587
587
|
is_high_priority: boolean;
|
|
588
588
|
notification_category_id: string | null;
|
|
@@ -595,6 +595,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
595
595
|
id: string;
|
|
596
596
|
subject: string;
|
|
597
597
|
created_at_millis: number;
|
|
598
|
+
html: string | null;
|
|
599
|
+
text: string | null;
|
|
598
600
|
updated_at_millis: number;
|
|
599
601
|
tsx_source: string;
|
|
600
602
|
theme_id: string | null;
|
|
@@ -631,8 +633,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
631
633
|
has_delivered: boolean;
|
|
632
634
|
started_rendering_at_millis: number;
|
|
633
635
|
rendered_at_millis: number;
|
|
634
|
-
html: string | null;
|
|
635
|
-
text: string | null;
|
|
636
636
|
is_transactional: boolean;
|
|
637
637
|
is_high_priority: boolean;
|
|
638
638
|
notification_category_id: string | null;
|
|
@@ -645,6 +645,8 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
645
645
|
id: string;
|
|
646
646
|
subject: string;
|
|
647
647
|
created_at_millis: number;
|
|
648
|
+
html: string | null;
|
|
649
|
+
text: string | null;
|
|
648
650
|
updated_at_millis: number;
|
|
649
651
|
tsx_source: string;
|
|
650
652
|
theme_id: string | null;
|
|
@@ -681,8 +683,6 @@ declare const emailOutboxReadSchema: import("yup").MixedSchema<{
|
|
|
681
683
|
has_delivered: boolean;
|
|
682
684
|
started_rendering_at_millis: number;
|
|
683
685
|
rendered_at_millis: number;
|
|
684
|
-
html: string | null;
|
|
685
|
-
text: string | null;
|
|
686
686
|
is_transactional: boolean;
|
|
687
687
|
is_high_priority: boolean;
|
|
688
688
|
notification_category_id: string | null;
|
|
@@ -882,6 +882,8 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
882
882
|
id: string;
|
|
883
883
|
subject: string;
|
|
884
884
|
created_at_millis: number;
|
|
885
|
+
html: string | null;
|
|
886
|
+
text: string | null;
|
|
885
887
|
updated_at_millis: number;
|
|
886
888
|
tsx_source: string;
|
|
887
889
|
theme_id: string | null;
|
|
@@ -918,8 +920,6 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
918
920
|
has_delivered: boolean;
|
|
919
921
|
started_rendering_at_millis: number;
|
|
920
922
|
rendered_at_millis: number;
|
|
921
|
-
html: string | null;
|
|
922
|
-
text: string | null;
|
|
923
923
|
is_transactional: boolean;
|
|
924
924
|
is_high_priority: boolean;
|
|
925
925
|
notification_category_id: string | null;
|
|
@@ -928,6 +928,8 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
928
928
|
id: string;
|
|
929
929
|
subject: string;
|
|
930
930
|
created_at_millis: number;
|
|
931
|
+
html: string | null;
|
|
932
|
+
text: string | null;
|
|
931
933
|
updated_at_millis: number;
|
|
932
934
|
tsx_source: string;
|
|
933
935
|
theme_id: string | null;
|
|
@@ -964,8 +966,6 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
964
966
|
has_delivered: boolean;
|
|
965
967
|
started_rendering_at_millis: number;
|
|
966
968
|
rendered_at_millis: number;
|
|
967
|
-
html: string | null;
|
|
968
|
-
text: string | null;
|
|
969
969
|
is_transactional: boolean;
|
|
970
970
|
is_high_priority: boolean;
|
|
971
971
|
notification_category_id: string | null;
|
|
@@ -974,6 +974,8 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
974
974
|
id: string;
|
|
975
975
|
subject: string;
|
|
976
976
|
created_at_millis: number;
|
|
977
|
+
html: string | null;
|
|
978
|
+
text: string | null;
|
|
977
979
|
updated_at_millis: number;
|
|
978
980
|
tsx_source: string;
|
|
979
981
|
theme_id: string | null;
|
|
@@ -1010,8 +1012,6 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
1010
1012
|
has_delivered: boolean;
|
|
1011
1013
|
started_rendering_at_millis: number;
|
|
1012
1014
|
rendered_at_millis: number;
|
|
1013
|
-
html: string | null;
|
|
1014
|
-
text: string | null;
|
|
1015
1015
|
is_transactional: boolean;
|
|
1016
1016
|
is_high_priority: boolean;
|
|
1017
1017
|
notification_category_id: string | null;
|
|
@@ -1021,6 +1021,8 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
1021
1021
|
id: string;
|
|
1022
1022
|
subject: string;
|
|
1023
1023
|
created_at_millis: number;
|
|
1024
|
+
html: string | null;
|
|
1025
|
+
text: string | null;
|
|
1024
1026
|
updated_at_millis: number;
|
|
1025
1027
|
tsx_source: string;
|
|
1026
1028
|
theme_id: string | null;
|
|
@@ -1057,8 +1059,6 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
1057
1059
|
has_delivered: boolean;
|
|
1058
1060
|
started_rendering_at_millis: number;
|
|
1059
1061
|
rendered_at_millis: number;
|
|
1060
|
-
html: string | null;
|
|
1061
|
-
text: string | null;
|
|
1062
1062
|
is_transactional: boolean;
|
|
1063
1063
|
is_high_priority: boolean;
|
|
1064
1064
|
notification_category_id: string | null;
|
|
@@ -1067,10 +1067,10 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
1067
1067
|
server_error: string;
|
|
1068
1068
|
} | {
|
|
1069
1069
|
subject?: string | undefined;
|
|
1070
|
-
started_rendering_at_millis?: number | undefined;
|
|
1071
|
-
rendered_at_millis?: number | undefined;
|
|
1072
1070
|
html?: string | null | undefined;
|
|
1073
1071
|
text?: string | null | undefined;
|
|
1072
|
+
started_rendering_at_millis?: number | undefined;
|
|
1073
|
+
rendered_at_millis?: number | undefined;
|
|
1074
1074
|
is_transactional?: boolean | undefined;
|
|
1075
1075
|
is_high_priority?: boolean | undefined;
|
|
1076
1076
|
notification_category_id?: string | null | undefined;
|
|
@@ -1120,6 +1120,8 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
1120
1120
|
id: string;
|
|
1121
1121
|
subject: string;
|
|
1122
1122
|
created_at_millis: number;
|
|
1123
|
+
html: string | null;
|
|
1124
|
+
text: string | null;
|
|
1123
1125
|
updated_at_millis: number;
|
|
1124
1126
|
tsx_source: string;
|
|
1125
1127
|
theme_id: string | null;
|
|
@@ -1156,8 +1158,6 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
1156
1158
|
has_delivered: boolean;
|
|
1157
1159
|
started_rendering_at_millis: number;
|
|
1158
1160
|
rendered_at_millis: number;
|
|
1159
|
-
html: string | null;
|
|
1160
|
-
text: string | null;
|
|
1161
1161
|
is_transactional: boolean;
|
|
1162
1162
|
is_high_priority: boolean;
|
|
1163
1163
|
notification_category_id: string | null;
|
|
@@ -1168,6 +1168,8 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
1168
1168
|
id: string;
|
|
1169
1169
|
subject: string;
|
|
1170
1170
|
created_at_millis: number;
|
|
1171
|
+
html: string | null;
|
|
1172
|
+
text: string | null;
|
|
1171
1173
|
updated_at_millis: number;
|
|
1172
1174
|
tsx_source: string;
|
|
1173
1175
|
theme_id: string | null;
|
|
@@ -1204,8 +1206,6 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
1204
1206
|
has_delivered: boolean;
|
|
1205
1207
|
started_rendering_at_millis: number;
|
|
1206
1208
|
rendered_at_millis: number;
|
|
1207
|
-
html: string | null;
|
|
1208
|
-
text: string | null;
|
|
1209
1209
|
is_transactional: boolean;
|
|
1210
1210
|
is_high_priority: boolean;
|
|
1211
1211
|
notification_category_id: string | null;
|
|
@@ -1216,6 +1216,8 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
1216
1216
|
id: string;
|
|
1217
1217
|
subject: string;
|
|
1218
1218
|
created_at_millis: number;
|
|
1219
|
+
html: string | null;
|
|
1220
|
+
text: string | null;
|
|
1219
1221
|
updated_at_millis: number;
|
|
1220
1222
|
tsx_source: string;
|
|
1221
1223
|
theme_id: string | null;
|
|
@@ -1252,8 +1254,6 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
1252
1254
|
has_delivered: boolean;
|
|
1253
1255
|
started_rendering_at_millis: number;
|
|
1254
1256
|
rendered_at_millis: number;
|
|
1255
|
-
html: string | null;
|
|
1256
|
-
text: string | null;
|
|
1257
1257
|
is_transactional: boolean;
|
|
1258
1258
|
is_high_priority: boolean;
|
|
1259
1259
|
notification_category_id: string | null;
|
|
@@ -1265,6 +1265,8 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
1265
1265
|
id: string;
|
|
1266
1266
|
subject: string;
|
|
1267
1267
|
created_at_millis: number;
|
|
1268
|
+
html: string | null;
|
|
1269
|
+
text: string | null;
|
|
1268
1270
|
updated_at_millis: number;
|
|
1269
1271
|
tsx_source: string;
|
|
1270
1272
|
theme_id: string | null;
|
|
@@ -1301,8 +1303,6 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
1301
1303
|
has_delivered: boolean;
|
|
1302
1304
|
started_rendering_at_millis: number;
|
|
1303
1305
|
rendered_at_millis: number;
|
|
1304
|
-
html: string | null;
|
|
1305
|
-
text: string | null;
|
|
1306
1306
|
is_transactional: boolean;
|
|
1307
1307
|
is_high_priority: boolean;
|
|
1308
1308
|
notification_category_id: string | null;
|
|
@@ -1315,6 +1315,8 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
1315
1315
|
id: string;
|
|
1316
1316
|
subject: string;
|
|
1317
1317
|
created_at_millis: number;
|
|
1318
|
+
html: string | null;
|
|
1319
|
+
text: string | null;
|
|
1318
1320
|
updated_at_millis: number;
|
|
1319
1321
|
tsx_source: string;
|
|
1320
1322
|
theme_id: string | null;
|
|
@@ -1351,8 +1353,6 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
1351
1353
|
has_delivered: boolean;
|
|
1352
1354
|
started_rendering_at_millis: number;
|
|
1353
1355
|
rendered_at_millis: number;
|
|
1354
|
-
html: string | null;
|
|
1355
|
-
text: string | null;
|
|
1356
1356
|
is_transactional: boolean;
|
|
1357
1357
|
is_high_priority: boolean;
|
|
1358
1358
|
notification_category_id: string | null;
|
|
@@ -1365,6 +1365,8 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
1365
1365
|
id: string;
|
|
1366
1366
|
subject: string;
|
|
1367
1367
|
created_at_millis: number;
|
|
1368
|
+
html: string | null;
|
|
1369
|
+
text: string | null;
|
|
1368
1370
|
updated_at_millis: number;
|
|
1369
1371
|
tsx_source: string;
|
|
1370
1372
|
theme_id: string | null;
|
|
@@ -1401,8 +1403,6 @@ declare const emailOutboxCrud: import("../../crud").CrudSchemaFromOptions<{
|
|
|
1401
1403
|
has_delivered: boolean;
|
|
1402
1404
|
started_rendering_at_millis: number;
|
|
1403
1405
|
rendered_at_millis: number;
|
|
1404
|
-
html: string | null;
|
|
1405
|
-
text: string | null;
|
|
1406
1406
|
is_transactional: boolean;
|
|
1407
1407
|
is_high_priority: boolean;
|
|
1408
1408
|
notification_category_id: string | null;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as KnownErrors, n as KnownError } from "./known-errors-Bm4a61wL.js";
|
|
2
2
|
import { n as HexclaveClientInterface } from "./client-interface-DvkciaL0.js";
|
|
3
3
|
import { t as HexclaveServerInterface } from "./server-interface-Ra_vIHP4.js";
|
|
4
|
-
import { l as HexclaveAdminInterface } from "./admin-interface-
|
|
4
|
+
import { l as HexclaveAdminInterface } from "./admin-interface-DaxVUjl4.js";
|
|
5
5
|
export { HexclaveAdminInterface, HexclaveClientInterface, HexclaveServerInterface, KnownError, KnownErrors };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { n as PlanUsageResponse } from "../plan-usage-BaDxcLZ1.js";
|
|
2
|
-
import { a as AdminDeploymentRunJson, c as ChatContent, d as InternalApiKeyCreateCrudResponse, i as AdminDeploymentEnvVarOptions, l as HexclaveAdminInterface, n as AdminDeploymentDomainJson, o as AdminDeploymentServiceBuildOptions, r as AdminDeploymentEnvVarJson, s as AdminDeploymentServiceJson, t as AdminAuthApplicationOptions, u as InternalApiKeyCreateCrudRequest } from "../admin-interface-
|
|
2
|
+
import { a as AdminDeploymentRunJson, c as ChatContent, d as InternalApiKeyCreateCrudResponse, i as AdminDeploymentEnvVarOptions, l as HexclaveAdminInterface, n as AdminDeploymentDomainJson, o as AdminDeploymentServiceBuildOptions, r as AdminDeploymentEnvVarJson, s as AdminDeploymentServiceJson, t as AdminAuthApplicationOptions, u as InternalApiKeyCreateCrudRequest } from "../admin-interface-DaxVUjl4.js";
|
|
3
3
|
export { AdminAuthApplicationOptions, AdminDeploymentDomainJson, AdminDeploymentEnvVarJson, AdminDeploymentEnvVarOptions, AdminDeploymentRunJson, AdminDeploymentServiceBuildOptions, AdminDeploymentServiceJson, ChatContent, HexclaveAdminInterface, InternalApiKeyCreateCrudRequest, InternalApiKeyCreateCrudResponse, type PlanUsageResponse };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as emailOutboxUpdateSchema, n as emailOutboxCrud, r as emailOutboxReadSchema, t as EmailOutboxCrud } from "../../email-outbox-
|
|
1
|
+
import { i as emailOutboxUpdateSchema, n as emailOutboxCrud, r as emailOutboxReadSchema, t as EmailOutboxCrud } from "../../email-outbox-B1wmVPRG.js";
|
|
2
2
|
export { EmailOutboxCrud, emailOutboxCrud, emailOutboxReadSchema, emailOutboxUpdateSchema };
|
package/package.json
CHANGED
|
@@ -51,13 +51,25 @@ export const deploymentsSkillSection = deindent`
|
|
|
51
51
|
|
|
52
52
|
Note also that the config file usually sits inside \`rootDirectory\`, which means it is uploaded with your source and compiled by the remote build like any other file. If the deployed app doesn't depend on the Hexclave SDK, add \`hexclave.config.ts\` to \`.vercelignore\`: the CLI reads the config from disk before packaging, so the build itself never needs it, and excluding it keeps an SDK import in the config from breaking a build that is otherwise unrelated to Hexclave.
|
|
53
53
|
|
|
54
|
-
##
|
|
54
|
+
## Agent workflow (do this — do not drive the dashboard UI)
|
|
55
|
+
|
|
56
|
+
AI agents must deploy and manage Deployments through the CLI and \`hexclave.config.ts\`, not by clicking around \`app.hexclave.com\` in a browser. The dashboard is a human fallback only.
|
|
55
57
|
|
|
56
|
-
|
|
58
|
+
Preferred sequence:
|
|
57
59
|
|
|
58
|
-
|
|
60
|
+
1. **Read this skill** (\`https://skill.hexclave.com/deployments\` or the Deployments addendum you already have) and ensure \`deployments-alpha\` is enabled in config as above.
|
|
61
|
+
2. **Authenticate for cloud deploys** (pick the first that works):
|
|
62
|
+
- If \`HEXCLAVE_SECRET_SERVER_KEY\` (or \`STACK_SECRET_SERVER_KEY\`) **and** \`HEXCLAVE_PROJECT_ID\` (or \`STACK_PROJECT_ID\`) are already in the environment, use them. No login step.
|
|
63
|
+
- Else if \`npx @hexclave/cli@latest whoami\` succeeds, you already have a CLI login session — proceed.
|
|
64
|
+
- Else ask the user to run \`npx @hexclave/cli@latest login\` (or run it for them). That command opens a **one-time browser login page for the human**. Do **not** use the browser yourself to open the Deployments dashboard, click Deploy, or configure the service in the UI. After login returns successfully, continue immediately with the CLI.
|
|
65
|
+
3. **Write/update \`hexclave.config.ts\`**, then deploy with \`npx @hexclave/cli@latest deploy <service> ...\` (see below). Pass every \`type: "secret"\` env via \`--secret\`.
|
|
66
|
+
4. **Poll status/logs with \`hexclave exec\`** (snippets below). Do not tell the user to "watch the dashboard" as the primary path.
|
|
59
67
|
|
|
60
|
-
|
|
68
|
+
\`deploy\` auth: \`HEXCLAVE_SECRET_SERVER_KEY\` if set, otherwise the \`hexclave login\` session. \`exec --cloud-project-id\` needs the login session (not the secret server key alone).
|
|
69
|
+
|
|
70
|
+
## Domains
|
|
71
|
+
|
|
72
|
+
Every Vercel service gets a Vercel domain autoprovisioned. Prefer the CLI to attach a custom domain:
|
|
61
73
|
|
|
62
74
|
\`\`\`sh title="Terminal"
|
|
63
75
|
npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\
|
|
@@ -66,6 +78,8 @@ export const deploymentsSkillSection = deindent`
|
|
|
66
78
|
return p.getDeploymentServiceDomain('api', 'app.example.com');"
|
|
67
79
|
\`\`\`
|
|
68
80
|
|
|
81
|
+
Humans can also add domains in the dashboard at \`https://app.hexclave.com/projects/<project-id>/deployments\` (service → Domains). Agents should not do that in a browser.
|
|
82
|
+
|
|
69
83
|
## Deploying
|
|
70
84
|
|
|
71
85
|
Before deploying, run the service's \`installCommand\` and \`buildCommand\` locally and confirm they succeed. The remote build runs the same commands, but \`deploy\` exits before the build finishes, so a broken build does not fail the command — it surfaces only when you check the run afterwards.
|
|
@@ -76,7 +90,7 @@ export const deploymentsSkillSection = deindent`
|
|
|
76
90
|
npx @hexclave/cli@latest deploy web --secret db_connection="$DATABASE_URL"
|
|
77
91
|
\`\`\`
|
|
78
92
|
|
|
79
|
-
The CLI packages the service's root directory (respecting \`.gitignore\` and \`.vercelignore\`, and always excluding \`node_modules\` and \`.git\`), uploads it, and starts a remote build. Without a config file, the configuration stored in Hexclave governs the deploy, with the root directory resolved against the current directory. It always deploys to production, never prompts, and exits as soon as the build is queued, printing the run id.
|
|
93
|
+
The CLI packages the service's root directory (respecting \`.gitignore\` and \`.vercelignore\`, and always excluding \`node_modules\` and \`.git\`), uploads it, and starts a remote build. Without a config file, the configuration stored in Hexclave governs the deploy, with the root directory resolved against the current directory. It always deploys to production, never prompts, and exits as soon as the build is queued, printing the run id. Check that run with \`exec\` (next section), not by opening the dashboard.
|
|
80
94
|
|
|
81
95
|
Every secret defined in the service's \`env\` must be passed via \`--secret\` on every deploy — a missing (or misspelled) one fails the deploy before anything is uploaded.
|
|
82
96
|
|
|
@@ -118,11 +132,13 @@ export const deploymentsSkillSection = deindent`
|
|
|
118
132
|
|
|
119
133
|
## Deleting a service
|
|
120
134
|
|
|
121
|
-
|
|
135
|
+
Prefer the CLI:
|
|
122
136
|
|
|
123
137
|
\`\`\`sh title="Terminal"
|
|
124
138
|
npx @hexclave/cli@latest exec --cloud-project-id <project-id> \\
|
|
125
139
|
"const p = await hexclaveServerApp.getProject(); \\
|
|
126
140
|
await p.deleteDeploymentService('api');"
|
|
127
141
|
\`\`\`
|
|
142
|
+
|
|
143
|
+
Humans can also delete a service in the dashboard; agents should not.
|
|
128
144
|
`;
|