@nyte-ai/ai 0.0.18 → 0.0.21

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.
@@ -91,6 +91,9 @@ SOFTWARE.
91
91
  - Transcript reconciliation, checkpoint instruction snapshots, provider system
92
92
  updates, and cache warming are ported from the 1.0.0 release commit
93
93
  `a13d35a742c6ef8462812a28fbe1d8c8b7431c32`.
94
+ - Fitting images to model limits (`packages/core/src/agent/images.ts` and
95
+ `packages/host/src/images`) is ported from `@earendil-works/pi-durable`'s
96
+ images at commit `73f8de80bc87021375f8b525292ac07492253002`.
94
97
 
95
98
  License: MIT, with the following notice:
96
99
 
@@ -148,6 +151,16 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
148
151
  THE SOFTWARE.
149
152
  ```
150
153
 
154
+ ## Photon (`silvia-odwyer/photon`)
155
+
156
+ - Repository: https://github.com/silvia-odwyer/photon
157
+ - Package: `@silvia-odwyer/photon` 0.3.3
158
+ - What: the host decodes, orients, scales and re-encodes images for the model
159
+ with Photon's WebAssembly build.
160
+
161
+ License: Apache License 2.0, reproduced in the appendix below. Copyright 2023
162
+ Silvia O'Dwyer.
163
+
151
164
  ## Pierre
152
165
 
153
166
  - Repository: https://github.com/pierrecomputer/pierre
@@ -561,6 +574,59 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
561
574
  SOFTWARE.
562
575
  ```
563
576
 
577
+ ## snapcn (`snapcndev/snapcn`)
578
+
579
+ - Repository: https://github.com/snapcndev/snapcn
580
+ - What: the launch film's Logo Flicker and Check Cycle scenes
581
+ (`packages/lab/video/src/snap-cn/`) are adapted from snapcn's registry
582
+ components at commit `47ee435f17d85f74abf48b095b40d64fc9616fb0`.
583
+
584
+ License: MIT, with the following notice:
585
+
586
+ ```text
587
+ MIT License
588
+
589
+ Copyright (c) 2026 Sri Nath (snap-cn)
590
+
591
+ Permission is hereby granted, free of charge, to any person obtaining a copy
592
+ of this software and associated documentation files (the "Software"), to deal
593
+ in the Software without restriction, including without limitation the rights
594
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
595
+ copies of the Software, and to permit persons to whom the Software is
596
+ furnished to do so, subject to the following conditions:
597
+
598
+ The above copyright notice and this permission notice shall be included in all
599
+ copies or substantial portions of the Software.
600
+
601
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
602
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
603
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
604
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
605
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
606
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
607
+ SOFTWARE.
608
+ ```
609
+
610
+ ## Naybr, "Copyright Free Gameplay (No Commentary) - Minecraft Survival"
611
+
612
+ - Source: https://www.youtube.com/watch?v=GPsGyv5zTlM, by Naybr (youtube.com/@Naybr)
613
+ - What: the launch film opens on four shots from 0:30 to 2:30 of this video
614
+ (`clip` in `packages/lab/video/src/film/media.ts`). The footage is not in
615
+ the repository; `packages/lab/video/README.md` says how to fetch it.
616
+
617
+ License: Creative Commons Attribution, as published on YouTube. The author
618
+ allows use, modification, redistribution and monetisation, with this credit
619
+ wherever the gameplay is used: "Gameplay – youtube.com/@Naybr".
620
+
621
+ ## Photographs in the launch film
622
+
623
+ - Source: Wikimedia Commons; each file's author and source page are listed in
624
+ `photos` in `packages/lab/video/src/film/media.ts`.
625
+ - What: eleven photographs the launch film cuts between. They are not in the
626
+ repository.
627
+
628
+ License: every one is public domain or CC0. None requires attribution.
629
+
564
630
  ## Design references
565
631
 
566
632
  These credits record design sources. They do not grant a license to the
@@ -3,7 +3,7 @@ import {
3
3
  } from "./account-limits-cache-1jv43fhh.js";
4
4
  import {
5
5
  FileCredentialStore2
6
- } from "./account-limits-cache-c7v93krb.js";
6
+ } from "./account-limits-cache-yzyp0c2h.js";
7
7
  import {
8
8
  FileModelsStore2
9
9
  } from "./account-limits-cache-a55e14fr.js";
@@ -137,6 +137,22 @@ async function acquireLock(lockPath, signal) {
137
137
  });
138
138
  }
139
139
  }
140
+ async function publish(staging, path) {
141
+ const deadline = Date.now() + LOCK_TIMEOUT_MS;
142
+ for (;; ) {
143
+ try {
144
+ renameSync(staging, path);
145
+ return;
146
+ } catch (error) {
147
+ const busy = process.platform === "win32" && error instanceof Error && "code" in error && (error.code === "EPERM" || error.code === "EACCES" || error.code === "EBUSY");
148
+ if (!busy || Date.now() >= deadline)
149
+ throw error;
150
+ }
151
+ await new Promise((resolve) => {
152
+ setTimeout(resolve, LOCK_RETRY_MS);
153
+ });
154
+ }
155
+ }
140
156
 
