@astrale-os/adapter-cloudflare 0.1.6 → 0.1.8
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/astrale.d.ts.map +1 -1
- package/dist/astrale.js +21 -3
- package/dist/astrale.js.map +1 -1
- package/dist/cloudflare.d.ts.map +1 -1
- package/dist/cloudflare.js +23 -4
- package/dist/cloudflare.js.map +1 -1
- package/dist/codegen/worker.d.ts.map +1 -1
- package/dist/codegen/worker.js +3 -0
- package/dist/codegen/worker.js.map +1 -1
- package/dist/wrangler-cli.d.ts +2 -0
- package/dist/wrangler-cli.d.ts.map +1 -1
- package/dist/wrangler-cli.js +34 -0
- package/dist/wrangler-cli.js.map +1 -1
- package/package.json +2 -2
- package/src/astrale.ts +26 -3
- package/src/cloudflare.ts +24 -4
- package/src/codegen/worker.ts +3 -0
- package/src/wrangler-cli.ts +38 -0
- package/template/.agents/skills/astrale-cli/SKILL.md +37 -1
- package/template/.agents/skills/astrale-domain/SKILL.md +36 -5
- package/template/README.md +2 -1
- package/template/astrale.config.ts +18 -19
- package/template/client/src/styles.css +4 -1
- package/template/env.ts +5 -1
- package/template/package.json +3 -3
package/dist/astrale.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astrale.d.ts","sourceRoot":"","sources":["../src/astrale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAQvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAY7C,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,aAAa,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"astrale.d.ts","sourceRoot":"","sources":["../src/astrale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAQvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAY7C,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,aAAa,CAAC,aAAa,CAAC,CAmJzF"}
|
package/dist/astrale.js
CHANGED
|
@@ -51,12 +51,23 @@ export function astrale(envs) {
|
|
|
51
51
|
configPath,
|
|
52
52
|
port: params.port ?? DEFAULT_PORT,
|
|
53
53
|
remote: false,
|
|
54
|
+
autoPickPort: params.port === undefined,
|
|
54
55
|
...(params.host ? { ip: '0.0.0.0' } : {}),
|
|
55
56
|
onReload: ctx.onReload,
|
|
56
57
|
onLog: logTo(),
|
|
57
58
|
});
|
|
58
59
|
return { url: params.host ?? handle.url, stop: handle.stop };
|
|
59
60
|
},
|
|
61
|
+
// Config hot-regen for the local dev loop: same codegen as `watch` (the
|
|
62
|
+
// running `wrangler dev` reloads its generated config + entry itself) —
|
|
63
|
+
// the params mapping must stay identical to `watch`'s prepare call.
|
|
64
|
+
async regenerate(params, ctx) {
|
|
65
|
+
await prepare({
|
|
66
|
+
...(params.vars ? { vars: params.vars } : {}),
|
|
67
|
+
...(params.host ? { host: params.host } : {}),
|
|
68
|
+
port: params.port ?? DEFAULT_PORT,
|
|
69
|
+
}, ctx, 'dev');
|
|
70
|
+
},
|
|
60
71
|
async deploy(params, ctx) {
|
|
61
72
|
const log = logTo();
|
|
62
73
|
if (!params.instance) {
|
|
@@ -159,7 +170,11 @@ function packageNameFor(origin) {
|
|
|
159
170
|
* minting) — reimplementing that here would fork the trust path.
|
|
160
171
|
*/
|
|
161
172
|
async function astraleCall(projectDir, params, adminUrl, call) {
|
|
162
|
-
|
|
173
|
+
// Saga-sized timeout: a COLD managed install (fresh service on the host)
|
|
174
|
+
// runs runtime staging + serve probes and regularly exceeds the CLI's 30s
|
|
175
|
+
// default — which doesn't just fail the client, it can kill the saga
|
|
176
|
+
// mid-flight. Same budget as `astrale instance create`.
|
|
177
|
+
const args = ['call', call.path, '--url', adminUrl, '--json', '--timeout', '240000'];
|
|
163
178
|
if (params.identity)
|
|
164
179
|
args.push('--as', params.identity);
|
|
165
180
|
const payload = JSON.stringify(call.data);
|
|
@@ -181,8 +196,11 @@ async function astraleCall(projectDir, params, adminUrl, call) {
|
|
|
181
196
|
}
|
|
182
197
|
});
|
|
183
198
|
if (code !== 0) {
|
|
184
|
-
|
|
185
|
-
|
|
199
|
+
// Only suggest re-login for AUTH-shaped failures — a timeout or audience
|
|
200
|
+
// error pointed at "auth login" sends users chasing the wrong fix.
|
|
201
|
+
const authShaped = /AUTH_ERROR|expired|not signed in|credential/i.test(out);
|
|
202
|
+
throw new Error(`astrale call ${call.path} failed (exit ${code}): ${out.trim().slice(0, 500)}` +
|
|
203
|
+
(authShaped ? `\nIs the astrale CLI installed and signed in? (astrale auth login)` : ''));
|
|
186
204
|
}
|
|
187
205
|
try {
|
|
188
206
|
return JSON.parse(out);
|
package/dist/astrale.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astrale.js","sourceRoot":"","sources":["../src/astrale.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"astrale.js","sourceRoot":"","sources":["../src/astrale.ts"],"names":[],"mappings":"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"}
|
package/dist/cloudflare.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../src/cloudflare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAM5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAUhD,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GACrC,aAAa,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../src/cloudflare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAM5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAUhD,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GACrC,aAAa,CAAC,gBAAgB,CAAC,CAmEjC;AAID,wBAAsB,OAAO,CAC3B,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,QAAQ,GAAG,SAAS,EACzB,IAAI,EAAE,KAAK,GAAG,QAAQ,GACrB,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAkFhG;AA8CD,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAsB3E;AAED,wBAAgB,KAAK,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAE9C"}
|
package/dist/cloudflare.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* prints and `astrale instance install <url>` consumes.
|
|
10
10
|
*/
|
|
11
11
|
import { defineAdapter, hasStarModule } from '@astrale-os/devkit';
|
|
12
|
-
import { mkdir, writeFile } from 'node:fs/promises';
|
|
12
|
+
import { mkdir, rename, writeFile } from 'node:fs/promises';
|
|
13
13
|
import { join } from 'node:path';
|
|
14
14
|
import { buildClient } from './client';
|
|
15
15
|
import { ensureIdentity } from './codegen/identity';
|
|
@@ -30,6 +30,7 @@ export function cloudflare(envs) {
|
|
|
30
30
|
configPath,
|
|
31
31
|
port,
|
|
32
32
|
remote: Boolean(params.remote),
|
|
33
|
+
autoPickPort: params.port === undefined,
|
|
33
34
|
...(params.host ? { ip: '0.0.0.0' } : {}),
|
|
34
35
|
onReload: ctx.onReload,
|
|
35
36
|
onLog: logTo(),
|
|
@@ -38,6 +39,15 @@ export function cloudflare(envs) {
|
|
|
38
39
|
// front), not the local bind — print and spec-stamp that.
|
|
39
40
|
return { url: params.host ?? handle.url, stop: handle.stop };
|
|
40
41
|
},
|
|
42
|
+
// Config hot-regen: rewrite the generated files only — the running
|
|
43
|
+
// `wrangler dev` watches its `--config` (and the worker entry) and reloads
|
|
44
|
+
// them itself, so a `astrale.config.ts` edit lands without a restart.
|
|
45
|
+
// Mirrors `watch`'s prep exactly (codegen + client build), minus the spawn.
|
|
46
|
+
async regenerate(params, ctx) {
|
|
47
|
+
await prepare(params, ctx, 'dev');
|
|
48
|
+
if (ctx.clientDir)
|
|
49
|
+
await buildClient(ctx.clientDir, ctx.projectDir, logTo());
|
|
50
|
+
},
|
|
41
51
|
async deploy(params, ctx) {
|
|
42
52
|
const { configPath, fallbackConfigPath, workerName: name, } = await prepare(params, ctx, 'deploy');
|
|
43
53
|
if (ctx.clientDir)
|
|
@@ -83,7 +93,7 @@ export async function prepare(params, ctx, mode) {
|
|
|
83
93
|
const hasViews = hasStarModule(ctx.projectDir, 'views');
|
|
84
94
|
const hasFunctions = hasStarModule(ctx.projectDir, 'functions');
|
|
85
95
|
const hasClient = Boolean(ctx.clientDir);
|
|
86
|
-
await
|
|
96
|
+
await writeFileAtomic(join(astraleDir, 'worker.gen.ts'), generateWorkerEntry({
|
|
87
97
|
origin: ctx.domain.origin,
|
|
88
98
|
...(ctx.domain.postInstall ? { postInstall: ctx.domain.postInstall } : {}),
|
|
89
99
|
requires: ctx.domain.requires,
|
|
@@ -126,11 +136,11 @@ export async function prepare(params, ctx, mode) {
|
|
|
126
136
|
// worker can't (the script doesn't exist yet), so we also emit a SELF-less
|
|
127
137
|
// fallback config that `runWranglerDeploy` uses for a one-time two-pass deploy.
|
|
128
138
|
const configPath = join(astraleDir, 'wrangler.gen.jsonc');
|
|
129
|
-
await
|
|
139
|
+
await writeFileAtomic(configPath, generateWranglerConfig({ ...baseConfig, selfBinding: true }));
|
|
130
140
|
let fallbackConfigPath;
|
|
131
141
|
if (mode === 'deploy') {
|
|
132
142
|
fallbackConfigPath = join(astraleDir, 'wrangler.no-self.gen.jsonc');
|
|
133
|
-
await
|
|
143
|
+
await writeFileAtomic(fallbackConfigPath, generateWranglerConfig({ ...baseConfig, selfBinding: false }));
|
|
134
144
|
}
|
|
135
145
|
return {
|
|
136
146
|
configPath,
|
|
@@ -139,6 +149,15 @@ export async function prepare(params, ctx, mode) {
|
|
|
139
149
|
workerName: name,
|
|
140
150
|
};
|
|
141
151
|
}
|
|
152
|
+
/**
|
|
153
|
+
* Write-then-rename: hot-regen rewrites these files while a live `wrangler dev`
|
|
154
|
+
* watches them — a plain `writeFile` can be read truncated mid-write.
|
|
155
|
+
*/
|
|
156
|
+
async function writeFileAtomic(path, content) {
|
|
157
|
+
const tmp = `${path}.tmp`;
|
|
158
|
+
await writeFile(tmp, content);
|
|
159
|
+
await rename(tmp, path);
|
|
160
|
+
}
|
|
142
161
|
/**
|
|
143
162
|
* Poll the deployed URL until the worker answers (anything but the Cloudflare
|
|
144
163
|
* 1042 "no script on this host" 404), or give up after `timeoutMs`. Resolves
|
package/dist/cloudflare.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../src/cloudflare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../src/cloudflare.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/codegen/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/codegen/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CA4EtE"}
|
package/dist/codegen/worker.js
CHANGED
|
@@ -56,6 +56,9 @@ export default createWorkerEntry<Env>({
|
|
|
56
56
|
// WORKER_URL (pins one canonical host for routed deploys, so iss stays stable
|
|
57
57
|
// even when also reachable via *.workers.dev); fall back to the per-request
|
|
58
58
|
// host for dev / workers.dev-only (single-host → it IS the canonical URL).
|
|
59
|
+
// Behind a TLS-terminating proxy (cloudflared tunnel → wrangler dev) the SDK
|
|
60
|
+
// upgrades the fallback origin via X-Forwarded-Proto, so iss = the public
|
|
61
|
+
// https URL, not the raw http one workerd sees.
|
|
59
62
|
resolveUrl: (env, requestOrigin) => env.WORKER_URL ?? requestOrigin,
|
|
60
63
|
selfBinding: (env) => env.SELF,
|
|
61
64
|
build: (url, env) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/codegen/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAWH,MAAM,UAAU,mBAAmB,CAAC,IAA0B;IAC5D,MAAM,eAAe,GAAG;QACtB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,yBAAyB;QAC9E,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,6BAA6B;KAC/F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEZ,MAAM,eAAe,GACnB,IAAI,CAAC,WAAW,KAAK,SAAS;QAC5B,CAAC,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;QAC5D,CAAC,CAAC,gCAAgC,CAAA;IAEtC,OAAO;;uBAEc,IAAI,CAAC,MAAM;;;;;;EAMhC,eAAe;;;mBAGE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;EAC9C,eAAe
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/codegen/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAWH,MAAM,UAAU,mBAAmB,CAAC,IAA0B;IAC5D,MAAM,eAAe,GAAG;QACtB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,yBAAyB;QAC9E,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,6BAA6B;KAC/F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEZ,MAAM,eAAe,GACnB,IAAI,CAAC,WAAW,KAAK,SAAS;QAC5B,CAAC,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;QAC5D,CAAC,CAAC,gCAAgC,CAAA;IAEtC,OAAO;;uBAEc,IAAI,CAAC,MAAM;;;;;;EAMhC,eAAe;;;mBAGE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;EAC9C,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDhB,CAAA;AACD,CAAC"}
|
package/dist/wrangler-cli.d.ts
CHANGED
|
@@ -17,6 +17,8 @@ export declare function runWranglerDev(args: {
|
|
|
17
17
|
remote: boolean;
|
|
18
18
|
/** Bind address — '0.0.0.0' for tunneled/proxied dev (`--host`). Default loopback. */
|
|
19
19
|
ip?: string;
|
|
20
|
+
/** When the port was NOT explicitly chosen, dodge a taken one automatically. */
|
|
21
|
+
autoPickPort?: boolean;
|
|
20
22
|
onReload: () => void;
|
|
21
23
|
onLog?: (line: string) => void;
|
|
22
24
|
}): Promise<DevHandle>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrangler-cli.d.ts","sourceRoot":"","sources":["../src/wrangler-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"wrangler-cli.d.ts","sourceRoot":"","sources":["../src/wrangler-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmBH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AA8BD,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;IACf,sFAAsF;IACtF,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,gFAAgF;IAChF,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B,GAAG,OAAO,CAAC,SAAS,CAAC,CA4FrB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,qFAAqF;IACrF,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,UAAU,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAKvC;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EACtE,IAAI,EAAE,UAAU,GACf,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAwBvC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAO9E;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBhB;AAyCD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B,GAAG,OAAO,CAAC,MAAM,CAAC,CAalB"}
|
package/dist/wrangler-cli.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
import { spawn } from 'node:child_process';
|
|
10
10
|
import { existsSync, readdirSync } from 'node:fs';
|
|
11
11
|
import { mkdtemp, rm, writeFile } from 'node:fs/promises';
|
|
12
|
+
import { createServer } from 'node:net';
|
|
12
13
|
import { tmpdir } from 'node:os';
|
|
13
14
|
import { join } from 'node:path';
|
|
14
15
|
import { parseDeployUrl, parseDevReadyUrl } from './parse-output';
|
|
@@ -18,8 +19,40 @@ function wranglerCommand(projectDir) {
|
|
|
18
19
|
return { cmd: local, prefix: [] };
|
|
19
20
|
return { cmd: 'npx', prefix: ['--yes', 'wrangler'] };
|
|
20
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* True when `port` is free on `host`. A taken port previously made `wrangler
|
|
24
|
+
* dev` either die ("Address already in use") or — worse — a FIRST probe hit a
|
|
25
|
+
* DIFFERENT project's dev server on the same port (observed in agent runs:
|
|
26
|
+
* every reader of the docs converges on 8787/8899).
|
|
27
|
+
*/
|
|
28
|
+
function portFree(port, host) {
|
|
29
|
+
return new Promise((resolve) => {
|
|
30
|
+
const srv = createServer();
|
|
31
|
+
srv.once('error', () => resolve(false));
|
|
32
|
+
srv.once('listening', () => srv.close(() => resolve(true)));
|
|
33
|
+
srv.listen(port, host);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/** An OS-assigned free port. */
|
|
37
|
+
function ephemeralPort(host) {
|
|
38
|
+
return new Promise((resolve, reject) => {
|
|
39
|
+
const srv = createServer();
|
|
40
|
+
srv.once('error', reject);
|
|
41
|
+
srv.listen(0, host, () => {
|
|
42
|
+
const addr = srv.address();
|
|
43
|
+
const port = typeof addr === 'object' && addr ? addr.port : 0;
|
|
44
|
+
srv.close(() => resolve(port));
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
}
|
|
21
48
|
export async function runWranglerDev(args) {
|
|
22
49
|
const { cmd, prefix } = wranglerCommand(args.projectDir);
|
|
50
|
+
const bindHost = args.ip ?? '127.0.0.1';
|
|
51
|
+
if (args.autoPickPort && !(await portFree(args.port, bindHost))) {
|
|
52
|
+
const picked = await ephemeralPort(bindHost);
|
|
53
|
+
args.onLog?.(`port ${args.port} is taken — using ${picked} instead (pass --port to pin one)`);
|
|
54
|
+
args = { ...args, port: picked };
|
|
55
|
+
}
|
|
23
56
|
const wranglerArgs = [
|
|
24
57
|
...prefix,
|
|
25
58
|
'dev',
|
|
@@ -39,6 +72,7 @@ export async function runWranglerDev(args) {
|
|
|
39
72
|
env: { ...process.env, WRANGLER_SEND_METRICS: 'false' },
|
|
40
73
|
});
|
|
41
74
|
const fallbackUrl = `http://localhost:${args.port}`;
|
|
75
|
+
// (args.port may have been re-picked above — everything below reads args.port)
|
|
42
76
|
let resolved = false;
|
|
43
77
|
// Wrangler's watch mode STAYS ALIVE on a build failure (listener up, worker
|
|
44
78
|
// never answers) — the classic silent hang. Track build errors so the
|
package/dist/wrangler-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrangler-cli.js","sourceRoot":"","sources":["../src/wrangler-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjE,SAAS,eAAe,CAAC,UAAkB;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;IAClE,IAAI,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;IACxD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAA;AACtD,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"wrangler-cli.js","sourceRoot":"","sources":["../src/wrangler-cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astrale-os/adapter-cloudflare",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "Deploy an Astrale domain as a standalone Cloudflare Worker",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"adapter",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"jose": "^6.1.3",
|
|
31
|
-
"@astrale-os/devkit": "^0.1.
|
|
31
|
+
"@astrale-os/devkit": "^0.1.6"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@astrale-os/ox": ">=0.1.0 <1.0.0",
|
package/src/astrale.ts
CHANGED
|
@@ -64,6 +64,7 @@ export function astrale(envs: Record<string, AstraleParams>): DomainAdapter<Astr
|
|
|
64
64
|
configPath,
|
|
65
65
|
port: params.port ?? DEFAULT_PORT,
|
|
66
66
|
remote: false,
|
|
67
|
+
autoPickPort: params.port === undefined,
|
|
67
68
|
...(params.host ? { ip: '0.0.0.0' } : {}),
|
|
68
69
|
onReload: ctx.onReload,
|
|
69
70
|
onLog: logTo(),
|
|
@@ -71,6 +72,21 @@ export function astrale(envs: Record<string, AstraleParams>): DomainAdapter<Astr
|
|
|
71
72
|
return { url: params.host ?? handle.url, stop: handle.stop }
|
|
72
73
|
},
|
|
73
74
|
|
|
75
|
+
// Config hot-regen for the local dev loop: same codegen as `watch` (the
|
|
76
|
+
// running `wrangler dev` reloads its generated config + entry itself) —
|
|
77
|
+
// the params mapping must stay identical to `watch`'s prepare call.
|
|
78
|
+
async regenerate(params, ctx) {
|
|
79
|
+
await prepare(
|
|
80
|
+
{
|
|
81
|
+
...(params.vars ? { vars: params.vars } : {}),
|
|
82
|
+
...(params.host ? { host: params.host } : {}),
|
|
83
|
+
port: params.port ?? DEFAULT_PORT,
|
|
84
|
+
},
|
|
85
|
+
ctx,
|
|
86
|
+
'dev',
|
|
87
|
+
)
|
|
88
|
+
},
|
|
89
|
+
|
|
74
90
|
async deploy(params, ctx) {
|
|
75
91
|
const log = logTo()
|
|
76
92
|
if (!params.instance) {
|
|
@@ -192,7 +208,11 @@ async function astraleCall(
|
|
|
192
208
|
adminUrl: string,
|
|
193
209
|
call: { path: string; data: unknown; viaStdin?: boolean },
|
|
194
210
|
): Promise<unknown> {
|
|
195
|
-
|
|
211
|
+
// Saga-sized timeout: a COLD managed install (fresh service on the host)
|
|
212
|
+
// runs runtime staging + serve probes and regularly exceeds the CLI's 30s
|
|
213
|
+
// default — which doesn't just fail the client, it can kill the saga
|
|
214
|
+
// mid-flight. Same budget as `astrale instance create`.
|
|
215
|
+
const args = ['call', call.path, '--url', adminUrl, '--json', '--timeout', '240000']
|
|
196
216
|
if (params.identity) args.push('--as', params.identity)
|
|
197
217
|
const payload = JSON.stringify(call.data)
|
|
198
218
|
if (!call.viaStdin) args.push('--data', payload)
|
|
@@ -213,9 +233,12 @@ async function astraleCall(
|
|
|
213
233
|
}
|
|
214
234
|
})
|
|
215
235
|
if (code !== 0) {
|
|
236
|
+
// Only suggest re-login for AUTH-shaped failures — a timeout or audience
|
|
237
|
+
// error pointed at "auth login" sends users chasing the wrong fix.
|
|
238
|
+
const authShaped = /AUTH_ERROR|expired|not signed in|credential/i.test(out)
|
|
216
239
|
throw new Error(
|
|
217
|
-
`astrale call ${call.path} failed (exit ${code}): ${out.trim().slice(0, 500)}
|
|
218
|
-
|
|
240
|
+
`astrale call ${call.path} failed (exit ${code}): ${out.trim().slice(0, 500)}` +
|
|
241
|
+
(authShaped ? `\nIs the astrale CLI installed and signed in? (astrale auth login)` : ''),
|
|
219
242
|
)
|
|
220
243
|
}
|
|
221
244
|
try {
|
package/src/cloudflare.ts
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
import type { DeployCtx, DomainAdapter, WatchCtx } from '@astrale-os/devkit'
|
|
13
13
|
|
|
14
14
|
import { defineAdapter, hasStarModule } from '@astrale-os/devkit'
|
|
15
|
-
import { mkdir, writeFile } from 'node:fs/promises'
|
|
15
|
+
import { mkdir, rename, writeFile } from 'node:fs/promises'
|
|
16
16
|
import { join } from 'node:path'
|
|
17
17
|
|
|
18
18
|
import type { CloudflareParams } from './params'
|
|
@@ -40,6 +40,7 @@ export function cloudflare(
|
|
|
40
40
|
configPath,
|
|
41
41
|
port,
|
|
42
42
|
remote: Boolean(params.remote),
|
|
43
|
+
autoPickPort: params.port === undefined,
|
|
43
44
|
...(params.host ? { ip: '0.0.0.0' } : {}),
|
|
44
45
|
onReload: ctx.onReload,
|
|
45
46
|
onLog: logTo(),
|
|
@@ -49,6 +50,15 @@ export function cloudflare(
|
|
|
49
50
|
return { url: params.host ?? handle.url, stop: handle.stop }
|
|
50
51
|
},
|
|
51
52
|
|
|
53
|
+
// Config hot-regen: rewrite the generated files only — the running
|
|
54
|
+
// `wrangler dev` watches its `--config` (and the worker entry) and reloads
|
|
55
|
+
// them itself, so a `astrale.config.ts` edit lands without a restart.
|
|
56
|
+
// Mirrors `watch`'s prep exactly (codegen + client build), minus the spawn.
|
|
57
|
+
async regenerate(params, ctx) {
|
|
58
|
+
await prepare(params, ctx, 'dev')
|
|
59
|
+
if (ctx.clientDir) await buildClient(ctx.clientDir, ctx.projectDir, logTo())
|
|
60
|
+
},
|
|
61
|
+
|
|
52
62
|
async deploy(params, ctx) {
|
|
53
63
|
const {
|
|
54
64
|
configPath,
|
|
@@ -106,7 +116,7 @@ export async function prepare(
|
|
|
106
116
|
const hasFunctions = hasStarModule(ctx.projectDir, 'functions')
|
|
107
117
|
const hasClient = Boolean(ctx.clientDir)
|
|
108
118
|
|
|
109
|
-
await
|
|
119
|
+
await writeFileAtomic(
|
|
110
120
|
join(astraleDir, 'worker.gen.ts'),
|
|
111
121
|
generateWorkerEntry({
|
|
112
122
|
origin: ctx.domain.origin,
|
|
@@ -157,12 +167,12 @@ export async function prepare(
|
|
|
157
167
|
// worker can't (the script doesn't exist yet), so we also emit a SELF-less
|
|
158
168
|
// fallback config that `runWranglerDeploy` uses for a one-time two-pass deploy.
|
|
159
169
|
const configPath = join(astraleDir, 'wrangler.gen.jsonc')
|
|
160
|
-
await
|
|
170
|
+
await writeFileAtomic(configPath, generateWranglerConfig({ ...baseConfig, selfBinding: true }))
|
|
161
171
|
|
|
162
172
|
let fallbackConfigPath: string | undefined
|
|
163
173
|
if (mode === 'deploy') {
|
|
164
174
|
fallbackConfigPath = join(astraleDir, 'wrangler.no-self.gen.jsonc')
|
|
165
|
-
await
|
|
175
|
+
await writeFileAtomic(
|
|
166
176
|
fallbackConfigPath,
|
|
167
177
|
generateWranglerConfig({ ...baseConfig, selfBinding: false }),
|
|
168
178
|
)
|
|
@@ -176,6 +186,16 @@ export async function prepare(
|
|
|
176
186
|
}
|
|
177
187
|
}
|
|
178
188
|
|
|
189
|
+
/**
|
|
190
|
+
* Write-then-rename: hot-regen rewrites these files while a live `wrangler dev`
|
|
191
|
+
* watches them — a plain `writeFile` can be read truncated mid-write.
|
|
192
|
+
*/
|
|
193
|
+
async function writeFileAtomic(path: string, content: string): Promise<void> {
|
|
194
|
+
const tmp = `${path}.tmp`
|
|
195
|
+
await writeFile(tmp, content)
|
|
196
|
+
await rename(tmp, path)
|
|
197
|
+
}
|
|
198
|
+
|
|
179
199
|
/**
|
|
180
200
|
* Poll the deployed URL until the worker answers (anything but the Cloudflare
|
|
181
201
|
* 1042 "no script on this host" 404), or give up after `timeoutMs`. Resolves
|
package/src/codegen/worker.ts
CHANGED
|
@@ -69,6 +69,9 @@ export default createWorkerEntry<Env>({
|
|
|
69
69
|
// WORKER_URL (pins one canonical host for routed deploys, so iss stays stable
|
|
70
70
|
// even when also reachable via *.workers.dev); fall back to the per-request
|
|
71
71
|
// host for dev / workers.dev-only (single-host → it IS the canonical URL).
|
|
72
|
+
// Behind a TLS-terminating proxy (cloudflared tunnel → wrangler dev) the SDK
|
|
73
|
+
// upgrades the fallback origin via X-Forwarded-Proto, so iss = the public
|
|
74
|
+
// https URL, not the raw http one workerd sees.
|
|
72
75
|
resolveUrl: (env, requestOrigin) => env.WORKER_URL ?? requestOrigin,
|
|
73
76
|
selfBinding: (env) => env.SELF,
|
|
74
77
|
build: (url, env) => {
|
package/src/wrangler-cli.ts
CHANGED
|
@@ -12,6 +12,7 @@ import type { ChildProcess } from 'node:child_process'
|
|
|
12
12
|
import { spawn } from 'node:child_process'
|
|
13
13
|
import { existsSync, readdirSync } from 'node:fs'
|
|
14
14
|
import { mkdtemp, rm, writeFile } from 'node:fs/promises'
|
|
15
|
+
import { createServer } from 'node:net'
|
|
15
16
|
import { tmpdir } from 'node:os'
|
|
16
17
|
import { join } from 'node:path'
|
|
17
18
|
|
|
@@ -28,6 +29,34 @@ export interface DevHandle {
|
|
|
28
29
|
stop(): Promise<void>
|
|
29
30
|
}
|
|
30
31
|
|
|
32
|
+
/**
|
|
33
|
+
* True when `port` is free on `host`. A taken port previously made `wrangler
|
|
34
|
+
* dev` either die ("Address already in use") or — worse — a FIRST probe hit a
|
|
35
|
+
* DIFFERENT project's dev server on the same port (observed in agent runs:
|
|
36
|
+
* every reader of the docs converges on 8787/8899).
|
|
37
|
+
*/
|
|
38
|
+
function portFree(port: number, host: string): Promise<boolean> {
|
|
39
|
+
return new Promise((resolve) => {
|
|
40
|
+
const srv = createServer()
|
|
41
|
+
srv.once('error', () => resolve(false))
|
|
42
|
+
srv.once('listening', () => srv.close(() => resolve(true)))
|
|
43
|
+
srv.listen(port, host)
|
|
44
|
+
})
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** An OS-assigned free port. */
|
|
48
|
+
function ephemeralPort(host: string): Promise<number> {
|
|
49
|
+
return new Promise((resolve, reject) => {
|
|
50
|
+
const srv = createServer()
|
|
51
|
+
srv.once('error', reject)
|
|
52
|
+
srv.listen(0, host, () => {
|
|
53
|
+
const addr = srv.address()
|
|
54
|
+
const port = typeof addr === 'object' && addr ? addr.port : 0
|
|
55
|
+
srv.close(() => resolve(port))
|
|
56
|
+
})
|
|
57
|
+
})
|
|
58
|
+
}
|
|
59
|
+
|
|
31
60
|
export async function runWranglerDev(args: {
|
|
32
61
|
projectDir: string
|
|
33
62
|
configPath: string
|
|
@@ -35,10 +64,18 @@ export async function runWranglerDev(args: {
|
|
|
35
64
|
remote: boolean
|
|
36
65
|
/** Bind address — '0.0.0.0' for tunneled/proxied dev (`--host`). Default loopback. */
|
|
37
66
|
ip?: string
|
|
67
|
+
/** When the port was NOT explicitly chosen, dodge a taken one automatically. */
|
|
68
|
+
autoPickPort?: boolean
|
|
38
69
|
onReload: () => void
|
|
39
70
|
onLog?: (line: string) => void
|
|
40
71
|
}): Promise<DevHandle> {
|
|
41
72
|
const { cmd, prefix } = wranglerCommand(args.projectDir)
|
|
73
|
+
const bindHost = args.ip ?? '127.0.0.1'
|
|
74
|
+
if (args.autoPickPort && !(await portFree(args.port, bindHost))) {
|
|
75
|
+
const picked = await ephemeralPort(bindHost)
|
|
76
|
+
args.onLog?.(`port ${args.port} is taken — using ${picked} instead (pass --port to pin one)`)
|
|
77
|
+
args = { ...args, port: picked }
|
|
78
|
+
}
|
|
42
79
|
const wranglerArgs = [
|
|
43
80
|
...prefix,
|
|
44
81
|
'dev',
|
|
@@ -60,6 +97,7 @@ export async function runWranglerDev(args: {
|
|
|
60
97
|
})
|
|
61
98
|
|
|
62
99
|
const fallbackUrl = `http://localhost:${args.port}`
|
|
100
|
+
// (args.port may have been re-picked above — everything below reads args.port)
|
|
63
101
|
let resolved = false
|
|
64
102
|
// Wrangler's watch mode STAYS ALIVE on a build failure (listener up, worker
|
|
65
103
|
// never answers) — the classic silent hang. Track build errors so the
|
|
@@ -34,6 +34,7 @@ astrale get <path>
|
|
|
34
34
|
astrale ls [path]
|
|
35
35
|
astrale describe <path>
|
|
36
36
|
astrale query <cypher>
|
|
37
|
+
astrale logs <service>
|
|
37
38
|
astrale status
|
|
38
39
|
astrale browser
|
|
39
40
|
astrale instance ...
|
|
@@ -47,7 +48,7 @@ Command groups:
|
|
|
47
48
|
|
|
48
49
|
| Group | Commands |
|
|
49
50
|
|---|---|
|
|
50
|
-
| Kernel | `call`, `token`, `get`, `ls`, `describe`, `query` |
|
|
51
|
+
| Kernel | `call`, `token`, `get`, `ls`, `describe`, `query`, `logs` |
|
|
51
52
|
| Context | `status`, `whoami`, `use` |
|
|
52
53
|
| Management | `admin`, `instance`, `identity`, `auth`, `idp`, `update` |
|
|
53
54
|
| Agent | `browser` |
|
|
@@ -214,6 +215,35 @@ astrale identity whoami
|
|
|
214
215
|
That is different from `astrale token`, which mints a delegation token for
|
|
215
216
|
kernel/worker calls.
|
|
216
217
|
|
|
218
|
+
### Session lifetime and refresh
|
|
219
|
+
|
|
220
|
+
IdP sessions refresh themselves: every kernel command silently exchanges the
|
|
221
|
+
refresh token when the cached access token is stale, and concurrent `astrale`
|
|
222
|
+
processes serialize that exchange on a per-identity file lock (refresh tokens
|
|
223
|
+
are single-use — the lock is what makes parallel agent-driven commands safe).
|
|
224
|
+
One `astrale auth login` should therefore last until the IdP itself ends the
|
|
225
|
+
session. Access tokens are also cached **per audience**, so alternating
|
|
226
|
+
commands between instances does not burn a refresh per flip.
|
|
227
|
+
|
|
228
|
+
Refresh failures come in two distinct flavors — read the error before
|
|
229
|
+
re-authenticating:
|
|
230
|
+
|
|
231
|
+
- "could not be refreshed … run: astrale auth login" — the grant is dead
|
|
232
|
+
(IdP session ended, idle/absolute timeout, logout elsewhere). Re-login is
|
|
233
|
+
the only fix.
|
|
234
|
+
- "Could not reach the IdP … retry the command" — transient network/IdP
|
|
235
|
+
outage. The cached session is still valid; do NOT re-login, just retry.
|
|
236
|
+
|
|
237
|
+
### Agent auth
|
|
238
|
+
|
|
239
|
+
An agent driving the CLI needs no special flow: it shares `~/.astrale`, so one
|
|
240
|
+
human `astrale auth login` is enough and every subsequent command (including
|
|
241
|
+
parallel ones) self-refreshes. For fully headless setups with no human login,
|
|
242
|
+
use a key-backed identity — `astrale identity create <name>` then
|
|
243
|
+
`astrale identity register <name> -i <instance>` — which signs locally and
|
|
244
|
+
never expires; or hand the agent a TTL-bound delegation token minted with
|
|
245
|
+
`astrale token` and passed via `--creds`.
|
|
246
|
+
|
|
217
247
|
## Delegation Tokens
|
|
218
248
|
|
|
219
249
|
`astrale token` mints a delegation token for the active instance and identity.
|
|
@@ -353,6 +383,12 @@ Use diagnostics:
|
|
|
353
383
|
- Use `--json` or `--raw` for structured command output.
|
|
354
384
|
- Use `--ci` and `--no-prompt` in non-interactive automation.
|
|
355
385
|
- Use `--timeout <ms>` when a kernel call is valid but slow.
|
|
386
|
+
- Use `astrale logs <service-slug> [--tail N]` to tail a MANAGED SERVICE's
|
|
387
|
+
runtime logs — console output, 5xx accesses, and uncaught exception stacks
|
|
388
|
+
(the readable side of `internal error; reference = …` responses). The slug
|
|
389
|
+
is the first label of the service's `…svc.<region>.astrale.ai` URL (also
|
|
390
|
+
accepts the full URL). In-memory, last ~500 lines, resets on runtime
|
|
391
|
+
restart; services deployed before log capture need one redeploy.
|
|
356
392
|
|
|
357
393
|
Common error classes and first checks:
|
|
358
394
|
|
|
@@ -19,10 +19,15 @@ an RPC layer; you declare a contract and implement handlers.
|
|
|
19
19
|
## 0 · Start
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
|
-
npx -y create-astrale-domain@latest my-domain --yes # scaffold
|
|
22
|
+
npx -y create-astrale-domain@latest my-domain --yes --instance <slug> # scaffold
|
|
23
|
+
# managed `astrale` adapter is the DEFAULT; `--instance` stamps the
|
|
24
|
+
# target instance into prod (`--adapter cloudflare` = your own CF account)
|
|
23
25
|
cd my-domain && pnpm install
|
|
24
26
|
pnpm dev # local wrangler dev (prints a URL; install it on an instance to test)
|
|
25
|
-
|
|
27
|
+
# port 8787 taken? dev AUTO-PICKS a free one and prints it —
|
|
28
|
+
# always trust the printed URL, and `curl <url>/meta` must name
|
|
29
|
+
# YOUR domain (an orphan wrangler answers on stolen ports).
|
|
30
|
+
pnpm dev --port 8899 # pin a port explicitly (disables auto-pick)
|
|
26
31
|
pnpm dev --host https://my-box.preview.dev # dev behind a tunnel/sandbox preview:
|
|
27
32
|
# binds 0.0.0.0 + pins WORKER_URL so iss doesn't drift
|
|
28
33
|
pnpm prod # deploy + (astrale adapter) auto-install on your instance
|
|
@@ -224,6 +229,29 @@ VERIFY THE UPSTREAM SIGNATURE FIRST, then act as yourself. Needs
|
|
|
224
229
|
granted exactly what it writes (e.g. EDIT on the target folder + USE on
|
|
225
230
|
createNode + USE on the class — narrow, never root).
|
|
226
231
|
|
|
232
|
+
**A PUBLIC view that reads the graph** (e.g. a server-rendered list page):
|
|
233
|
+
the render ctx exposes `ctx.selfKernel()` (sdk ≥0.1.5) — a session as THE
|
|
234
|
+
VIEW'S OWN identity. Read with it directly in `render`, template to HTML:
|
|
235
|
+
`const k = await ctx.selfKernel(); const rows = await k.call('/messages::listChildren', {})`.
|
|
236
|
+
Grant the view's function identity the READ-side minimum in your seed —
|
|
237
|
+
the grant call is dispatched ON the identity node, with a bitmask:
|
|
238
|
+
```ts
|
|
239
|
+
import { READ, USE, toMask } from '@astrale-os/kernel-core'
|
|
240
|
+
await kernel.call('/<origin>/core/views/<view-slug>::grantPerm', { node: '/messages', perms: toMask(READ) })
|
|
241
|
+
await kernel.call('/<origin>/core/views/<view-slug>::grantPerm', { node: '/:kernel.astrale.ai:interface.Container:listChildren', perms: toMask(USE) })
|
|
242
|
+
```
|
|
243
|
+
Needs `deps.INSTANCE_KERNEL_URL` — managed deploys set it automatically; on
|
|
244
|
+
the cloudflare adapter set it yourself: the instance's kernel API base is
|
|
245
|
+
`https://<instance-slug>.eu.astrale.ai/api` (a vars entry or secret).
|
|
246
|
+
Public-input
|
|
247
|
+
hygiene: HTML-escape every stored string at render. (Prefer `selfKernel`
|
|
248
|
+
over the `SELF` service binding for graph reads — `SELF` exists on both
|
|
249
|
+
cloudflare and current managed runtimes, but it costs an extra HTTP hop and
|
|
250
|
+
older hosts omit it.)
|
|
251
|
+
|
|
252
|
+
**Calling a remote function over raw HTTP**: the response wraps your return
|
|
253
|
+
value in an envelope — `{ result: <your value> }` (errors: `{ error }`).
|
|
254
|
+
|
|
227
255
|
**Webhook idempotency** (senders retry — design for replays): derive a
|
|
228
256
|
DETERMINISTIC node path from the sender's id (`/contacts/lead-<externalId>`),
|
|
229
257
|
and make that key BOTH the existence check AND the write target. The classic
|
|
@@ -252,7 +280,8 @@ Adapter choice in `astrale.config.ts`:
|
|
|
252
280
|
- `cloudflare({...})` — your CF account; `dev` (wrangler dev), `prod` (route or
|
|
253
281
|
workers.dev); ships secrets + SPA assets; extra bindings via a deep-merged
|
|
254
282
|
`wrangler` block.
|
|
255
|
-
- `astrale({ dev: {...}, prod: { instance: '<slug>' } })` — managed
|
|
283
|
+
- `astrale({ dev: {...}, prod: { instance: '<slug>' } })` — managed (the
|
|
284
|
+
scaffold's DEFAULT): publishes
|
|
256
285
|
the bundle THROUGH the platform and installs it as a host-local service next
|
|
257
286
|
to your instance (`https://<name>-<hash>.svc.<region>.astrale.ai`). No CF
|
|
258
287
|
account; auth = your `astrale auth login` session. Ships the client SPA
|
|
@@ -299,6 +328,7 @@ directly — useful for recovery and inspection:
|
|
|
299
328
|
|
|
300
329
|
| Symptom | Likely cause |
|
|
301
330
|
|---|---|
|
|
331
|
+
| any managed-service 500 — `{"error":{"code":5000,"message":"internal error; reference = …"}}` | `astrale logs <service-slug>` tails the service's runtime buffer (console output, 5xx accesses, uncaught exception stacks) — the slug is the first label of the `…svc.<region>.astrale.ai` URL `pnpm prod` printed. Services deployed before log capture need one redeploy first. |
|
|
302
332
|
| `Permission denied: EDIT on /x (param-target)` | `/x` doesn't exist — seed the parent |
|
|
303
333
|
| `method "x" not found … call it as "/:o:class.C/x"` | instance form used for a static method |
|
|
304
334
|
| `Delegation mint failed for <url>` | check `--debug` cause chain; worker→worker call machinery |
|
|
@@ -313,8 +343,9 @@ directly — useful for recovery and inspection:
|
|
|
313
343
|
| deploy: `Export named 'X' not found` from an @astrale-os module | a transitive dep resolved below its REAL floor — `pnpm add @astrale-os/<pkg>@<needed>` then `pnpm dedupe` |
|
|
314
344
|
|
|
315
345
|
Use `astrale call <path> --describe` for any callable's schema, `--debug` for
|
|
316
|
-
the full error chain,
|
|
317
|
-
(domainName, schemaHash)
|
|
346
|
+
the full error chain, `curl <worker>/meta` for what a worker serves
|
|
347
|
+
(domainName, schemaHash), and `astrale logs <service-slug> [--tail N]` for a
|
|
348
|
+
managed service's runtime logs.
|
|
318
349
|
|
|
319
350
|
## Related skills
|
|
320
351
|
- **astrale-cli** — every CLI command (auth, instances, calls, install).
|
package/template/README.md
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# astrale-domain
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
A standalone [Astrale](https://astrale.ai) domain, deployed as
|
|
4
|
+
A standalone [Astrale](https://astrale.ai) domain, deployed as an Astrale-managed
|
|
5
|
+
service (default) or as a worker on your own Cloudflare account.
|
|
5
6
|
|
|
6
7
|
## For AI agents
|
|
7
8
|
|
|
@@ -6,19 +6,20 @@
|
|
|
6
6
|
* `adapter` chooses the target.
|
|
7
7
|
*
|
|
8
8
|
* pnpm dev # wrangler dev → prints a local URL
|
|
9
|
-
* astrale instance install <url> # mount
|
|
10
|
-
* pnpm prod # deploy
|
|
9
|
+
* astrale instance install <url> # mount the dev URL on an instance
|
|
10
|
+
* pnpm prod # managed deploy → prints a URL + installs
|
|
11
11
|
*/
|
|
12
|
-
import {
|
|
12
|
+
import { astrale } from '@astrale-os/adapter-cloudflare'
|
|
13
13
|
import { defineDomain } from '@astrale-os/devkit'
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
//
|
|
14
|
+
// Have your own Cloudflare account and prefer deploying there directly? Swap
|
|
15
|
+
// the adapter — same bundle, shipped with wrangler under YOUR account (then
|
|
16
|
+
// mount it yourself: `astrale instance install <url>`). Extra bindings (KV,
|
|
17
|
+
// R2, D1, queues, …) ride a `wrangler` block on any env (deep-merged):
|
|
17
18
|
//
|
|
18
|
-
// import {
|
|
19
|
-
// adapter:
|
|
19
|
+
// import { cloudflare } from '@astrale-os/adapter-cloudflare'
|
|
20
|
+
// adapter: cloudflare({
|
|
20
21
|
// dev: { secrets: '.env.dev' }, // local wrangler dev, unchanged
|
|
21
|
-
// prod: {
|
|
22
|
+
// prod: { route: 'astrale-domain.example.dev', secrets: '.env.prod' },
|
|
22
23
|
// }),
|
|
23
24
|
|
|
24
25
|
import { schema } from './schema'
|
|
@@ -28,17 +29,15 @@ export default defineDomain({
|
|
|
28
29
|
// origin defaults to `schema.domain`. Set it to another domain's origin to
|
|
29
30
|
// deliberately alias that identity (you'll get a DANGER prompt at install).
|
|
30
31
|
postInstall: `/:${schema.domain}:class.Note:seed`,
|
|
31
|
-
adapter:
|
|
32
|
+
adapter: astrale({
|
|
32
33
|
// Local dev: `wrangler dev`. No route → URL is http://localhost:8787.
|
|
33
34
|
dev: { secrets: '.env.dev' },
|
|
34
|
-
//
|
|
35
|
-
|
|
36
|
-
//
|
|
37
|
-
//
|
|
38
|
-
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
// wrangler: { kv_namespaces: [{ binding: 'CACHE', id: '<kv-id>' }] },
|
|
42
|
-
// },
|
|
35
|
+
// Managed deploy: `pnpm prod` publishes the bundle through the platform and
|
|
36
|
+
// installs the domain on this instance — no Cloudflare account needed
|
|
37
|
+
// (auth = your `astrale auth login` session). The slug comes from
|
|
38
|
+
// `astrale instance create <slug>` / `astrale instance status`.
|
|
39
|
+
prod: { instance: 'my-instance-slug' },
|
|
40
|
+
// Author secrets ship via `secrets: '.env.prod'` on any env (encrypted at
|
|
41
|
+
// rest platform-side, re-applied on redeploys; omit = keep, `{}` = clear).
|
|
43
42
|
}),
|
|
44
43
|
})
|
package/template/env.ts
CHANGED
|
@@ -10,7 +10,11 @@ export interface Env {
|
|
|
10
10
|
WORKER_URL?: string
|
|
11
11
|
/** Workers Assets binding (serves the client SPA under /ui/*), when present. */
|
|
12
12
|
ASSETS?: { fetch(request: Request): Promise<Response> }
|
|
13
|
-
/** Self service binding (autobinding — a handler calling its own domain).
|
|
13
|
+
/** Self service binding (autobinding — a handler calling its own domain).
|
|
14
|
+
* Present on Cloudflare deploys AND on current managed runtimes (the host
|
|
15
|
+
* binds every service to itself). Optional — hosts predating log/SELF
|
|
16
|
+
* support omit it; for graph reads from views/functions prefer
|
|
17
|
+
* `ctx.selfKernel()`. */
|
|
14
18
|
SELF?: { fetch(request: Request): Promise<Response> }
|
|
15
19
|
/** Dev-only: forward /ui/* to a running Vite dev server. */
|
|
16
20
|
VIEW_DEV_URL?: string
|
package/template/package.json
CHANGED
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
"typecheck": "tsgo --noEmit"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@astrale-os/adapter-cloudflare": ">=0.1.
|
|
18
|
-
"@astrale-os/devkit": ">=0.1.
|
|
17
|
+
"@astrale-os/adapter-cloudflare": ">=0.1.7 <1.0.0",
|
|
18
|
+
"@astrale-os/devkit": ">=0.1.6 <1.0.0",
|
|
19
19
|
"@astrale-os/kernel-core": ">=0.4.3 <1.0.0",
|
|
20
20
|
"@astrale-os/kernel-dsl": ">=0.1.2 <1.0.0",
|
|
21
|
-
"@astrale-os/sdk": ">=0.1.
|
|
21
|
+
"@astrale-os/sdk": ">=0.1.5 <1.0.0",
|
|
22
22
|
"@hono/node-server": "^1.19.0",
|
|
23
23
|
"zod": "^4.3.6"
|
|
24
24
|
},
|