agent-code 1.0.1__tar.gz → 1.0.2__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 (28) hide show
  1. {agent_code-1.0.1/src/agent_code.egg-info → agent_code-1.0.2}/PKG-INFO +1 -1
  2. {agent_code-1.0.1 → agent_code-1.0.2}/pyproject.toml +54 -54
  3. {agent_code-1.0.1 → agent_code-1.0.2}/src/agent_code/__init__.py +2 -2
  4. agent_code-1.0.2/src/agent_code/data/skills/browser/skill.md +30 -0
  5. agent_code-1.0.2/src/agent_code/data/skills/browser/skill.py +165 -0
  6. {agent_code-1.0.1 → agent_code-1.0.2/src/agent_code.egg-info}/PKG-INFO +1 -1
  7. {agent_code-1.0.1 → agent_code-1.0.2}/src/agent_code.egg-info/SOURCES.txt +2 -0
  8. {agent_code-1.0.1 → agent_code-1.0.2}/LICENSE +0 -0
  9. {agent_code-1.0.1 → agent_code-1.0.2}/LICENSE-GPL +0 -0
  10. {agent_code-1.0.1 → agent_code-1.0.2}/MANIFEST.in +0 -0
  11. {agent_code-1.0.1 → agent_code-1.0.2}/README.md +0 -0
  12. {agent_code-1.0.1 → agent_code-1.0.2}/setup.cfg +0 -0
  13. {agent_code-1.0.1 → agent_code-1.0.2}/src/agent_code/__main__.py +0 -0
  14. {agent_code-1.0.1 → agent_code-1.0.2}/src/agent_code/agent.py +0 -0
  15. {agent_code-1.0.1 → agent_code-1.0.2}/src/agent_code/cli.py +0 -0
  16. {agent_code-1.0.1 → agent_code-1.0.2}/src/agent_code/data/skills/filesystem/skill.md +0 -0
  17. {agent_code-1.0.1 → agent_code-1.0.2}/src/agent_code/data/skills/filesystem/skill.py +0 -0
  18. {agent_code-1.0.1 → agent_code-1.0.2}/src/agent_code/data/skills/public_api/skill.md +0 -0
  19. {agent_code-1.0.1 → agent_code-1.0.2}/src/agent_code/data/skills/public_api/skill.py +0 -0
  20. {agent_code-1.0.1 → agent_code-1.0.2}/src/agent_code/data/skills/temp_mail/skill.md +0 -0
  21. {agent_code-1.0.1 → agent_code-1.0.2}/src/agent_code/data/skills/temp_mail/skill.py +0 -0
  22. {agent_code-1.0.1 → agent_code-1.0.2}/src/agent_code/loader.py +0 -0
  23. {agent_code-1.0.1 → agent_code-1.0.2}/src/agent_code/paths.py +0 -0
  24. {agent_code-1.0.1 → agent_code-1.0.2}/src/agent_code/skill_manager.py +0 -0
  25. {agent_code-1.0.1 → agent_code-1.0.2}/src/agent_code.egg-info/dependency_links.txt +0 -0
  26. {agent_code-1.0.1 → agent_code-1.0.2}/src/agent_code.egg-info/entry_points.txt +0 -0
  27. {agent_code-1.0.1 → agent_code-1.0.2}/src/agent_code.egg-info/requires.txt +0 -0
  28. {agent_code-1.0.1 → agent_code-1.0.2}/src/agent_code.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-code
3
- Version: 1.0.1
3
+ Version: 1.0.2
4
4
  Summary: Local AI agent with headless browser, sandboxed shell, and plug-and-play skills
5
5
  Author: minecraftbefile-maker
6
6
  License-Expression: MIT
