@astrale-os/sdk 0.5.0-beta.130 → 0.5.0-beta.131

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/README.md CHANGED
@@ -101,7 +101,7 @@ installation ledgers without changing their existing authority or integrity evid
101
101
  ### Prerequisites
102
102
 
103
103
  - Node.js 26.7.0 (default) or Node.js 24; published packages remain compatible with Node.js 22+
104
- - pnpm 12.0.0
104
+ - pnpm 12.1.0
105
105
 
106
106
  ### Setup
107
107
 
@@ -110,7 +110,7 @@ The repository installs autonomously from its versioned npm-only lockfile:
110
110
  ```bash
111
111
  git clone https://github.com/astrale-os/sdk.git
112
112
  cd sdk
113
- STANDALONE=true pnpm install --frozen-lockfile
113
+ ./setup.sh
114
114
  ```
115
115
 
116
116
  It can also be consumed as a submodule of the main Astrale workspace:
@@ -16,7 +16,9 @@ type MethodValues<Class> = Class extends {
16
16
  };
17
17
  };
18
18
  } ? Values<Instance> | Values<Static> : never;
19
- type Executable<Callable> = Callable extends ResolvedMethod<unknown, unknown, boolean, infer Abstract> ? Abstract extends true ? never : Callable : Callable;
19
+ type Executable<Callable> = Callable extends ResolvedMethod ? Callable extends {
20
+ readonly executable: true;
21
+ } ? Callable : never : Callable;
20
22
  /** Every root-owned callable implementation contract, independent of Function or Method topology. */
21
23
  export type LocalCallable<DomainValue extends Domain> = Extract<Values<DomainValue['functions']>, ResolvedCallable> | Extract<Executable<MethodValues<Values<DomainValue['classes']>>>, ResolvedCallable>;
22
24
  export type ActionAddressOf<Callable> = Callable extends {
@@ -12,11 +12,11 @@ export function runtimeCallables(domain) {
12
12
  if (selected.kind !== 'node')
13
13
  continue;
14
14
  for (const callable of selected.self.methods) {
15
- if (!callable.abstract)
15
+ if (callable.executable)
16
16
  append(callable);
17
17
  }
18
18
  for (const callable of selected.self.static.methods) {
19
- if (!callable.abstract)
19
+ if (callable.executable)
20
20
  append(callable);
21
21
  }
22
22
  }
@@ -31,7 +31,7 @@ function bindDependency(dependency, session) {
31
31
  const callable = dependency.callable(selected.key);
32
32
  if (callable !== selected || Key.origin(callable.key) !== dependency.origin)
33
33
  invalid();
34
- if ('owner' in callable && (callable.abstract || !ownMethod(dependency, callable)))
34
+ if ('owner' in callable && (!callable.executable || !ownMethod(dependency, callable)))
35
35
  invalid();
36
36
  if ('owner' in callable && !callable.static) {
37
37
  if (args.length < 2 || args.length > 3 || typeof args[0] !== 'string')
@@ -64,5 +64,5 @@ function options(value) {
64
64
  return value;
65
65
  }
66
66
  function invalid() {
67
- throw new TypeError('Dependency invocation requires one owned concrete callable, its input, and valid instance/options.');
67
+ throw new TypeError('Dependency invocation requires one owned executable callable, its input, and valid instance/options.');
68
68
  }
@@ -83,9 +83,22 @@ export function watchSources(input) {
83
83
  }
84
84
  return Object.freeze({
85
85
  update(next) {
86
- sources = canonicalSources(next);
87
- sourceFingerprints = fingerprints(sources);
86
+ const nextSources = canonicalSources(next);
87
+ const nextFingerprints = fingerprints(nextSources);
88
+ // A completed build does not prove it consumed the current file contents.
89
+ // Retain edits that raced its commit, even if the OS event is still queued.
90
+ let changed = false;
91
+ for (const [path, value] of nextFingerprints) {
92
+ if (sourceFingerprints.has(path) && sourceFingerprints.get(path) !== value) {
93
+ dirty = true;
94
+ changed = true;
95
+ }
96
+ }
97
+ sources = nextSources;
98
+ sourceFingerprints = nextFingerprints;
88
99
  syncDirectoryWatchers();
100
+ if (changed)
101
+ schedule();
89
102
  },
90
103
  async stop() {
91
104
  if (closed)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astrale-os/sdk",
3
- "version": "0.5.0-beta.130",
3
+ "version": "0.5.0-beta.131",
4
4
  "description": "Schema-first SDK for defining, composing, and deploying Astrale domains",
5
5
  "keywords": [
6
6
  "astrale",
@@ -237,11 +237,11 @@
237
237
  "registry": "https://registry.npmjs.org/"
238
238
  },
239
239
  "dependencies": {
240
- "@astrale-os/kernel-client": "0.6.0-beta.57",
241
- "@astrale-os/kernel-core": "0.9.0-beta.44",
242
- "@astrale-os/kernel-dsl": "0.2.0-beta.32",
243
- "@astrale-os/kernel-protocol": "0.5.0-beta.48",
244
- "@astrale-os/kernel-server": "0.5.0-beta.50",
240
+ "@astrale-os/kernel-client": "0.6.0-beta.58",
241
+ "@astrale-os/kernel-core": "0.9.0-beta.45",
242
+ "@astrale-os/kernel-dsl": "0.2.0-beta.33",
243
+ "@astrale-os/kernel-protocol": "0.5.0-beta.49",
244
+ "@astrale-os/kernel-server": "0.5.0-beta.51",
245
245
  "@lucide/icons": "1.34.0",
246
246
  "@typescript/native-preview": "7.0.0-dev.20260707.2",
247
247
  "hono": "^4.13.2",