infini-cli 0.1.0__py3-none-any.whl
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.
- infini/__init__.py +6 -0
- infini/__main__.py +4 -0
- infini/adapters.py +68 -0
- infini/cli.py +287 -0
- infini/diff.py +167 -0
- infini/engine.py +191 -0
- infini/inspect.py +102 -0
- infini/mock.py +108 -0
- infini/parse.py +207 -0
- infini/replay.py +137 -0
- infini/schema.json +181 -0
- infini/trace.py +178 -0
- infini/ui.py +70 -0
- infini_cli-0.1.0.dist-info/METADATA +159 -0
- infini_cli-0.1.0.dist-info/RECORD +18 -0
- infini_cli-0.1.0.dist-info/WHEEL +5 -0
- infini_cli-0.1.0.dist-info/entry_points.txt +2 -0
- infini_cli-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: infini-cli
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: INFINI — the open standard for agent loops. Write a Loopfile, run it on any engine.
|
|
5
|
+
Author: NickAiNYC and INFINI contributors
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/NickAiNYC/infini
|
|
8
|
+
Project-URL: Documentation, https://github.com/NickAiNYC/infini#readme
|
|
9
|
+
Project-URL: Repository, https://github.com/NickAiNYC/infini
|
|
10
|
+
Project-URL: Issues, https://github.com/NickAiNYC/infini/issues
|
|
11
|
+
Keywords: agents,loops,ai,standard,loopfile,infini
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
21
|
+
Requires-Python: >=3.10
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
Requires-Dist: pyyaml>=6.0
|
|
24
|
+
Requires-Dist: jsonschema>=4.20
|
|
25
|
+
Requires-Dist: rich>=13.0
|
|
26
|
+
Requires-Dist: click>=8.1
|
|
27
|
+
Provides-Extra: dev
|
|
28
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
29
|
+
Requires-Dist: pytest-cov; extra == "dev"
|
|
30
|
+
Provides-Extra: ui
|
|
31
|
+
Requires-Dist: flask>=3.0; extra == "ui"
|
|
32
|
+
|
|
33
|
+
# INFINI CLI
|
|
34
|
+
|
|
35
|
+
The reference implementation of the `infini` command-line tool.
|
|
36
|
+
|
|
37
|
+
> The CLI is the **INFINI Reference Engine**. It conforms to the same Loopfile spec as every other engine. The only asymmetry: it ships first with new spec features, since the spec is developed against it.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Install
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pip install infini-cli
|
|
45
|
+
|
|
46
|
+
# With adapter extras
|
|
47
|
+
pip install infini-cli[hermes,openclaw]
|
|
48
|
+
|
|
49
|
+
# From source
|
|
50
|
+
git clone https://github.com/NickAiNYC/infini
|
|
51
|
+
cd infini/cli && pip install -e .
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Requires Python 3.10+.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Commands
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
infini validate [Loopfile] # check spec compliance
|
|
62
|
+
infini run [Loopfile] # execute a loop (--mock for no API key)
|
|
63
|
+
infini inspect [run_dir] # inspect a trace (--web opens Observatory, coming soon)
|
|
64
|
+
infini replay [run_dir] # time-travel debug from any step
|
|
65
|
+
infini diff [v1] [v2] # semantic diff between loops or traces
|
|
66
|
+
infini ui [trace] # launch the Observatory web app
|
|
67
|
+
infini engines # list detected adapters (reads adapter.yaml)
|
|
68
|
+
infini init [--target] # scaffold a minimal project (Loopfile, loops/, state/, runs/)
|
|
69
|
+
infini new <name> # create a new project scaffold
|
|
70
|
+
infini graph [Loopfile] # render a simple ASCII graph of steps
|
|
71
|
+
infini benchmark [Loopfile] # preview benchmark estimate (real profiling needs a run)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Commands not yet implemented (planned)
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
infini install [loop_ref] # pull from registry (planned — registry not yet live)
|
|
78
|
+
infini publish [Loopfile] # push to registry (planned)
|
|
79
|
+
infini ci [Loopfile] # run loop against fixtures (GitHub Action)
|
|
80
|
+
infini search [query] # search the registry (planned)
|
|
81
|
+
infini migrate [Loopfile] # migrate a Loopfile between spec versions
|
|
82
|
+
infini keys generate # generate a publisher signing keypair
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Mock mode
|
|
86
|
+
|
|
87
|
+
`infini run --mock` simulates LLM calls so you can run any Loopfile
|
|
88
|
+
without an API key. Useful for evaluation, CI, demos, and the conformance
|
|
89
|
+
suite. Mock mode is deterministic: same Loopfile + same seed = same output.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Conformance
|
|
94
|
+
|
|
95
|
+
The CLI implements:
|
|
96
|
+
|
|
97
|
+
| Capability | Status |
|
|
98
|
+
| ---------------- | :----: |
|
|
99
|
+
| Parse Loopfile | ✅ |
|
|
100
|
+
| Run Loop | ✅ |
|
|
101
|
+
| Verify | ✅ |
|
|
102
|
+
| Inspect Trace | ✅ |
|
|
103
|
+
| Replay | ✅ |
|
|
104
|
+
| Diff | ✅ |
|
|
105
|
+
|
|
106
|
+
This makes the CLI the **canonical conformance reference**. If your adapter disagrees with the CLI on a spec edge case, the CLI is right until an RFC says otherwise.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Architecture
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
cli/
|
|
114
|
+
├── README.md # you are here
|
|
115
|
+
├── pyproject.toml # package metadata
|
|
116
|
+
├── src/infini/
|
|
117
|
+
│ ├── __init__.py
|
|
118
|
+
│ ├── main.py # entrypoint
|
|
119
|
+
│ ├── parse.py # Loopfile parser
|
|
120
|
+
│ ├── validate.py # JSON Schema validator
|
|
121
|
+
│ ├── run.py # reference engine
|
|
122
|
+
│ ├── inspect.py # trace inspector (Loop Observatory)
|
|
123
|
+
│ ├── replay.py # time-travel debugger
|
|
124
|
+
│ ├── diff.py # semantic diff
|
|
125
|
+
│ ├── registry.py # publish/install/search
|
|
126
|
+
│ ├── ci.py # CI mode
|
|
127
|
+
│ ├── migrate.py # spec migration
|
|
128
|
+
│ └── keys.py # signing key management
|
|
129
|
+
└── tests/
|
|
130
|
+
├── conformance/ # spec conformance suite
|
|
131
|
+
├── fixtures/ # example Loopfiles
|
|
132
|
+
└── expected/ # expected trace shapes
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
The full source ships with the next CLI release. This README documents the contract.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## The Loop Observatory
|
|
140
|
+
|
|
141
|
+
`infini inspect <run_dir>` opens the Loop Observatory — the signature feature.
|
|
142
|
+
|
|
143
|
+
The Observatory shows, for any run:
|
|
144
|
+
|
|
145
|
+
- the graph of decisions taken,
|
|
146
|
+
- every verification checkpoint and its verdict,
|
|
147
|
+
- total runtime, token count, and dollar cost,
|
|
148
|
+
- artifacts produced at each step,
|
|
149
|
+
- where the loop failed (if it did), and what was retried,
|
|
150
|
+
- what changed between iterations,
|
|
151
|
+
- governance events (Hermes) and tool calls (OpenClaw) in a swimlane view.
|
|
152
|
+
|
|
153
|
+
The Inspector ships today. The full UI (annotated timeline, cost waterfall, artifact gallery, replay studio) is in preview.
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## License
|
|
158
|
+
|
|
159
|
+
MIT. See [repository LICENSE](../LICENSE).
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
infini/__init__.py,sha256=hZj9QhOb5A17a191GIYdUK6Pa4PVoT_H6vAugLoTLLs,117
|
|
2
|
+
infini/__main__.py,sha256=Pwe_ejewY25INYi1zRyqYkeFQfgQBYpclvIVwu-XF-o,67
|
|
3
|
+
infini/adapters.py,sha256=twmSIwf8Xsb15J1ntex9ITypbKApqwq1y-obrhs7zQQ,2173
|
|
4
|
+
infini/cli.py,sha256=NlCu27DYRGv_WGX7LmLRWjLNST3MMs_2YbUPPvlGmrA,10715
|
|
5
|
+
infini/diff.py,sha256=lT9bp1boKpHJC_gI2Eldx6_hoT-449mIYlwzCBTmdX4,6958
|
|
6
|
+
infini/engine.py,sha256=_h__o_6vst-RLnzgP2FuLwbK35nmU7muYZlmLv82BxQ,7462
|
|
7
|
+
infini/inspect.py,sha256=nawR65_LEBzwliGouxruNzvWrrnsCrNs78RyZ1pEQFA,3522
|
|
8
|
+
infini/mock.py,sha256=_3rYhXnOFncur-NXrikBy1NeYLEkRLEggZ8K29EqwLw,3502
|
|
9
|
+
infini/parse.py,sha256=WL_m6SEFSOqwRQ2KYOWA8sSsH53Goi33R-_KsGfSGuQ,5597
|
|
10
|
+
infini/replay.py,sha256=7oRqhjbfaj0SX5cH8ld10GRUaZHrYHupIDo1nUAt1Jk,5300
|
|
11
|
+
infini/schema.json,sha256=eOTxnqdrMSvonbhBvfBM5t-d4AakqbyBOt-hcidQ8AQ,5274
|
|
12
|
+
infini/trace.py,sha256=E_Wo58wOKnBw__XnuTJJLzHqJ-sSExY7GAkRaaMDU7c,5311
|
|
13
|
+
infini/ui.py,sha256=NJWoCg0b9l2oSX7mAXh4WkyRLS5gWWYn3NZszCClqyA,3361
|
|
14
|
+
infini_cli-0.1.0.dist-info/METADATA,sha256=-XiIeWEge4x3sYcfDz5I7FbcH3SjM4iVgVYMHVBf4_U,5490
|
|
15
|
+
infini_cli-0.1.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
16
|
+
infini_cli-0.1.0.dist-info/entry_points.txt,sha256=kvvzDKKPxIMbawPBaHVvQlQnQ3Jwx7fTyMOChoSx6o8,43
|
|
17
|
+
infini_cli-0.1.0.dist-info/top_level.txt,sha256=3DBo5l7eEus-AzE5TLqknRYx4CqCTh_x9mXCiUK7-y0,7
|
|
18
|
+
infini_cli-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
infini
|