pcode 0.1.0__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.
Files changed (163) hide show
  1. pcode/__init__.py +7 -0
  2. pcode/_job_supervisor.py +65 -0
  3. pcode/agent.py +592 -0
  4. pcode/anthropic_oauth.py +469 -0
  5. pcode/app.py +3165 -0
  6. pcode/appearance.py +181 -0
  7. pcode/aside.py +541 -0
  8. pcode/aside_guard.py +39 -0
  9. pcode/aside_ui.py +683 -0
  10. pcode/auth.py +113 -0
  11. pcode/block.py +39 -0
  12. pcode/browser.py +393 -0
  13. pcode/cache_diagnostics.py +336 -0
  14. pcode/cache_settings.py +58 -0
  15. pcode/cache_warnings.py +139 -0
  16. pcode/claude_sdk/__init__.py +96 -0
  17. pcode/claude_sdk/cli.py +52 -0
  18. pcode/claude_sdk/errors.py +61 -0
  19. pcode/claude_sdk/messages.py +154 -0
  20. pcode/claude_sdk/model.py +179 -0
  21. pcode/claude_sdk/resume.py +114 -0
  22. pcode/claude_sdk/session.py +547 -0
  23. pcode/claude_sdk/session_pool.py +251 -0
  24. pcode/claude_sdk/workspace.py +34 -0
  25. pcode/cli.py +73 -0
  26. pcode/clipboard.py +76 -0
  27. pcode/code_mode.py +43 -0
  28. pcode/codex_login.py +189 -0
  29. pcode/command_transcript.py +71 -0
  30. pcode/commands.py +145 -0
  31. pcode/compaction.py +457 -0
  32. pcode/completion.py +263 -0
  33. pcode/config.py +223 -0
  34. pcode/context_breakdown.py +178 -0
  35. pcode/context_usage.py +52 -0
  36. pcode/controller.py +3496 -0
  37. pcode/conversation_ids.py +27 -0
  38. pcode/conversation_tree.py +160 -0
  39. pcode/copy_ui.py +172 -0
  40. pcode/delegation.py +236 -0
  41. pcode/delta.py +295 -0
  42. pcode/diagnostics.py +226 -0
  43. pcode/edit_preview.py +158 -0
  44. pcode/edit_transcript.py +287 -0
  45. pcode/edit_ui.py +850 -0
  46. pcode/edits.py +162 -0
  47. pcode/email_remote/__init__.py +14 -0
  48. pcode/email_remote/cli.py +133 -0
  49. pcode/email_remote/listener.py +695 -0
  50. pcode/email_remote/mailbox.py +336 -0
  51. pcode/email_remote/outbound.py +75 -0
  52. pcode/email_remote/parsing.py +226 -0
  53. pcode/email_remote/render.py +175 -0
  54. pcode/email_remote/state.py +79 -0
  55. pcode/error_report.py +38 -0
  56. pcode/ext.py +602 -0
  57. pcode/extension_guide.md +311 -0
  58. pcode/extensions/browser.py +284 -0
  59. pcode/extensions/ponytail.py +217 -0
  60. pcode/extensions/sandbox.py +138 -0
  61. pcode/extensions/session_history.py +170 -0
  62. pcode/extensions/web_research.py +89 -0
  63. pcode/file_refs.py +265 -0
  64. pcode/filesystem.py +138 -0
  65. pcode/frame.py +149 -0
  66. pcode/gateway.py +465 -0
  67. pcode/git_diff.py +497 -0
  68. pcode/history.py +589 -0
  69. pcode/history_cursor.py +147 -0
  70. pcode/history_embeddings.py +102 -0
  71. pcode/host.py +941 -0
  72. pcode/host_protocol.py +291 -0
  73. pcode/host_ui.py +225 -0
  74. pcode/input_keys.py +35 -0
  75. pcode/inspection.py +289 -0
  76. pcode/inspector_ui.py +448 -0
  77. pcode/isolated_delegation.py +425 -0
  78. pcode/job_notices.py +54 -0
  79. pcode/jobs.py +584 -0
  80. pcode/jobs_ui.py +265 -0
  81. pcode/keymap.py +215 -0
  82. pcode/layout_speed.py +103 -0
  83. pcode/links.py +90 -0
  84. pcode/links_ui.py +200 -0
  85. pcode/live.py +1301 -0
  86. pcode/llm_proxy.py +44 -0
  87. pcode/logins.py +233 -0
  88. pcode/mcp.py +683 -0
  89. pcode/mcp_notice.py +91 -0
  90. pcode/mcp_oauth.py +381 -0
  91. pcode/meridian.py +233 -0
  92. pcode/meridian_process.py +337 -0
  93. pcode/meridian_reminders.py +107 -0
  94. pcode/meridian_setup.py +356 -0
  95. pcode/model_metadata.py +451 -0
  96. pcode/model_ui.py +168 -0
  97. pcode/models.py +209 -0
  98. pcode/native_results.py +119 -0
  99. pcode/oauth_pages.py +66 -0
  100. pcode/output_limits.py +41 -0
  101. pcode/paste.py +45 -0
  102. pcode/path_completion.py +66 -0
  103. pcode/plan_preview.py +131 -0
  104. pcode/plan_sizes.py +35 -0
  105. pcode/planning.py +161 -0
  106. pcode/popup_ui.py +873 -0
  107. pcode/preferences.py +1176 -0
  108. pcode/prefix_keys.py +490 -0
  109. pcode/profile_benchmark.py +332 -0
  110. pcode/profiling.py +566 -0
  111. pcode/project_trust.py +94 -0
  112. pcode/prompt_keys.py +286 -0
  113. pcode/remote.py +717 -0
  114. pcode/remote_print.py +125 -0
  115. pcode/remote_profile.py +237 -0
  116. pcode/replay_benchmark.py +319 -0
  117. pcode/repo_context.py +158 -0
  118. pcode/retries.py +28 -0
  119. pcode/rpc.py +280 -0
  120. pcode/runtime.py +244 -0
  121. pcode/sandbox.py +454 -0
  122. pcode/session_naming.py +82 -0
  123. pcode/session_ui.py +550 -0
  124. pcode/sessions.py +892 -0
  125. pcode/shell.py +113 -0
  126. pcode/shell_mode.py +172 -0
  127. pcode/shell_tools.py +459 -0
  128. pcode/skills.py +161 -0
  129. pcode/stall_log.py +187 -0
  130. pcode/startup_input.py +96 -0
  131. pcode/steering.py +27 -0
  132. pcode/stream_display.py +188 -0
  133. pcode/stream_events.py +437 -0
  134. pcode/strict_tools.py +130 -0
  135. pcode/syntax.py +43 -0
  136. pcode/syntax_colors.py +206 -0
  137. pcode/task_prompt.py +28 -0
  138. pcode/task_worktrees.py +482 -0
  139. pcode/terminal_notify.py +383 -0
  140. pcode/theme.py +135 -0
  141. pcode/theme_gallery.py +88 -0
  142. pcode/thinking_markdown.py +41 -0
  143. pcode/token_accounting.py +67 -0
  144. pcode/tool_display.py +784 -0
  145. pcode/tool_output_limits.py +108 -0
  146. pcode/tool_panel.py +377 -0
  147. pcode/transcript_log.py +127 -0
  148. pcode/transcript_notice.py +103 -0
  149. pcode/tree_ui.py +288 -0
  150. pcode/turn.py +44 -0
  151. pcode/ui.py +3745 -0
  152. pcode/usage.py +293 -0
  153. pcode/word_wrap.py +107 -0
  154. pcode/worker_ui.py +235 -0
  155. pcode/workers.py +136 -0
  156. pcode/workspace.py +57 -0
  157. pcode/workspace_filesystem.py +72 -0
  158. pcode/worktree.py +650 -0
  159. pcode-0.1.0.dist-info/METADATA +145 -0
  160. pcode-0.1.0.dist-info/RECORD +163 -0
  161. pcode-0.1.0.dist-info/WHEEL +4 -0
  162. pcode-0.1.0.dist-info/entry_points.txt +3 -0
  163. pcode-0.1.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,145 @@
