@wenathlan/argan 2.0.165 → 2.0.167

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
@@ -21,7 +21,7 @@ pnpm dev
21
21
 
22
22
  - `family.ts` — the family keyword file (the fold law): the single table of
23
23
  the eight siblings beside argan with the spec §12 accent of each one — the
24
- shell rail foot, the landing footer and `tests/family.test.ts` all consume
24
+ shell rail foot, the landing footer and `test/family.test.ts` all consume
25
25
  this one table — plus the retired `familyurl.ts` arm riding as the
26
26
  familyurl lane: the verbatim relative-url contract (`"../" + slug + "/"`)
27
27
  that keeps every cross-app link mount-proof.
package/docs/argan.md ADDED
@@ -0,0 +1,32 @@
1
+ # argan — the dossier
2
+
3
+ The network and DNS gateway library of the family. Argan owns every network logic: zones, records, dnssec, handshake, resolvers.
4
+
5
+ ## Identity
6
+
7
+ - Category: network library / DNS gateway.
8
+ - Competitor space: Cloudflare DNS, AWS Route 53.
9
+ - Consumer law: the family imports argan as a library; no sibling repeats a network logic argan owns.
10
+
11
+ ## Objective
12
+
13
+ Give the family one honest network engine: every DNS query, every record walk and every gateway handshake resolves through argan — never duplicated inside another app.
14
+
15
+ ## Features
16
+
17
+ - DNS zone management: create, walk and validate zones and records.
18
+ - DNSSEC signing chain and validation seats.
19
+ - Gateway handshake logic for the provider family.
20
+ - Clean URL normalization and network seam helpers.
21
+ - DNS-over-HTTPS wire composition (RFC 8484) consumed by the family via library import.
22
+ - Resolver catalog and network policy seats.
23
+
24
+ ## Interactions
25
+
26
+ - Library surface consumed by devthink, getry and vault (the network seam).
27
+ - CLI console with the family chat design (same face, terminal seat).
28
+
29
+ ## Doctrine
30
+
31
+ - One engine, one owner: network logic lives here alone.
32
+ - English professional surface, minimalist text, title and description only.
@@ -6,7 +6,7 @@ The eleven distribution lanes of the PR14 law and the honest status each lane an
6
6
  | --- | --- | --- | --- |
7
7
  | npmjs | package.json — @wenathlan/argan | live | the family-npmjs lane publishes the envelope every release rung |
8
8
  | GitHub Packages npm | package.json — @wenathlan/argan | live | the family-githubnpm lane publishes the same envelope idempotently |
9
- | Maven | pom.xml — io.github.wenathlan:argan | live | the family-maven lane deploys the jar |
9
+ | Maven | pom.xml — com.wenathlan:argan | live | the family-maven lane deploys the jar |
10
10
  | NuGet | argan.csproj | live | the family-nuget lane packs the envelope |
11
11
  | Gradle | build.gradle.kts — com.wenathlan:argan | live | the family-gradle lane publishes the module |
12
12
  | Ruby Gems | argan.gemspec | live | the family-rubygems lane pushes the gem |