@@ -1,55 +1,55 @@
1
- [build-system]
2
- requires = ["setuptools>=77", "wheel"]
3
- build-backend = "setuptools.build_meta"
4
-
5
- [project]
6
- name = "agent-code"
7
- version = "1.0.1"
8
- description = "Local AI agent with headless browser, sandboxed shell, and plug-and-play skills"
9
- readme = "README.md"
10
- requires-python = ">=3.10"
11
- license = "MIT"
12
- license-files = ["LICENSE", "LICENSE-GPL"]
13
- authors = [{ name = "minecraftbefile-maker" }]
14
- keywords = ["ai", "agent", "llm", "browser", "automation", "skills", "openai"]
15
-
16
- classifiers = [
17
- "Development Status :: 4 - Beta",
18
- "Environment :: Console",
19
- "Intended Audience :: Developers",
20
- "Operating System :: OS Independent",
21
- "Programming Language :: Python :: 3",
22
- "Programming Language :: Python :: 3.10",
23
- "Programming Language :: Python :: 3.11",
24
- "Programming Language :: Python :: 3.12",
25
- ]
26
-
27
- dependencies = [
28
- "DrissionPage>=4.0.0",
29
- "openai>=1.0.0",
30
- ]
31
-
32
- [project.optional-dependencies]
33
- email = ["requests>=2.31.0"]
34
- all = ["requests>=2.31.0"]
35
-
36
- [project.urls]
37
- Homepage = "https://agent-code.freesrv.com"
38
- Repository = "https://github.com/Agent-code-dev/Agent-code"
39
- Issues = "https://github.com/Agent-code-dev/Agent-code/issues"
40
- Changelog = "https://github.com/Agent-code-dev/Agent-code/releases"
41
-
42
- [project.scripts]
43
- agent-code = "agent_code.cli:main"
44
-
45
- [tool.setuptools]
46
- package-dir = { "" = "src" }
47
-
48
- [tool.setuptools.packages.find]
49
- where = ["src"]
50
-
51
- [tool.setuptools.package-data]
52
- agent_code = [
53
- "data/skills/*/*.py",
54
- "data/skills/*/*.md",
1
+ [build-system]
2
+ requires = ["setuptools>=77", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "agent-code"
7
+ version = "1.0.2"
8
+ description = "Local AI agent with headless browser, sandboxed shell, and plug-and-play skills"
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ license = "MIT"
12
+ license-files = ["LICENSE", "LICENSE-GPL"]
13
+ authors = [{ name = "minecraftbefile-maker" }]
14
+ keywords = ["ai", "agent", "llm", "browser", "automation", "skills", "openai"]
15
+
16
+ classifiers = [
17
+ "Development Status :: 4 - Beta",
18
+ "Environment :: Console",
19
+ "Intended Audience :: Developers",
20
+ "Operating System :: OS Independent",
21
+ "Programming Language :: Python :: 3",
22
+ "Programming Language :: Python :: 3.10",
23
+ "Programming Language :: Python :: 3.11",
24
+ "Programming Language :: Python :: 3.12",
25
+ ]
26
+
27
+ dependencies = [
28
+ "DrissionPage>=4.0.0",
29
+ "openai>=1.0.0",
30
+ ]
31
+
32
+ [project.optional-dependencies]
33
+ email = ["requests>=2.31.0"]
34
+ all = ["requests>=2.31.0"]
35
+
36
+ [project.urls]
37
+ Homepage = "https://agent-code.freesrv.com"
38
+ Repository = "https://github.com/Agent-code-dev/Agent-code"
39
+ Issues = "https://github.com/Agent-code-dev/Agent-code/issues"
40
+ Changelog = "https://github.com/Agent-code-dev/Agent-code/releases"
41
+
42
+ [project.scripts]
43
+ agent-code = "agent_code.cli:main"
44
+
45
+ [tool.setuptools]
46
+ package-dir = { "" = "src" }
47
+
48
+ [tool.setuptools.packages.find]
49
+ where = ["src"]
50
+
51
+ [tool.setuptools.package-data]
52
+ agent_code = [
53
+ "data/skills/*/*.py",
54
+ "data/skills/*/*.md",
55
55
  ]
@@ -1,2 +1,2 @@
1
- """Agent + Skill Store — local AI agent with headless browser and skills."""
2
- __version__ = "1.0.0"
1
+ """Agent + Skill Store — local AI agent with headless browser and skills."""
2
+ __version__ = "1.0.2"
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: browser
3
+ description: Headless Chromium via DrissionPage: navigate, read, click, type, scroll.
4
+ version: 1.0.0
5
+ author: agent-code
6
+ ---
7
+
8
+ # browser
9
+
10
+ Headless Chromium wrapped as a skill. Cookies and history survive between
11
+ calls in the same agent session.
12
+
13
+ ## Tools
14
+
15
+ | Tool | Arguments | What it does |
16
+ |---|---|---|
17
+ | `browser_navigate` | `url` | Open a URL. `https://` added if missing. |
18
+ | `browser_snapshot` | `max_chars` (default 6000) | Return visible body text. |
19
+ | `browser_click` | `selector` | Click an element by CSS selector. |
20
+ | `browser_type` | `selector`, `text` | Clear and type into an input. |
21
+ | `browser_links` | `limit` (default 30) | List anchor text and hrefs. |
22
+ | `browser_scroll` | `pixels` (default 800) | Scroll down. |
23
+
24
+ ## Slash command
25
+
26
+ - `/browser-close` - shut down the headless Chromium process.
27
+
28
+ ## Requirements
29
+
30
+ pip install DrissionPage
@@ -0,0 +1,165 @@
1
+ """Headless Chromium browser skill via DrissionPage."""
2
+ from DrissionPage import ChromiumPage, ChromiumOptions
3
+
4
+ _page = None
5
+
6
+
7
+ def _get_page():
8
+ global _page
9
+ if _page is None:
10
+ opts = (ChromiumOptions()
11
+ .headless(True)
12
+ .set_argument("--no-sandbox")
13
+ .set_argument("--disable-dev-shm-usage")
14
+ .set_argument("--disable-blink-features=AutomationControlled"))
15
+ _page = ChromiumPage(opts)
16
+ return _page
17
+
18
+
19
+ def navigate(url):
20
+ if not isinstance(url, str) or not url.strip():
21
+ return "ERROR: url required"
22
+ if not url.startswith(("http://", "https://")):
23
+ url = "https://" + url
24
+ try:
25
+ page = _get_page()
26
+ page.get(url, timeout=30)
27
+ return "OK title={!r} url={}".format(page.title, page.url)
28
+ except Exception as e:
29
+ return "ERROR: " + str(e)
30
+
31
+
32
+ def snapshot(max_chars=6000):
33
+ try:
34
+ page = _get_page()
35
+ body = page.ele("tag:body", timeout=5)
36
+ text = body.text if body else page.html
37
+ return (text or "(empty)")[:int(max_chars)]
38
+ except Exception as e:
39
+ return "ERROR: " + str(e)
40
+
41
+
42
+ def click(selector):
43
+ try:
44
+ page = _get_page()
45
+ ele = page.ele(selector, timeout=5)
46
+ if not ele:
47
+ return "NOT_FOUND: " + str(selector)
48
+ ele.click()
49
+ return "OK"
50
+ except Exception as e:
51
+ return "ERROR: " + str(e)
52
+
53
+
54
+ def type_text(selector, text):
55
+ try:
56
+ page = _get_page()
57
+ ele = page.ele(selector, timeout=5)
58
+ if not ele:
59
+ return "NOT_FOUND: " + str(selector)
60
+ try:
61
+ ele.clear()
62
+ except Exception:
63
+ pass
64
+ ele.input(str(text))
65
+ return "OK"
66
+ except Exception as e:
67
+ return "ERROR: " + str(e)
68
+
69
+
70
+ def links(limit=30):
71
+ try:
72
+ page = _get_page()
73
+ out = []
74
+ for a in page.eles("tag:a")[:int(limit)]:
75
+ t = (a.text or "").strip()[:80]
76
+ h = a.attr("href") or ""
77
+ if t and h:
78
+ out.append("{} -> {}".format(t, h))
79
+ return "\n".join(out) or "(no links)"
80
+ except Exception as e:
81
+ return "ERROR: " + str(e)
82
+
83
+
84
+ def scroll(pixels=800):
85
+ try:
86
+ page = _get_page()
87
+ page.scroll.down(int(pixels))
88
+ return "OK scrolled {}px".format(pixels)
89
+ except Exception as e:
90
+ return "ERROR: " + str(e)
91
+
92
+
93
+ def close():
94
+ global _page
95
+ try:
96
+ if _page is not None:
97
+ _page.quit()
98
+ except Exception:
99
+ pass
100
+ _page = None
101
+ return "OK"
102
+
103
+
104
+ SKILL = {
105
+ "name": "browser",
106
+ "description": "Headless Chromium via DrissionPage: navigate, read, click, type, scroll.",
107
+ "version": "1.0.0",
108
+ "author": "agent-code",
109
+ }
110
+
111
+ TOOL_SCHEMAS = [
112
+ {"type": "function", "function": {
113
+ "name": "browser_navigate",
114
+ "description": "Open a URL in the headless browser.",
115
+ "parameters": {"type": "object",
116
+ "properties": {"url": {"type": "string"}},
117
+ "required": ["url"]}}},
118
+ {"type": "function", "function": {
119
+ "name": "browser_snapshot",
120
+ "description": "Return visible text of the current page.",
121
+ "parameters": {"type": "object",
122
+ "properties": {"max_chars": {"type": "integer"}}}}},
123
+ {"type": "function", "function": {
124
+ "name": "browser_click",
125
+ "description": "Click an element by CSS selector.",
126
+ "parameters": {"type": "object",
127
+ "properties": {"selector": {"type": "string"}},
128
+ "required": ["selector"]}}},
129
+ {"type": "function", "function": {
130
+ "name": "browser_type",
131
+ "description": "Type text into an input identified by CSS selector.",
132
+ "parameters": {"type": "object",
133
+ "properties": {"selector": {"type": "string"},
134
+ "text": {"type": "string"}},
135
+ "required": ["selector", "text"]}}},
136
+ {"type": "function", "function": {
137
+ "name": "browser_links",
138
+ "description": "List clickable links on the current page.",
139
+ "parameters": {"type": "object",
140
+ "properties": {"limit": {"type": "integer"}}}}},
141
+ {"type": "function", "function": {
142
+ "name": "browser_scroll",
143
+ "description": "Scroll the page down by N pixels.",
144
+ "parameters": {"type": "object",
145
+ "properties": {"pixels": {"type": "integer"}}}}},
146
+ ]
147
+
148
+ TOOL_CALLABLES = {
149
+ "browser_navigate": navigate,
150
+ "browser_snapshot": snapshot,
151
+ "browser_click": click,
152
+ "browser_type": type_text,
153
+ "browser_links": links,
154
+ "browser_scroll": scroll,
155
+ }
156
+
157
+
158
+ def _cmd_close(args, log):
159
+ log(close(), "dim")
160
+
161
+
162
+ COMMANDS = {
163
+ "browser-close": {"handler": _cmd_close,
164
+ "description": "Close the headless browser."},
165
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-code
3
- Version: 1.0.1
3
+ Version: 1.0.2
4
4
  Summary: Local AI agent with headless browser, sandboxed shell, and plug-and-play skills
5
5
  Author: minecraftbefile-maker
6
6
  License-Expression: MIT
@@ -16,6 +16,8 @@ src/agent_code.egg-info/dependency_links.txt
16
16
  src/agent_code.egg-info/entry_points.txt
17
17
  src/agent_code.egg-info/requires.txt
18
18
  src/agent_code.egg-info/top_level.txt
19
+ src/agent_code/data/skills/browser/skill.md
20
+ src/agent_code/data/skills/browser/skill.py
19
21
  src/agent_code/data/skills/filesystem/skill.md
20
22
  src/agent_code/data/skills/filesystem/skill.py
21
23
  src/agent_code/data/skills/public_api/skill.md
File without changes
File without changes
File without changes
File without changes
File without changes