seedcode-cli 6.2.0__tar.gz → 6.2.5__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 (143) hide show
  1. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/.gitignore +3 -1
  2. seedcode_cli-6.2.5/PKG-INFO +457 -0
  3. seedcode_cli-6.2.5/README.md +410 -0
  4. seedcode_cli-6.2.5/npm/README.md +28 -0
  5. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/scripts/windows/README.md +10 -8
  6. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/__init__.py +1 -1
  7. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/_default_key_template.py +5 -1
  8. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/app.py +129 -17
  9. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/branding.py +6 -1
  10. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/cli.py +11 -3
  11. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/commands/__init__.py +4 -2
  12. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/commands/agent.py +7 -2
  13. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/commands/assist.py +2 -1
  14. seedcode_cli-6.2.5/seedcode/commands/chat.py +46 -0
  15. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/commands/codemode.py +3 -2
  16. seedcode_cli-6.2.5/seedcode/commands/mode.py +50 -0
  17. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/commands/provider.py +52 -16
  18. seedcode_cli-6.2.5/seedcode/commands/status.py +95 -0
  19. seedcode_cli-6.2.5/seedcode/config/__init__.py +26 -0
  20. seedcode_cli-6.2.5/seedcode/config/defaults.py +49 -0
  21. seedcode_cli-6.2.5/seedcode/config/manager.py +244 -0
  22. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/core/agent.py +30 -2
  23. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/core/chat.py +33 -3
  24. seedcode_cli-6.2.5/seedcode/core/http.py +171 -0
  25. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/core/models.py +46 -14
  26. seedcode_cli-6.2.5/seedcode/core/providers/__init__.py +85 -0
  27. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/core/providers/base.py +24 -2
  28. seedcode_cli-6.2.5/seedcode/core/providers/default.py +157 -0
  29. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/core/providers/ollama.py +9 -1
  30. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/core/providers/openrouter.py +80 -29
  31. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/default_api.py +54 -3
  32. seedcode_cli-6.2.5/seedcode/defaults.py +37 -0
  33. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/tools/terminal.py +30 -5
  34. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/ui/__init__.py +16 -3
  35. seedcode_cli-6.2.5/seedcode/ui/dashboard.py +165 -0
  36. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/ui/menu.py +4 -0
  37. seedcode_cli-6.2.5/seedcode/ui/reference.py +46 -0
  38. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/ui/selector.py +24 -0
  39. seedcode_cli-6.2.5/seedcode/utils/terminal_env.py +225 -0
  40. seedcode_cli-6.2.0/PKG-INFO +0 -401
  41. seedcode_cli-6.2.0/README.md +0 -354
  42. seedcode_cli-6.2.0/npm/README.md +0 -22
  43. seedcode_cli-6.2.0/seedcode/config/__init__.py +0 -8
  44. seedcode_cli-6.2.0/seedcode/config/defaults.py +0 -22
  45. seedcode_cli-6.2.0/seedcode/config/manager.py +0 -88
  46. seedcode_cli-6.2.0/seedcode/core/http.py +0 -62
  47. seedcode_cli-6.2.0/seedcode/core/providers/__init__.py +0 -58
  48. seedcode_cli-6.2.0/seedcode/ui/banner.py +0 -78
  49. seedcode_cli-6.2.0/seedcode/ui/dashboard.py +0 -358
  50. seedcode_cli-6.2.0/seedcode/ui/logo.py +0 -134
  51. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/LICENSE +0 -0
  52. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/npm/LICENSE +0 -0
  53. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/pyproject.toml +0 -0
  54. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/scripts/pyproject_build_hook.py +0 -0
  55. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/__main__.py +0 -0
  56. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/apps/__init__.py +0 -0
  57. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/apps/discovery.py +0 -0
  58. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/apps/installer.py +0 -0
  59. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/apps/launcher.py +0 -0
  60. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/apps/verifier.py +0 -0
  61. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/assets/logo.png +0 -0
  62. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/assets/logo.txt +0 -0
  63. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/codemode.py +0 -0
  64. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/codemode_state.py +0 -0
  65. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/commands/about.py +0 -0
  66. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/commands/clear.py +0 -0
  67. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/commands/desktop.py +0 -0
  68. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/commands/doctor.py +0 -0
  69. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/commands/help.py +0 -0
  70. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/commands/history.py +0 -0
  71. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/commands/palette.py +0 -0
  72. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/commands/theme.py +0 -0
  73. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/__init__.py +0 -0
  74. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/browser.py +0 -0
  75. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/browser_cdp.py +0 -0
  76. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/browser_engine.py +0 -0
  77. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/browser_extract.py +0 -0
  78. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/browser_popups.py +0 -0
  79. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/browser_selenium.py +0 -0
  80. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/browser_skills.py +0 -0
  81. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/catalog.py +0 -0
  82. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/controller.py +0 -0
  83. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/dispatcher.py +0 -0
  84. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/dpi.py +0 -0
  85. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/engine.py +0 -0
  86. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/keyboard.py +0 -0
  87. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/logbook.py +0 -0
  88. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/mouse.py +0 -0
  89. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/ocr.py +0 -0
  90. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/operator_skills.py +0 -0
  91. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/permissions.py +0 -0
  92. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/recovery.py +0 -0
  93. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/registry.py +0 -0
  94. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/resolver.py +0 -0
  95. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/screen.py +0 -0
  96. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/screen_state.py +0 -0
  97. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/selfguard.py +0 -0
  98. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/semantic.py +0 -0
  99. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/skills.py +0 -0
  100. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/state.py +0 -0
  101. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/verifier.py +0 -0
  102. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/vision.py +0 -0
  103. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/computer/windows.py +0 -0
  104. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/core/__init__.py +0 -0
  105. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/core/client.py +0 -0
  106. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/core/errors.py +0 -0
  107. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/core/identity.py +0 -0
  108. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/core/identity_store.py +0 -0
  109. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/core/lifecycle.py +0 -0
  110. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/core/limits.py +0 -0
  111. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/core/project.py +0 -0
  112. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/core/providers/aerolink.py +0 -0
  113. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/core/providers/freemodel.py +0 -0
  114. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/core/streaming.py +0 -0
  115. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/memory/__init__.py +0 -0
  116. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/memory/manager.py +0 -0
  117. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/memory/storage.py +0 -0
  118. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/memory/store.py +0 -0
  119. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/tools/__init__.py +0 -0
  120. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/tools/base.py +0 -0
  121. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/tools/desktop.py +0 -0
  122. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/tools/filesystem.py +0 -0
  123. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/tools/git.py +0 -0
  124. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/tools/patch.py +0 -0
  125. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/tools/permissions.py +0 -0
  126. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/tools/search.py +0 -0
  127. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/tools/textio.py +0 -0
  128. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/ui/badges.py +0 -0
  129. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/ui/dialog.py +0 -0
  130. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/ui/fuzzy.py +0 -0
  131. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/ui/layout.py +0 -0
  132. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/ui/palette.py +0 -0
  133. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/ui/progress.py +0 -0
  134. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/ui/prompts.py +0 -0
  135. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/ui/renderer.py +0 -0
  136. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/ui/searchbox.py +0 -0
  137. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/ui/statusbar.py +0 -0
  138. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/ui/textbox.py +0 -0
  139. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/ui/theme.py +0 -0
  140. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/ui/tree.py +0 -0
  141. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/utils/__init__.py +0 -0
  142. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/utils/helpers.py +0 -0
  143. {seedcode_cli-6.2.0 → seedcode_cli-6.2.5}/seedcode/utils/logger.py +0 -0