package/docs/engine.md CHANGED
@@ -57,4 +57,4 @@ Argan is the DNS and gateway library of the wenathlan family (`@wenathlan/argan`
57
57
 
58
58
  ## Testing
59
59
 
60
- Seven vitest batteries at `tests/`: `design.test.ts`, `dnssec.test.ts`, `family.test.ts`, `mimetypes.test.ts` (pins the 3217 count), `protocols.test.ts` (pins 231 rows and the 144 TLS-capable wires), `sandboxmodality.test.ts` and `zonediff.test.ts`.
60
+ Seven vitest batteries at `test/`: `design.test.ts`, `dnssec.test.ts`, `family.test.ts`, `mimetypes.test.ts` (pins the 3217 count), `protocols.test.ts` (pins 231 rows and the 144 TLS-capable wires), `sandboxmodality.test.ts` and `zonediff.test.ts`.
package/package.json CHANGED
@@ -1,74 +1,9 @@
1
1
  {
2
2
  "name": "@wenathlan/argan",
3
- "version": "2.0.165",
3
+ "version": "2.0.167",
4
+ "private": false,
4
5
  "description": "argan is the DNS and gateway library of the wenathlan family: zones, records, dnssec and handshake — the system network library whose site shares the unified database. The envelope distributes the documentation set, the zero-build site and the tests directory as one package.",
5
- "keywords": [
6
- "argan",
7
- "dns",
8
- "gateway",
9
- "zones",
10
- "dnssec",
11
- "network",
12
- "documentation",
13
- "static-site"
14
- ],
15
- "homepage": "https://github.com/wenathlan/devthink/tree/main/argan",
16
- "bugs": {
17
- "url": "https://github.com/wenathlan/devthink/issues"
18
- },
19
- "repository": {
20
- "type": "git",
21
- "url": "https://github.com/wenathlan/devthink"
22
- },
23
6
  "license": "GPL-3.0-only",
24
- "type": "module",
25
- "bin": {
26
- "argan": "./cli.ts"
27
- },
28
- "exports": {
29
- "./mimetypes": {
30
- "types": "./mimetypes.ts",
31
- "import": "./mimetypes.ts",
32
- "default": "./mimetypes.ts"
33
- }
34
- },
35
- "files": [
36
- "README.md",
37
- "docs",
38
- "tests",
39
- "cli.ts",
40
- "mimetypes.ts"
41
- ],
42
- "engines": {
43
- "babel": "^7.28.0",
44
- "bare": "^1.18.0",
45
- "bun": "^1.4.4",
46
- "cargo": ">=1.85.0",
47
- "chrome": "^16.0.912",
48
- "cnpm": "^9.4.0",
49
- "corepack": "^0.35.0",
50
- "deno": "^2.9.5",
51
- "dotnet": ">=8.0.0",
52
- "ecmascript": "^5.0.0",
53
- "firefox": ">=0.8.0",
54
- "go": ">=1.24.0",
55
- "iojs": "^1.0.0",
56
- "java": ">=17",
57
- "node": ">=26.13.0 <27",
58
- "npm": "^12.2.1",
59
- "pnpm": "^12.6.0",
60
- "python": ">=3.11.0",
61
- "rust": ">=1.85.0",
62
- "teleport": ">=0.2.0",
63
- "typescript": "^5.8.0",
64
- "v": "^0.5.2",
65
- "vscode": "^1.118.0",
66
- "yaml": "^2.9.1",
67
- "yarn": "^4.17.1"
68
- },
69
- "peerDependencies": {
70
- "playwright": "^1.63.0"
71
- },
72
7
  "scripts": {
73
8
  "dev": "vite --host",
74
9
  "build": "vite build",
@@ -80,45 +15,208 @@
80
15
  "restore:entry": "node -e \"const{readFileSync}=require('node:fs');const{execSync}=require('node:child_process');const script=/script[^>]*App\\.tsx/;const triad=/family=Inter[\\s\\S]*Geist\\+Mono/;const face=(h)=>script.test(h)&&triad.test(h);if(face(readFileSync('index.html','utf8'))){console.log('index.html already rides the source face');process.exit(0)}if(!face(execSync('git show HEAD:./index.html',{encoding:'utf8'}))){console.error('refusing: HEAD index.html is not the canonical source face yet (script App.tsx + the font triad) - land the source-face fix first; nothing was touched');process.exit(1)}execSync('git checkout -- index.html',{stdio:'inherit'});console.log('index.html restored from HEAD (the source face)')\""
81
16
  },
82
17
  "dependencies": {
18
+ "@ai-sdk/openai": "^4.0.110",
19
+ "@ai-sdk/openai-compatible": "^3.0.86",
20
+ "@ai-sdk/provider-utils": "^5.0.75",
21
+ "@anthropic-ai/sdk": "^1.6.0",
22
+ "@biomejs/biome": "^2.6.6",
23
+ "@capacitor/android": "^8.6.0",
24
+ "@capacitor/cli": "^8.6.0",
25
+ "@capacitor/core": "^8.6.0",
26
+ "@capacitor/ios": "^8.6.0",
27
+ "@dnd-kit/core": "^6.3.1",
28
+ "@dnd-kit/sortable": "^10.0.0",
29
+ "@dnd-kit/utilities": "^3.2.2",
83
30
  "@fluentui/react-icons": "^2.0.345",
84
31
  "@fontsource-variable/bricolage-grotesque": "^5.3.0",
85
32
  "@fontsource-variable/geist-mono": "^5.3.0",
86
33
  "@fontsource-variable/inter": "^5.3.0",
87
34
  "@fontsource-variable/jetbrains-mono": "^5.3.0",
88
35
  "@fontsource-variable/outfit": "^5.3.0",
36
+ "@fontsource-variable/urbanist": "^5.3.0",
37
+ "@grpc/grpc-js": "^1.14.7",
89
38
  "@hono/node-server": "^2.1.6",
39
+ "@hookform/resolvers": "^7.0.3",
40
+ "@humanfs/node": "^0.17.0",
90
41
  "@libsql/client": "^0.18.0",
42
+ "@mdxeditor/editor": "^4.5.0",
43
+ "@opencode-ai/sdk": "^1.19.5",
91
44
  "@prisma/adapter-libsql": "^7.10.1",
92
45
  "@prisma/client": "^7.10.1",
93
- "@wenathlan/argan": "~2.0.155",
94
- "@wenathlan/cadria": "~2.0.155",
95
- "@wenathlan/debonair": "~2.0.155",
96
- "@wenathlan/devthink": "~2.0.154",
97
- "@wenathlan/getry": "~2.0.155",
98
- "@wenathlan/saddle": "~2.0.155",
99
- "@wenathlan/vault": "~2.0.155",
46
+ "@radix-ui/react-accordion": "^1.3.1",
47
+ "@radix-ui/react-alert-dialog": "^1.2.1",
48
+ "@radix-ui/react-aspect-ratio": "^1.2.0",
49
+ "@radix-ui/react-avatar": "^1.3.1",
50
+ "@radix-ui/react-checkbox": "^1.4.1",
51
+ "@radix-ui/react-collapsible": "^1.2.1",
52
+ "@radix-ui/react-context-menu": "^2.4.1",
53
+ "@radix-ui/react-dialog": "^1.3.1",
54
+ "@radix-ui/react-dropdown-menu": "^2.2.1",
55
+ "@radix-ui/react-hover-card": "^1.2.1",
56
+ "@radix-ui/react-label": "^2.1.17",
57
+ "@radix-ui/react-menubar": "^1.2.1",
58
+ "@radix-ui/react-navigation-menu": "^1.4.1",
59
+ "@radix-ui/react-popover": "^1.3.1",
60
+ "@radix-ui/react-progress": "^1.2.1",
61
+ "@radix-ui/react-radio-group": "^1.5.1",
62
+ "@radix-ui/react-scroll-area": "^1.4.0",
63
+ "@radix-ui/react-select": "^2.4.1",
64
+ "@radix-ui/react-separator": "^1.2.0",
65
+ "@radix-ui/react-slider": "^1.6.1",
66
+ "@radix-ui/react-slot": "^1.5.0",
67
+ "@radix-ui/react-switch": "^1.4.1",
68
+ "@radix-ui/react-tabs": "^1.2.1",
69
+ "@radix-ui/react-toast": "^1.3.1",
70
+ "@radix-ui/react-toggle": "^1.2.1",
71
+ "@radix-ui/react-toggle-group": "^1.2.1",
72
+ "@radix-ui/react-tooltip": "^1.4.1",
73
+ "@reactuses/core": "^6.6.1",
74
+ "@tailwindcss/postcss": "^4.3.5",
75
+ "@tailwindcss/typography": "^0.5.20",
76
+ "@tailwindcss/vite": "^4.3.5",
77
+ "@tanstack/react-query": "^5.107.1",
78
+ "@tanstack/react-table": "^9.3.1",
79
+ "@tsconfig/node26": "^26.0.1",
80
+ "@types/babel__core": "^7.20.5",
81
+ "@types/better-sqlite3": "^9.6.0",
82
+ "@types/chrome": "^0.3.7",
83
+ "@types/express": "^5.0.6",
84
+ "@types/google.maps": "^3.66.10",
85
+ "@types/node": "^26.6.6",
86
+ "@types/react": "^19.3.0",
87
+ "@types/react-dom": "^19.3.0",
88
+ "@types/three": "^0.187.0",
89
+ "@vitejs/plugin-react": "^6.2.1",
90
+ "@wenathlan/argan": "~2.0.166",
91
+ "@wenathlan/cadria": "~2.0.166",
92
+ "@wenathlan/debonair": "~2.0.166",
93
+ "@wenathlan/devthink": "~2.0.166",
94
+ "@wenathlan/getry": "~2.0.166",
95
+ "@wenathlan/saddle": "~2.0.166",
96
+ "@wenathlan/vault": "~2.0.166",
97
+ "add": "^2.0.9",
98
+ "ai": "^7.0.164",
99
+ "autoprefixer": "^10.6.2",
100
+ "axios": "^1.21.0",
101
+ "baseline-browser-mapping": "^2.11.35",
100
102
  "better-sqlite3": "^13.0.3",
103
+ "body-parser": "^2.4.0",
104
+ "bun-types": "^1.4.4",
105
+ "cheerio": "^1.2.0",
106
+ "class-variance-authority": "^0.7.1",
107
+ "clsx": "^2.1.1",
108
+ "cmdk": "^1.1.1",
109
+ "commander": "^15.0.0",
110
+ "date-fns": "^4.4.0",
111
+ "deepmerge-ts": "^8.0.2",
112
+ "dockerode": "^5.0.1",
113
+ "drizzle-kit": "^0.31.11",
101
114
  "drizzle-orm": "^0.45.4",
115
+ "embla-carousel-react": "^8.6.0",
116
+ "emittery": "^2.2.0",
117
+ "esbuild": "^0.28.2",
118
+ "eslint": "^10.14.0",
119
+ "eslint-config-next": "^16.4.5",
120
+ "express": "^5.3.0",
121
+ "fast-check": "^4.10.2",
122
+ "fast-uri": "^4.2.3",
123
+ "follow-redirects": "^1.16.2",
124
+ "framer-motion": "^14.10.1",
125
+ "glob": "^14.0.4",
102
126
  "gsap": "^3.15.1",
103
127
  "hono": "^4.13.16",
104
- "ink": "^7.1.1",
105
- "lucide-react": "^1.68.0",
106
- "motion": "^12.43.0",
128
+ "ink": "^8.0.0",
129
+ "input-otp": "^1.5.0",
130
+ "js-yaml": "^5.5.0",
131
+ "jsdom": "^31.0.0",
132
+ "katex": "^0.19.1",
133
+ "lucide-react": "^1.70.0",
134
+ "minimatch": "^11.0.5",
135
+ "motion": "^14.10.1",
136
+ "mysql2": "^3.24.6",
137
+ "nanoid": "^6.0.2",
138
+ "next": "^16.4.5",
139
+ "next-auth": "^4.24.15",
140
+ "next-intl": "^4.14.9",
141
+ "next-themes": "^0.4.6",
142
+ "openai": "^7.53.0",
143
+ "p-limit": "^7.3.3",
144
+ "p-retry": "^9.0.0",
145
+ "playwright": "^1.65.0",
146
+ "pnpm": "^12.18.0",
147
+ "postcss": "^8.5.32",
148
+ "postcss-selector-parser": "^7.1.7",
149
+ "prettier": "^3.9.10",
150
+ "prisma": "^7.10.1",
151
+ "proxy-addr": "^2.0.8",
107
152
  "react": "^19.3.1",
153
+ "react-day-picker": "^10.0.2",
108
154
  "react-devtools-core": "^8.0.0",
109
155
  "react-dom": "^19.3.1",
156
+ "react-hook-form": "^7.91.0",
157
+ "react-markdown": "^10.1.0",
158
+ "react-resizable-panels": "^4.19.1",
159
+ "react-syntax-highlighter": "^16.1.2",
160
+ "recharts": "^3.10.1",
161
+ "request-ip": "^3.3.0",
162
+ "sharp": "^0.35.5",
163
+ "shell-quote": "^1.12.0",
164
+ "smol-toml": "^1.9.1",
165
+ "sonner": "^2.0.8",
166
+ "source-map-js": "^1.2.2",
167
+ "streamdown": "^2.7.1",
168
+ "tailwind-merge": "^3.7.0",
169
+ "tailwindcss": "^4.3.5",
170
+ "tailwindcss-animate": "^1.0.7",
110
171
  "three": "^0.187.0",
172
+ "ts-node": "^10.9.2",
173
+ "tsup": "^9.0.0",
174
+ "tsx": "^4.23.15",
175
+ "tw-animate-css": "^1.4.0",
176
+ "typescript": "^7.0.2",
177
+ "undici": "^8.12.4",
178
+ "uuid": "^14.0.3",
179
+ "vaul": "^1.1.2",
180
+ "vite": "^8.3.6",
181
+ "vite-plugin-manus-runtime": "^0.0.59",
182
+ "vitest": "^5.1.0",
183
+ "webpack": "^5.112.2",
184
+ "webpack-cli": "^7.3.1",
111
185
  "wouter": "^3.13.0",
112
- "z-ai-web-dev-sdk": "^0.0.18"
186
+ "yaml": "^2.9.1",
187
+ "z-ai-web-dev-sdk": "^0.0.18",
188
+ "zod": "^4.6.7",
189
+ "zustand": "^5.1.0"
113
190
  },
114
191
  "devDependencies": {
115
- "@biomejs/biome": "^2.6.5",
192
+ "@ai-sdk/openai": "^4.0.110",
193
+ "@ai-sdk/openai-compatible": "^3.0.86",
194
+ "@ai-sdk/provider-utils": "^5.0.75",
195
+ "@anthropic-ai/sdk": "^1.6.0",
196
+ "@biomejs/biome": "^2.6.6",
116
197
  "@capacitor/android": "^8.6.0",
117
198
  "@capacitor/cli": "^8.6.0",
118
199
  "@capacitor/core": "^8.6.0",
119
200
  "@capacitor/ios": "^8.6.0",
120
- "@hookform/resolvers": "^5.9.2",
201
+ "@dnd-kit/core": "^6.3.1",
202
+ "@dnd-kit/sortable": "^10.0.0",
203
+ "@dnd-kit/utilities": "^3.2.2",
204
+ "@fluentui/react-icons": "^2.0.345",
205
+ "@fontsource-variable/bricolage-grotesque": "^5.3.0",
206
+ "@fontsource-variable/geist-mono": "^5.3.0",
207
+ "@fontsource-variable/inter": "^5.3.0",
208
+ "@fontsource-variable/jetbrains-mono": "^5.3.0",
209
+ "@fontsource-variable/outfit": "^5.3.0",
210
+ "@fontsource-variable/urbanist": "^5.3.0",
211
+ "@grpc/grpc-js": "^1.14.7",
212
+ "@hono/node-server": "^2.1.6",
213
+ "@hookform/resolvers": "^7.0.3",
214
+ "@humanfs/node": "^0.17.0",
215
+ "@libsql/client": "^0.18.0",
216
+ "@mdxeditor/editor": "^4.5.0",
121
217
  "@opencode-ai/sdk": "^1.19.5",
218
+ "@prisma/adapter-libsql": "^7.10.1",
219
+ "@prisma/client": "^7.10.1",
122
220
  "@radix-ui/react-accordion": "^1.3.1",
123
221
  "@radix-ui/react-alert-dialog": "^1.2.1",
124
222
  "@radix-ui/react-aspect-ratio": "^1.2.0",
@@ -142,96 +240,328 @@
142
240
  "@radix-ui/react-slot": "^1.5.0",
143
241
  "@radix-ui/react-switch": "^1.4.1",
144
242
  "@radix-ui/react-tabs": "^1.2.1",
243
+ "@radix-ui/react-toast": "^1.3.1",
145
244
  "@radix-ui/react-toggle": "^1.2.1",
146
245
  "@radix-ui/react-toggle-group": "^1.2.1",
147
246
  "@radix-ui/react-tooltip": "^1.4.1",
148
- "@tailwindcss/postcss": "^4.3.4",
247
+ "@reactuses/core": "^6.6.1",
248
+ "@tailwindcss/postcss": "^4.3.5",
149
249
  "@tailwindcss/typography": "^0.5.20",
150
- "@tailwindcss/vite": "^4.3.4",
250
+ "@tailwindcss/vite": "^4.3.5",
251
+ "@tanstack/react-query": "^5.107.1",
252
+ "@tanstack/react-table": "^9.3.1",
151
253
  "@tsconfig/node26": "^26.0.1",
254
+ "@types/babel__core": "^7.20.5",
152
255
  "@types/better-sqlite3": "^9.6.0",
153
256
  "@types/chrome": "^0.3.7",
154
257
  "@types/express": "^5.0.6",
155
- "@types/google.maps": "^3.66.9",
258
+ "@types/google.maps": "^3.66.10",
156
259
  "@types/node": "^26.6.6",
157
260
  "@types/react": "^19.3.0",
158
261
  "@types/react-dom": "^19.3.0",
159
262
  "@types/three": "^0.187.0",
160
263
  "@vitejs/plugin-react": "^6.2.1",
264
+ "@wenathlan/argan": "~2.0.166",
265
+ "@wenathlan/cadria": "~2.0.166",
266
+ "@wenathlan/debonair": "~2.0.166",
267
+ "@wenathlan/devthink": "~2.0.166",
268
+ "@wenathlan/getry": "~2.0.166",
269
+ "@wenathlan/saddle": "~2.0.166",
270
+ "@wenathlan/vault": "~2.0.166",
161
271
  "add": "^2.0.9",
272
+ "ai": "^7.0.164",
162
273
  "autoprefixer": "^10.6.2",
163
274
  "axios": "^1.21.0",
275
+ "baseline-browser-mapping": "^2.11.35",
276
+ "better-sqlite3": "^13.0.3",
277
+ "body-parser": "^2.4.0",
164
278
  "bun-types": "^1.4.4",
165
279
  "cheerio": "^1.2.0",
166
280
  "class-variance-authority": "^0.7.1",
167
281
  "clsx": "^2.1.1",
168
282
  "cmdk": "^1.1.1",
283
+ "commander": "^15.0.0",
284
+ "date-fns": "^4.4.0",
285
+ "deepmerge-ts": "^8.0.2",
286
+ "dockerode": "^5.0.1",
169
287
  "drizzle-kit": "^0.31.11",
288
+ "drizzle-orm": "^0.45.4",
170
289
  "embla-carousel-react": "^8.6.0",
171
290
  "emittery": "^2.2.0",
172
291
  "esbuild": "^0.28.2",
292
+ "eslint": "^10.14.0",
293
+ "eslint-config-next": "^16.4.5",
173
294
  "express": "^5.3.0",
174
295
  "fast-check": "^4.10.2",
175
- "framer-motion": "^13.5.1",
296
+ "fast-uri": "^4.2.3",
297
+ "follow-redirects": "^1.16.2",
298
+ "framer-motion": "^14.10.1",
299
+ "glob": "^14.0.4",
300
+ "gsap": "^3.15.1",
301
+ "hono": "^4.13.16",
302
+ "ink": "^8.0.0",
176
303
  "input-otp": "^1.5.0",
177
- "jsdom": "26.1.0",
304
+ "js-yaml": "^5.5.0",
305
+ "jsdom": "^31.0.0",
306
+ "katex": "^0.19.1",
307
+ "lucide-react": "^1.70.0",
308
+ "minimatch": "^11.0.5",
309
+ "motion": "^14.10.1",
178
310
  "mysql2": "^3.24.6",
179
311
  "nanoid": "^6.0.2",
312
+ "next": "^16.4.5",
313
+ "next-auth": "^4.24.15",
314
+ "next-intl": "^4.14.9",
180
315
  "next-themes": "^0.4.6",
316
+ "openai": "^7.53.0",
181
317
  "p-limit": "^7.3.3",
182
- "p-retry": "^8.0.1",
183
- "playwright": "^1.64.1",
184
- "pnpm": "^12.16.1",
318
+ "p-retry": "^9.0.0",
319
+ "playwright": "^1.65.0",
320
+ "pnpm": "^12.18.0",
185
321
  "postcss": "^8.5.32",
322
+ "postcss-selector-parser": "^7.1.7",
186
323
  "prettier": "^3.9.10",
187
324
  "prisma": "^7.10.1",
325
+ "proxy-addr": "^2.0.8",
326
+ "react": "^19.3.1",
188
327
  "react-day-picker": "^10.0.2",
328
+ "react-devtools-core": "^8.0.0",
329
+ "react-dom": "^19.3.1",
189
330
  "react-hook-form": "^7.91.0",
190
- "react-resizable-panels": "^4.18.1",
331
+ "react-markdown": "^10.1.0",
332
+ "react-resizable-panels": "^4.19.1",
333
+ "react-syntax-highlighter": "^16.1.2",
191
334
  "recharts": "^3.10.1",
335
+ "request-ip": "^3.3.0",
336
+ "sharp": "^0.35.5",
337
+ "shell-quote": "^1.12.0",
338
+ "smol-toml": "^1.9.1",
192
339
  "sonner": "^2.0.8",
340
+ "source-map-js": "^1.2.2",
193
341
  "streamdown": "^2.7.1",
194
342
  "tailwind-merge": "^3.7.0",
195
- "tailwindcss": "^4.3.4",
343
+ "tailwindcss": "^4.3.5",
196
344
  "tailwindcss-animate": "^1.0.7",
197
- "tsup": "^8.5.1",
345
+ "three": "^0.187.0",
346
+ "ts-node": "^10.9.2",
347
+ "tsup": "^9.0.0",
198
348
  "tsx": "^4.23.15",
199
349
  "tw-animate-css": "^1.4.0",
200
350
  "typescript": "^7.0.2",
351
+ "undici": "^8.12.4",
352
+ "uuid": "^14.0.3",
201
353
  "vaul": "^1.1.2",
202
- "vite": "^8.3.5",
354
+ "vite": "^8.3.6",
203
355
  "vite-plugin-manus-runtime": "^0.0.59",
204
356
  "vitest": "^5.1.0",
205
357
  "webpack": "^5.112.2",
206
- "webpack-cli": "^6.0.1",
358
+ "webpack-cli": "^7.3.1",
359
+ "wouter": "^3.13.0",
207
360
  "yaml": "^2.9.1",
208
- "zod": "^4.6.7"
361
+ "z-ai-web-dev-sdk": "^0.0.18",
362
+ "zod": "^4.6.7",
363
+ "zustand": "^5.1.0"
209
364
  },
210
365
  "overrides": {
211
- "uuid": "^11.1.1",
212
- "deepmerge-ts": "^8.0.0",
366
+ "@ai-sdk/openai": "^4.0.110",
367
+ "@ai-sdk/openai-compatible": "^3.0.86",
368
+ "@ai-sdk/provider-utils": "^5.0.75",
369
+ "@anthropic-ai/sdk": "^1.6.0",
370
+ "@biomejs/biome": "^2.6.6",
371
+ "@capacitor/android": "^8.6.0",
372
+ "@capacitor/cli": "^8.6.0",
373
+ "@capacitor/core": "^8.6.0",
374
+ "@capacitor/ios": "^8.6.0",
375
+ "@dnd-kit/core": "^6.3.1",
376
+ "@dnd-kit/sortable": "^10.0.0",
377
+ "@dnd-kit/utilities": "^3.2.2",
378
+ "@fluentui/react-icons": "^2.0.345",
379
+ "@fontsource-variable/bricolage-grotesque": "^5.3.0",
380
+ "@fontsource-variable/geist-mono": "^5.3.0",
381
+ "@fontsource-variable/inter": "^5.3.0",
382
+ "@fontsource-variable/jetbrains-mono": "^5.3.0",
383
+ "@fontsource-variable/outfit": "^5.3.0",
384
+ "@fontsource-variable/urbanist": "^5.3.0",
385
+ "@grpc/grpc-js": "^1.14.7",
386
+ "@hono/node-server": "^2.1.6",
387
+ "@hookform/resolvers": "^7.0.3",
388
+ "@humanfs/node": "^0.17.0",
389
+ "@libsql/client": "^0.18.0",
390
+ "@mdxeditor/editor": "^4.5.0",
391
+ "@opencode-ai/sdk": "^1.19.5",
392
+ "@prisma/adapter-libsql": "^7.10.1",
393
+ "@prisma/client": "^7.10.1",
394
+ "@radix-ui/react-accordion": "^1.3.1",
395
+ "@radix-ui/react-alert-dialog": "^1.2.1",
396
+ "@radix-ui/react-aspect-ratio": "^1.2.0",
397
+ "@radix-ui/react-avatar": "^1.3.1",
398
+ "@radix-ui/react-checkbox": "^1.4.1",
399
+ "@radix-ui/react-collapsible": "^1.2.1",
400
+ "@radix-ui/react-context-menu": "^2.4.1",
401
+ "@radix-ui/react-dialog": "^1.3.1",
402
+ "@radix-ui/react-dropdown-menu": "^2.2.1",
403
+ "@radix-ui/react-hover-card": "^1.2.1",
404
+ "@radix-ui/react-label": "^2.1.17",
405
+ "@radix-ui/react-menubar": "^1.2.1",
406
+ "@radix-ui/react-navigation-menu": "^1.4.1",
407
+ "@radix-ui/react-popover": "^1.3.1",
408
+ "@radix-ui/react-progress": "^1.2.1",
409
+ "@radix-ui/react-radio-group": "^1.5.1",
410
+ "@radix-ui/react-scroll-area": "^1.4.0",
411
+ "@radix-ui/react-select": "^2.4.1",
412
+ "@radix-ui/react-separator": "^1.2.0",
413
+ "@radix-ui/react-slider": "^1.6.1",
414
+ "@radix-ui/react-slot": "^1.5.0",
415
+ "@radix-ui/react-switch": "^1.4.1",
416
+ "@radix-ui/react-tabs": "^1.2.1",
417
+ "@radix-ui/react-toast": "^1.3.1",
418
+ "@radix-ui/react-toggle": "^1.2.1",
419
+ "@radix-ui/react-toggle-group": "^1.2.1",
420
+ "@radix-ui/react-tooltip": "^1.4.1",
421
+ "@reactuses/core": "^6.6.1",
422
+ "@tailwindcss/postcss": "^4.3.5",
423
+ "@tailwindcss/typography": "^0.5.20",
424
+ "@tailwindcss/vite": "^4.3.5",
425
+ "@tanstack/react-query": "^5.107.1",
426
+ "@tanstack/react-table": "^9.3.1",
427
+ "@tsconfig/node26": "^26.0.1",
428
+ "@types/babel__core": "^7.20.5",
429
+ "@types/better-sqlite3": "^9.6.0",
430
+ "@types/chrome": "^0.3.7",
431
+ "@types/express": "^5.0.6",
432
+ "@types/google.maps": "^3.66.10",
433
+ "@types/node": "^26.6.6",
434
+ "@types/react": "^19.3.0",
435
+ "@types/react-dom": "^19.3.0",
436
+ "@types/three": "^0.187.0",
437
+ "@vitejs/plugin-react": "^6.2.1",
438
+ "@wenathlan/argan": "~2.0.166",
439
+ "@wenathlan/cadria": "~2.0.166",
440
+ "@wenathlan/debonair": "~2.0.166",
441
+ "@wenathlan/devthink": "~2.0.166",
442
+ "@wenathlan/getry": "~2.0.166",
443
+ "@wenathlan/saddle": "~2.0.166",
444
+ "@wenathlan/vault": "~2.0.166",
445
+ "add": "^2.0.9",
446
+ "ai": "^7.0.164",
447
+ "autoprefixer": "^10.6.2",
448
+ "axios": "^1.21.0",
449
+ "baseline-browser-mapping": "^2.11.35",
450
+ "better-sqlite3": "^13.0.3",
451
+ "body-parser": "^2.4.0",
452
+ "bun-types": "^1.4.4",
453
+ "cheerio": "^1.2.0",
454
+ "class-variance-authority": "^0.7.1",
455
+ "clsx": "^2.1.1",
456
+ "cmdk": "^1.1.1",
457
+ "commander": "^15.0.0",
458
+ "date-fns": "^4.4.0",
459
+ "deepmerge-ts": "^8.0.2",
460
+ "dockerode": "^5.0.1",
461
+ "drizzle-kit": "^0.31.11",
462
+ "drizzle-orm": "^0.45.4",
463
+ "embla-carousel-react": "^8.6.0",
464
+ "emittery": "^2.2.0",
213
465
  "esbuild": "^0.28.2",
466
+ "eslint": "^10.14.0",
467
+ "eslint-config-next": "^16.4.5",
468
+ "express": "^5.3.0",
469
+ "fast-check": "^4.10.2",
470
+ "fast-uri": "^4.2.3",
214
471
  "follow-redirects": "^1.16.2",
215
- "minimatch": "^11.0.3",
216
- "glob": "^14.0.3",
472
+ "framer-motion": "^14.10.1",
473
+ "glob": "^14.0.4",
474
+ "gsap": "^3.15.1",
475
+ "hono": "^4.13.16",
476
+ "ink": "^8.0.0",
477
+ "input-otp": "^1.5.0",
478
+ "js-yaml": "^5.5.0",
479
+ "jsdom": "^31.0.0",
480
+ "katex": "^0.19.1",
481
+ "lucide-react": "^1.70.0",
482
+ "minimatch": "^11.0.5",
483
+ "motion": "^14.10.1",
217
484
  "mysql2": "^3.24.6",
218
- "postcss-selector-parser": "^7.1.6",
219
- "source-map-js": "1.2.2",
220
- "proxy-addr": "2.0.8",
221
- "body-parser": "^2.4.0",
222
- "fast-uri": "^3.1.9",
485
+ "nanoid": "^6.0.2",
486
+ "next": "^16.4.5",
487
+ "next-auth": "^4.24.15",
488
+ "next-intl": "^4.14.9",
489
+ "next-themes": "^0.4.6",
490
+ "openai": "^7.53.0",
491
+ "p-limit": "^7.3.3",
492
+ "p-retry": "^9.0.0",
493
+ "playwright": "^1.65.0",
494
+ "pnpm": "^12.18.0",
495
+ "postcss": "^8.5.32",
496
+ "postcss-selector-parser": "^7.1.7",
497
+ "prettier": "^3.9.10",
498
+ "prisma": "^7.10.1",
499
+ "proxy-addr": "^2.0.8",
500
+ "react": "^19.3.1",
501
+ "react-day-picker": "^10.0.2",
502
+ "react-devtools-core": "^8.0.0",
503
+ "react-dom": "^19.3.1",
504
+ "react-hook-form": "^7.91.0",
505
+ "react-markdown": "^10.1.0",
506
+ "react-resizable-panels": "^4.19.1",
507
+ "react-syntax-highlighter": "^16.1.2",
508
+ "recharts": "^3.10.1",
509
+ "request-ip": "^3.3.0",
510
+ "sharp": "^0.35.5",
511
+ "shell-quote": "^1.12.0",
512
+ "smol-toml": "^1.9.1",
513
+ "sonner": "^2.0.8",
514
+ "source-map-js": "^1.2.2",
515
+ "streamdown": "^2.7.1",
516
+ "tailwind-merge": "^3.7.0",
517
+ "tailwindcss": "^4.3.5",
518
+ "tailwindcss-animate": "^1.0.7",
519
+ "three": "^0.187.0",
520
+ "ts-node": "^10.9.2",
521
+ "tsup": "^9.0.0",
522
+ "tsx": "^4.23.15",
523
+ "tw-animate-css": "^1.4.0",
524
+ "typescript": "^7.0.2",
525
+ "undici": "^8.12.4",
526
+ "uuid": "^14.0.3",
527
+ "vaul": "^1.1.2",
528
+ "vite": "^8.3.6",
529
+ "vite-plugin-manus-runtime": "^0.0.59",
530
+ "vitest": "^5.1.0",
531
+ "webpack": "^5.112.2",
532
+ "webpack-cli": "^7.3.1",
533
+ "wouter": "^3.13.0",
534
+ "yaml": "^2.9.1",
535
+ "z-ai-web-dev-sdk": "^0.0.18",
223
536
  "zod": "^4.6.7",
224
- "undici": "^7.30.1",
225
- "katex": "^0.18.2",
226
- "shell-quote": "^1.11.0",
537
+ "zustand": "^5.1.0",
227
538
  "xcode": {
228
539
  "uuid": "11.1.1"
229
- },
230
- "@grpc/grpc-js": "1.14.5"
540
+ }
541
+ },
542
+ "type": "module",
543
+ "sideEffects": false,
544
+ "bin": {
545
+ "argan": "./cli.ts"
231
546
  },
232
- "publishConfig": {
233
- "access": "public",
234
- "registry": "https://registry.npmjs.org/"
547
+ "exports": {
548
+ "./mimetypes": {
549
+ "types": "./mimetypes.ts",
550
+ "import": "./mimetypes.ts",
551
+ "default": "./mimetypes.ts"
552
+ }
235
553
  },
236
- "packageManager": "pnpm@12.3.4"
554
+ "files": [
555
+ "README.md",
556
+ "docs",
557
+ "test",
558
+ "cli.ts",
559
+ "mimetypes.ts"
560
+ ],
561
+ "trustedDependencies": [
562
+ "@parcel/watcher",
563
+ "@swc/core",
564
+ "pnpm",
565
+ "protobufjs"
566
+ ]
237
567
  }
@@ -144,4 +144,14 @@ describe("design contract", () => {
144
144
  expect(DB).toMatch(/getonboardingstate/);
145
145
  expect(DB).toMatch(/setonboardingstage/);
146
146
  });
147
+
148
+ it("reads the record type chips from the catalog lane — no hardcoded type table in a face", () => {
149
+ const HOME = read("../sol/home/home.tsx");
150
+ const CATALOG = read("../catalog.ts");
151
+ const SEED = read("../seed.ts");
152
+ expect(HOME).toMatch(/listRecordTypes/);
153
+ expect(HOME).not.toMatch(/const CHIP_TYPES/);
154
+ expect(CATALOG).toMatch(/listRecordTypes/);
155
+ expect(SEED).toMatch(/seedRecordTypes/);
156
+ });
147
157
  });
