@cavelang/solver-z3 0.29.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-fixture.js","sourceRoot":"","sources":["../../src/workflow-fixture.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=workflow-main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-main.d.ts","sourceRoot":"","sources":["../../src/workflow-main.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ import { runWorkflowFixture } from "./workflow-fixture.js";
3
+ const result = await runWorkflowFixture(process.argv.slice(2));
4
+ if (result.out !== '')
5
+ process.stdout.write(result.out);
6
+ if (result.err !== '')
7
+ process.stderr.write(result.err);
8
+ process.exitCode = result.code;
9
+ //# sourceMappingURL=workflow-main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-main.js","sourceRoot":"","sources":["../../src/workflow-main.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAE1D,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9D,IAAI,MAAM,CAAC,GAAG,KAAK,EAAE;IAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACvD,IAAI,MAAM,CAAC,GAAG,KAAK,EAAE;IAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACvD,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAA"}
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "@cavelang/solver-z3",
3
+ "version": "0.29.0",
4
+ "type": "module",
5
+ "description": "Optional Node.js Z3 WebAssembly adapter and allowlisted workflow fixture for CAVE formal reasoning.",
6
+ "keywords": [
7
+ "cave",
8
+ "knowledge-graph",
9
+ "knowledge-representation",
10
+ "typescript"
11
+ ],
12
+ "homepage": "https://github.com/mirek/cave#readme",
13
+ "bugs": {
14
+ "url": "https://github.com/mirek/cave/issues"
15
+ },
16
+ "license": "CC0-1.0",
17
+ "author": "Mirek Rusin (https://github.com/mirek)",
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+https://github.com/mirek/cave.git",
21
+ "directory": "packages/solver-z3"
22
+ },
23
+ "engines": {
24
+ "node": ">=22.18"
25
+ },
26
+ "exports": {
27
+ ".": "./src/index.ts"
28
+ },
29
+ "bin": {
30
+ "cave-solver-workflow": "./src/workflow-main.ts"
31
+ },
32
+ "files": [
33
+ "dist",
34
+ "!dist/test",
35
+ "!dist/tsconfig.tsbuildinfo",
36
+ "src",
37
+ "!src/**/*.test.ts",
38
+ "scripts",
39
+ "README.md",
40
+ "BENCHMARK.md",
41
+ "License.md",
42
+ "Authors.md"
43
+ ],
44
+ "publishConfig": {
45
+ "access": "public",
46
+ "exports": {
47
+ ".": {
48
+ "types": "./dist/src/index.d.ts",
49
+ "default": "./dist/src/index.js"
50
+ }
51
+ },
52
+ "bin": {
53
+ "cave-solver-workflow": "./dist/src/workflow-main.js"
54
+ }
55
+ },
56
+ "scripts": {
57
+ "benchmark": "node --disable-warning=ExperimentalWarning scripts/benchmark.ts",
58
+ "build": "tsc -b",
59
+ "test": "node --disable-warning=ExperimentalWarning --test \"test/*.test.ts\"",
60
+ "typecheck": "tsc -b",
61
+ "prepack": "node ../../scripts/prepare-package-legal.mjs && pnpm run build"
62
+ },
63
+ "dependencies": {
64
+ "@cavelang/solver": "workspace:*",
65
+ "z3-solver": "4.16.0"
66
+ }
67
+ }
@@ -0,0 +1,101 @@
1
+ import { readFile, readdir, stat } from 'node:fs/promises'
2
+ import { dirname, join } from 'node:path'
3
+ import { createRequire } from 'node:module'
4
+ import { gzipSync } from 'node:zlib'
5
+ import { performance } from 'node:perf_hooks'
6
+ import { Model, Solve } from '@cavelang/solver'
7
+ import { create } from '@cavelang/solver-z3'
8
+
9
+ const require = createRequire(import.meta.url)
10
+ const packageRoot = dirname(require.resolve('z3-solver/package.json'))
11
+
12
+ const files = async (directory: string): Promise<string[]> => {
13
+ const entries = await readdir(directory, { withFileTypes: true })
14
+ return (await Promise.all(entries.map(async entry => {
15
+ const path = join(directory, entry.name)
16
+ return entry.isDirectory() ? files(path) : [path]
17
+ }))).flat()
18
+ }
19
+
20
+ const paths = await files(packageRoot)
21
+ let installedBytes = 0
22
+ let gzipBytes = 0
23
+ for (const path of paths) {
24
+ installedBytes += (await stat(path)).size
25
+ gzipBytes += gzipSync(await readFile(path), { level: 9 }).byteLength
26
+ }
27
+
28
+ const ref = (id: string): Model.Expression => ({ kind: 'variable', id })
29
+ const architecture: Model.t = {
30
+ schema: Model.schema,
31
+ enums: [{ id: 'architecture', values: ['monolith', 'microservices'] }],
32
+ variables: [
33
+ { id: 'choice', sort: 'enum', domain: 'architecture' },
34
+ { id: 'team-size', sort: 'int', min: 12, max: 12 },
35
+ { id: 'monthly-cost', sort: 'real', min: '0', max: '1000' }
36
+ ],
37
+ constraints: [{
38
+ id: 'architecture-cost',
39
+ expression: {
40
+ kind: 'eq',
41
+ left: ref('monthly-cost'),
42
+ right: {
43
+ kind: 'if',
44
+ condition: {
45
+ kind: 'eq',
46
+ left: ref('choice'),
47
+ right: { kind: 'literal', sort: 'enum', domain: 'architecture', value: 'monolith' }
48
+ },
49
+ then: { kind: 'literal', sort: 'real', value: '80.25' },
50
+ else: { kind: 'literal', sort: 'real', value: '120.50' }
51
+ }
52
+ }
53
+ }],
54
+ objectives: [{ id: 'min-monthly-cost', direction: 'minimize', expression: ref('monthly-cost') }]
55
+ }
56
+
57
+ const beforeRssBytes = process.memoryUsage().rss
58
+ const runtime = await create()
59
+ const firstStarted = performance.now()
60
+ const first = await Solve.run(runtime, architecture)
61
+ const firstCheckMs = performance.now() - firstStarted
62
+ if (first.status !== 'optimal') throw new Error(`benchmark fixture returned ${first.status}`)
63
+
64
+ const warmRuns = 25
65
+ const warm: number[] = []
66
+ for (let index = 0; index < warmRuns; index += 1) {
67
+ const started = performance.now()
68
+ const result = await Solve.run(runtime, architecture)
69
+ if (result.status !== 'optimal') throw new Error(`warm fixture returned ${result.status}`)
70
+ warm.push(performance.now() - started)
71
+ }
72
+
73
+ await runtime.close()
74
+ warm.sort((left, right) => left - right)
75
+ const mean = warm.reduce((sum, value) => sum + value, 0) / warm.length
76
+
77
+ console.log(JSON.stringify({
78
+ generatedAt: new Date().toISOString(),
79
+ platform: `${process.platform}-${process.arch}`,
80
+ node: process.version,
81
+ backend: runtime.backend,
82
+ artifacts: {
83
+ files: paths.length,
84
+ installedBytes,
85
+ gzipBytes,
86
+ wasmBytes: (await stat(join(packageRoot, 'build/z3-built.wasm'))).size
87
+ },
88
+ latencyMs: {
89
+ coldInitialization: runtime.initializationMs,
90
+ firstCheck: Number(firstCheckMs.toFixed(2)),
91
+ warmMean: Number(mean.toFixed(2)),
92
+ warmP50: Number(warm[Math.floor(warm.length * 0.5)]!.toFixed(2)),
93
+ warmP95: Number(warm[Math.floor(warm.length * 0.95)]!.toFixed(2)),
94
+ warmRuns
95
+ },
96
+ memoryBytes: {
97
+ rssBeforeInitialization: beforeRssBytes,
98
+ rssAfterRuns: process.memoryUsage().rss,
99
+ peakRss: process.resourceUsage().maxRSS * 1024
100
+ }
101
+ }, null, 2))
package/src/index.ts ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Optional Node.js Z3 adapter for CAVE's portable solver model.
3
+ *
4
+ * `z3-solver` is loaded only when `create()` is called. Importing this module
5
+ * does not initialize WebAssembly or spawn Emscripten workers.
6
+ */
7
+
8
+ export { create, type Runtime } from './runtime.ts'
9
+ export { architectureModel, runWorkflowFixture } from './workflow-fixture.ts'
10
+ export type { ArchitectureInputs, Output as WorkflowFixtureOutput } from './workflow-fixture.ts'