141
157
  class FileCredentialStore2 {
142
158
  path;
@@ -162,7 +178,7 @@ class FileCredentialStore2 {
162
178
  }
163
179
  return parsed;
164
180
  }
165
- save(lock, entries) {
181
+ async save(lock, entries) {
166
182
  if (!lock.held()) {
167
183
  throw new Error(`Another process took over ${this.lockPath}; nothing was written`);
168
184
  }
@@ -170,7 +186,7 @@ class FileCredentialStore2 {
170
186
  try {
171
187
  writeFileSync(staging, `${JSON.stringify(entries, null, 2)}
172
188
  `, { mode: 384 });
173
- renameSync(staging, this.path);
189
+ await publish(staging, this.path);
174
190
  } catch (error) {
175
191
  rmSync(staging, { force: true });
176
192
  throw error;
@@ -216,7 +232,7 @@ class FileCredentialStore2 {
216
232
  delete entries[providerId];
217
233
  else
218
234
  entries[providerId] = next;
219
- this.save(lock, entries);
235
+ await this.save(lock, entries);
220
236
  }
221
237
  return next ?? current;
222
238
  }, options);
@@ -226,7 +242,7 @@ class FileCredentialStore2 {
226
242
  const entries = this.load();
227
243
  if (providerId in entries) {
228
244
  delete entries[providerId];
229
- this.save(lock, entries);
245
+ await this.save(lock, entries);
230
246
  }
231
247
  }, options);
232
248
  }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  defaultAuthPath2,
3
3
  FileCredentialStore2
4
- } from "../../chunks/account-limits-cache-c7v93krb.js";
4
+ } from "../../chunks/account-limits-cache-yzyp0c2h.js";
5
5
  import"../../chunks/account-limits-cache-b0x2sfya.js";
6
6
  import"../../chunks/account-limits-cache-rz8p1g5y.js";
7
7
  export {
package/dist/src/index.js CHANGED
@@ -47,7 +47,7 @@ import"../chunks/account-limits-cache-rz8p1g5y.js";
47
47
  import {
48
48
  defaultAuthPath2,
49
49
  FileCredentialStore2
50
- } from "../chunks/account-limits-cache-c7v93krb.js";
50
+ } from "../chunks/account-limits-cache-yzyp0c2h.js";
51
51
  import {
52
52
  defaultModelsStorePath2,
53
53
  FileModelsStore2
@@ -241,7 +241,7 @@ import {
241
241
  defaultModelPerProvider2,
242
242
  createNyteModels2,
243
243
  nyteProviders2
244
- } from "../chunks/account-limits-cache-ghe9ne4j.js";
244
+ } from "../chunks/account-limits-cache-wtg64ez7.js";
245
245
 
246
246
  // src/index.ts
247
247
  import { Type } from "typebox";
@@ -2,8 +2,8 @@ import {
2
2
  defaultModelPerProvider2,
3
3
  createNyteModels2,
4
4
  nyteProviders2
5
- } from "../../chunks/account-limits-cache-ghe9ne4j.js";
6
- import"../../chunks/account-limits-cache-c7v93krb.js";
5
+ } from "../../chunks/account-limits-cache-wtg64ez7.js";
6
+ import"../../chunks/account-limits-cache-yzyp0c2h.js";
7
7
  import"../../chunks/account-limits-cache-09vs98g6.js";
8
8
  import"../../chunks/account-limits-cache-5rx2pfm5.js";
9
9
  import"../../chunks/account-limits-cache-hj3ek3ty.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nyte-ai/ai",
3
- "version": "0.0.18",
3
+ "version": "0.0.21",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -131,7 +131,7 @@
131
131
  "dependencies": {
132
132
  "@anthropic-ai/sdk": "0.129.0",
133
133
  "@google/genai": "1.52.0",
134
- "@nyte-ai/schema": "0.0.18",
134
+ "@nyte-ai/schema": "0.0.21",
135
135
  "openai": "6.40.0",
136
136
  "partial-json": "0.1.7",
137
137
  "typebox": "1.3.36"
@@ -148,7 +148,7 @@
148
148
  "clean": "rm -rf node_modules .turbo",
149
149
  "models:generate": "node scripts/generate-models.ts",
150
150
  "models:publish": "node scripts/publish-models.ts",
151
- "typecheck": "tsgo --noEmit",
151
+ "typecheck": "tsrs --noEmit",
152
152
  "test": "vitest --run",
153
153
  "build:package": "bun ../../scripts/sdk-packages.mjs build ai"
154
154
  }