@@ -15,7 +15,7 @@ import {
15
15
  validateSignatureLabels,
16
16
  validateSignatureTtl,
17
17
  validateSignatureWindow,
18
- } from "../dnssec.ts";
18
+ } from "../dns.ts";
19
19
 
20
20
  /** A small DNSKEY whose key tag was computed by hand from the RFC 4034 Appendix B loop. */
21
21
  const ZONEKEY: DnsKey = { flags: 256, protocol: 3, algorithm: 8, publicKey: "qrs=" };
@@ -17,7 +17,7 @@ import {
17
17
  protocolSchemes,
18
18
  protocolTone,
19
19
  tlsCapableProtocols,
20
- } from "../protocols.ts";
20
+ } from "../dns.ts";
21
21
 
22
22
  /** The schemes the owner law names (the transfer and application wires of the mesh). */
23
23
  const LAW_SCHEMES: readonly string[] = [
@@ -9,7 +9,7 @@
9
9
  // modality id pins the seat for the platform's join to validate at
10
10
  // dispatch — this module never judges engine vocabulary). runnable with
11
11
  // vitest:
12
- // pnpm vitest run tests/sandboxmodality.test.ts
12
+ // pnpm vitest run test/sandboxmodality.test.ts
13
13
  import assert from "node:assert/strict";
14
14
  import { describe, it } from "vitest";
15
15
  import { lanesof } from "@wenathlan/saddle/workloadlaw";
@@ -12,7 +12,7 @@ import {
12
12
  serialForPublication,
13
13
  ZoneDiffError,
14
14
  type ZoneRecord,
15
- } from "../zonediff.ts";
15
+ } from "../dns.ts";
16
16
 
17
17
  const ORIGIN = "example.com.";
18
18
 
File without changes
File without changes