@@ -70,4 +70,6 @@ Desktop.ini
70
70
  *.rej
71
71
  *.crdownload
72
72
  opencode.txt
73
- V6.2.0/
73
+ V6.2.0/
74
+ newupdatec6.2.5/
75
+ WEBSITE/
@@ -0,0 +1,457 @@
1
+ Metadata-Version: 2.5
2
+ Name: seedcode-cli
3
+ Version: 6.2.5
4
+ Summary: Seed Code — a premium terminal-based AI coding assistant. Plant ideas. Grow code.
5
+ Project-URL: Homepage, https://github.com/Alshahriar-07/seedcode-cli
6
+ Project-URL: Repository, https://github.com/Alshahriar-07/seedcode-cli
7
+ Project-URL: Documentation, https://github.com/Alshahriar-07/seedcode-cli#readme
8
+ Project-URL: Issues, https://github.com/Alshahriar-07/seedcode-cli/issues
9
+ Project-URL: Changelog, https://github.com/Alshahriar-07/seedcode-cli/releases
10
+ Author-email: Al Shahriar Sowan <github@eagox.studio>
11
+ License-Expression: MIT
12
+ License-File: LICENSE
13
+ Keywords: agent,ai,chat,cli,coding-assistant,ollama,seedcode,terminal
14
+ Classifier: Development Status :: 5 - Production/Stable
15
+ Classifier: Environment :: Console
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Software Development
21
+ Classifier: Topic :: Terminals
22
+ Requires-Python: >=3.12
23
+ Requires-Dist: httpx>=0.27.0
24
+ Requires-Dist: openai>=1.40.0
25
+ Requires-Dist: prompt-toolkit>=3.0.43
26
+ Requires-Dist: pydantic>=2.6.0
27
+ Requires-Dist: rich>=13.7.0
28
+ Provides-Extra: browser
29
+ Requires-Dist: selenium>=4.18.0; extra == 'browser'
30
+ Requires-Dist: webdriver-manager>=4.0.1; extra == 'browser'
31
+ Provides-Extra: desktop
32
+ Requires-Dist: mss>=9.0.1; extra == 'desktop'
33
+ Requires-Dist: opencv-python>=4.9.0; extra == 'desktop'
34
+ Requires-Dist: pillow>=10.0.0; extra == 'desktop'
35
+ Requires-Dist: psutil>=5.9.0; extra == 'desktop'
36
+ Requires-Dist: pyautogui>=0.9.54; extra == 'desktop'
37
+ Requires-Dist: pygetwindow>=0.0.9; extra == 'desktop'
38
+ Requires-Dist: pytesseract>=0.3.10; extra == 'desktop'
39
+ Requires-Dist: uiautomation>=2.0.18; (sys_platform == 'win32') and extra == 'desktop'
40
+ Provides-Extra: dev
41
+ Requires-Dist: pytest-mock>=3.12.0; extra == 'dev'
42
+ Requires-Dist: pytest>=8.0.0; extra == 'dev'
43
+ Provides-Extra: vision
44
+ Requires-Dist: opencv-python>=4.9.0; extra == 'vision'
45
+ Requires-Dist: pytesseract>=0.3.10; extra == 'vision'
46
+ Description-Content-Type: text/markdown
47
+
48
+ # Seed Code CLI
49
+
50
+ **Seed Code — Eagox Studio**
51
+
52
+ > ### Faster. Smaller. Smarter. Workspace-aware.
53
+ > *Plant ideas. Grow code.*
54
+
55
+ Seed Code is a premium terminal-based AI coding assistant. v6.2.5 pairs
56
+ streaming chat and permission-gated desktop control with **Code Mode** — a
57
+ workspace-aware coding agent backed by persistent `.seedcode` project memory
58
+ — behind a compact, minimal startup header.
59
+
60
+ - **Works out of the box:** the shipped provider is **Default** — Seed Code's
61
+ own built-in connection. It needs **no API key**, so a fresh installation
62
+ can chat immediately. Bring your own key at any time with `/provider` →
63
+ OpenRouter, FreeModel or AeroLink.
64
+ - **Version:** 6.2.5 (`seedcode --version`)
65
+
66
+ ## Installation
67
+
68
+ Seed Code CLI is distributed through the official IRM installer system and
69
+ [GitHub Releases](https://github.com/Alshahriar-07/seedcode-cli/releases).
70
+ The installers download the official release artifact for your platform,
71
+ verify its SHA256 against the release's `SHA256SUMS.txt`, and then verify the
72
+ installed command.
73
+
74
+ ### Windows
75
+
76
+ PowerShell 5.1 or newer:
77
+
78
+ ```powershell
79
+ irm https://seedcode-cli.vercel.app/install.ps1 | iex
80
+ ```
81
+
82
+ Installs for the current user (no administrator rights, no Python) into
83
+ `%LOCALAPPDATA%\Programs\SeedCode`, adds `seedcode` to your user `PATH`, and
84
+ prints the verified version when it finishes.
85
+
86
+ ### Linux
87
+
88
+ ```bash
89
+ curl -fsSL https://seedcode-cli.vercel.app/install.sh | bash
90
+ ```
91
+
92
+ Installs for the current user. When a prebuilt binary is published for your
93
+ platform it is used directly; otherwise the official wheel from the same
94
+ release is installed with pip.
95
+
96
+ ### Windows installer (GUI alternative)
97
+
98
+ If you prefer a graphical installer, download
99
+ `SeedCode-CLI-Setup-6.2.5.exe` from the
100
+ [Releases page](https://github.com/Alshahriar-07/seedcode-cli/releases). It
101
+ packages a fully self-contained `seedcode.exe` (no Python needed), installs
102
+ to Program Files, adds Seed Code to the system `PATH`, creates a Start Menu
103
+ shortcut with an optional desktop shortcut, verifies the installation before
104
+ reporting success, and ships a clean uninstaller that never deletes your
105
+ project data silently.
106
+
107
+ After installing by any route:
108
+
109
+ ```bash
110
+ seedcode --version # -> Seed Code CLI 6.2.5
111
+ ```
112
+
113
+ > **`seedcode` not recognized?** Open a *new* terminal. `PATH` changes only
114
+ > apply to fresh sessions; the installers verify this before they finish.
115
+
116
+ ### From source (development)
117
+
118
+ Requires **Python 3.12 or newer**:
119
+
120
+ ```bash
121
+ git clone https://github.com/Alshahriar-07/seedcode-cli.git
122
+ cd seedcode-cli
123
+ python -m pip install -e ".[dev]"
124
+ seedcode
125
+ ```
126
+
127
+ ## First run
128
+
129
+ ```bash
130
+ seedcode
131
+ ```
132
+
133
+ You land on a compact, borderless startup header — provider, model, mode and
134
+ status, with no ASCII logo and no box art — and the chat prompt appears
135
+ immediately:
136
+
137
+ ```text
138
+ Seed Code CLI v6.2.5
139
+ Provider Default
140
+ Model nvidia/nemotron-3-super-120b-a12b:free
141
+ Mode Chat
142
+ Status ● Ready
143
+ Commands /help /status /codemode /assist /provider /model
144
+ You >
145
+ ```
146
+
147
+ The `API Key` row appears **only** for providers that actually require a key,
148
+ so Default and Ollama never show one.
149
+
150
+ ### Default provider (no API key)
151
+
152
+ **Default** is Seed Code's built-in API connection and the provider the app
153
+ ships with. It is a first-class provider of its own — separate from
154
+ OpenRouter everywhere: its own entry in `/provider`, its own saved model, its
155
+ own status, and its own credential slot. It resolves its credential itself,
156
+ in this order:
157
+
158
+ 1. a key stored in Default's own slot (advanced/manual use);
159
+ 2. the embedded Seed Code release credential (release artifacts only);
160
+ 3. `OPENROUTER_API_KEY` / `SEEDCODE_DEFAULT_API_KEY` in the environment.
161
+
162
+ It never reads or writes another provider's configuration, and no other
163
+ provider inherits Default's credential. If a build carries no built-in
164
+ credential (a source checkout, for example), Default says so plainly instead
165
+ of failing with an authentication error — pick OpenRouter and add your own
166
+ key.
167
+
168
+ ### Your own API key
169
+
170
+ Use `/apikey` (view / replace / remove / validate) or set an environment
171
+ variable:
172
+
173
+ ```bash
174
+ export OPENROUTER_API_KEY="sk-or-..." # PowerShell: $env:OPENROUTER_API_KEY = "..."
175
+ export FREEMODEL_API_KEY="fe_oa_..."
176
+ export AEROLINK_API_KEY="..."
177
+ ```
178
+
179
+ Keys are validated with a real authenticated request before they are saved.
180
+ They are stored per provider in `~/.seedcode/config.json`, never in any
181
+ project directory, and never printed, logged, or included in an error
182
+ message.
183
+
184
+ ### Providers
185
+
186
+ Every provider is fully independent: its own API key, model, settings, and
187
+ connection status. Switching providers never touches another one's
188
+ configuration.
189
+
190
+ | Provider | API key | Best for |
191
+ | --- | --- | --- |
192
+ | **Default** | not required | Chatting immediately on a release install |
193
+ | [OpenRouter](https://openrouter.ai) | required | A broad catalogue of free and paid models |
194
+ | FreeModel Claude | required | Claude-family models through FreeModel |
195
+ | FreeModel Codex | required | GPT/Codex models through FreeModel |
196
+ | [AeroLink](https://aerolink.lat) | required | Anthropic-compatible gateway access |
197
+ | [Ollama](https://ollama.com) | not required | Local, key-free models |
198
+
199
+ Switch with `/provider` — the picker groups choices by what they need
200
+ (*Built-in · no API key*, *Your own API key*, *Local*) and shows each
201
+ provider's backend, current model, and key state. Pick models with `/model`
202
+ (OpenRouter filters `free` vs `pro` models; FreeModel offers Auto mode).
203
+
204
+ ## Assist Mode and permissions
205
+
206
+ Assist Mode lets the model act on your project through the tool engine:
207
+
208
+ ```text
209
+ /assist on
210
+ ```
211
+
212
+ Permission modes (view/set with `/permission`):
213
+
214
+ | Mode | Behavior |
215
+ | --- | --- |
216
+ | `read_only` | Inspect files, screens, windows, and state without mutations |
217
+ | `workspace` | Allow approved changes inside the active workspace |
218
+ | `desktop` | Add desktop automation capability after confirmation |
219
+ | `full_system` | Allow broader computer and filesystem actions after confirmation |
220
+
221
+ ## Code Mode
222
+
223
+ Code Mode is Assist Mode sharpened into a real coding agent for the current
224
+ project. Your working directory becomes the **workspace**:
225
+
226
+ ```text
227
+ /codemode on # treat the CWD as the workspace, enable .seedcode memory
228
+ /codemode off # back to the previous mode (memory stays on disk)
229
+ /codemode status # workspace, memory, and index state
230
+ ```
231
+
232
+ In Code Mode the agent consults the project index, finds relevant files with
233
+ targeted searches, reads only what it needs, plans, edits, runs a relevant
234
+ command or test, and reports what changed. File operations stay inside the
235
+ workspace root.
236
+
237
+ ### `.seedcode` project memory
238
+
239
+ Enabling Code Mode creates a `.seedcode/` directory in the project root:
240
+
241
+ ```text
242
+ my-project/
243
+ ├── .seedcode/
244
+ │ ├── memory/ durable project knowledge (architecture, decisions…)
245
+ │ ├── index/ per-file summaries + a file map (incremental, hashed)
246
+ │ ├── context/ reusable project context (conventions, snippets)
247
+ │ ├── sessions/ compact per-session summaries (never raw transcripts)
248
+ │ └── config.json safe project configuration
249
+ ├── src/
250
+ └── ...
251
+ ```
252
+
253
+ - **Incremental indexing** — every indexed file is hashed; only changed files
254
+ are re-summarized on the next run.
255
+ - **Secrets never land here** — writes pass a secret-key filter; API keys,
256
+ tokens, and passwords are rejected at write time.
257
+ - **Not source code** — `.seedcode/` is excluded from workspace search,
258
+ indexing, and the agent's project view.
259
+
260
+ ## Terminal execution
261
+
262
+ The agent runs commands through the tool engine's `run_command` tool:
263
+
264
+ - output streams line-by-line **while the command is still running**, so long
265
+ builds and test runs stay visible instead of blocking;
266
+ - `stderr` is captured along with `stdout`, in order;
267
+ - the exit code is reported, and a non-zero exit is an explicit failure the
268
+ model can react to;
269
+ - commands have a bounded timeout (default 60s, up to 300s) and a timeout
270
+ kills the whole process tree;
271
+ - `Ctrl+C` cancels the running command — its process tree is terminated — and
272
+ the agent turn continues with the cancellation reported as a failed result;
273
+ - shells: `cmd`, `powershell`, `pwsh`, `bash`, or `auto` (the shell you are
274
+ actually in), on Windows and Linux.
275
+
276
+ ## Command reference
277
+
278
+ | Command | Purpose |
279
+ | --- | --- |
280
+ | `/help` | Search available commands |
281
+ | `/provider` | Switch the active AI provider |
282
+ | `/apikey` | Add, replace, remove, or validate a provider key |
283
+ | `/model` | Browse and select the provider's model catalogue |
284
+ | `/mode` | Show or switch the mode: `chat` / `assist` / `code` / `agent` |
285
+ | `/chat` | Switch to plain Chat Mode (`/chat on`) |
286
+ | `/agent` | Enable or disable Assist Mode (alias `/assist`) |
287
+ | `/codemode` | Workspace-aware Code Mode (`on` / `off` / `status`) |
288
+ | `/workspace` | Show the active Code Mode workspace |
289
+ | `/permission` | View or set the Assist permission mode (alias `/permissions`) |
290
+ | `/computer` | Show Computer Engine status and permissions |
291
+ | `/screenshot` | Capture a screenshot |
292
+ | `/windows` | List open windows |
293
+ | `/tools` | List tools available in Assist Mode |
294
+ | `/index` | Show a compact project tree |
295
+ | `/files` | Search project files |
296
+ | `/history` | Browse saved sessions |
297
+ | `/doctor` | Diagnose configuration, network, and provider health |
298
+ | `/theme` | Change the terminal theme |
299
+ | `/shortcuts` | Show keyboard shortcuts |
300
+ | `/reset` | Forget the current conversation context |
301
+ | `/clear` | Clear the screen |
302
+ | `/version` | Show the Seed Code version |
303
+ | `/exit` | Leave the current chat (opens the main menu) |
304
+
305
+ Keyboard shortcuts: `Ctrl+K` command palette, `Ctrl+P` project file search,
306
+ `Ctrl+R` history, `Ctrl+,` settings, `Ctrl+/` shortcut reference,
307
+ `Ctrl+L` clear.
308
+
309
+ All exit paths are clean: `/exit` → menu, menu → Exit, `Ctrl+C` (cancels a
310
+ response or the current line), and `Ctrl+D`/EOF. No traceback appears on
311
+ normal exit.
312
+
313
+ ## Desktop control
314
+
315
+ With the `desktop`/`full_system` permission level, Seed Code can inspect
316
+ windows, resolve UI elements semantically (accessibility tree, OCR, and image
317
+ refinement — no brittle coordinates), launch and focus applications, and
318
+ drive keyboard/mouse with per-action verification. Waits are state-based:
319
+ `open_app` polls for real window evidence instead of sleeping, verification
320
+ pauses are short because state is re-read live, and screenshots are taken
321
+ only when information is genuinely needed.
322
+
323
+ ## Configuration and local data
324
+
325
+ ```text
326
+ ~/.seedcode/
327
+ ├── config.json provider and application settings
328
+ ├── history/ saved conversation sessions (per provider)
329
+ ├── memory/ persistent local memory
330
+ └── logs/ rotating diagnostic logs
331
+ ```
332
+
333
+ `config.json` keeps **one isolated entry per provider**:
334
+
335
+ ```text
336
+ config.json
337
+ ├── active_provider
338
+ ├── providers
339
+ │ ├── default { api_key(unused), model }
340
+ │ ├── openrouter { api_key, model }
341
+ │ ├── freemodel_claude { api_key, model }
342
+ │ ├── freemodel_codex { api_key, model }
343
+ │ ├── aerolink { api_key, model }
344
+ │ └── ollama { api_key(unused), model }
345
+ ```
346
+
347
+ Switching providers loads that provider's own key and model, and saving one
348
+ provider never overwrites another's. Credentials stay local; environment
349
+ variables take precedence over stored keys. Logs never record API keys or
350
+ message content. `/doctor` checks configuration, connectivity, and provider
351
+ health.
352
+
353
+ ## Platform support
354
+
355
+ - **Windows:** full experience — desktop control, one-click installer,
356
+ standalone EXE. Primary platform.
357
+ - **Linux / macOS:** terminal chat, providers, project tools, Code Mode.
358
+ Install with the `install.sh` command above.
359
+
360
+ ## Building from source
361
+
362
+ ### Python distributions
363
+
364
+ ```bash
365
+ python -m pip install build twine
366
+ python -m build # wheel + sdist, version read from seedcode/__init__.py
367
+ python -m twine check dist/*
368
+ ```
369
+
370
+ ### Windows EXE + installer
371
+
372
+ ```bat
373
+ scripts\windows\build.bat
374
+ ```
375
+
376
+ Stage 0 generates the branding assets (icon, wizard art, exe version
377
+ resource). Stage 0b embeds the default API configuration from a local `.env`
378
+ (git-ignored; skipped when absent — never printed or committed). Stage 1
379
+ builds the self-contained `dist\seedcode.exe` with PyInstaller (icon +
380
+ version resource embedded) and verifies it. Stage 2 compiles the Inno Setup
381
+ installer and verifies it. Stage 3 stages everything into
382
+ `dist\release\<version>\` and writes `SHA256SUMS.txt` with real hashes. Every
383
+ stage fails loudly on a version mismatch, so a stale binary can never ship.
384
+
385
+ Details: [`scripts/windows/README.md`](scripts/windows/README.md).
386
+
387
+ ### Release artifacts (v6.2.5)
388
+
389
+ | Artifact | Purpose |
390
+ | --- | --- |
391
+ | `SeedCode-CLI-Setup-6.2.5.exe` | Windows installer (Inno Setup) |
392
+ | `SeedCode-CLI-6.2.5-windows-x64.exe` | Standalone Windows EXE — downloaded by the Windows IRM installer |
393
+ | `seedcode_cli-6.2.5-py3-none-any.whl` | Python wheel — downloaded by the Linux IRM installer |
394
+ | `seedcode-cli-6.2.5.tar.gz` | Python source distribution |
395
+ | `SHA256SUMS.txt` | SHA256 checksums; verified by both installers |
396
+
397
+ Built artifacts are collected in `dist/release/6.2.5/` during a release
398
+ build. Publishing (GitHub Release) is a separate step; the remote installers
399
+ read the release named `v6.2.5`.
400
+
401
+ ### The remote installers
402
+
403
+ [`IRM_INSTALL/`](IRM_INSTALL/) is the source of the scripts served at
404
+ `https://seedcode-cli.vercel.app`:
405
+
406
+ | File | Served at |
407
+ | --- | --- |
408
+ | `install.ps1` | `/install.ps1` (Windows) |
409
+ | `install.sh` | `/install.sh` (Linux) |
410
+ | `RELEASE_INFO.txt` | Official installation summary |
411
+
412
+ ## Troubleshooting
413
+
414
+ - **`seedcode` is not recognized** — open a *new* terminal after installing;
415
+ `PATH` changes only apply to fresh sessions. The installer verifies this
416
+ before it finishes.
417
+ - **"Setup needed" on the header** — the active provider is not usable yet.
418
+ Run `/provider`. Default needs a built-in credential (release builds have
419
+ one); OpenRouter/FreeModel/AeroLink need your own key.
420
+ - **Default says the built-in connection is unavailable** — this build has no
421
+ embedded credential. Run `/provider` and choose OpenRouter, or set
422
+ `OPENROUTER_API_KEY`.
423
+ - **401/403 errors** — your key is invalid or lacks access; `/apikey` to
424
+ replace it, `/doctor` for diagnostics.
425
+ - **402 errors** — the model needs credits; `/model` and pick a free model.
426
+ - **Rate limits (429)** — wait and retry; Seed Code honors the provider's
427
+ `Retry-After` hint. Consider a different provider.
428
+ - **Desktop actions fail** — check `/permission` (desktop requires the
429
+ `desktop` level) and `/computer` for engine status.
430
+ - **Reset everything** — delete `~/.seedcode/` (settings, keys, history);
431
+ `.seedcode/` project memory lives in each project and is separate.
432
+
433
+ ## Security model
434
+
435
+ - Credentials stay local and **provider-scoped**. Saving or switching one
436
+ provider never reads or writes another provider's key slot, so a key cannot
437
+ leak between Default, OpenRouter, FreeModel, AeroLink and Ollama.
438
+ - The built-in Default credential is resolved per request and is never copied
439
+ into another provider's stored configuration.
440
+ - Keys are shown masked (`sk-or-••••••••`) or not at all — never in full,
441
+ never in logs, never in error messages, never in a release artifact.
442
+ - Computer actions pass permission checks, verification, and retry limits.
443
+ - `.seedcode/` memory refuses secret-looking fields at write time.
444
+ - The release build consumes the local `.env` only during packaging; the
445
+ secret never enters source control, logs, manifests, or package metadata.
446
+
447
+ Review permissions before enabling Assist Mode — especially in unfamiliar
448
+ projects or with sensitive applications.
449
+
450
+ ## Credits
451
+
452
+ - **Created by:** Al Shahriar Sowan
453
+ - **Publisher:** Eagox Studio
454
+
455
+ ## License
456
+
457
+ MIT — see [`LICENSE`](LICENSE).