janet-cli 0.2.7__py3-none-any.whl → 0.2.33__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.
- janet/__init__.py +1 -1
- janet/api/client.py +36 -0
- janet/api/projects.py +20 -0
- janet/api/tickets.py +168 -1
- janet/auth/callback_server.py +5 -4
- janet/auth/oauth_flow.py +0 -1
- janet/auth/token_manager.py +31 -5
- janet/cli.py +512 -10
- janet/config/models.py +13 -1
- janet/markdown/generator.py +74 -21
- janet/markdown/yjs_converter.py +103 -17
- janet/sync/readme_generator.py +186 -90
- janet/sync/sse_watcher.py +264 -0
- janet/sync/sync_engine.py +16 -7
- janet_cli-0.2.33.dist-info/METADATA +356 -0
- janet_cli-0.2.33.dist-info/RECORD +34 -0
- janet_cli-0.2.7.dist-info/METADATA +0 -215
- janet_cli-0.2.7.dist-info/RECORD +0 -33
- {janet_cli-0.2.7.dist-info → janet_cli-0.2.33.dist-info}/WHEEL +0 -0
- {janet_cli-0.2.7.dist-info → janet_cli-0.2.33.dist-info}/entry_points.txt +0 -0
- {janet_cli-0.2.7.dist-info → janet_cli-0.2.33.dist-info}/licenses/LICENSE +0 -0
- {janet_cli-0.2.7.dist-info → janet_cli-0.2.33.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
janet/__init__.py,sha256=m_FugeW0b_uTMJfA1qsOphOXDzR5e31CxHueqKvH8AM,83
|
|
2
|
+
janet/__main__.py,sha256=nxsNRykF1aXRRSYNcMvohre4QDfpUzyr5JMyHRHWrwI,130
|
|
3
|
+
janet/cli.py,sha256=A4R2-KTlTfBk4VwvMy5N5Zk22bP0abOuGgrCEGXO7cQ,40693
|
|
4
|
+
janet/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
+
janet/api/client.py,sha256=S9j1HwuF9fuSxXqzpFvoxENd1RD5QbjHOUvB8OZltck,5703
|
|
6
|
+
janet/api/models.py,sha256=41or0kCcEJ3KJ2QCdV1xbrAoAcma_DteqqVlO0Ng18g,2002
|
|
7
|
+
janet/api/organizations.py,sha256=abaita6e2drm6RikTOfU-E1ohPeRPhiTYmWRFG0kqaQ,1539
|
|
8
|
+
janet/api/projects.py,sha256=lId2wi68U8R1gb41_S0FV5NRJf48IJAnWjcNDTzehyQ,2114
|
|
9
|
+
janet/api/tickets.py,sha256=mpy1l0WF6EfG7W_6RzWE_NzFIPkCPGL7m2jwhHgQr0E,9370
|
|
10
|
+
janet/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
+
janet/auth/callback_server.py,sha256=9oWVGOpQbN_Kta6YmG80igJe1RLgO-fLHPIkDtotUdE,12499
|
|
12
|
+
janet/auth/oauth_flow.py,sha256=38kgjwqwoPnKe9-wXKN5eHfUhepgpPI3epN82whKI_Q,9084
|
|
13
|
+
janet/auth/token_manager.py,sha256=f_LY48PB27qJLOh5kqhDmnzAW1kVe-514mdqzyP_b0c,3573
|
|
14
|
+
janet/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
+
janet/config/manager.py,sha256=Bs5YjHIzWPR-KuAFJyQL47ntU_JN87bGhROaYP0B3r4,3216
|
|
16
|
+
janet/config/models.py,sha256=lnOcSlFTGVkEjCjNMOzq9OmPZ3KP0y7cvnoEHp5iQJY,2067
|
|
17
|
+
janet/markdown/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
|
+
janet/markdown/generator.py,sha256=Iik9Hxs24K89jogXyLVOUfOoNgjUu8ZCIH1EVD2nRz0,11216
|
|
19
|
+
janet/markdown/yjs_converter.py,sha256=9CCInQzyjbpyDciMSKaUXCNh3xPn0hAwWhl1RES0KVc,12768
|
|
20
|
+
janet/sync/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
|
+
janet/sync/file_manager.py,sha256=fwV0VYP-0ZpwTAyDVqlVUPn3MB2wK6TvFQq450Lhr0I,5839
|
|
22
|
+
janet/sync/readme_generator.py,sha256=xsc609Vw9iKEZWgnQ8Fiimg7HG4Ngc9fI4ah_eBISdI,12315
|
|
23
|
+
janet/sync/sse_watcher.py,sha256=L7iZfa4n77IImvywSPQf7PYxK9VVb8kjrVOS3qQ5xjQ,11157
|
|
24
|
+
janet/sync/sync_engine.py,sha256=l4bV5KDbF86IVDAbMZRbFWwwP65TW--JqVkmJjXDnA4,9369
|
|
25
|
+
janet/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
|
+
janet/utils/console.py,sha256=zMhX4HUXSco-or9KpqBJmYCzmfH_GWtvq-n2Sy6Dfgc,927
|
|
27
|
+
janet/utils/errors.py,sha256=yxoVDF7ovMT7ooJA-8cvxJK8_3nWumGv7s1n8povi-4,783
|
|
28
|
+
janet/utils/paths.py,sha256=JYp5gcSEjIbYNJaUcAwdpz6rmta9m0JzoBARC6_AWmM,1706
|
|
29
|
+
janet_cli-0.2.33.dist-info/licenses/LICENSE,sha256=wNChlibp2El7r-zfLH8QhOg2oLPAvGwP7ETnVWyNRio,1065
|
|
30
|
+
janet_cli-0.2.33.dist-info/METADATA,sha256=HXsbG-CvSOJxDbcGHK2mzYFfgInlAEdlxtF9WpeLnxA,10225
|
|
31
|
+
janet_cli-0.2.33.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
32
|
+
janet_cli-0.2.33.dist-info/entry_points.txt,sha256=MeYUkStK_xcqW3AylPNpQh_H5zmfojB1-d8WMhifkvw,40
|
|
33
|
+
janet_cli-0.2.33.dist-info/top_level.txt,sha256=Ux5zWeRoPO3Tu87toTRoiwMkIQNQylV9aRO2g7KqNW4,6
|
|
34
|
+
janet_cli-0.2.33.dist-info/RECORD,,
|
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: janet-cli
|
|
3
|
-
Version: 0.2.7
|
|
4
|
-
Summary: CLI tool to sync Janet AI tickets to local markdown files
|
|
5
|
-
Author-email: Janet AI <support@janet-ai.com>
|
|
6
|
-
License: MIT
|
|
7
|
-
Project-URL: Homepage, https://github.com/janet-ai/janet-cli
|
|
8
|
-
Project-URL: Repository, https://github.com/janet-ai/janet-cli
|
|
9
|
-
Project-URL: Issues, https://github.com/janet-ai/janet-cli/issues
|
|
10
|
-
Keywords: cli,janet,tickets,markdown,sync
|
|
11
|
-
Classifier: Development Status :: 3 - Alpha
|
|
12
|
-
Classifier: Intended Audience :: Developers
|
|
13
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
-
Classifier: Programming Language :: Python :: 3
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
-
Requires-Python: >=3.8
|
|
21
|
-
Description-Content-Type: text/markdown
|
|
22
|
-
License-File: LICENSE
|
|
23
|
-
Requires-Dist: typer>=0.12.0
|
|
24
|
-
Requires-Dist: httpx>=0.27.0
|
|
25
|
-
Requires-Dist: pydantic>=2.0.0
|
|
26
|
-
Requires-Dist: pydantic-settings>=2.0.0
|
|
27
|
-
Requires-Dist: rich>=13.0.0
|
|
28
|
-
Requires-Dist: platformdirs>=4.0.0
|
|
29
|
-
Requires-Dist: keyring>=25.0.0
|
|
30
|
-
Requires-Dist: python-dateutil>=2.8.0
|
|
31
|
-
Requires-Dist: pycrdt>=0.9.0
|
|
32
|
-
Requires-Dist: InquirerPy>=0.3.4
|
|
33
|
-
Provides-Extra: dev
|
|
34
|
-
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
|
35
|
-
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
|
|
36
|
-
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
|
|
37
|
-
Requires-Dist: httpx-mock>=0.15.0; extra == "dev"
|
|
38
|
-
Requires-Dist: black>=24.0.0; extra == "dev"
|
|
39
|
-
Requires-Dist: mypy>=1.8.0; extra == "dev"
|
|
40
|
-
Requires-Dist: ruff>=0.2.0; extra == "dev"
|
|
41
|
-
Dynamic: license-file
|
|
42
|
-
|
|
43
|
-
# Janet AI CLI
|
|
44
|
-
|
|
45
|
-
> Sync your Janet AI tickets to local markdown files for seamless integration with AI coding agents.
|
|
46
|
-
|
|
47
|
-
[](https://opensource.org/licenses/MIT)
|
|
48
|
-
[](https://www.python.org/downloads/)
|
|
49
|
-
|
|
50
|
-
## What is Janet AI?
|
|
51
|
-
|
|
52
|
-
[Janet AI](https://tryjanet.ai) is an AI-native project management platform for modern software teams. The Janet CLI allows developers to sync their tickets locally as markdown files, enabling AI coding assistants like Claude Code, Cursor, and GitHub Copilot to have full project context.
|
|
53
|
-
|
|
54
|
-
## Why Use the CLI?
|
|
55
|
-
|
|
56
|
-
AI coding assistants work better when they understand your project's tickets, requirements, and priorities. By syncing Janet AI tickets to your workspace, AI agents can:
|
|
57
|
-
|
|
58
|
-
- Reference specific tickets while writing code
|
|
59
|
-
- Understand requirements and acceptance criteria
|
|
60
|
-
- Answer questions about project priorities
|
|
61
|
-
- Suggest implementations based on ticket descriptions
|
|
62
|
-
|
|
63
|
-
## Installation
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
pip install janet-cli
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## Quick Start
|
|
70
|
-
|
|
71
|
-
### 1. Authenticate
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
janet login
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
### 2. Sync Tickets
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
janet sync
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### 3. Use with AI Agents
|
|
84
|
-
|
|
85
|
-
Your tickets are now available as markdown files! Point your AI coding agent to the sync directory.
|
|
86
|
-
|
|
87
|
-
```bash
|
|
88
|
-
# Example prompts for Claude Code, Cursor, etc:
|
|
89
|
-
"Look at ticket CS-42 and implement the authentication flow"
|
|
90
|
-
"What are the high priority tickets in the Backend project?"
|
|
91
|
-
"Implement the feature described in PROJ-15"
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
## Usage
|
|
95
|
-
|
|
96
|
-
### Basic Commands
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
# Authentication
|
|
100
|
-
janet login # Authenticate with Janet AI
|
|
101
|
-
janet logout # Clear credentials
|
|
102
|
-
janet auth status # Show authentication status
|
|
103
|
-
|
|
104
|
-
# Organization Management
|
|
105
|
-
janet org list # List your organizations
|
|
106
|
-
janet org select <org-id> # Switch organization
|
|
107
|
-
|
|
108
|
-
# Project Management
|
|
109
|
-
janet project list # List projects in current org
|
|
110
|
-
|
|
111
|
-
# Syncing
|
|
112
|
-
janet sync # Interactive mode
|
|
113
|
-
janet sync --all # Sync all projects (skip selection)
|
|
114
|
-
janet sync --dir ./tickets # Specify custom directory
|
|
115
|
-
|
|
116
|
-
# Status & Configuration
|
|
117
|
-
janet status # Show overall status
|
|
118
|
-
janet config show # Display configuration
|
|
119
|
-
janet --help # Show help
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### Example Workflow
|
|
123
|
-
|
|
124
|
-
```bash
|
|
125
|
-
# First time setup
|
|
126
|
-
janet login
|
|
127
|
-
janet sync
|
|
128
|
-
|
|
129
|
-
# Re-sync to get updates
|
|
130
|
-
janet sync
|
|
131
|
-
|
|
132
|
-
# Sync to specific directory
|
|
133
|
-
cd /path/to/my/project
|
|
134
|
-
janet sync --dir ./janet-tickets
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## File Organization
|
|
138
|
-
|
|
139
|
-
Tickets are organized in a clear hierarchy:
|
|
140
|
-
|
|
141
|
-
```
|
|
142
|
-
janet-tickets/
|
|
143
|
-
├── README.md # Context for AI agents
|
|
144
|
-
└── My Organization/
|
|
145
|
-
├── Backend/
|
|
146
|
-
│ ├── BACK-1.md
|
|
147
|
-
│ ├── BACK-2.md
|
|
148
|
-
│ └── BACK-42.md
|
|
149
|
-
└── Frontend/
|
|
150
|
-
├── FRONT-1.md
|
|
151
|
-
└── FRONT-15.md
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
## Markdown Format
|
|
155
|
-
|
|
156
|
-
Each ticket is exported with complete information:
|
|
157
|
-
|
|
158
|
-
```markdown
|
|
159
|
-
# PROJ-42: Add user authentication
|
|
160
|
-
|
|
161
|
-
## Metadata
|
|
162
|
-
- **Status:** In Progress
|
|
163
|
-
- **Priority:** High
|
|
164
|
-
- **Type:** Feature
|
|
165
|
-
- **Assignees:** John Doe, Jane Smith
|
|
166
|
-
- **Created:** Jan 07, 2026 10:30 AM
|
|
167
|
-
- **Updated:** Jan 07, 2026 02:45 PM
|
|
168
|
-
- **Labels:** backend, security
|
|
169
|
-
|
|
170
|
-
## Description
|
|
171
|
-
|
|
172
|
-
We need to implement OAuth authentication...
|
|
173
|
-
|
|
174
|
-
### Requirements
|
|
175
|
-
- Support multiple auth providers
|
|
176
|
-
- Handle token refresh
|
|
177
|
-
- Secure token storage
|
|
178
|
-
|
|
179
|
-
## Comments (2)
|
|
180
|
-
|
|
181
|
-
### John Doe - Jan 07, 2026 11:00 AM
|
|
182
|
-
|
|
183
|
-
Started working on the OAuth flow.
|
|
184
|
-
|
|
185
|
-
### Jane Smith - Jan 07, 2026 01:30 PM
|
|
186
|
-
|
|
187
|
-
Looks good! Add tests when done.
|
|
188
|
-
|
|
189
|
-
## Attachments (1)
|
|
190
|
-
|
|
191
|
-
### design-mockup.png
|
|
192
|
-
- **Type:** image/png
|
|
193
|
-
- **Uploaded by:** Jane Smith
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
## Configuration
|
|
197
|
-
|
|
198
|
-
The CLI stores configuration at:
|
|
199
|
-
- **macOS/Linux:** `~/.config/janet-cli/config.json`
|
|
200
|
-
- **Windows:** `%APPDATA%\janet-cli\config.json`
|
|
201
|
-
|
|
202
|
-
Configuration includes authentication tokens and your selected organization.
|
|
203
|
-
|
|
204
|
-
## Requirements
|
|
205
|
-
|
|
206
|
-
- Python 3.8 or higher
|
|
207
|
-
- Janet AI account ([sign up](https://tryjanet.ai))
|
|
208
|
-
|
|
209
|
-
## License
|
|
210
|
-
|
|
211
|
-
MIT License - see [LICENSE](LICENSE) file for details.
|
|
212
|
-
|
|
213
|
-
## Acknowledgments
|
|
214
|
-
|
|
215
|
-
Built for [Janet AI](https://tryjanet.ai) - The AI-native project management platform backed by Y Combinator.
|
janet_cli-0.2.7.dist-info/RECORD
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
janet/__init__.py,sha256=jb6cAU08aUnzpl3OLR-fSHtHH6xtbIl7Zg6VzGuHWqY,82
|
|
2
|
-
janet/__main__.py,sha256=nxsNRykF1aXRRSYNcMvohre4QDfpUzyr5JMyHRHWrwI,130
|
|
3
|
-
janet/cli.py,sha256=AxjY76l5d7NnsaYEEvUP4dJ1LxXsY1Ya-uNaTGSfXd8,20391
|
|
4
|
-
janet/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
-
janet/api/client.py,sha256=fiIpCaQlvXBn_T2VGf0sT9jyQE83Xx7o_WJkCDnwykY,4399
|
|
6
|
-
janet/api/models.py,sha256=41or0kCcEJ3KJ2QCdV1xbrAoAcma_DteqqVlO0Ng18g,2002
|
|
7
|
-
janet/api/organizations.py,sha256=abaita6e2drm6RikTOfU-E1ohPeRPhiTYmWRFG0kqaQ,1539
|
|
8
|
-
janet/api/projects.py,sha256=Oxao4vvXMuXWMfUwZUuBrhkSUtC8t57FNc2d6Qzd5ms,1488
|
|
9
|
-
janet/api/tickets.py,sha256=5xdcL1CqXFeuIhnCtQLS2ex-ujbl3j5YBfbHnkX-duM,4125
|
|
10
|
-
janet/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
-
janet/auth/callback_server.py,sha256=mLkkQMMN6PnNUFf4mlQyY3eKOgK1W6_9O9u90xsLMhY,12499
|
|
12
|
-
janet/auth/oauth_flow.py,sha256=YaLQVRXyhAvZ3IWkd3AvjQlCkQgRRjhPEU9fXfZBgko,9133
|
|
13
|
-
janet/auth/token_manager.py,sha256=YxqSmIRiueGYmDxvPeRt--dLpXSfeFd61qCW91FTujU,2721
|
|
14
|
-
janet/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
-
janet/config/manager.py,sha256=Bs5YjHIzWPR-KuAFJyQL47ntU_JN87bGhROaYP0B3r4,3216
|
|
16
|
-
janet/config/models.py,sha256=2ZLAgM5CwuwQF0C0mZGjxrJO_ECgDGCQ6rnOg68sBp0,1741
|
|
17
|
-
janet/markdown/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
|
-
janet/markdown/generator.py,sha256=CgjvCjkna7XsigsrurdSnAXVPYajLQjlP8puuKkSTVM,9168
|
|
19
|
-
janet/markdown/yjs_converter.py,sha256=omoT6dZ0K3UIoSun2fczTw56vbTrHomz64no3U0YUwo,8482
|
|
20
|
-
janet/sync/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
|
-
janet/sync/file_manager.py,sha256=fwV0VYP-0ZpwTAyDVqlVUPn3MB2wK6TvFQq450Lhr0I,5839
|
|
22
|
-
janet/sync/readme_generator.py,sha256=RHfqlr-3oyGIy5zRbMcloAo1rrwy5aSqAvleC49QZME,6847
|
|
23
|
-
janet/sync/sync_engine.py,sha256=yI4_ELmqbtfFdDDuxDduScxgVAB4UbYCeK5jkyFVwWI,8861
|
|
24
|
-
janet/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
25
|
-
janet/utils/console.py,sha256=zMhX4HUXSco-or9KpqBJmYCzmfH_GWtvq-n2Sy6Dfgc,927
|
|
26
|
-
janet/utils/errors.py,sha256=yxoVDF7ovMT7ooJA-8cvxJK8_3nWumGv7s1n8povi-4,783
|
|
27
|
-
janet/utils/paths.py,sha256=JYp5gcSEjIbYNJaUcAwdpz6rmta9m0JzoBARC6_AWmM,1706
|
|
28
|
-
janet_cli-0.2.7.dist-info/licenses/LICENSE,sha256=wNChlibp2El7r-zfLH8QhOg2oLPAvGwP7ETnVWyNRio,1065
|
|
29
|
-
janet_cli-0.2.7.dist-info/METADATA,sha256=Lc0U529jOpavkaC6mL--RzWzCukL6RM2dkCXwFVg2vg,5875
|
|
30
|
-
janet_cli-0.2.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
31
|
-
janet_cli-0.2.7.dist-info/entry_points.txt,sha256=MeYUkStK_xcqW3AylPNpQh_H5zmfojB1-d8WMhifkvw,40
|
|
32
|
-
janet_cli-0.2.7.dist-info/top_level.txt,sha256=Ux5zWeRoPO3Tu87toTRoiwMkIQNQylV9aRO2g7KqNW4,6
|
|
33
|
-
janet_cli-0.2.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|