@astrale-os/adapter-cloudflare 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/build.d.ts +2 -1
  2. package/dist/build.d.ts.map +1 -1
  3. package/dist/build.js +1 -1
  4. package/dist/build.js.map +1 -1
  5. package/dist/client.d.ts +14 -13
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/client.js +25 -18
  8. package/dist/client.js.map +1 -1
  9. package/dist/cloudflare.d.ts +4 -1
  10. package/dist/cloudflare.d.ts.map +1 -1
  11. package/dist/cloudflare.js +40 -18
  12. package/dist/cloudflare.js.map +1 -1
  13. package/dist/codegen/worker.d.ts +3 -3
  14. package/dist/codegen/worker.d.ts.map +1 -1
  15. package/dist/codegen/worker.js +19 -8
  16. package/dist/codegen/worker.js.map +1 -1
  17. package/dist/index.d.ts +2 -2
  18. package/dist/index.js +2 -2
  19. package/dist/params.d.ts +3 -0
  20. package/dist/params.d.ts.map +1 -1
  21. package/package.json +2 -2
  22. package/src/build.ts +2 -1
  23. package/src/client.ts +43 -18
  24. package/src/cloudflare.ts +41 -14
  25. package/src/codegen/worker.ts +19 -8
  26. package/src/index.ts +2 -2
  27. package/src/params.ts +4 -0
  28. package/template/CLAUDE.md +24 -0
  29. package/template/README.md +24 -15
  30. package/template/astrale.config.ts +4 -4
  31. package/template/client/README.md +9 -9
  32. package/template/client/__tests__/app.test.tsx +58 -19
  33. package/template/client/__tests__/harness.ts +16 -0
  34. package/template/client/__tests__/kernel.test.ts +23 -3
  35. package/template/client/src/shell/use-async.ts +4 -1
  36. package/template/client/src/status/components/StatusCard.tsx +115 -5
  37. package/template/client/src/status/hooks/useCheckable.query.ts +48 -40
  38. package/template/client/src/status/index.ts +2 -2
  39. package/template/client/src/status/status.api.ts +18 -1
  40. package/template/client/src/status/status.mappers.ts +89 -6
  41. package/template/client/src/status/status.types.ts +17 -2
  42. package/template/client/src/styles.css +235 -14
  43. package/template/client/src/views/status.tsx +1 -1
  44. package/template/core/monitor/index.ts +2 -2
  45. package/template/core/monitor/node.ts +12 -6
  46. package/template/domain.ts +6 -4
  47. package/template/functions/index.ts +31 -7
  48. package/template/package.json +2 -2
  49. package/template/pnpm-lock.yaml +57 -43
  50. package/template/pnpm-workspace.yaml +2 -0
  51. package/template/runtime/index.ts +8 -17
  52. package/template/runtime/monitoring/index.ts +8 -0
  53. package/template/runtime/{monitor → monitoring/monitor}/check.ts +3 -3
  54. package/template/runtime/{monitor → monitoring/monitor}/index.ts +3 -2
  55. package/template/runtime/{monitor → monitoring/monitor}/seed.ts +19 -10
  56. package/template/runtime/{monitor → monitoring/monitor}/watch.ts +5 -5
  57. package/template/runtime/{status-page → monitoring/page}/add.ts +2 -2
  58. package/template/runtime/{status-page → monitoring/page}/check.ts +2 -2
  59. package/template/runtime/{status-page → monitoring/page}/create.ts +3 -3
  60. package/template/runtime/monitoring/page/index.ts +9 -0
  61. package/template/schema/monitor.ts +6 -8
  62. package/template/views/index.ts +1 -1
  63. package/template/.agents/skills/astrale-cli/SKILL.md +0 -458
  64. package/template/.agents/skills/astrale-domain/SKILL.md +0 -371
  65. package/template/runtime/status-page/index.ts +0 -8
@@ -5,6 +5,8 @@
5
5
  --border: #e5e5e5;
6
6
  --border-strong: #d4d4d8;
7
7
  --card: #ffffff;
8
+ --surface: #f4f4f5;
9
+ --surface-strong: #eceff3;
8
10
  --accent: #2563eb;
9
11
  --accent-soft: rgba(37, 99, 235, 0.1);
10
12
  --warn-bg: #fffbeb;
@@ -39,7 +41,7 @@ body {
39
41
  }
40
42
 
41
43
  .wrap {
42
- max-width: 42rem;
44
+ max-width: 64rem;
43
45
  margin: 0 auto;
44
46
  padding: 1.5rem;
45
47
  }
