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.
Files changed (63) hide show
  1. ai_ify-0.1.0/LICENSE +21 -0
  2. ai_ify-0.1.0/MANIFEST.in +3 -0
  3. ai_ify-0.1.0/PKG-INFO +107 -0
  4. ai_ify-0.1.0/README.md +65 -0
  5. ai_ify-0.1.0/README_AI.md +559 -0
  6. ai_ify-0.1.0/aiify_context.json +204 -0
  7. ai_ify-0.1.0/pyproject.toml +63 -0
  8. ai_ify-0.1.0/setup.cfg +4 -0
  9. ai_ify-0.1.0/src/ai_ify.egg-info/PKG-INFO +107 -0
  10. ai_ify-0.1.0/src/ai_ify.egg-info/SOURCES.txt +61 -0
  11. ai_ify-0.1.0/src/ai_ify.egg-info/dependency_links.txt +1 -0
  12. ai_ify-0.1.0/src/ai_ify.egg-info/entry_points.txt +2 -0
  13. ai_ify-0.1.0/src/ai_ify.egg-info/requires.txt +15 -0
  14. ai_ify-0.1.0/src/ai_ify.egg-info/top_level.txt +1 -0
  15. ai_ify-0.1.0/src/aiify/README_AI.md +559 -0
  16. ai_ify-0.1.0/src/aiify/__init__.py +23 -0
  17. ai_ify-0.1.0/src/aiify/__main__.py +6 -0
  18. ai_ify-0.1.0/src/aiify/accounts.py +135 -0
  19. ai_ify-0.1.0/src/aiify/actions.py +409 -0
  20. ai_ify-0.1.0/src/aiify/agent.py +641 -0
  21. ai_ify-0.1.0/src/aiify/aiify_context.json +204 -0
  22. ai_ify-0.1.0/src/aiify/cli.py +164 -0
  23. ai_ify-0.1.0/src/aiify/console.py +135 -0
  24. ai_ify-0.1.0/src/aiify/context.py +196 -0
  25. ai_ify-0.1.0/src/aiify/control_port.py +241 -0
  26. ai_ify-0.1.0/src/aiify/engine.py +449 -0
  27. ai_ify-0.1.0/src/aiify/guide/actions.md +36 -0
  28. ai_ify-0.1.0/src/aiify/guide/agent-commands.md +38 -0
  29. ai_ify-0.1.0/src/aiify/guide/console-and-limits.md +29 -0
  30. ai_ify-0.1.0/src/aiify/guide/other-apps.md +28 -0
  31. ai_ify-0.1.0/src/aiify/guide/overview.md +28 -0
  32. ai_ify-0.1.0/src/aiify/guide/page-control.md +48 -0
  33. ai_ify-0.1.0/src/aiify/guide/profiles.md +38 -0
  34. ai_ify-0.1.0/src/aiify/guide/quickstart.md +58 -0
  35. ai_ify-0.1.0/src/aiify/guide/setup.md +30 -0
  36. ai_ify-0.1.0/src/aiify/guide/testing.md +31 -0
  37. ai_ify-0.1.0/src/aiify/guide/troubleshooting.md +45 -0
  38. ai_ify-0.1.0/src/aiify/policy.py +37 -0
  39. ai_ify-0.1.0/src/aiify/profile.py +61 -0
  40. ai_ify-0.1.0/src/aiify/prompting.py +97 -0
  41. ai_ify-0.1.0/src/aiify/protocol.py +98 -0
  42. ai_ify-0.1.0/src/aiify/static/bridge.js +290 -0
  43. ai_ify-0.1.0/src/aiify/static/panel.css +108 -0
  44. ai_ify-0.1.0/src/aiify/static/panel.js +334 -0
  45. ai_ify-0.1.0/src/aiify/static/vendor/PAGE_CONTROLLER_LICENSE +51 -0
  46. ai_ify-0.1.0/src/aiify/static/vendor/page-controller.js +2741 -0
  47. ai_ify-0.1.0/src/aiify/testing/__init__.py +6 -0
  48. ai_ify-0.1.0/src/aiify/testing/fake_agent.py +159 -0
  49. ai_ify-0.1.0/src/aiify/ui_relay.py +166 -0
  50. ai_ify-0.1.0/src/aiify/usage.py +325 -0
  51. ai_ify-0.1.0/src/aiify/web.py +184 -0
  52. ai_ify-0.1.0/tests/test_accounts.py +146 -0
  53. ai_ify-0.1.0/tests/test_actions.py +239 -0
  54. ai_ify-0.1.0/tests/test_browser.py +218 -0
  55. ai_ify-0.1.0/tests/test_cli.py +72 -0
  56. ai_ify-0.1.0/tests/test_context.py +50 -0
  57. ai_ify-0.1.0/tests/test_control_port.py +117 -0
  58. ai_ify-0.1.0/tests/test_engine.py +237 -0
  59. ai_ify-0.1.0/tests/test_policy.py +23 -0
  60. ai_ify-0.1.0/tests/test_prompting.py +46 -0
  61. ai_ify-0.1.0/tests/test_ui_relay.py +170 -0
  62. ai_ify-0.1.0/tests/test_usage.py +110 -0
  63. 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.
@@ -0,0 +1,3 @@
1
+ include README_AI.md
2
+ include aiify_context.json
3
+ include LICENSE
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.