ai-ify 0.1.0__tar.gz
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.
- ai_ify-0.1.0/LICENSE +21 -0
- ai_ify-0.1.0/MANIFEST.in +3 -0
- ai_ify-0.1.0/PKG-INFO +107 -0
- ai_ify-0.1.0/README.md +65 -0
- ai_ify-0.1.0/README_AI.md +559 -0
- ai_ify-0.1.0/aiify_context.json +204 -0
- ai_ify-0.1.0/pyproject.toml +63 -0
- ai_ify-0.1.0/setup.cfg +4 -0
- ai_ify-0.1.0/src/ai_ify.egg-info/PKG-INFO +107 -0
- ai_ify-0.1.0/src/ai_ify.egg-info/SOURCES.txt +61 -0
- ai_ify-0.1.0/src/ai_ify.egg-info/dependency_links.txt +1 -0
- ai_ify-0.1.0/src/ai_ify.egg-info/entry_points.txt +2 -0
- ai_ify-0.1.0/src/ai_ify.egg-info/requires.txt +15 -0
- ai_ify-0.1.0/src/ai_ify.egg-info/top_level.txt +1 -0
- ai_ify-0.1.0/src/aiify/README_AI.md +559 -0
- ai_ify-0.1.0/src/aiify/__init__.py +23 -0
- ai_ify-0.1.0/src/aiify/__main__.py +6 -0
- ai_ify-0.1.0/src/aiify/accounts.py +135 -0
- ai_ify-0.1.0/src/aiify/actions.py +409 -0
- ai_ify-0.1.0/src/aiify/agent.py +641 -0
- ai_ify-0.1.0/src/aiify/aiify_context.json +204 -0
- ai_ify-0.1.0/src/aiify/cli.py +164 -0
- ai_ify-0.1.0/src/aiify/console.py +135 -0
- ai_ify-0.1.0/src/aiify/context.py +196 -0
- ai_ify-0.1.0/src/aiify/control_port.py +241 -0
- ai_ify-0.1.0/src/aiify/engine.py +449 -0
- ai_ify-0.1.0/src/aiify/guide/actions.md +36 -0
- ai_ify-0.1.0/src/aiify/guide/agent-commands.md +38 -0
- ai_ify-0.1.0/src/aiify/guide/console-and-limits.md +29 -0
- ai_ify-0.1.0/src/aiify/guide/other-apps.md +28 -0
- ai_ify-0.1.0/src/aiify/guide/overview.md +28 -0
- ai_ify-0.1.0/src/aiify/guide/page-control.md +48 -0
- ai_ify-0.1.0/src/aiify/guide/profiles.md +38 -0
- ai_ify-0.1.0/src/aiify/guide/quickstart.md +58 -0
- ai_ify-0.1.0/src/aiify/guide/setup.md +30 -0
- ai_ify-0.1.0/src/aiify/guide/testing.md +31 -0
- ai_ify-0.1.0/src/aiify/guide/troubleshooting.md +45 -0
- ai_ify-0.1.0/src/aiify/policy.py +37 -0
- ai_ify-0.1.0/src/aiify/profile.py +61 -0
- ai_ify-0.1.0/src/aiify/prompting.py +97 -0
- ai_ify-0.1.0/src/aiify/protocol.py +98 -0
- ai_ify-0.1.0/src/aiify/static/bridge.js +290 -0
- ai_ify-0.1.0/src/aiify/static/panel.css +108 -0
- ai_ify-0.1.0/src/aiify/static/panel.js +334 -0
- ai_ify-0.1.0/src/aiify/static/vendor/PAGE_CONTROLLER_LICENSE +51 -0
- ai_ify-0.1.0/src/aiify/static/vendor/page-controller.js +2741 -0
- ai_ify-0.1.0/src/aiify/testing/__init__.py +6 -0
- ai_ify-0.1.0/src/aiify/testing/fake_agent.py +159 -0
- ai_ify-0.1.0/src/aiify/ui_relay.py +166 -0
- ai_ify-0.1.0/src/aiify/usage.py +325 -0
- ai_ify-0.1.0/src/aiify/web.py +184 -0
- ai_ify-0.1.0/tests/test_accounts.py +146 -0
- ai_ify-0.1.0/tests/test_actions.py +239 -0
- ai_ify-0.1.0/tests/test_browser.py +218 -0
- ai_ify-0.1.0/tests/test_cli.py +72 -0
- ai_ify-0.1.0/tests/test_context.py +50 -0
- ai_ify-0.1.0/tests/test_control_port.py +117 -0
- ai_ify-0.1.0/tests/test_engine.py +237 -0
- ai_ify-0.1.0/tests/test_policy.py +23 -0
- ai_ify-0.1.0/tests/test_prompting.py +46 -0
- ai_ify-0.1.0/tests/test_ui_relay.py +170 -0
- ai_ify-0.1.0/tests/test_usage.py +110 -0
- ai_ify-0.1.0/tests/test_web.py +255 -0
ai_ify-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Brancaccio Lab
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
ai_ify-0.1.0/MANIFEST.in
ADDED
ai_ify-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ai-ify
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Embed a subscription-backed AI agent inside any app, controlled the way the developer allows
|
|
5
|
+
Author: Brancaccio Lab
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/Jay2owe/ai-ify
|
|
8
|
+
Project-URL: Documentation, https://github.com/Jay2owe/ai-ify/blob/main/docs/embedding-guide.md
|
|
9
|
+
Project-URL: Issues, https://github.com/Jay2owe/ai-ify/issues
|
|
10
|
+
Project-URL: Changelog, https://github.com/Jay2owe/ai-ify/blob/main/CHANGELOG.md
|
|
11
|
+
Keywords: ai agent,embedded assistant,agent client protocol,claude,codex
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Framework :: FastAPI
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Intended Audience :: Science/Research
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
24
|
+
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
25
|
+
Requires-Python: >=3.10
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
License-File: src/aiify/static/vendor/PAGE_CONTROLLER_LICENSE
|
|
29
|
+
Requires-Dist: agent-client-protocol<0.13,>=0.12
|
|
30
|
+
Provides-Extra: web
|
|
31
|
+
Requires-Dist: fastapi>=0.115; extra == "web"
|
|
32
|
+
Requires-Dist: uvicorn>=0.30; extra == "web"
|
|
33
|
+
Requires-Dist: websockets>=12; extra == "web"
|
|
34
|
+
Provides-Extra: test
|
|
35
|
+
Requires-Dist: pytest>=8.0; extra == "test"
|
|
36
|
+
Requires-Dist: httpx>=0.27; extra == "test"
|
|
37
|
+
Requires-Dist: playwright<2,>=1.49; extra == "test"
|
|
38
|
+
Provides-Extra: release
|
|
39
|
+
Requires-Dist: build>=1.2; extra == "release"
|
|
40
|
+
Requires-Dist: twine>=6.1; extra == "release"
|
|
41
|
+
Dynamic: license-file
|
|
42
|
+
|
|
43
|
+
# ai-ify
|
|
44
|
+
|
|
45
|
+
Embed an AI agent inside any app. The person chats with it in a panel inside
|
|
46
|
+
the app (or opens a console on the same conversation); the agent runs on the
|
|
47
|
+
Claude or Codex subscription already logged in on the machine, and controls the
|
|
48
|
+
app only in the ways the app's developer allows: backend actions, named UI
|
|
49
|
+
commands, and an automatic tree of the page's controls.
|
|
50
|
+
|
|
51
|
+
## Install
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
pip install "ai-ify[web]" # chat panel for FastAPI apps
|
|
55
|
+
pip install ai-ify # control port and the aiify command only
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Also needed: Node.js with `npx` (the first chat downloads the agent adapter), and
|
|
59
|
+
a signed-in subscription (`claude` once, or `codex login`). No API key is used.
|
|
60
|
+
|
|
61
|
+
## Use
|
|
62
|
+
|
|
63
|
+
```python
|
|
64
|
+
from aiify import Agent, Profile
|
|
65
|
+
from aiify.actions import from_functions
|
|
66
|
+
|
|
67
|
+
agent = Agent(
|
|
68
|
+
app="myapp",
|
|
69
|
+
actions=from_functions({"notes.add": add_note, "notes.clear": clear_notes},
|
|
70
|
+
destructive=["notes.clear"]),
|
|
71
|
+
profiles={"default": Profile(provider="claude")},
|
|
72
|
+
)
|
|
73
|
+
agent.mount(fastapi_app) # chat panel + websocket + local control port
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
and in the page:
|
|
77
|
+
|
|
78
|
+
```html
|
|
79
|
+
<script src="/aiify/panel.js" defer></script>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Destructive actions show a "Run it?" card before they run. Agents (the embedded
|
|
83
|
+
one, or any other on the machine) reach the running app with the `aiify` command:
|
|
84
|
+
`aiify apps`, `aiify --app myapp action.list`, `aiify --app myapp ui tree`.
|
|
85
|
+
|
|
86
|
+
## Documentation
|
|
87
|
+
|
|
88
|
+
- Usage guide, shipped with the package: `python -m aiify.context [topic]`, or
|
|
89
|
+
`from aiify import context; print(context.read())`. Also as
|
|
90
|
+
[README_AI.md](https://github.com/Jay2owe/ai-ify/blob/main/README_AI.md).
|
|
91
|
+
- [Embedding guide](https://github.com/Jay2owe/ai-ify/blob/main/docs/embedding-guide.md),
|
|
92
|
+
with Circadian Workbench as the worked example.
|
|
93
|
+
- [Message format](https://github.com/Jay2owe/ai-ify/blob/main/docs/protocol.md).
|
|
94
|
+
|
|
95
|
+
## Development
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
python -m venv .venv
|
|
99
|
+
.venv/bin/python -m pip install -e ".[web,test]" # Windows: .venv\Scripts\python.exe
|
|
100
|
+
.venv/bin/python -m pytest -m "not browser" # browser tests need Edge or Playwright's Chromium
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Releases are published by GitHub Actions when a `vX.Y.Z` tag matching the
|
|
104
|
+
package version is pushed ([RELEASING.md](https://github.com/Jay2owe/ai-ify/blob/main/RELEASING.md)).
|
|
105
|
+
|
|
106
|
+
Install name `ai-ify`, import name `aiify`. MIT licence. The bundled
|
|
107
|
+
`page-controller` (Alibaba, MIT) builds the page control tree.
|
ai_ify-0.1.0/README.md
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# ai-ify
|
|
2
|
+
|
|
3
|
+
Embed an AI agent inside any app. The person chats with it in a panel inside
|
|
4
|
+
the app (or opens a console on the same conversation); the agent runs on the
|
|
5
|
+
Claude or Codex subscription already logged in on the machine, and controls the
|
|
6
|
+
app only in the ways the app's developer allows: backend actions, named UI
|
|
7
|
+
commands, and an automatic tree of the page's controls.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pip install "ai-ify[web]" # chat panel for FastAPI apps
|
|
13
|
+
pip install ai-ify # control port and the aiify command only
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Also needed: Node.js with `npx` (the first chat downloads the agent adapter), and
|
|
17
|
+
a signed-in subscription (`claude` once, or `codex login`). No API key is used.
|
|
18
|
+
|
|
19
|
+
## Use
|
|
20
|
+
|
|
21
|
+
```python
|
|
22
|
+
from aiify import Agent, Profile
|
|
23
|
+
from aiify.actions import from_functions
|
|
24
|
+
|
|
25
|
+
agent = Agent(
|
|
26
|
+
app="myapp",
|
|
27
|
+
actions=from_functions({"notes.add": add_note, "notes.clear": clear_notes},
|
|
28
|
+
destructive=["notes.clear"]),
|
|
29
|
+
profiles={"default": Profile(provider="claude")},
|
|
30
|
+
)
|
|
31
|
+
agent.mount(fastapi_app) # chat panel + websocket + local control port
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
and in the page:
|
|
35
|
+
|
|
36
|
+
```html
|
|
37
|
+
<script src="/aiify/panel.js" defer></script>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Destructive actions show a "Run it?" card before they run. Agents (the embedded
|
|
41
|
+
one, or any other on the machine) reach the running app with the `aiify` command:
|
|
42
|
+
`aiify apps`, `aiify --app myapp action.list`, `aiify --app myapp ui tree`.
|
|
43
|
+
|
|
44
|
+
## Documentation
|
|
45
|
+
|
|
46
|
+
- Usage guide, shipped with the package: `python -m aiify.context [topic]`, or
|
|
47
|
+
`from aiify import context; print(context.read())`. Also as
|
|
48
|
+
[README_AI.md](https://github.com/Jay2owe/ai-ify/blob/main/README_AI.md).
|
|
49
|
+
- [Embedding guide](https://github.com/Jay2owe/ai-ify/blob/main/docs/embedding-guide.md),
|
|
50
|
+
with Circadian Workbench as the worked example.
|
|
51
|
+
- [Message format](https://github.com/Jay2owe/ai-ify/blob/main/docs/protocol.md).
|
|
52
|
+
|
|
53
|
+
## Development
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
python -m venv .venv
|
|
57
|
+
.venv/bin/python -m pip install -e ".[web,test]" # Windows: .venv\Scripts\python.exe
|
|
58
|
+
.venv/bin/python -m pytest -m "not browser" # browser tests need Edge or Playwright's Chromium
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Releases are published by GitHub Actions when a `vX.Y.Z` tag matching the
|
|
62
|
+
package version is pushed ([RELEASING.md](https://github.com/Jay2owe/ai-ify/blob/main/RELEASING.md)).
|
|
63
|
+
|
|
64
|
+
Install name `ai-ify`, import name `aiify`. MIT licence. The bundled
|
|
65
|
+
`page-controller` (Alibaba, MIT) builds the page control tree.
|