1
+ Metadata-Version: 2.5
2
+ Name: pcode
3
+ Version: 0.1.0
4
+ Summary: Terminal-native AI coding agent with background jobs, parallel worktrees, forkable sessions, and multi-model support
5
+ Project-URL: Homepage, https://github.com/cruxwell/pcode
6
+ Project-URL: Documentation, https://cruxwell.github.io/pcode/
7
+ Project-URL: Source, https://github.com/cruxwell/pcode
8
+ Project-URL: Issues, https://github.com/cruxwell/pcode/issues
9
+ Author: Aaron Weisberg
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Keywords: cli,coding-agent,llm,pydantic-ai,terminal
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Operating System :: MacOS
17
+ Classifier: Operating System :: POSIX :: Linux
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Topic :: Software Development
23
+ Requires-Python: >=3.11
24
+ Requires-Dist: filelock<4,>=3.16
25
+ Requires-Dist: genai-prices<0.2,>=0.1.7
26
+ Requires-Dist: httpx2<3,>=2.13
27
+ Requires-Dist: prompt-toolkit==3.0.53
28
+ Requires-Dist: psutil<8,>=6
29
+ Requires-Dist: pydantic-ai-harness[codemode,coder,exa,playwright]<0.53,>=0.52.0
30
+ Requires-Dist: pydantic-ai-slim[anthropic,bedrock,duckduckgo,google,groq,mcp,openai,web-fetch,xai]<3,>=2.52.0
31
+ Requires-Dist: rich<15,>=14
32
+ Requires-Dist: websockets<17,>=15.0.1
33
+ Requires-Dist: yappi<2,>=1.7.6
34
+ Provides-Extra: claude
35
+ Requires-Dist: claude-agent-sdk<0.3,>=0.2.160; extra == 'claude'
36
+ Description-Content-Type: text/markdown
37
+
38
+ <img width="1512" height="947" alt="Screenshot 2026-10-06 at 7 23 29 PM" src="https://github.com/user-attachments/assets/a648fede-d703-44ef-8b52-895d3a0cd2af" />
39
+ <img width="1360" alt="pcode fixing a bug: a word-level diff of the edit, then a worker sub-agent reviewing it with its own plan nested under the task list" src="https://raw.githubusercontent.com/cruxwell/pcode/master/docs/assets/screenshots/readme.png" />
40
+
41
+ # pcode
42
+
43
+ pcode is a terminal-native coding agent built for long-running and parallel
44
+ work. Background commands wake the agent when they finish, every session can
45
+ use its own git worktree, conversations can be rewound and forked, and every
46
+ tool call stays inspectable.
47
+
48
+ - **Slow work doesn't block you.** Long commands become background jobs, and a
49
+ finished job wakes the agent, so it can watch tests or CI and fix what fails.
50
+ - **Agents in parallel.** A git worktree per session lets several agents work
51
+ on one repo at once.
52
+ - **Rewind and fork.** `/tree` returns to any point in a conversation and
53
+ branches from there. Every session is kept, so you can resume or search it.
54
+ - **Nothing hidden.** `/tools` shows every command the agent ran and its full
55
+ output, and scrollback re-renders to show or fold every command and diff.
56
+
57
+ It runs on any model [Pydantic AI](https://ai.pydantic.dev/) supports, or on
58
+ your Claude or ChatGPT subscription.
59
+
60
+ **Documentation: [cruxwell.github.io/pcode](https://cruxwell.github.io/pcode/)**
61
+
62
+ ## Install
63
+
64
+ With [Homebrew](https://brew.sh/):
65
+
66
+ ```sh
67
+ brew tap cruxwell/pcode https://github.com/cruxwell/pcode.git
68
+ brew install --HEAD cruxwell/pcode/pcode
69
+ ```
70
+
71
+ ## Quick start
72
+
73
+ ```sh
74
+ codex login # or /login [claude|openai-codex] inside pcode, or export a provider API key
75
+ pcode -m openai-codex:gpt-5.6-luna # interactive; /model (Ctrl+L) saves a default
76
+ pcode # reuses the saved model, or opens the offline preview
77
+ pcode -C /path/to/repo "Summarize the open TODOs"
78
+ git diff | pcode -p --no-save # non-interactive: reply to stdout
79
+ pcode --continue # resume this directory's newest session
80
+ pcode --theme-preview # offline sample output and the style gallery
81
+ ```
82
+
83
+ **Live mode edits files and runs shell commands with your permissions and no
84
+ approval prompt.** Read [tool permissions](https://cruxwell.github.io/pcode/tools/#tool-permissions)
85
+ before pointing it at anything you care about.
86
+
87
+ ## More
88
+
89
+ - **Your subscription:** Claude runs through Anthropic's own Agent SDK and
90
+ Claude Code login, the way Anthropic supports, and ChatGPT through a Codex
91
+ login. See [providers](https://cruxwell.github.io/pcode/providers/).
92
+ - [Email remote control](https://cruxwell.github.io/pcode/email/): send a task
93
+ from Gmail on your phone, reply to keep going, and take the session over at a
94
+ terminal with `pcode --attach`.
95
+ - [Custom keybindings and Vim editing](https://cruxwell.github.io/pcode/keybindings/):
96
+ map keys to commands with arguments, add a Space leader in normal mode, or use
97
+ `jj` to leave insert mode.
98
+ - `/btw` side questions, background sessions, recall of past sessions, a
99
+ browser the agent can drive, and Python extensions.
100
+ - Pydantic AI's Harness coder capabilities, with the rest of a finished agent
101
+ on top: MCP with OAuth and tool search, searchable sessions, jobs,
102
+ worktrees. Extensions are plain Pydantic AI capabilities. The conversation
103
+ tree follows [pi](https://github.com/badlogic/pi-mono/blob/main/packages/coding-agent/docs/tree.md)'s.
104
+
105
+ See [PLAN.md](https://github.com/cruxwell/pcode/blob/master/PLAN.md) for the longer-term direction.
106
+
107
+ ## Documentation
108
+
109
+ | Page | What it covers |
110
+ | --- | --- |
111
+ | [Getting started](https://cruxwell.github.io/pcode/getting-started/) | Homebrew and source installs, `-C`, `--print`, shell completion |
112
+ | [Scrollback and transparency](https://cruxwell.github.io/pcode/guide/scrollback/) | Guide: what goes into scrollback, `/tools`, `/diffs` |
113
+ | [A shell for long-running work](https://cruxwell.github.io/pcode/guide/shell/) | Guide: background jobs, watching CI |
114
+ | [Parallel agents](https://cruxwell.github.io/pcode/guide/parallel/) | Guide: worktrees, parallel sub-agents, `/agents` |
115
+ | [Extending pcode](https://cruxwell.github.io/pcode/guide/extending/) | Guide: extensions, skills, settings |
116
+ | [Providers and models](https://cruxwell.github.io/pcode/providers/) | Authentication, supported providers, the model picker, reasoning effort, Claude Code, Meridian, proxies |
117
+ | [Configuration](https://cruxwell.github.io/pcode/configuration/) | `pcode config`, per-repository overrides, trusting repository code, the settings table, syntax styles |
118
+ | [Commands and keys](https://cruxwell.github.io/pcode/commands/) | Slash commands, key bindings, vi mode, tmux newlines, status line, `!command`, the diff and tool inspectors |
119
+ | [Keybindings](https://cruxwell.github.io/pcode/keybindings/) | Custom command mappings with `/bind`, Ctrl shortcuts, vi editing, a normal-mode leader, and custom escape sequences such as `jj` |
120
+ | [Tools](https://cruxwell.github.io/pcode/tools/) | Tool permissions, web search, the browser, code mode |
121
+ | [MCP servers](https://cruxwell.github.io/pcode/mcp/) | Opt-in MCP configuration, OAuth sign-in, deferred tool search |
122
+ | [Working in a repository](https://cruxwell.github.io/pcode/workspace/) | `AGENTS.md`/`CLAUDE.md`, skills as slash commands, one worktree per session |
123
+ | [Sessions and recovery](https://cruxwell.github.io/pcode/sessions/) | Saving, resuming, recalling earlier sessions, checkpoints, retries |
124
+ | [Context, limits and caching](https://cruxwell.github.io/pcode/context/) | Prompt overhead, compaction, output limits, prompt cache notices |
125
+ | [The transcript](https://cruxwell.github.io/pcode/transcript/) | What lands in scrollback: diffs, thinking, errors, command output, `/redraw` |
126
+ | [Conversation tree](https://cruxwell.github.io/pcode/conversation-tree/) | `/tree`: rewinding and forking a conversation |
127
+ | [Side questions](https://cruxwell.github.io/pcode/side-questions/) | `/btw`: asking about the running turn without interrupting it |
128
+
129
+ The same pages build into a browsable site with `make docs-serve`; `make docs`
130
+ checks every page and anchor link.
131
+
132
+ ## Contributing
133
+
134
+ Bugs: [open an issue](https://github.com/cruxwell/pcode/issues/new/choose).
135
+ Security problems: see [SECURITY.md](https://github.com/cruxwell/pcode/blob/master/SECURITY.md). Setup and checks are in
136
+ [CONTRIBUTING.md](https://github.com/cruxwell/pcode/blob/master/CONTRIBUTING.md).
137
+
138
+ ```sh
139
+ make test # fast suite; real-tmux regressions skipped
140
+ make test-all # everything, before touching layout, streaming, the editor, or the prompt
141
+ ```
142
+
143
+ [AGENTS.md](https://github.com/cruxwell/pcode/blob/master/AGENTS.md) has the worktree workflow and the traps worth knowing
144
+ before editing. Contributor notes (architecture, dependencies, profiling, prompt
145
+ caching, provider design) live in [`dev/`](https://github.com/cruxwell/pcode/tree/master/dev), outside the published docs.
@@ -0,0 +1,163 @@
1
+ pcode/__init__.py,sha256=2jZemTEB0-Cr9kUaovw_pwZtT8RUt9bk8pOWCeU-mRo,229
2
+ pcode/_job_supervisor.py,sha256=pzEBkjcWmLVvehACydJmS0hP3kunOq85DPxKTqgu-E0,2334
3
+ pcode/agent.py,sha256=5lgS5afWhvH6wXttwJrqBBMNzjeT3cFcbqz3htfd3CA,25297
4
+ pcode/anthropic_oauth.py,sha256=7zo9YaOOfMTdonYU2y8G1q35Gk6nXYzlVQW8wEG4S_s,18105
5
+ pcode/app.py,sha256=ECefLej-sgJTwKUmXVUxgA0_r865dqIfYc5obobUICE,136053
6
+ pcode/appearance.py,sha256=x0U5EsaghhUTR_dbmjao-gME8EV8PhauxmSZXtZb6d8,6724
7
+ pcode/aside.py,sha256=KAfDEmbTaIYyctu6Jiuj-iu0tN92wGLBUREtbRMJKlQ,21470
8
+ pcode/aside_guard.py,sha256=1HZxh-MDhi9GXGMIVKNUafcLZqGmOUEFv97GGbCLkRA,1972
9
+ pcode/aside_ui.py,sha256=xfml7w586jbNldQ-nnnRvh48Q-SBCnShAxYFXc9AOAQ,27743
10
+ pcode/auth.py,sha256=4pJcjGNFNzc-X_1MlTPRhrmOWpfpio4I9ARUdMZzTUs,4309
11
+ pcode/block.py,sha256=d_BBEWUwoCkPEwmw_nV0b5m0AtdQjaRxQOxXYQJmsis,1546
12
+ pcode/browser.py,sha256=pfMsisD9pHdilSpKjor09W0d5-gH2qJvQOZB5uY2aeU,16206
13
+ pcode/cache_diagnostics.py,sha256=Aw6NTZSg3hCb7z4lauRDNDYv_CDL2fMqvVHEKUhOqVM,13345
14
+ pcode/cache_settings.py,sha256=dvrhDQGQucZ5wy8PoDCrj9jyY1XEWXaocdUb9i2oP7E,2660
15
+ pcode/cache_warnings.py,sha256=tf2qujHYEuS36gbcqRKjZzCjlcP_dmUZhYpI7c1rHMQ,6733
16
+ pcode/cli.py,sha256=TKhXmWX0fALk0J9ips0XSXJg0BLNXL0cMV7dj4IcK2c,1991
17
+ pcode/clipboard.py,sha256=MqArT326T2BjOhC9BPQJDf0iKzNccGEOGup3ASIuXQE,2435
18
+ pcode/code_mode.py,sha256=0FmGk-beN5UZuv4sjGWHxfTVIspo9qEou41OI1WvEFI,1507
19
+ pcode/codex_login.py,sha256=qA2cJsdgiP8yYWUkvHJoIvkpRFFNaWhkW4mOTKaVi6w,6942
20
+ pcode/command_transcript.py,sha256=JXLgF-pj0UugYfhHdjp_hiC4y_GUQEx_J43gCYAKGYY,2940
21
+ pcode/commands.py,sha256=69I-netlvX6JS2SU0xVlBHhni6b4t7jNF_HlG3NnIYY,6235
22
+ pcode/compaction.py,sha256=XSjqeLlJ15vLtQhBwufsCat1VzRioGI6AuMcPIiXILQ,20208
23
+ pcode/completion.py,sha256=vAOfqDqBHG4qGeOvf828yUL4uQdOoOorguxwkVGzGwM,9938
24
+ pcode/config.py,sha256=9i4N0ztGvcD9313hsBI55Cgopoy4KR6vnMKEdY-l2D8,9133
25
+ pcode/context_breakdown.py,sha256=2LPozy64QFHlAliS21RF2RBCSrfAHKGQ_87xN1meW_A,6816
26
+ pcode/context_usage.py,sha256=39uN4c22WQaviSCTpg0rEW3maowjsY-6AtiAWzdqIZw,2227
27
+ pcode/controller.py,sha256=zJ1jaj5sqGVrGEQYZKvHAJTg6PrQcdpy0SI-xBJ4Jsk,153172
28
+ pcode/conversation_ids.py,sha256=D0_1I2uOJ8HKxm29DLmZmvs_dYbGJmFmHuMYtu98Vc8,1055
29
+ pcode/conversation_tree.py,sha256=kFzcH6IR_kYFDbKdvzVh1DV6RGS5WJVB7qZZHwkM1ts,7245
30
+ pcode/copy_ui.py,sha256=302-3QSXvK9-fA5N5hF6JuYy_Clw6n2tybbS_vpgNRY,6123
31
+ pcode/delegation.py,sha256=OcvqWn8YyHCnqvsadLGHb0WCSiBxTNNJF6zONZQloUw,9435
32
+ pcode/delta.py,sha256=tPzO6YXsBAkX9MCUk-qNsEF5PZFQ2o52hE0aTGlPHPU,12449
33
+ pcode/diagnostics.py,sha256=_-B4QAJhhEVvUJjX5M0pTgb_0vPWw08m1ZSxjbOvJxc,8560
34
+ pcode/edit_preview.py,sha256=vjxwgITrulu6wVWbJxPZzjrZmzaYL0UXEc8cSwrLEik,6618
35
+ pcode/edit_transcript.py,sha256=rL9jpuw5ArLK8WZFxhDaLgBp4Q8q4l4o0h-m_xYjrWc,11105
36
+ pcode/edit_ui.py,sha256=GYrxu__Sh5gpJTSrkH9GVL91Kt8HIgVRLZcNC6qtspQ,33318
37
+ pcode/edits.py,sha256=MCNqJh5uRBSnG7x40L95DASuI_3sn3yceENinoDjkJY,6533
38
+ pcode/error_report.py,sha256=Q1cAuJaPmk9QkQP0lMXYKVovxVrD78dC_lQZfmAxDx0,1870
39
+ pcode/ext.py,sha256=gg8MF_4HIGCPDzvbeiEwCAWPcOSPi-Pf4ZQ5ZYFapuM,24625
40
+ pcode/extension_guide.md,sha256=13f136zXldYDSy0F5MaDnAECogvoLG_uQFPPnVLUhV4,13099
41
+ pcode/file_refs.py,sha256=KXtrp12UsgL2l_xG7V9rE3SKJ2CzMdqmuXXMC_Q195Q,10587
42
+ pcode/filesystem.py,sha256=z6dgnmqIr-8mhD7H4AsVHKJ0QmCiuvlIXPez73fgDNo,5376
43
+ pcode/frame.py,sha256=e4O6soam5F5t0Bb5kpFA6lUaSF96an4ZtnrG5Dx9zd4,5280
44
+ pcode/gateway.py,sha256=JtqBM344-DlB_onz921vMEQvlBbHlaWnDsNkc_lLpF4,16153
45
+ pcode/git_diff.py,sha256=jo75VIABvXZzNcko9LnD-NfnG9pLvGPAiOJ_sCgx7ew,20610
46
+ pcode/history.py,sha256=3W9UhGLa7WXUEb-lzBg6SWtsZmr3LWTSyUoIp4-g9mY,23717
47
+ pcode/history_cursor.py,sha256=VfOQRSVnb5Ahrn9FgySRFOKnCNJXIZObmD8WRwqLb78,5307
48
+ pcode/history_embeddings.py,sha256=7D7sTUCQRBMvm58byb1sZ605ryZUls4sKS9nXPIkQfE,4009
49
+ pcode/host.py,sha256=1mGjyb7HB1sewKY6qn589525QJqlmjMaPTgqH99GE-A,38267
50
+ pcode/host_protocol.py,sha256=OkpwMH2XqymTA6hayR7WZhWkNjjDX0gKg0m3-hUt8io,9641
51
+ pcode/host_ui.py,sha256=9PELEiSgOIkV0_QhXreTtcX8ADW5SitW3vF6pCl4SXk,7931
52
+ pcode/input_keys.py,sha256=N_PzmJyHnkQxiIwE2thEdH94vCMRWalqtdQInC64UWI,1482
53
+ pcode/inspection.py,sha256=Z6nmL-Umpc5PouAbrLXGtJv0Jh1k7cR2GrWbWfVkaCc,11668
54
+ pcode/inspector_ui.py,sha256=OI6WvCk5Lgfo5BlN9amj7wgWu1WSUeX7V9v-K21EFnQ,16967
55
+ pcode/isolated_delegation.py,sha256=i5BMkwaS1bsQPeQf--gKhsfq0HJgGQHT3B-a8IN5AEU,18048
56
+ pcode/job_notices.py,sha256=uXV8kHcWz1yXlLF_smfyChnGfCP-8AACNhLHv3LMvTg,2361
57
+ pcode/jobs.py,sha256=2J2Qm0oMZjepgqrhsvAvrVqsVYrfNnlh0_Cir80wouQ,21713
58
+ pcode/jobs_ui.py,sha256=U4PV9zHjyQuRn0Sn_1CIFQeVfEzLiC8MhgMQK4CiP1k,9992
59
+ pcode/keymap.py,sha256=B1_tkucu_FEDF9Sd2PuXdPdKaVYaIbzcqvyTGDG0Bkw,8620
60
+ pcode/layout_speed.py,sha256=TCONdopyML6q9fkBXP8w7-Y7WmavBkz-wXAyGgPnjgg,4511
61
+ pcode/links.py,sha256=Jz2gInxbhL2KhmcSPxoyt-dy87VEGv0TxhX-kH9Xa58,3292
62
+ pcode/links_ui.py,sha256=hhkdizmQJHl8A_kZluOaxHOS6O6fXOFvF1Ps3WxAyxI,7073
63
+ pcode/live.py,sha256=KABi2Fe45N9WtQALYw252FrhDFGMkdZHDLm6FDMXn-8,59415
64
+ pcode/llm_proxy.py,sha256=FhslNf3HItBCw7ZxBiBh_I2Z39ohHox26VAdBN9stuw,1855
65
+ pcode/logins.py,sha256=uZ8kQ_PTHoWWyDcib_SOcTbo0xSWpbEJnqGmvlaBk1g,9772
66
+ pcode/mcp.py,sha256=Dyun9Nw4bTLoI1KMZQB4CjTlOg-q-jZk5Zl1_KH7iY8,29051
67
+ pcode/mcp_notice.py,sha256=bLt6FU_rl6mZBHlGE4aNepq6lKp3fGOmZiqWYdOlJ4g,3769
68
+ pcode/mcp_oauth.py,sha256=YByzopKOOBAk5aI9awCLgPVjy4Z5Sexg54_axnJjHqI,16164
69
+ pcode/meridian.py,sha256=yv3AzJ38OjBAJeqZKHrqIp0HQ0Drt_PNovNc5gaHtp8,9640
70
+ pcode/meridian_process.py,sha256=UJfePr0OjWcLgRSBfbIkJWdGFV-W61aX1psQ9loEbNQ,13569
71
+ pcode/meridian_reminders.py,sha256=LXGvNvaipPTNMz6iYojaB-oU-SHIFw3bdwdW4AuS3P8,4966
72
+ pcode/meridian_setup.py,sha256=-M-wGftWe3-NPUVRBgSPer6U7oRpN_fLjUXROImoXdg,13276
73
+ pcode/model_metadata.py,sha256=k4IxKlt1JgxhdNwEldWkIbEkQLaOZwZg2xyfSWcjOXw,17813
74
+ pcode/model_ui.py,sha256=5U7oKW_GcU35B6_EaZ58THL2vsj-qKj1wHGh_4jMkK0,6021
75
+ pcode/models.py,sha256=XCuFLMV0OweIxLcKq0-9jQ-XacQebdBIE03iEdcMegM,8359
76
+ pcode/native_results.py,sha256=P-9ikkW8g1oqp2Arlx9RdBBAK_8TCXEHkG2DF6TYHsE,4719
77
+ pcode/oauth_pages.py,sha256=Sgf8t352J1eHeDY0nbw_1qW8cxI5c1p_d2fI9uSc8tY,2866
78
+ pcode/output_limits.py,sha256=BBf1AddZSBksoblYcip2I5IyvJJe8pDEWODj3q87ScE,1903
79
+ pcode/paste.py,sha256=dF4nMlyYoPJ9KJo0v9EvkzQ-fTSGHWtAL8PWK6_gxdE,1640
80
+ pcode/path_completion.py,sha256=DIE8r93CKtzEDxmyexbSaKj_AtLPB9pFCpv2ffAasPU,2346
81
+ pcode/plan_preview.py,sha256=6CIXgV7KQOQ89n08AsUAmw6lEiIyIqnpyXTrtWziKfo,4967
82
+ pcode/plan_sizes.py,sha256=9Y4tjyvZArQSO9wM3h1H3nHQYzXsiAR4RLBt9F8wbQk,1298
83
+ pcode/planning.py,sha256=YR39-0FlLhjQG21GOEjTIqS3kM-_6XZ7lgXxVqg2jT8,6834
84
+ pcode/popup_ui.py,sha256=_55Lq_LPvqZJEFrfjFVMWqho1e_Zl0jjqrMGds1MEE8,34375
85
+ pcode/preferences.py,sha256=mcrPEFuJtgvPTyZZVbgnEs2fdaR_XvvphATt6AsXy8g,46208
86
+ pcode/prefix_keys.py,sha256=egl6AYs5pvUd-hJ_tf42Rx0FjcVln5vjrKsN9X4wjQo,19121
87
+ pcode/profile_benchmark.py,sha256=Qv0QpFIcpEpIHA0AWHHyfyW0WgUFjbHkol6kurL4H4A,12787
88
+ pcode/profiling.py,sha256=owNSckYz8BbHRAt8IO1i6c1cTnR0b8i97PRNfEb4VRc,23066
89
+ pcode/project_trust.py,sha256=pAxvZLZuRj6nZkhJQ4ZeHEM1a7axXsgb7wKDsa4IMKo,3474
90
+ pcode/prompt_keys.py,sha256=QkdG7kM4X-IkzZ8COqZ_efgeoVgVt-IOMdbROInIPS8,10852
91
+ pcode/remote.py,sha256=ufuFwaxvuWmH9FSIWMi0qD2WXr7zV-UXMsRW94zRxZg,26994
92
+ pcode/remote_print.py,sha256=sCigfipteI60ypmPrIzmATPpxMVLmCz-aTuvgFnkp80,5225
93
+ pcode/remote_profile.py,sha256=0jpjPTZf9c2N8xc6FRl96tIKBrzEMQCtDyQBfJq6jxA,8444
94
+ pcode/replay_benchmark.py,sha256=VKoXVJP9T7usE8aD0Gs-SlwSCxjgdjzXa2_lg1kNw8A,11254
95
+ pcode/repo_context.py,sha256=nT7p5QG24FGmq48qxhcmr_NTjrdfWtuwtKcnjcxzQyA,6909
96
+ pcode/retries.py,sha256=R1udkSVT0u8NI1PtZ59RxEY-5PKDxCnXRu4NdvwLyhI,986
97
+ pcode/rpc.py,sha256=zvWZzB99OxCR-UNFJIZU2vVMOrFuooYXg0DLbzE06Jo,11375
98
+ pcode/runtime.py,sha256=B9F17cRj9qYKUBbE_L3SL02pb5pho1r7UuYA7ecHJX8,6918
99
+ pcode/sandbox.py,sha256=gbA8SJkudfKhqlISEp00BH1oGoET-XiSW_6M1YL3NHU,16867
100
+ pcode/session_naming.py,sha256=PyIbcitMVNGN37XZAO8qDHhqTODIB2RiHZB0xnvGCoE,3413
101
+ pcode/session_ui.py,sha256=MpEGfYcLYoeHxNBgpoWxinE0u6a4k_J-U7n7aXCDiNk,22277
102
+ pcode/sessions.py,sha256=tIXgMjFPTMZlzcmgNCgQU4kEydMboaYvUmJ0IykpGA0,34192
103
+ pcode/shell.py,sha256=9Iv4eu4oMQttr-cC9JGvR76mned1isgy1lGRoL4dYa8,4349
104
+ pcode/shell_mode.py,sha256=nth94IoQOMVKPNwt2XEtTPCy7QX1VP62tukVW6ztAGA,6162
105
+ pcode/shell_tools.py,sha256=66Hae4HD1LGbzXINYoBAmrRrS2EdbJ3pPvZTE1OLUkY,19066
106
+ pcode/skills.py,sha256=_aFl4oAM0x6LB3JYKiOn8SWIjohkAQiVBciXeI-6k8U,5686
107
+ pcode/stall_log.py,sha256=hjZ_9QxaKXqjLY8TJ7qMSAdBUtyhAPuDDH5y7O-JjZ0,7825
108
+ pcode/startup_input.py,sha256=w75xhTb78VwJXnJhja0ITUIWanKHL2ASZ1IMnXjkPuM,3911
109
+ pcode/steering.py,sha256=dfmPSPFCuXYqxaIoaKG_XDap7fmyVY5_ZVv8Y935NBM,1099
110
+ pcode/stream_display.py,sha256=nXoRd3q8F17XgvZyLcZg-vvmfadNGM-cPAC_rbqx5Cg,7671
111
+ pcode/stream_events.py,sha256=7u1b9-ozu7KT3U8e8lRJ775vHeEIDFenX9tzTHXdKtA,17788
112
+ pcode/strict_tools.py,sha256=5bpRxm0jn6_H0b2S7d6aLg52ZabckbJuewcRw8_3ba8,5231
113
+ pcode/syntax.py,sha256=ffa04jZ7kZ0xfd8NLagXAhkqwu5SddCO6ozI7s43obQ,1689
114
+ pcode/syntax_colors.py,sha256=sS1_DvvfvpwVZCALW-lPEfPXASx8IqC7SbB7RG8ayA4,7989
115
+ pcode/task_prompt.py,sha256=tD7bnqe7ZV2R1DrUjJwSnobmzrxwwgyRdm3iHVUSOyo,1033
116
+ pcode/task_worktrees.py,sha256=LQCYEohU91pgMiGdoRfPc8pxVcrvEbKBPq_JFDEEfIo,19702
117
+ pcode/terminal_notify.py,sha256=H7wOD6mtkkkxxD_R6Y3Cf3OkhlniA7dibwrW6oDQT9I,14082
118
+ pcode/theme.py,sha256=Doo3Z93u3SuRBLaoZyXJVgs6mPgjJO0iVo3EpLJINmw,5202
119
+ pcode/theme_gallery.py,sha256=luVfQjU7rzvRGQwa5btG_pxrczT5NAl0XuIUrBPFke8,3386
120
+ pcode/thinking_markdown.py,sha256=ud1C1cEV2NjNdKXQFjrWNhPvaXkY2S35_Z6lhPqSFSA,1615
121
+ pcode/token_accounting.py,sha256=Ux5_Rg-abid_ypdATMvfa-3O0yzI2iIeOuOvSImj2j8,2473
122
+ pcode/tool_display.py,sha256=dVz_3XJSsMqshJPNGnSHCeJFxFJ3awRp3SgNiLDTipc,31859
123
+ pcode/tool_output_limits.py,sha256=5G3TEsTgikm1cxFJJU_ib9Vdj9ofUoP0YiYU60MbxHg,4390
124
+ pcode/tool_panel.py,sha256=u1Xd-KiO3LKcXXdT75poms3Tp4fX9jMNVYm-HWAi9Cg,15905
125
+ pcode/transcript_log.py,sha256=UrRS4rh1whZI37HleZZyQI7L4f55rupwV1NZWoGDzbs,4703
126
+ pcode/transcript_notice.py,sha256=OKJxpAq0KfAH7ZcBSOb9fAd_DO4McmmuDrLLZSxilTg,4622
127
+ pcode/tree_ui.py,sha256=8o_ocw0_smwhq7wXITw0XelFsh0dEKsJh9X6cbk-TTk,11576
128
+ pcode/turn.py,sha256=qymCdofZwgULdWDswy4pO6axQvvLGgv7BCMDrbVUfkk,2153
129
+ pcode/ui.py,sha256=GTH8aNO4KC0Z94et-0NUdLjmrNWG7PW70M6dOsm-Vi0,164706
130
+ pcode/usage.py,sha256=2Kv70vVw81GRovlbQD9LjxWSr0sj2A_eH46phcFoV0A,11530
131
+ pcode/word_wrap.py,sha256=BjXKGT1KD_6BjjBcJQtX2GEV1biYQkKnWZ4aJkp4bMA,4137
132
+ pcode/worker_ui.py,sha256=oFjECJR07hjoVMnxnr7ZSEqfSPCgok6k0adD0C-GCX4,9269
133
+ pcode/workers.py,sha256=DDXRlFzdi8kG4te5ktz0_GQ76CuvhTRLMR3CVZFDA_E,5006
134
+ pcode/workspace.py,sha256=PCzpyi9oaP71NiMXMQO_hQxb3TowOsBQ9QPJmjR-x3M,2285
135
+ pcode/workspace_filesystem.py,sha256=symvc6dijf-ypXu_Qyu1rZdEbzXpkQl8wYTC5oek0BY,3167
136
+ pcode/worktree.py,sha256=y33Bw-uF0s9uulPQuGozacPnfVcmY-7d2JDqQknveMQ,26226
137
+ pcode/claude_sdk/__init__.py,sha256=r7QVoKPWXCEbtG4gZeQxH6BGKNlwyaRYM7BH6Zuc-cE,3467
138
+ pcode/claude_sdk/cli.py,sha256=ALAsAcOH_N-966qqoAiGSmB9N44eJm-cwj3Rb2_SwA4,2150
139
+ pcode/claude_sdk/errors.py,sha256=M0du_SGKlaBysVLC4ECbe1w9n6gHoolLEvR3VS333KU,2594
140
+ pcode/claude_sdk/messages.py,sha256=dJmEep5bXd48noGYN3QORnLMTmmmwj-Ahz_KSce-HEI,5779
141
+ pcode/claude_sdk/model.py,sha256=NzTAGwLreFsNrSjJANDfKSGjMg33dIxRMuClrG4laSY,7132
142
+ pcode/claude_sdk/resume.py,sha256=DNBJXaMG9gTCTxTej5kO99xB2TkWn2DWMWt6RRmPbiM,4040
143
+ pcode/claude_sdk/session.py,sha256=P4-mAlEQSa6mukcCsImEzSskS8bOrSNawJDBGIBmJng,24004
144
+ pcode/claude_sdk/session_pool.py,sha256=0r8iUTac8KGAApZjJgawGvkX2_iA_JwEHTQO8jguu_E,9783
145
+ pcode/claude_sdk/workspace.py,sha256=0EpU3vRsyzUSnUM3_UEKalVLA_E1yCFuoaW8IOIgprY,1425
146
+ pcode/email_remote/__init__.py,sha256=4qXPKrsZzQnCmEQnGB1fNdUjoMZO3fJDg66LZSv5yak,754
147
+ pcode/email_remote/cli.py,sha256=Dc0KkNbN3n792Cm9RZ6NIlEPWF1GrzhLXKbJASIHj44,5247
148
+ pcode/email_remote/listener.py,sha256=_jf8_-dbqM5ua3QZUI-37GQn0wLipupzvO3NZKV7KFU,29219
149
+ pcode/email_remote/mailbox.py,sha256=Rs0VoiYuzZAIE3XEubXyOIZDLkfTwyjEoHi2MWgBU0M,12969
150
+ pcode/email_remote/outbound.py,sha256=SyO2IXNKxnsN2AsUk97GTsJrRuyz9qS2PgBJycu_1Xs,2596
151
+ pcode/email_remote/parsing.py,sha256=6MOcmAgCb0iSu2z3FCUH6n12EIruHYdX1S4ec7syyYE,8646
152
+ pcode/email_remote/render.py,sha256=uHhPFYltijaOQGikH9qLXK4wzs8HbOLVBjnjrAhyFpE,7554
153
+ pcode/email_remote/state.py,sha256=LUox5HlCwy5vszeSf8pHHXTXKNQK020CgpQUahjDy6A,2908
154
+ pcode/extensions/browser.py,sha256=7vsYlO0muUG0Fs_0ZEEq5y3iXMMfyt575aI-L7WRtS4,11967
155
+ pcode/extensions/ponytail.py,sha256=GaQiGDd8_39qDBmQyUJu78DqdLYnDQq0dTcdyIZnB1U,8879
156
+ pcode/extensions/sandbox.py,sha256=4_Cve4gx8JfjQhWAJRPf118qor_5o3FpxgJrCDEHns4,5689
157
+ pcode/extensions/session_history.py,sha256=oBIqY_plNvdXKUH7YSU3A4op66TaSRkZEfNdzemfq78,8008
158
+ pcode/extensions/web_research.py,sha256=hZp5T-Qw-FX4cgQHWoaIOq9IRauNdyYfTwwfEpwkjY8,3513
159
+ pcode-0.1.0.dist-info/METADATA,sha256=BD9B_AGNUMhnlP2u0Dzlrc2ltlGi_M9IaDviFMl6lS4,8657
160
+ pcode-0.1.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
161
+ pcode-0.1.0.dist-info/entry_points.txt,sha256=3U9mnrE-ecbotkDSt7WQpb8w5iOpnM4f1VC4ZWQYSxw,88
162
+ pcode-0.1.0.dist-info/licenses/LICENSE,sha256=f-I-S8a43i41hp-S9FDwmw9Is_Cz-du4j8bXah146-w,1071
163
+ pcode-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.32.4
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ pcode = pcode.cli:main
3
+ pcode-benchmark = pcode.profile_benchmark:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Aaron Weisberg
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.