@@ -47,8 +49,9 @@ body {
47
49
  .card {
48
50
  background: var(--card);
49
51
  border: 1px solid var(--border);
50
- border-radius: 0.75rem;
52
+ border-radius: 0.5rem;
51
53
  padding: 1.25rem 1.5rem;
54
+ box-shadow: 0 16px 40px rgba(24, 24, 27, 0.06);
52
55
  }
53
56
 
54
57
  .title {
@@ -92,10 +95,10 @@ body {
92
95
  /* ─── Panel ─────────────────────────────────────────────────────────────── */
93
96
 
94
97
  .panel {
95
- background: var(--card);
96
- border: 1px solid var(--border);
97
- border-radius: 0.7rem;
98
- padding: 1.05rem 1.2rem;
98
+ background: transparent;
99
+ border: 0;
100
+ border-radius: 0;
101
+ padding: 0;
99
102
  }
100
103
 
101
104
  .panel-danger {
@@ -107,11 +110,11 @@ body {
107
110
  align-items: center;
108
111
  justify-content: space-between;
109
112
  gap: 0.75rem;
110
- margin-bottom: 0.85rem;
113
+ margin-bottom: 1rem;
111
114
  }
112
115
 
113
116
  .panel-title {
114
- font-size: 1.1rem;
117
+ font-size: 1.35rem;
115
118
  font-weight: 650;
116
119
  margin: 0;
117
120
  }
@@ -175,14 +178,77 @@ body {
175
178
  text-decoration: underline;
176
179
  }
177
180
 
178
- /* ─── Status row + badge ────────────────────────────────────────────────── */
181
+ /* ─── Status dashboard + badge ──────────────────────────────────────────── */
179
182
 
180
- .status-row {
181
- display: flex;
183
+ .status-dashboard {
184
+ display: grid;
185
+ gap: 1rem;
186
+ }
187
+
188
+ .status-overview {
189
+ display: grid;
190
+ grid-template-columns: minmax(0, 1fr) minmax(16rem, 0.65fr);
191
+ gap: 1rem;
192
+ align-items: stretch;
193
+ padding: 1rem;
194
+ background: var(--surface);
195
+ border: 1px solid var(--border);
196
+ border-radius: 0.5rem;
197
+ }
198
+
199
+ .status-label {
200
+ font-family: var(--mono);
201
+ font-size: 0.7rem;
202
+ color: var(--muted);
203
+ margin: 0 0 0.55rem;
204
+ text-transform: uppercase;
205
+ letter-spacing: 0.06em;
206
+ }
207
+
208
+ .summary-grid {
209
+ display: grid;
210
+ grid-template-columns: repeat(3, minmax(0, 1fr));
211
+ border: 1px solid var(--border);
212
+ border-radius: 0.5rem;
213
+ overflow: hidden;
214
+ background: var(--card);
215
+ }
216
+
217
+ .summary-cell {
218
+ min-width: 0;
219
+ padding: 0.7rem 0.8rem;
220
+ border-left: 1px solid var(--border);
221
+ }
222
+
223
+ .summary-cell:first-child {
224
+ border-left: 0;
225
+ }
226
+
227
+ .summary-value {
228
+ display: block;
229
+ font-size: 1.25rem;
230
+ line-height: 1.1;
231
+ font-weight: 750;
232
+ }
233
+
234
+ .summary-label {
235
+ display: block;
236
+ color: var(--muted);
237
+ font-size: 0.72rem;
238
+ margin-top: 0.15rem;
239
+ }
240
+
241
+ .status-meta {
242
+ display: grid;
243
+ grid-template-columns: max-content minmax(0, 1fr) max-content max-content;
244
+ gap: 0.45rem 0.75rem;
182
245
  align-items: center;
183
- justify-content: space-between;
184
- gap: 0.75rem;
185
- margin: 0 0 1rem;
246
+ color: var(--muted);
247
+ font-size: 0.76rem;
248
+ }
249
+
250
+ .status-meta > span:nth-child(odd) {
251
+ font-family: var(--mono);
186
252
  }
187
253
 
188
254
  .status-badge {
@@ -211,6 +277,116 @@ body {
211
277
  background: var(--unknown);
212
278
  }
213
279
 
280
+ .monitor-section {
281
+ border-top: 1px solid var(--border);
282
+ padding-top: 1rem;
283
+ }
284
+
285
+ .monitor-section-head {
286
+ display: flex;
287
+ align-items: center;
288
+ justify-content: space-between;
289
+ gap: 0.75rem;
290
+ margin-bottom: 0.45rem;
291
+ }
292
+
293
+ .monitor-section-head h3 {
294
+ font-size: 0.95rem;
295
+ margin: 0;
296
+ }
297
+
298
+ .refreshing {
299
+ font-family: var(--mono);
300
+ font-size: 0.7rem;
301
+ color: var(--accent);
302
+ background: var(--accent-soft);
303
+ border-radius: 0.35rem;
304
+ padding: 0.15rem 0.4rem;
305
+ }
306
+
307
+ .monitor-list {
308
+ border: 1px solid var(--border);
309
+ border-radius: 0.5rem;
310
+ overflow: hidden;
311
+ }
312
+
313
+ .monitor-row {
314
+ display: grid;
315
+ grid-template-columns: 8.5rem minmax(0, 1fr) minmax(17rem, 0.8fr);
316
+ gap: 1rem;
317
+ align-items: center;
318
+ padding: 0.85rem 0.95rem;
319
+ border-top: 1px solid var(--border);
320
+ background: var(--card);
321
+ }
322
+
323
+ .monitor-row:first-child {
324
+ border-top: 0;
325
+ }
326
+
327
+ .monitor-status {
328
+ display: flex;
329
+ flex-direction: column;
330
+ align-items: flex-start;
331
+ gap: 0.4rem;
332
+ }
333
+
334
+ .monitor-row .status-badge {
335
+ font-size: 0.72rem;
336
+ padding: 0.2rem 0.5rem;
337
+ border-radius: 0.35rem;
338
+ }
339
+
340
+ .weight {
341
+ font-family: var(--mono);
342
+ font-size: 0.68rem;
343
+ color: var(--muted);
344
+ background: var(--surface);
345
+ border-radius: 0.35rem;
346
+ padding: 0.15rem 0.4rem;
347
+ }
348
+
349
+ .weight-critical {
350
+ color: var(--err);
351
+ background: var(--err-soft);
352
+ }
353
+
354
+ .monitor-main {
355
+ min-width: 0;
356
+ }
357
+
358
+ .monitor-main h4 {
359
+ margin: 0 0 0.12rem;
360
+ font-size: 0.95rem;
361
+ }
362
+
363
+ .monitor-metrics {
364
+ display: grid;
365
+ grid-template-columns: repeat(3, minmax(0, 1fr));
366
+ gap: 0.5rem;
367
+ margin: 0;
368
+ }
369
+
370
+ .monitor-metrics div {
371
+ min-width: 0;
372
+ padding: 0.45rem 0.55rem;
373
+ background: var(--surface);
374
+ border-radius: 0.4rem;
375
+ }
376
+
377
+ .monitor-metrics dt {
378
+ color: var(--muted);
379
+ font-size: 0.68rem;
380
+ margin-bottom: 0.1rem;
381
+ }
382
+
383
+ .monitor-metrics dd {
384
+ margin: 0;
385
+ font-family: var(--mono);
386
+ font-size: 0.75rem;
387
+ word-break: break-word;
388
+ }
389
+
214
390
  /* ─── Buttons ───────────────────────────────────────────────────────────── */
215
391
 
216
392
  .check-btn {
@@ -286,3 +462,48 @@ body {
286
462
  transform: rotate(360deg);
287
463
  }
288
464
  }
465
+
466
+ @media (max-width: 760px) {
467
+ .wrap {
468
+ padding: 0.75rem;
469
+ }
470
+
471
+ .card {
472
+ padding: 1rem;
473
+ }
474
+
475
+ .panel-head,
476
+ .status-overview,
477
+ .monitor-row {
478
+ grid-template-columns: 1fr;
479
+ }
480
+
481
+ .panel-head,
482
+ .monitor-section-head {
483
+ align-items: flex-start;
484
+ }
485
+
486
+ .status-meta {
487
+ grid-template-columns: max-content minmax(0, 1fr);
488
+ }
489
+
490
+ .monitor-metrics {
491
+ grid-template-columns: repeat(3, minmax(0, 1fr));
492
+ }
493
+ }
494
+
495
+ @media (max-width: 460px) {
496
+ .summary-grid,
497
+ .monitor-metrics {
498
+ grid-template-columns: 1fr;
499
+ }
500
+
501
+ .summary-cell {
502
+ border-left: 0;
503
+ border-top: 1px solid var(--border);
504
+ }
505
+
506
+ .summary-cell:first-child {
507
+ border-top: 0;
508
+ }
509
+ }
@@ -14,7 +14,7 @@ import { StatusCard } from '@/status'
14
14
 
15
15
  export function StatusView(shell: ShellState) {
16
16
  return (
17
- <ViewFrame shell={shell} title="Status" subline="astrale view">
17
+ <ViewFrame shell={shell} title="Status page" subline="monitoring view">
18
18
  {(session, nodeId) =>
19
19
  nodeId ? (
20
20
  // Keyed by node id so a target hot-swap remounts with fresh state.
@@ -1,8 +1,8 @@
1
1
  /**
2
- * The monitor bounded context's PURE core, in one place: schema accessors
2
+ * The monitoring bounded context's PURE core, in one place: schema accessors
3
3
  * (`keys`), the health status rule (`health`), and node identity/layout/seed
4
4
  * data (`node`). No I/O, no clock/RNG — all deterministic + testable.
5
- * `runtime/monitor/` imports the operations' logic from here.
5
+ * `runtime/monitoring/` imports the operations' logic from here.
6
6
  */
7
7
  export * from './keys'
8
8
  export * from './health'
@@ -5,9 +5,10 @@
5
5
  * node writes) stay in `runtime/`, so this file is deterministic and testable.
6
6
  */
7
7
 
8
- /** Where each kind of node lives in the graph (domain layout; `seed` creates the folders). */
9
- export const MONITORS_PARENT = '/monitors'
10
- export const STATUS_PAGES_PARENT = '/status-pages'
8
+ /** Where monitoring nodes live in the graph (domain layout; `seed` creates the folders). */
9
+ export const MONITORING_PARENT = '/monitoring'
10
+ export const MONITORS_PARENT = `${MONITORING_PARENT}/monitors`
11
+ export const STATUS_PAGES_PARENT = `${MONITORING_PARENT}/pages`
11
12
 
12
13
  /** Deterministic URL-/name-safe stem (lowercased, non-alnum → `-`, clamped). Pure. */
13
14
  export function slugify(text: string): string {
@@ -44,14 +45,19 @@ export interface StarterMonitor {
44
45
  * a real site. Fixed slugs keep `seed` idempotent across reinstalls.
45
46
  */
46
47
  export const STARTERS: readonly StarterMonitor[] = [
47
- { slug: 'astrale', name: 'Astrale', url: 'https://astrale.ai', critical: true },
48
+ {
49
+ slug: 'astrale',
50
+ name: 'Astrale homepage',
51
+ url: 'https://astrale.ai',
52
+ critical: true,
53
+ },
48
54
  {
49
55
  slug: 'httpbin-200',
50
- name: 'httpbin (200)',
56
+ name: 'HTTP 200 smoke check',
51
57
  url: 'https://httpbin.org/status/200',
52
58
  critical: false,
53
59
  },
54
60
  ]
55
61
 
56
62
  /** The status page `seed` creates, watching every starter monitor. */
57
- export const STARTER_PAGE = { slug: 'status', name: 'Status' } as const
63
+ export const STARTER_PAGE = { slug: 'status', name: 'Public status' } as const
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * domain.ts — the WORKER-SAFE domain definition: what the domain IS (its
3
- * `schema`, `methods`, `deps`, `views`, `functions`, `client`) plus its identity
3
+ * `schema`, `methods`, `deps`, `views`, `functions`) plus its identity
4
4
  * (`origin` defaults to `schema.domain`; `postInstall`). Everything is wired
5
5
  * EXPLICITLY here — a renamed or mistyped module is a compile error at this
6
6
  * call, never a silently-missing route. The handlers live in `runtime/` (the
@@ -11,7 +11,7 @@
11
11
  * so your folder layout is invisible to it — reorganize freely; only this wiring
12
12
  * has to stay put. The deploy adapter is attached separately in
13
13
  * `astrale.config.ts` via `deploy(domain, …)`, keeping its node-only code
14
- * (wrangler, filesystem) out of the worker bundle.
14
+ * (wrangler, filesystem, frontend builds) out of the worker bundle.
15
15
  */
16
16
  import { defineDomain } from '@astrale-os/sdk'
17
17
 
@@ -27,7 +27,9 @@ export const domain = defineDomain({
27
27
  deps,
28
28
  views,
29
29
  functions,
30
- client: { dir: 'client' },
31
- postInstall: `/:${schema.domain}:class.Monitor:seed`,
30
+ // Reference the `seed` function directly — the SDK derives its path from the
31
+ // `functions` map, so a rename can't leave a stale string. The kernel calls it
32
+ // once after install, as __SYSTEM__. (A class method would be `'class.X:seed'`.)
33
+ postInstall: functions.seed,
32
34
  requires: [],
33
35
  })
@@ -1,9 +1,33 @@
1
1
  /**
2
- * Function registry — one file per standalone Function under `functions/`,
3
- * listed here. Each becomes a Function node at `/<origin>/core/functions/<key>`
4
- * whose `binding.remoteUrl` the SDK stamps with the worker's public URL at
5
- * install. (Note: the `postInstall` hook must be a CLASS-hosted static method —
6
- * standalone Functions live at tree paths, which the kernel's origin guard
7
- * refuses for postInstall.)
2
+ * Standalone-function registry — one entry per callable that is NOT a method of
3
+ * a class. Each becomes a first-class domain MEMBER: a `Function` node at
4
+ * `/<origin>/functions/<key>` with an `of_domain` edge (slug `function.<key>`),
5
+ * so it is addressable by the semantic domain path `/:<origin>:function.<key>`
6
+ * (e.g. as a `postInstall` target see `domain.ts`) on top of its worker route
7
+ * `/functions/<key>`. The SDK stamps `binding.remoteUrl` with the worker's public
8
+ * URL at install. The map key is the slug (single source of truth).
9
+ *
10
+ * A standalone function's `execute` receives the same request context as a
11
+ * method MINUS `self` (it is not node-bound): `{ params, kernel, deps, auth, … }`.
8
12
  */
9
- export const functions = {}
13
+ import { defineRemoteFunction } from '@astrale-os/sdk'
14
+ import { z } from 'zod'
15
+
16
+ import type { Deps } from '../deps'
17
+
18
+ import { monitor } from '../runtime/monitoring'
19
+
20
+ export const functions = {
21
+ // Post-install bootstrap, wired as `postInstall` in `domain.ts`. The kernel
22
+ // calls it ONCE after install, as __SYSTEM__ (its delegation minted for this
23
+ // function's own identity), so the domain comes up demonstrable. Must stay
24
+ // idempotent — a re-install runs it again. `auth: 'required'` (the default)
25
+ // makes `ctx.kernel` non-null; the body delegates to the per-operation seed
26
+ // logic in `runtime/monitor/seed.ts`.
27
+ seed: defineRemoteFunction<Record<string, never>, { seeded: number }, Deps>({
28
+ inputSchema: z.object({}),
29
+ outputSchema: z.object({ seeded: z.number().int() }),
30
+ authorize: async () => undefined,
31
+ execute: ({ kernel, deps }) => monitor.seed(kernel, deps.prober()),
32
+ }),
33
+ }
@@ -14,10 +14,10 @@
14
14
  "typecheck": "tsgo --noEmit"
15
15
  },
16
16
  "dependencies": {
17
- "@astrale-os/adapter-cloudflare": ">=0.2.0 <1.0.0",
17
+ "@astrale-os/adapter-cloudflare": ">=0.3.0 <1.0.0",
18
18
  "@astrale-os/kernel-core": ">=0.4.3 <1.0.0",
19
19
  "@astrale-os/kernel-dsl": ">=0.1.2 <1.0.0",
20
- "@astrale-os/sdk": ">=0.1.7 <1.0.0",
20
+ "@astrale-os/sdk": ">=0.2.0 <1.0.0",
21
21
  "@hono/node-server": "^1.19.0",
22
22
  "zod": "^4.3.6"
23
23
  },
@@ -9,8 +9,8 @@ importers:
9
9
  .:
10
10
  dependencies:
11
11
  '@astrale-os/adapter-cloudflare':
12
- specifier: '>=0.1.9 <1.0.0'
13
- version: 0.1.9(@hono/node-server@1.19.14(hono@4.12.25))(typescript@6.0.3)
12
+ specifier: '>=0.2.1 <1.0.0'
13
+ version: 0.2.1(@hono/node-server@1.19.14(hono@4.12.25))(typescript@6.0.3)
14
14
  '@astrale-os/kernel-core':
15
15
  specifier: '>=0.4.3 <1.0.0'
16
16
  version: 0.4.4(typescript@6.0.3)
@@ -18,8 +18,8 @@ importers:
18
18
  specifier: '>=0.1.2 <1.0.0'
19
19
  version: 0.1.2(typescript@6.0.3)
20
20
  '@astrale-os/sdk':
21
- specifier: '>=0.1.7 <1.0.0'
22
- version: 0.1.7(@hono/node-server@1.19.14(hono@4.12.25))(typescript@6.0.3)
21
+ specifier: '>=0.1.9 <1.0.0'
22
+ version: 0.1.9(@hono/node-server@1.19.14(hono@4.12.25))(typescript@6.0.3)
23
23
  '@hono/node-server':
24
24
  specifier: ^1.19.0
25
25
  version: 1.19.14(hono@4.12.25)
@@ -32,7 +32,7 @@ importers:
32
32
  version: 22.19.21
33
33
  '@typescript/native-preview':
34
34
  specifier: latest
35
- version: 7.0.0-dev.20260612.1
35
+ version: 7.0.0-dev.20260614.1
36
36
  typescript:
37
37
  specifier: ~6.0.1-rc
38
38
  version: 6.0.3
@@ -42,6 +42,9 @@ importers:
42
42
 
43
43
  client:
44
44
  dependencies:
45
+ '@astrale-os/shell':
46
+ specifier: '>=0.1.0 <1.0.0'
47
+ version: 0.1.1(typescript@6.0.3)
45
48
  react:
46
49
  specifier: ^19.2.0
47
50
  version: 19.2.7
@@ -73,8 +76,8 @@ importers:
73
76
 
74
77
  packages:
75
78
 
76
- '@astrale-os/adapter-cloudflare@0.1.9':
77
- resolution: {integrity: sha512-3kQDiqrbwiQ/t33p5giBL/J6pPZacbzsyHek0y79gfKJRY9XTeSYg5uNvPjRWAm69SEO63VTAg/OqxkdsLnxbA==}
79
+ '@astrale-os/adapter-cloudflare@0.2.1':
80
+ resolution: {integrity: sha512-WSPkko4KNHivvWrwJZEic/1aL4tUzzLeQ5Jfw+Gg5MsAYyyCVQGTduRRICkuuPO4rVAvzOUsOvPkoeXyPhw/6w==}
78
81
  engines: {node: '>=22'}
79
82
 
80
83
  '@astrale-os/kernel-api@0.4.4':
@@ -110,8 +113,8 @@ packages:
110
113
  '@astrale-os/kernel-server@0.4.4':
111
114
  resolution: {integrity: sha512-P9jPryh/Qhk+njfGGAAR9PWzWtg0LO6yPBqwG97V9USzcUFq7Rjx58dRBVMu3TN4wdVZAuWiEJrubjLraAJpcw==}
112
115
 
113
- '@astrale-os/sdk@0.1.7':
114
- resolution: {integrity: sha512-9zCXkWJtWjdQFc/PSsYFJg2TLzWurE5vcQTtGOC/rSvyjqUG+1iVr2EfdO9dEU6fKyacC2x8ecBCMF8fdTqHyQ==}
116
+ '@astrale-os/sdk@0.1.9':
117
+ resolution: {integrity: sha512-/pt6U6qtQnRJoM+rWUmkqO8HExyUzXw3S0PGp3jJq+UhyZ+ruacFiYBeP5FqdxsRtc2DzGTR3MbZvbPtVe5kag==}
115
118
  engines: {node: '>=22'}
116
119
  hasBin: true
117
120
  peerDependencies:
@@ -120,6 +123,9 @@ packages:
120
123
  '@hono/node-server':
121
124
  optional: true
122
125
 
126
+ '@astrale-os/shell@0.1.1':
127
+ resolution: {integrity: sha512-Gb725VeW6+Sb0el4WiArMG6gK5B8yzFIHoXvIVmQYd+RIgf+w1s06xL+NchE3o18672SQ7vI35aF6lTDyZTbPw==}
128
+
123
129
  '@babel/code-frame@7.29.7':
124
130
  resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==}
125
131
  engines: {node: '>=6.9.0'}
@@ -979,50 +985,50 @@ packages:
979
985
  '@types/ws@8.18.1':
980
986
  resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
981
987
 
982
- '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260612.1':
983
- resolution: {integrity: sha512-4GXIs4Z/4E0E1fRXmt1XE7mKRiwghkoNHstbqSHFl6Z7PeWBdTiSFR5j4JGo3Zp8RzZ+N6zZoVZOfG3HNqjWtQ==}
988
+ '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260614.1':
989
+ resolution: {integrity: sha512-2JHbdJ00FKTKDR1+NL4zhQBDlFZfZHEXaAarV6kbEjV0P47qKnSrAzzKHuponG0B9FqkPEMHOgu7WGJTBW2rHw==}
984
990
  engines: {node: '>=16.20.0'}
985
991
  cpu: [arm64]
986
992
  os: [darwin]
987
993
 
988
- '@typescript/native-preview-darwin-x64@7.0.0-dev.20260612.1':
989
- resolution: {integrity: sha512-YCXzMiUYnkOpg1Hh+TgYL5MZ190eia4LE8qpEti+j4QnZyARhQEbPWSUzXfQjinAy3Qcx7njamydSHpuBnODLQ==}
994
+ '@typescript/native-preview-darwin-x64@7.0.0-dev.20260614.1':
995
+ resolution: {integrity: sha512-/8enyEb1tDsVvUp4rDeA5DernrvWgD6cQ4rY6O6PH6BQK8fqwY+CcHEHmw2xgwfqoswHNYjznLvmQmHBOjHqLw==}
990
996
  engines: {node: '>=16.20.0'}
991
997
  cpu: [x64]
992
998
  os: [darwin]
993
999
 
994
- '@typescript/native-preview-linux-arm64@7.0.0-dev.20260612.1':
995
- resolution: {integrity: sha512-F4dPFLmRRPc2XeqQy45bDKQqbg4M4HoF7ybXae+D1LV8F44KR4ktUlXhp5pQBhwoQxZaLhA2D+NKwV/2UpILcA==}
1000
+ '@typescript/native-preview-linux-arm64@7.0.0-dev.20260614.1':
1001
+ resolution: {integrity: sha512-jqhqAXqyEUxJpno/wRfWGa72R3VTt7p2LRTOFJ0C1bx5dEKrVosQSOdr2m9+2VhjXFXNvorXsGZPIWqxLOo28Q==}
996
1002
  engines: {node: '>=16.20.0'}
997
1003
  cpu: [arm64]
998
1004
  os: [linux]
999
1005
 
1000
- '@typescript/native-preview-linux-arm@7.0.0-dev.20260612.1':
1001
- resolution: {integrity: sha512-ylu0HtI0NS90souTPje6j1iTqhIPIYaZ12yLO1n8lxHkDXKjggm6w9l4BL/uRWqWc4iVHWt8JUAC/my7X1/EDQ==}
1006
+ '@typescript/native-preview-linux-arm@7.0.0-dev.20260614.1':
1007
+ resolution: {integrity: sha512-zYrUKq5oC6fUoHpOmT3B65hFMhbdIlLp7T9RW1/6a+wSYoq9xTRAeFufQ2XZ9cpTJ1tfIvlUmtgJJ5CGE/cOrg==}
1002
1008
  engines: {node: '>=16.20.0'}
1003
1009
  cpu: [arm]
1004
1010
  os: [linux]
1005
1011
 
1006
- '@typescript/native-preview-linux-x64@7.0.0-dev.20260612.1':
1007
- resolution: {integrity: sha512-F/k8oic3wyq0WD5v7PQFPBlXaajbgzMnG9fkCWMwLYh2BUtD1VUjQ78dwDEz06AmOY+hsFrDuCtIZUyauBBU7w==}
1012
+ '@typescript/native-preview-linux-x64@7.0.0-dev.20260614.1':
1013
+ resolution: {integrity: sha512-K2c/DN7Q3a6Z+KIl7bq45xByuuGjacqWO/UPCa/iTBA/m6GDzoMJ/Q/DBLtLRHyROBRiy5kjgEZfyLy3Tp8ygw==}
1008
1014
  engines: {node: '>=16.20.0'}
1009
1015
  cpu: [x64]
1010
1016
  os: [linux]
1011
1017
 
1012
- '@typescript/native-preview-win32-arm64@7.0.0-dev.20260612.1':
1013
- resolution: {integrity: sha512-6/F10rOev8Wb2LM2F8C2ymuwcu+jrr06pcLR4AD8gy0YmTBjPvEZpKyBjCfdaJtIFH8S20dAVAK9HhYlw0JwnA==}
1018
+ '@typescript/native-preview-win32-arm64@7.0.0-dev.20260614.1':
1019
+ resolution: {integrity: sha512-C+C25Grr4sCbQIYPT5WfKYIL613ZIN9aGcUwDGMSTmIQ3azIR5MtdkSF4l4vsOC4lF8HwFV83MDa28JuQYhQFg==}
1014
1020
  engines: {node: '>=16.20.0'}
1015
1021
  cpu: [arm64]
1016
1022
  os: [win32]
1017
1023
 
1018
- '@typescript/native-preview-win32-x64@7.0.0-dev.20260612.1':
1019
- resolution: {integrity: sha512-8eRyhATm1dqo0PhAuyC908xlDUS9Onvm0BLvm81rAHRO6n3JhnzrwXL8s4jdvyDBiGK40R4d6JvY55edthg/rA==}
1024
+ '@typescript/native-preview-win32-x64@7.0.0-dev.20260614.1':
1025
+ resolution: {integrity: sha512-nJBR61NGiCMBJOpdzJ4ZgA/HEd+fqIb99ur39UljSH9xvFKFlRwDosyAQFD8UEwrZsUbXN0VPLJY5MDknug3GA==}
1020
1026
  engines: {node: '>=16.20.0'}
1021
1027
  cpu: [x64]
1022
1028
  os: [win32]
1023
1029
 
1024
- '@typescript/native-preview@7.0.0-dev.20260612.1':
1025
- resolution: {integrity: sha512-+rghVK/GENODCBed03PMAbHAo885P6Hw6HeW5daICel80OmAM49QeTmdcI7oii/9WMqX2UhM0sfNMH0Y5LeO+w==}
1030
+ '@typescript/native-preview@7.0.0-dev.20260614.1':
1031
+ resolution: {integrity: sha512-4N1ZBHJUcsjKJQnUCxKUemV3jnm0PKZIZ4xh7dXN/3/AfmckE8Z1llyqOFfDwGOf8oQpdgkwQ6JUm7pqI3bGPg==}
1026
1032
  engines: {node: '>=16.20.0'}
1027
1033
  hasBin: true
1028
1034
 
@@ -1518,9 +1524,9 @@ packages:
1518
1524
 
1519
1525
  snapshots:
1520
1526
 
1521
- '@astrale-os/adapter-cloudflare@0.1.9(@hono/node-server@1.19.14(hono@4.12.25))(typescript@6.0.3)':
1527
+ '@astrale-os/adapter-cloudflare@0.2.1(@hono/node-server@1.19.14(hono@4.12.25))(typescript@6.0.3)':
1522
1528
  dependencies:
1523
- '@astrale-os/sdk': 0.1.7(@hono/node-server@1.19.14(hono@4.12.25))(typescript@6.0.3)
1529
+ '@astrale-os/sdk': 0.1.9(@hono/node-server@1.19.14(hono@4.12.25))(typescript@6.0.3)
1524
1530
  jose: 6.2.3
1525
1531
  transitivePeerDependencies:
1526
1532
  - '@hono/node-server'
@@ -1589,7 +1595,7 @@ snapshots:
1589
1595
  - msgpackr
1590
1596
  - typescript
1591
1597
 
1592
- '@astrale-os/sdk@0.1.7(@hono/node-server@1.19.14(hono@4.12.25))(typescript@6.0.3)':
1598
+ '@astrale-os/sdk@0.1.9(@hono/node-server@1.19.14(hono@4.12.25))(typescript@6.0.3)':
1593
1599
  dependencies:
1594
1600
  '@astrale-os/kernel-api': 0.4.5(typescript@6.0.3)
1595
1601
  '@astrale-os/kernel-client': 0.2.2(typescript@6.0.3)
@@ -1605,6 +1611,14 @@ snapshots:
1605
1611
  - msgpackr
1606
1612
  - typescript
1607
1613
 
1614
+ '@astrale-os/shell@0.1.1(typescript@6.0.3)':
1615
+ dependencies:
1616
+ '@astrale-os/kernel-client': 0.2.2(typescript@6.0.3)
1617
+ '@astrale-os/kernel-core': 0.4.4(typescript@6.0.3)
1618
+ transitivePeerDependencies:
1619
+ - msgpackr
1620
+ - typescript
1621
+
1608
1622
  '@babel/code-frame@7.29.7':
1609
1623
  dependencies:
1610
1624
  '@babel/helper-validator-identifier': 7.29.7
@@ -2206,36 +2220,36 @@ snapshots:
2206
2220
  dependencies:
2207
2221
  '@types/node': 22.19.21
2208
2222
 
2209
- '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260612.1':
2223
+ '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260614.1':
2210
2224
  optional: true
2211
2225
 
2212
- '@typescript/native-preview-darwin-x64@7.0.0-dev.20260612.1':
2226
+ '@typescript/native-preview-darwin-x64@7.0.0-dev.20260614.1':
2213
2227
  optional: true
2214
2228
 
2215
- '@typescript/native-preview-linux-arm64@7.0.0-dev.20260612.1':
2229
+ '@typescript/native-preview-linux-arm64@7.0.0-dev.20260614.1':
2216
2230
  optional: true
2217
2231
 
2218
- '@typescript/native-preview-linux-arm@7.0.0-dev.20260612.1':
2232
+ '@typescript/native-preview-linux-arm@7.0.0-dev.20260614.1':
2219
2233
  optional: true
2220
2234
 
2221
- '@typescript/native-preview-linux-x64@7.0.0-dev.20260612.1':
2235
+ '@typescript/native-preview-linux-x64@7.0.0-dev.20260614.1':
2222
2236
  optional: true
2223
2237
 
2224
- '@typescript/native-preview-win32-arm64@7.0.0-dev.20260612.1':
2238
+ '@typescript/native-preview-win32-arm64@7.0.0-dev.20260614.1':
2225
2239
  optional: true
2226
2240
 
2227
- '@typescript/native-preview-win32-x64@7.0.0-dev.20260612.1':
2241
+ '@typescript/native-preview-win32-x64@7.0.0-dev.20260614.1':
2228
2242
  optional: true
2229
2243
 
2230
- '@typescript/native-preview@7.0.0-dev.20260612.1':
2244
+ '@typescript/native-preview@7.0.0-dev.20260614.1':
2231
2245
  optionalDependencies:
2232
- '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20260612.1
2233
- '@typescript/native-preview-darwin-x64': 7.0.0-dev.20260612.1
2234
- '@typescript/native-preview-linux-arm': 7.0.0-dev.20260612.1
2235
- '@typescript/native-preview-linux-arm64': 7.0.0-dev.20260612.1
2236
- '@typescript/native-preview-linux-x64': 7.0.0-dev.20260612.1
2237
- '@typescript/native-preview-win32-arm64': 7.0.0-dev.20260612.1
2238
- '@typescript/native-preview-win32-x64': 7.0.0-dev.20260612.1
2246
+ '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20260614.1
2247
+ '@typescript/native-preview-darwin-x64': 7.0.0-dev.20260614.1
2248
+ '@typescript/native-preview-linux-arm': 7.0.0-dev.20260614.1
2249
+ '@typescript/native-preview-linux-arm64': 7.0.0-dev.20260614.1
2250
+ '@typescript/native-preview-linux-x64': 7.0.0-dev.20260614.1
2251
+ '@typescript/native-preview-win32-arm64': 7.0.0-dev.20260614.1
2252
+ '@typescript/native-preview-win32-x64': 7.0.0-dev.20260614.1
2239
2253
 
2240
2254
  '@vitejs/plugin-react@5.2.0(vite@7.3.5(@types/node@22.19.21))':
2241
2255
  dependencies: