imap-agent-cli 0.1.2__tar.gz → 0.1.3__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 (27) hide show
  1. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/PKG-INFO +5 -5
  2. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/README.md +4 -4
  3. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/pyproject.toml +1 -1
  4. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/src/imap_agent_cli/__init__.py +1 -1
  5. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/src/imap_agent_cli/skill.py +14 -15
  6. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/tests/test_skill.py +8 -1
  7. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/.github/workflows/publish.yml +0 -0
  8. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/.gitignore +0 -0
  9. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/LICENSE +0 -0
  10. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/imap_agent_cli.py +0 -0
  11. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/spec.md +0 -0
  12. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/src/imap_agent_cli/cli.py +0 -0
  13. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/src/imap_agent_cli/config.py +0 -0
  14. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/src/imap_agent_cli/errors.py +0 -0
  15. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/src/imap_agent_cli/imap_client.py +0 -0
  16. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/src/imap_agent_cli/mime.py +0 -0
  17. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/src/imap_agent_cli/models.py +0 -0
  18. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/src/imap_agent_cli/render.py +0 -0
  19. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/src/imap_agent_cli/search.py +0 -0
  20. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/tests/__init__.py +0 -0
  21. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/tests/_bootstrap.py +0 -0
  22. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/tests/pymap_server_runner.py +0 -0
  23. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/tests/test_cli.py +0 -0
  24. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/tests/test_config.py +0 -0
  25. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/tests/test_mime.py +0 -0
  26. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/tests/test_pymap_integration.py +0 -0
  27. {imap_agent_cli-0.1.2 → imap_agent_cli-0.1.3}/tests/test_search.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: imap-agent-cli
3
- Version: 0.1.2
3
+ Version: 0.1.3
4
4
  Summary: Agent-first IMAP CLI for safe email search, read, attachment download, and draft creation
5
5
  Project-URL: Homepage, https://github.com/pseudosavant/imap-agent-cli
6
6
  Project-URL: Repository, https://github.com/pseudosavant/imap-agent-cli
@@ -74,7 +74,7 @@ imap-agent-cli folders
74
74
  imap-agent-cli search --folder INBOX --subject "invoice" --max-results 10
75
75
  imap-agent-cli read --folder INBOX --uid 12345 --body-format html
76
76
  imap-agent-cli attachments --folder INBOX --uid 12345
77
- imap-agent-cli attachments download --folder INBOX --uid 12345 --part-id 2 --output-dir C:\tmp\email-attachments
77
+ imap-agent-cli attachments download --folder INBOX --uid 12345 --part-id 2 --output-dir ./email-attachments
78
78
  imap-agent-cli draft create --to person@example.com --subject "Hello" --body "Draft only."
79
79
  imap-agent-cli draft reply --folder INBOX --uid 12345 --body "Thanks. I will review this."
80
80
  ```
@@ -104,9 +104,9 @@ Config path:
104
104
 
105
105
  Secrets should stay in environment variables, not the config file.
106
106
 
107
- ## Codex Skill
107
+ ## Agent Skill
108
108
 
109
- Install or update the user-scoped Codex skill:
109
+ Install or update the user-scoped `imap` skill:
110
110
 
111
111
  ```text
112
112
  imap-agent-cli install-skill
@@ -127,7 +127,7 @@ imap-agent-cli remove-skill
127
127
  Use `--skills-dir PATH` to install into a nonstandard skills directory, for example:
128
128
 
129
129
  ```text
130
- imap-agent-cli install-skill --skills-dir C:\Users\PaulEllis\.agents\skills
130
+ imap-agent-cli install-skill --skills-dir ~/.agents/skills
131
131
  ```
132
132
 
133
133
  ## Safety Boundary
@@ -41,7 +41,7 @@ imap-agent-cli folders
41
41
  imap-agent-cli search --folder INBOX --subject "invoice" --max-results 10
42
42
  imap-agent-cli read --folder INBOX --uid 12345 --body-format html
43
43
  imap-agent-cli attachments --folder INBOX --uid 12345
44
- imap-agent-cli attachments download --folder INBOX --uid 12345 --part-id 2 --output-dir C:\tmp\email-attachments
44
+ imap-agent-cli attachments download --folder INBOX --uid 12345 --part-id 2 --output-dir ./email-attachments
45
45
  imap-agent-cli draft create --to person@example.com --subject "Hello" --body "Draft only."
46
46
  imap-agent-cli draft reply --folder INBOX --uid 12345 --body "Thanks. I will review this."
47
47
  ```
@@ -71,9 +71,9 @@ Config path:
71
71
 
72
72
  Secrets should stay in environment variables, not the config file.
73
73
 
74
- ## Codex Skill
74
+ ## Agent Skill
75
75
 
76
- Install or update the user-scoped Codex skill:
76
+ Install or update the user-scoped `imap` skill:
77
77
 
78
78
  ```text
79
79
  imap-agent-cli install-skill
@@ -94,7 +94,7 @@ imap-agent-cli remove-skill
94
94
  Use `--skills-dir PATH` to install into a nonstandard skills directory, for example:
95
95
 
96
96
  ```text
97
- imap-agent-cli install-skill --skills-dir C:\Users\PaulEllis\.agents\skills
97
+ imap-agent-cli install-skill --skills-dir ~/.agents/skills
98
98
  ```
99
99
 
100
100
  ## Safety Boundary
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "imap-agent-cli"
7
- version = "0.1.2"
7
+ version = "0.1.3"
8
8
  description = "Agent-first IMAP CLI for safe email search, read, attachment download, and draft creation"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -1,3 +1,3 @@
1
1
  """Agent-first IMAP CLI."""
2
2
 
3
- __version__ = "0.1.2"
3
+ __version__ = "0.1.3"
@@ -13,7 +13,7 @@ MANAGED_MARKER = "<!-- managed-by: imap-agent-cli -->"
13
13
 
14
14
  SKILL_MD = f"""---
15
15
  name: imap
16
- description: Use when the user asks Codex to search, read, summarize, inspect, or draft email using the local imap-agent-cli tool. Covers safe IMAP-only email access, folder enumeration, attachment download, and draft creation; must not send, delete, move, archive, flag, label, or mark messages read/unread.
16
+ description: Use when the user asks an agentic tool to search, read, summarize, inspect, or draft email using imap-agent-cli. Covers safe IMAP-only email access, folder enumeration, attachment download, and draft creation; must not send, delete, move, archive, flag, label, or mark messages read/unread.
17
17
  ---
18
18
 
19
19
  {MANAGED_MARKER}
@@ -37,14 +37,13 @@ Use `imap-agent-cli` for safe agentic email workflows over IMAP. The tool can se
37
37
 
38
38
  Prefer the published CLI:
39
39
 
40
- ```powershell
41
- $env:UV_LINK_MODE = "copy"
40
+ ```text
42
41
  uvx --refresh-package imap-agent-cli imap-agent-cli <command>
43
42
  ```
44
43
 
45
44
  If working inside the `imap-agent-cli` repository, this local form is also valid:
46
45
 
47
- ```powershell
46
+ ```text
48
47
  uv run ./imap_agent_cli.py <command>
49
48
  ```
50
49
 
@@ -63,7 +62,7 @@ IMAP_AGENT_CLI_DRAFTS_FOLDER
63
62
 
64
63
  Use this to discover folder names and Drafts naming:
65
64
 
66
- ```powershell
65
+ ```text
67
66
  uvx --refresh-package imap-agent-cli imap-agent-cli folders
68
67
  ```
69
68
 
@@ -73,7 +72,7 @@ Return only relevant folder names/counts to the user unless they ask for the ful
73
72
 
74
73
  Search defaults to `INBOX` when no folder is provided:
75
74
 
76
- ```powershell
75
+ ```text
77
76
  uvx --refresh-package imap-agent-cli imap-agent-cli search --folder INBOX --max-results 10
78
77
  uvx --refresh-package imap-agent-cli imap-agent-cli search --folder INBOX --subject "invoice" --max-results 10
79
78
  uvx --refresh-package imap-agent-cli imap-agent-cli search --folder INBOX --from "Justin" --max-results 10
@@ -84,13 +83,13 @@ If a server-side `--from` search times out, enumerate recent messages with a bou
84
83
 
85
84
  For child folders:
86
85
 
87
- ```powershell
86
+ ```text
88
87
  uvx --refresh-package imap-agent-cli imap-agent-cli search --folder Projects --recursive --max-results 25
89
88
  ```
90
89
 
91
90
  For all folders, use sparingly because large mailboxes can be slow:
92
91
 
93
- ```powershell
92
+ ```text
94
93
  uvx --refresh-package imap-agent-cli imap-agent-cli search --all-folders --subject "contract" --max-results 25
95
94
  ```
96
95
 
@@ -98,7 +97,7 @@ uvx --refresh-package imap-agent-cli imap-agent-cli search --all-folders --subje
98
97
 
99
98
  Read a message by folder and UID from search results:
100
99
 
101
- ```powershell
100
+ ```text
102
101
  uvx --refresh-package imap-agent-cli imap-agent-cli read --folder INBOX --uid 12345 --body-format metadata
103
102
  uvx --refresh-package imap-agent-cli imap-agent-cli read --folder INBOX --uid 12345 --body-format plain --max-body-chars 12000
104
103
  uvx --refresh-package imap-agent-cli imap-agent-cli read --folder INBOX --uid 12345 --body-format html
@@ -110,15 +109,15 @@ Use `metadata` first when confirming identity, attachments, or headers. Use `pla
110
109
 
111
110
  List attachment metadata:
112
111
 
113
- ```powershell
112
+ ```text
114
113
  uvx --refresh-package imap-agent-cli imap-agent-cli attachments --folder INBOX --uid 12345
115
114
  ```
116
115
 
117
116
  Download requires an explicit output directory:
118
117
 
119
- ```powershell
120
- uvx --refresh-package imap-agent-cli imap-agent-cli attachments download --folder INBOX --uid 12345 --part-id 1 --output-dir C:\\tmp\\email-attachments
121
- uvx --refresh-package imap-agent-cli imap-agent-cli attachments download --folder INBOX --uid 12345 --all --output-dir C:\\tmp\\email-attachments
118
+ ```text
119
+ uvx --refresh-package imap-agent-cli imap-agent-cli attachments download --folder INBOX --uid 12345 --part-id 1 --output-dir ./email-attachments
120
+ uvx --refresh-package imap-agent-cli imap-agent-cli attachments download --folder INBOX --uid 12345 --all --output-dir ./email-attachments
122
121
  ```
123
122
 
124
123
  Report saved paths to the user.
@@ -127,13 +126,13 @@ Report saved paths to the user.
127
126
 
128
127
  Create a new draft:
129
128
 
130
- ```powershell
129
+ ```text
131
130
  uvx --refresh-package imap-agent-cli imap-agent-cli draft create --to person@example.com --subject "Subject" --body "Draft body"
132
131
  ```
133
132
 
134
133
  Create a reply draft from an existing message:
135
134
 
136
- ```powershell
135
+ ```text
137
136
  uvx --refresh-package imap-agent-cli imap-agent-cli draft reply --folder INBOX --uid 12345 --body "Draft reply body"
138
137
  ```
139
138
 
@@ -11,7 +11,7 @@ from tests import _bootstrap # noqa: F401
11
11
 
12
12
  from imap_agent_cli.cli import main
13
13
  from imap_agent_cli.errors import AppError
14
- from imap_agent_cli.skill import MANAGED_MARKER, install_skill, remove_skill
14
+ from imap_agent_cli.skill import MANAGED_MARKER, SKILL_MD, install_skill, remove_skill
15
15
 
16
16
 
17
17
  class SkillTests(unittest.TestCase):
@@ -32,6 +32,13 @@ class SkillTests(unittest.TestCase):
32
32
  self.assertTrue(second["installed"])
33
33
  self.assertFalse(second["updated"])
34
34
 
35
+ def test_skill_text_is_platform_and_agent_neutral(self) -> None:
36
+ self.assertIn("agentic tool", SKILL_MD)
37
+ self.assertNotIn("Codex", SKILL_MD)
38
+ self.assertNotIn("powershell", SKILL_MD.lower())
39
+ self.assertNotIn("UV_LINK_MODE", SKILL_MD)
40
+ self.assertNotIn("C:\\tmp", SKILL_MD)
41
+
35
42
  def test_remove_skill_removes_only_managed_skill(self) -> None:
36
43
  with tempfile.TemporaryDirectory() as tmp:
37
44
  root = Path(tmp)
File without changes
File without changes