flowproof 0.0.1 → 0.6.1
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 +17 -6
- package/bin/flowproof.js +53 -0
- package/index.js +6 -13
- package/package.json +20 -6
package/README.md
CHANGED
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
# flowproof
|
|
2
2
|
|
|
3
|
-
AI
|
|
3
|
+
Run your AI agent once, keep the recording, and assert against it from then
|
|
4
|
+
on. flowproof captures the run at the model boundary - every request and
|
|
5
|
+
every tool-call decision - and serves it back on later runs, so replay makes
|
|
6
|
+
**zero LLM calls**. You assert which tools were called, with which arguments,
|
|
7
|
+
in which order, and which were not. The same engine drives web, desktop and
|
|
8
|
+
Citrix.
|
|
4
9
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
and heals tests; a deterministic engine replays them in CI.
|
|
10
|
+
This package ships the `flowproof` CLI as platform-native binaries
|
|
11
|
+
(linux-x64, darwin-x64/arm64, win32-x64) — no Python required:
|
|
8
12
|
|
|
9
|
-
|
|
10
|
-
|
|
13
|
+
```bash
|
|
14
|
+
npx flowproof --version
|
|
15
|
+
npx flowproof record my.flow.yaml
|
|
16
|
+
npx flowproof run specs/
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
The Python SDK (`pip install flowproof`) remains the primary SDK and
|
|
20
|
+
adds the programmatic API and MCP server. Docs and source:
|
|
21
|
+
[github.com/automators-com/flowproof](https://github.com/automators-com/flowproof)
|
package/bin/flowproof.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Thin launcher: the real `flowproof` CLI is a platform-native Rust binary
|
|
3
|
+
// shipped in a per-platform optional dependency; this resolves the right
|
|
4
|
+
// one and passes everything through untouched.
|
|
5
|
+
"use strict";
|
|
6
|
+
|
|
7
|
+
const { spawnSync } = require("node:child_process");
|
|
8
|
+
const path = require("node:path");
|
|
9
|
+
|
|
10
|
+
// Scoped names: the unscoped ones tripped npm's spam heuristic for new
|
|
11
|
+
// packages and could not be published at all. Keep these in step with
|
|
12
|
+
// package.json's optionalDependencies - test/launcher.test.js fails if they
|
|
13
|
+
// drift, because a mismatch here is an "unsupported platform" error for a
|
|
14
|
+
// platform that is actually supported.
|
|
15
|
+
const PLATFORM_PACKAGES = {
|
|
16
|
+
"linux-x64": "@automators/flowproof-cli-linux-x64",
|
|
17
|
+
"darwin-x64": "@automators/flowproof-cli-darwin-x64",
|
|
18
|
+
"darwin-arm64": "@automators/flowproof-cli-darwin-arm64",
|
|
19
|
+
"win32-x64": "@automators/flowproof-cli-win32-x64",
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
function binaryPath() {
|
|
23
|
+
const key = `${process.platform}-${process.arch}`;
|
|
24
|
+
const pkg = PLATFORM_PACKAGES[key];
|
|
25
|
+
if (!pkg) {
|
|
26
|
+
console.error(
|
|
27
|
+
`flowproof: no prebuilt binary for ${key}.\n` +
|
|
28
|
+
`Supported: ${Object.keys(PLATFORM_PACKAGES).join(", ")}.\n` +
|
|
29
|
+
`On other platforms, install via pip instead: pip install flowproof`
|
|
30
|
+
);
|
|
31
|
+
process.exit(2);
|
|
32
|
+
}
|
|
33
|
+
const file = process.platform === "win32" ? "flowproof.exe" : "flowproof";
|
|
34
|
+
try {
|
|
35
|
+
return path.join(path.dirname(require.resolve(`${pkg}/package.json`)), file);
|
|
36
|
+
} catch {
|
|
37
|
+
console.error(
|
|
38
|
+
`flowproof: platform package ${pkg} is not installed.\n` +
|
|
39
|
+
`Your package manager may have skipped optional dependencies — ` +
|
|
40
|
+
`reinstall without --no-optional (or use: pip install flowproof).`
|
|
41
|
+
);
|
|
42
|
+
process.exit(2);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const result = spawnSync(binaryPath(), process.argv.slice(2), {
|
|
47
|
+
stdio: "inherit",
|
|
48
|
+
});
|
|
49
|
+
if (result.error) {
|
|
50
|
+
console.error(`flowproof: failed to start the native binary: ${result.error.message}`);
|
|
51
|
+
process.exit(2);
|
|
52
|
+
}
|
|
53
|
+
process.exit(result.status === null ? 2 : result.status);
|
package/index.js
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
*
|
|
8
|
-
* This is a placeholder release. See https://github.com/automators-com/flowproof
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
module.exports = {
|
|
12
|
-
version: "0.0.1",
|
|
13
|
-
};
|
|
1
|
+
// CLI-only distribution: the `flowproof` command (bin/flowproof.js) runs a
|
|
2
|
+
// platform-native binary from the optional dependencies. For a
|
|
3
|
+
// programmatic API use the Python SDK — `pip install flowproof` — which is
|
|
4
|
+
// the primary SDK.
|
|
5
|
+
"use strict";
|
|
6
|
+
module.exports = {};
|
package/package.json
CHANGED
|
@@ -1,23 +1,37 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flowproof",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "AI
|
|
5
|
-
"
|
|
3
|
+
"version": "0.6.1",
|
|
4
|
+
"description": "Deterministic tests for AI agents: record a run once, replay it with zero LLM calls. Assert which tools an agent called, with which arguments, in which order.",
|
|
5
|
+
"bin": {
|
|
6
|
+
"flowproof": "bin/flowproof.js"
|
|
7
|
+
},
|
|
6
8
|
"files": [
|
|
9
|
+
"bin/flowproof.js",
|
|
7
10
|
"index.js"
|
|
8
11
|
],
|
|
12
|
+
"main": "index.js",
|
|
13
|
+
"engines": {
|
|
14
|
+
"node": ">=18"
|
|
15
|
+
},
|
|
16
|
+
"optionalDependencies": {
|
|
17
|
+
"@automators/flowproof-cli-linux-x64": "0.6.1",
|
|
18
|
+
"@automators/flowproof-cli-darwin-x64": "0.6.1",
|
|
19
|
+
"@automators/flowproof-cli-darwin-arm64": "0.6.1",
|
|
20
|
+
"@automators/flowproof-cli-win32-x64": "0.6.1"
|
|
21
|
+
},
|
|
9
22
|
"repository": {
|
|
10
23
|
"type": "git",
|
|
11
24
|
"url": "git+https://github.com/automators-com/flowproof.git"
|
|
12
25
|
},
|
|
13
26
|
"homepage": "https://github.com/automators-com/flowproof",
|
|
14
27
|
"keywords": [
|
|
15
|
-
"
|
|
28
|
+
"test-automation",
|
|
16
29
|
"testing",
|
|
30
|
+
"automation",
|
|
31
|
+
"ai-agents",
|
|
17
32
|
"sap-gui",
|
|
18
33
|
"citrix",
|
|
19
|
-
"windows"
|
|
20
|
-
"automation"
|
|
34
|
+
"windows"
|
|
21
35
|
],
|
|
22
36
|
"author": "Automators <hello@automators.com>",
|
|
23
37
|
"license": "Apache-2.0"
|