seedcode-cli 8.2.5__tar.gz → 9.1.1__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 (154) hide show
  1. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/.gitignore +9 -1
  2. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/PKG-INFO +153 -26
  3. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/README.md +151 -24
  4. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/npm/README.md +1 -1
  5. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/pyproject.toml +11 -0
  6. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/scripts/windows/README.md +1 -1
  7. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/__init__.py +1 -1
  8. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/_default_key_template.py +1 -1
  9. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/app.py +394 -40
  10. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/cli.py +13 -3
  11. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/codemode.py +118 -50
  12. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/codemode_state.py +12 -4
  13. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/commands/__init__.py +14 -0
  14. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/commands/agent.py +5 -3
  15. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/commands/assist.py +154 -43
  16. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/commands/codemode.py +85 -9
  17. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/commands/desktop.py +2 -2
  18. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/commands/doctor.py +10 -0
  19. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/commands/mode.py +3 -3
  20. seedcode_cli-9.1.1/seedcode/commands/youtube_music.py +68 -0
  21. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/agent.py +99 -10
  22. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/chat.py +33 -9
  23. seedcode_cli-9.1.1/seedcode/core/intent.py +321 -0
  24. seedcode_cli-9.1.1/seedcode/core/internet.py +255 -0
  25. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/models.py +1 -1
  26. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/modes.py +2 -2
  27. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/providers/__init__.py +20 -9
  28. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/providers/default.py +1 -1
  29. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/session.py +10 -2
  30. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/tasks.py +22 -0
  31. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/default_api.py +77 -0
  32. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/tools/__init__.py +1 -1
  33. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/tools/permissions.py +18 -2
  34. seedcode_cli-9.1.1/seedcode/tools/web.py +81 -0
  35. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/__init__.py +20 -5
  36. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/codemode_header.py +2 -2
  37. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/content.py +1 -1
  38. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/dashboard.py +5 -5
  39. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/dialog.py +12 -4
  40. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/header.py +1 -1
  41. seedcode_cli-9.1.1/seedcode/ui/mode_switch.py +276 -0
  42. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/state.py +11 -1
  43. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/statusbar.py +1 -1
  44. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/tasks.py +1 -1
  45. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/tui.py +304 -36
  46. seedcode_cli-9.1.1/seedcode/workspace.py +336 -0
  47. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/LICENSE +0 -0
  48. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/npm/LICENSE +0 -0
  49. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/scripts/pyproject_build_hook.py +0 -0
  50. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/__main__.py +0 -0
  51. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/apps/__init__.py +0 -0
  52. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/apps/discovery.py +0 -0
  53. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/apps/installer.py +0 -0
  54. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/apps/launcher.py +0 -0
  55. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/apps/verifier.py +0 -0
  56. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/assets/logo.png +0 -0
  57. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/branding.py +0 -0
  58. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/commands/about.py +0 -0
  59. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/commands/chat.py +0 -0
  60. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/commands/clear.py +0 -0
  61. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/commands/help.py +0 -0
  62. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/commands/history.py +0 -0
  63. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/commands/palette.py +0 -0
  64. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/commands/provider.py +0 -0
  65. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/commands/session.py +0 -0
  66. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/commands/status.py +0 -0
  67. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/commands/theme.py +0 -0
  68. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/__init__.py +0 -0
  69. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/browser.py +0 -0
  70. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/browser_cdp.py +0 -0
  71. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/browser_engine.py +0 -0
  72. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/browser_extract.py +0 -0
  73. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/browser_popups.py +0 -0
  74. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/browser_selenium.py +0 -0
  75. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/browser_skills.py +0 -0
  76. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/catalog.py +0 -0
  77. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/controller.py +0 -0
  78. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/dispatcher.py +0 -0
  79. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/dpi.py +0 -0
  80. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/engine.py +0 -0
  81. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/keyboard.py +0 -0
  82. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/lifecycle_guard.py +0 -0
  83. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/logbook.py +0 -0
  84. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/mouse.py +0 -0
  85. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/ocr.py +0 -0
  86. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/operator_skills.py +0 -0
  87. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/permissions.py +0 -0
  88. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/recovery.py +0 -0
  89. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/registry.py +0 -0
  90. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/resolver.py +0 -0
  91. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/screen.py +0 -0
  92. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/screen_state.py +0 -0
  93. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/selfguard.py +0 -0
  94. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/semantic.py +0 -0
  95. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/skills.py +0 -0
  96. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/state.py +0 -0
  97. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/verifier.py +0 -0
  98. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/vision.py +0 -0
  99. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/computer/windows.py +0 -0
  100. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/config/__init__.py +0 -0
  101. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/config/defaults.py +0 -0
  102. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/config/manager.py +0 -0
  103. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/__init__.py +0 -0
  104. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/client.py +0 -0
  105. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/errors.py +0 -0
  106. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/http.py +0 -0
  107. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/identity.py +0 -0
  108. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/identity_store.py +0 -0
  109. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/lifecycle.py +0 -0
  110. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/limits.py +0 -0
  111. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/project.py +0 -0
  112. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/providers/aerolink.py +0 -0
  113. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/providers/base.py +0 -0
  114. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/providers/custom.py +0 -0
  115. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/providers/failover.py +0 -0
  116. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/providers/freemodel.py +0 -0
  117. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/providers/health.py +0 -0
  118. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/providers/ollama.py +0 -0
  119. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/providers/ollama_start.py +0 -0
  120. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/providers/openrouter.py +0 -0
  121. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/core/streaming.py +0 -0
  122. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/defaults.py +0 -0
  123. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/memory/__init__.py +0 -0
  124. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/memory/manager.py +0 -0
  125. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/memory/storage.py +0 -0
  126. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/memory/store.py +0 -0
  127. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/tools/base.py +0 -0
  128. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/tools/desktop.py +0 -0
  129. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/tools/filesystem.py +0 -0
  130. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/tools/git.py +0 -0
  131. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/tools/patch.py +0 -0
  132. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/tools/search.py +0 -0
  133. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/tools/terminal.py +0 -0
  134. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/tools/textio.py +0 -0
  135. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/badges.py +0 -0
  136. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/fuzzy.py +0 -0
  137. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/layout.py +0 -0
  138. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/menu.py +0 -0
  139. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/palette.py +0 -0
  140. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/progress.py +0 -0
  141. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/prompts.py +0 -0
  142. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/reference.py +0 -0
  143. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/renderer.py +0 -0
  144. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/searchbox.py +0 -0
  145. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/selector.py +0 -0
  146. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/session_view.py +0 -0
  147. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/textbox.py +0 -0
  148. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/theme.py +0 -0
  149. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/ui/tree.py +0 -0
  150. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/utils/__init__.py +0 -0
  151. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/utils/helpers.py +0 -0
  152. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/utils/logger.py +0 -0
  153. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/utils/terminal_env.py +0 -0
  154. {seedcode_cli-8.2.5 → seedcode_cli-9.1.1}/seedcode/utils/text.py +0 -0
@@ -63,12 +63,20 @@ Desktop.ini
63
63
  .vscode/
64
64
  .claude/
65
65
 
66
- # Scratch / temporary artifacts
66
+ # Scratch / temporary artifacts (never part of a release)
67
+ # _verify/ holds throwaway virtualenvs and clean-home install tests used while
68
+ # validating a release build. It must stay out of the tree's package inputs:
69
+ # hatchling's sdist includes untracked, non-ignored files, so leaving a scratch
70
+ # venv here would otherwise end up inside the source distribution.
71
+ _verify/
67
72
  *.tmp
68
73
  *.bak
69
74
  *.orig
70
75
  *.rej
71
76
  *.crdownload
77
+ _scratch*
78
+ /probe*
79
+ errorlevel
72
80
  opencode.txt
73
81
  V6.2.0/
74
82
  newupdatec6.2.5/
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.5
1
+ Metadata-Version: 2.4
2
2
  Name: seedcode-cli
3
- Version: 8.2.5
3
+ Version: 9.1.1
4
4
  Summary: Seed Code — a premium terminal-based AI coding assistant. Plant ideas. Grow code.
5
5
  Project-URL: Homepage, https://github.com/Alshahriar-07/seedcode-cli
6
6
  Project-URL: Repository, https://github.com/Alshahriar-07/seedcode-cli
@@ -55,7 +55,7 @@ Description-Content-Type: text/markdown
55
55
  > *Plant ideas. Grow code.*
56
56
 
57
57
  Seed Code is a premium terminal-based AI coding assistant and task runner.
58
- v8.2.5 exposes exactly **two modes** — **Chat Mode** and **Agent Mode** — over a
58
+ v9.1.1 exposes exactly **two modes** — **Chat Mode** and **Agent Mode** — over a
59
59
  multi-provider, multi-model engine, behind the Seed Code startup logo and a
60
60
  compact block of live session state.
61
61
 
@@ -95,7 +95,22 @@ remain accepted aliases, but nothing in the UI presents a third mode.
95
95
  `AI > ✓ Tests passed`) whose lines appear only when the underlying operation
96
96
  really starts. There is no manual to-do list to create or manage, and
97
97
  completing a task never closes the application.
98
- - **Version:** 8.2.5 (`seedcode --version`)
98
+ - **Intent-driven, not tool-eager:** every turn is classified (conversation,
99
+ research, coding, computer) before anything runs, and only the capability
100
+ that intent actually needs is offered to the model. A question never reads
101
+ your project; a coding task never sees the browser tools.
102
+ - **Chat → Agent escalation, and back:** a request sent in Chat Mode that has
103
+ to *execute* something runs with the agent engine and then returns to Chat
104
+ Mode. An explicit `/agent on` stays on until you turn it off.
105
+ - **Internet access when it is actually needed:** a research request can search
106
+ and read current sources in both Chat and Agent Mode — keyless search,
107
+ URL-attributed and character-budgeted context, and
108
+ `SEEDCODE_DISABLE_INTERNET=1` to turn it off. Progress is shown while it
109
+ works.
110
+ - **Permissions that stick:** the permission panel offers Allow, Allow Session
111
+ and Allow All, and an approved scope is no longer forgotten when a new agent
112
+ engine is created.
113
+ - **Version:** 9.1.1 (`seedcode --version`)
99
114
 
100
115
  ## Installation
101
116
 
@@ -154,8 +169,8 @@ Python required) and both run the same CLI:
154
169
 
155
170
  | Download | What it is |
156
171
  | --- | --- |
157
- | `SeedCode-CLI-Setup-8.2.5.exe` | **Setup installer (recommended).** A wizard that installs to Program Files, adds Seed Code to the system `PATH`, creates a Start Menu shortcut with an optional desktop shortcut, verifies the installation before reporting success, and ships a clean uninstaller that never deletes your project data silently. |
158
- | `SeedCode-CLI-8.2.5-windows-x64.exe` | **Standalone executable.** A single portable `seedcode.exe` — no installation and no admin rights. The Windows IRM installer above downloads exactly this file. Run it directly from wherever you put it. |
172
+ | `SeedCode-CLI-Setup-9.1.1.exe` | **Setup installer (recommended).** A wizard that installs to Program Files, adds Seed Code to the system `PATH`, creates a Start Menu shortcut with an optional desktop shortcut, verifies the installation before reporting success, and ships a clean uninstaller that never deletes your project data silently. |
173
+ | `SeedCode-CLI-9.1.1-windows-x64.exe` | **Standalone executable.** A single portable `seedcode.exe` — no installation and no admin rights. The Windows IRM installer above downloads exactly this file. Run it directly from wherever you put it. |
159
174
 
160
175
  Both are published on the
161
176
  [Releases page](https://github.com/Alshahriar-07/seedcode-cli/releases) with
@@ -164,7 +179,7 @@ their SHA256 in `SHA256SUMS.txt`.
164
179
  After installing by any route:
165
180
 
166
181
  ```bash
167
- seedcode --version # -> Seed Code CLI 8.2.5
182
+ seedcode --version # -> Seed Code CLI 9.1.1
168
183
  ```
169
184
 
170
185
  > **`seedcode` not recognized?** Open a *new* terminal. `PATH` changes only
@@ -187,6 +202,30 @@ seedcode
187
202
  seedcode
188
203
  ```
189
204
 
205
+ On first launch Seed Code asks where it may work:
206
+
207
+ ```text
208
+ Select Workspace
209
+ --------------------------------------------------------------
210
+ Where should Seed Code work? Agent Mode reads, writes, indexes and
211
+ runs commands only inside the folder you pick.
212
+
213
+ 1 Current Folder D:\Projects\my-site
214
+ 2 Choose a Folder browse this PC and pick any directory
215
+
216
+ Select [1] >
217
+ ```
218
+
219
+ `Current Folder` keeps the directory you launched from. `Choose a Folder` opens
220
+ your operating system's native folder picker and makes the chosen directory the
221
+ **workspace** — the single root for Agent Mode, file reads and writes, project
222
+ indexing, the `.seedcode` context and `plan.md`, terminal commands and
223
+ verification. Nothing outside that root is touched without permission.
224
+
225
+ Automation is never blocked: `SEEDCODE_WORKSPACE=<dir>` selects the workspace
226
+ directly, and `SEEDCODE_NO_WORKSPACE_PROMPT=1` (or a non-interactive host) keeps
227
+ the launch directory.
228
+
190
229
  You land in the persistent Seed Code workspace: a fixed header carrying the
191
230
  Seed Code ASCII logo, a scrolling conversation region and a fixed message
192
231
  composer. The header is a live dashboard — it never scrolls away, and its
@@ -194,7 +233,7 @@ values (provider, model, mode, status, workspace, context budget and the masked
194
233
  API key) update in place the moment they change.
195
234
 
196
235
  ```text
197
- ╭─ Seed Code CLI v8.2.5 ───────────────────────────────────────────────────────────────────────╮
236
+ ╭─ Seed Code CLI v9.1.1 ───────────────────────────────────────────────────────────────────────╮
198
237
  │ ▄█████ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄ ▄█████ ▄▄▄ ▄▄▄▄ ▄▄▄▄▄ ▄█████ ██ ██ │
199
238
  │ ▀▀▀▄▄▄ ██▄▄ ██▄▄ ██▀██ ██ ██▀██ ██▀██ ██▄▄ ██ ██ ██ │
200
239
  │ █████▀ ██▄▄▄ ██▄▄▄ ████▀ ▀█████ ▀███▀ ████▀ ██▄▄▄ ▀█████ ██████ ██ │
@@ -243,12 +282,12 @@ Below is the rendering used when the persistent interface is not available — a
243
282
  piped host, `SEEDCODE_NO_TUI=1`, or a console that cannot draw it:
244
283
 
245
284
  ```text
246
- ╭─ Seed Code CLI v8.2.5 ───────────────────────────────────────────────────────────────────────╮
285
+ ╭─ Seed Code CLI v9.1.1 ───────────────────────────────────────────────────────────────────────╮
247
286
  │ ▄█████ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄ ▄█████ ▄▄▄ ▄▄▄▄ ▄▄▄▄▄ ▄█████ ██ ██ │
248
287
  │ ▀▀▀▄▄▄ ██▄▄ ██▄▄ ██▀██ ██ ██▀██ ██▀██ ██▄▄ ██ ██ ██ │
249
288
  │ █████▀ ██▄▄▄ ██▄▄▄ ████▀ ▀█████ ▀███▀ ████▀ ██▄▄▄ ▀█████ ██████ ██ │
250
289
  │ │
251
- │ Seed Code CLI v8.2.5 │
290
+ │ Seed Code CLI v9.1.1 │
252
291
  │ Plant ideas. Grow code. │
253
292
  │ Provider OpenRouter │
254
293
  │ Model cohere/north-mini-code:free │
@@ -281,14 +320,18 @@ own status, and its own credential slot. It resolves its credential itself,
281
320
  in this order:
282
321
 
283
322
  1. a key stored in Default's own slot (advanced/manual use);
284
- 2. the embedded Seed Code release credential (release artifacts only);
323
+ 2. the embedded Seed Code release credential — carried by the Windows
324
+ standalone EXE and the Setup installer only. The wheel and sdist
325
+ deliberately never carry it: the build refuses to package the generated
326
+ credential module, so a `pip install` is always a credential-free build;
285
327
  3. `OPENROUTER_API_KEY` / `SEEDCODE_DEFAULT_API_KEY` in the environment.
286
328
 
287
329
  It never reads or writes another provider's configuration, and no other
288
330
  provider inherits Default's credential. If a build carries no built-in
289
- credential (a source checkout, for example), Default says so plainly instead
290
- of failing with an authentication error — pick OpenRouter and add your own
291
- key.
331
+ credential (a source checkout or a `pip install`), Default says so plainly
332
+ instead of failing with an authentication error — pick OpenRouter and add your
333
+ own key. On the Windows EXE and Setup installer the credential is present, so
334
+ a fresh install is usable on the Default provider immediately.
292
335
 
293
336
  ### Your own API key
294
337
 
@@ -314,7 +357,7 @@ configuration.
314
357
 
315
358
  | Provider | API key | Best for |
316
359
  | --- | --- | --- |
317
- | **Default** | not required | Working immediately on a release install (`cohere/north-mini-code:free`) |
360
+ | **Default** | not required | Working immediately on a Windows EXE/Setup install (`cohere/north-mini-code:free`) |
318
361
  | [OpenRouter](https://openrouter.ai) | required | A broad catalogue of free and paid models |
319
362
  | FreeModel Claude | required | Claude-family models through FreeModel |
320
363
  | FreeModel Codex | required | GPT/Codex models through FreeModel |
@@ -345,6 +388,82 @@ Permission modes (view/set with `/permission`):
345
388
  | `desktop` | Add desktop automation capability after confirmation |
346
389
  | `full_system` | Allow broader computer and filesystem actions after confirmation |
347
390
 
391
+ ### Permission scopes
392
+
393
+ The permission panel is a bounded TUI component shown between the conversation
394
+ and the composer, inside the same application (never a nested prompt):
395
+
396
+ ```text
397
+ ╭─ Agent Action ───────────────────────────────────────────────╮
398
+ │ Agent wants to run: │
399
+ │ npm install │
400
+ │ Reason: Run command │
401
+ │ ❯ Allow Once approve this action only │
402
+ │ Always Allow this action type, this session │
403
+ │ Allow All every action type, this session │
404
+ │ Deny block this action │
405
+ │ Enter allow · a allow session · A allow all · d deny │
406
+ ╰──────────────────────────────────────────────────────────────╯
407
+ ```
408
+
409
+ - **Allow Once** approves the single action.
410
+ - **Always Allow** approves that action type until you exit.
411
+ - **Allow All** approves every action type until you exit.
412
+
413
+ Both broader scopes are in-memory session grants: they are never written to
414
+ `config.json`, and closing Seed Code clears them. Only the agent turn waits —
415
+ the event loop, the header and the composer stay live while you decide.
416
+ Harmless read operations (reading project files, listing directories, searching
417
+ sources, inspecting structure) do not prompt; consequential actions do.
418
+
419
+ ## Intent and capability selection
420
+
421
+ Before a turn runs, Seed Code classifies it — deterministically, without calling
422
+ the model:
423
+
424
+ | Intent | Example | What it may reach for |
425
+ | --- | --- | --- |
426
+ | conversation | "How do I fix the provider switching bug?" | nothing; it answers |
427
+ | research | "What changed in the latest Node.js release?" | web search and fetch |
428
+ | coding | "Fix the provider switching bug." | project files, terminal |
429
+ | computer | "Play this song on YouTube." | browser/desktop, web |
430
+
431
+ The classification decides which tools are advertised (the **minimum-tool
432
+ principle**), whether project context is loaded, and whether the workspace and
433
+ desktop capabilities are available at all. Two consequences matter in practice:
434
+
435
+ - **No unnecessary file access.** A question never causes your project to be
436
+ read; the project index and workspace context are only loaded for a turn that
437
+ is actually about the project.
438
+ - **No unnecessary escalation.** A research question is answered in Chat Mode —
439
+ it does not turn into an agent task.
440
+
441
+ When a Chat Mode request is one that executes something, that single turn is
442
+ handed to the agent engine and control is handed back afterwards:
443
+
444
+ ```text
445
+ You > Fix the provider switching bug in src/providers.py
446
+
447
+ AI > [Agent assist - the request asks for a change to the project]
448
+ ··· the agent inspects, edits and verifies ···
449
+ AI > [Temporary agent task finished - back to Chat Mode]
450
+ ```
451
+
452
+ ## Internet access
453
+
454
+ Seed Code can retrieve current external information when a turn's intent needs
455
+ it, in **both** modes:
456
+
457
+ - **Chat Mode** retrieves sources before answering and shows its progress
458
+ (`[Accessing internet...]`, `[Reading relevant sources...]`).
459
+ - **Agent Mode** exposes `web_search` and `web_fetch` as read-only tools to
460
+ research and computer turns only. A coding turn never sees them.
461
+
462
+ Retrieval is keyless (no search API key is required or asked for), the retrieved
463
+ text is attributed by URL and capped to a character budget before it reaches the
464
+ prompt, and every failure path degrades to "no results" instead of an error.
465
+ `SEEDCODE_DISABLE_INTERNET=1` disables the capability for a session.
466
+
348
467
  ## Workspace coding (part of Agent Mode)
349
468
 
350
469
  Agent Mode is a real coding agent for the current project. Your working
@@ -461,7 +580,7 @@ sequential console Agent Mode additionally shows the plan as a checklist. Both
461
580
  reflect what the agent really did:
462
581
 
463
582
  ```text
464
- ╭─ SEEDCODE 8.2.5 • AGENT MODE ───────────────╮
583
+ ╭─ SEEDCODE 9.1.1 • AGENT MODE ───────────────╮
465
584
  │ ● RUNNING Task 3/8 Build authentication │
466
585
  │ ████████████░░░░ 72% • 4m 32s • 18 calls │
467
586
  │ → Running: pytest tests/auth │
@@ -702,21 +821,21 @@ stage fails loudly on a version mismatch, so a stale binary can never ship.
702
821
 
703
822
  Details: [`scripts/windows/README.md`](scripts/windows/README.md).
704
823
 
705
- ### Release artifacts (v8.2.5)
824
+ ### Release artifacts (v9.1.1)
706
825
 
707
- Release: [v8.2.5](https://github.com/Alshahriar-07/seedcode-cli/releases/tag/v8.2.5)
826
+ Release: [v9.1.1](https://github.com/Alshahriar-07/seedcode-cli/releases/tag/v9.1.1)
708
827
 
709
828
  | Artifact | Purpose |
710
829
  | --- | --- |
711
- | `SeedCode-CLI-Setup-8.2.5.exe` | Windows installer (Inno Setup) |
712
- | `SeedCode-CLI-8.2.5-windows-x64.exe` | Standalone Windows EXE — downloaded by the Windows IRM installer |
713
- | `seedcode_cli-8.2.5-py3-none-any.whl` | Python wheel — downloaded by the Linux IRM installer |
714
- | `seedcode_cli-8.2.5.tar.gz` | Python source distribution |
830
+ | `SeedCode-CLI-Setup-9.1.1.exe` | Windows installer (Inno Setup) |
831
+ | `SeedCode-CLI-9.1.1-windows-x64.exe` | Standalone Windows EXE — downloaded by the Windows IRM installer |
832
+ | `seedcode_cli-9.1.1-py3-none-any.whl` | Python wheel — downloaded by the Linux IRM installer |
833
+ | `seedcode_cli-9.1.1.tar.gz` | Python source distribution |
715
834
  | `SHA256SUMS.txt` | SHA256 checksums; verified by both installers |
716
835
 
717
- Built artifacts are collected in `dist/release/8.2.5/` during a release
836
+ Built artifacts are collected in `dist/release/9.1.1/` during a release
718
837
  build. Publishing (GitHub Release) is a separate step; the remote installers
719
- read the release named `v8.2.5`.
838
+ read the release named `v9.1.1`.
720
839
 
721
840
  ### The remote installers
722
841
 
@@ -738,8 +857,9 @@ read the release named `v8.2.5`.
738
857
  Run `/provider`. Default needs a built-in credential (release builds have
739
858
  one); OpenRouter/FreeModel/AeroLink need your own key.
740
859
  - **Default says the built-in connection is unavailable** — this build has no
741
- embedded credential. Run `/provider` and choose OpenRouter, or set
742
- `OPENROUTER_API_KEY`.
860
+ embedded credential. The Windows EXE and Setup installer carry one; the
861
+ wheel and sdist deliberately do not. Run `/provider` and choose OpenRouter,
862
+ or set `OPENROUTER_API_KEY` (or `SEEDCODE_DEFAULT_API_KEY`).
743
863
  - **401/403 errors** — your key is invalid or lacks access; `/apikey` to
744
864
  replace it, `/doctor` for diagnostics.
745
865
  - **402 errors** — the model needs credits; `/model` and pick a free model
@@ -761,6 +881,13 @@ read the release named `v8.2.5`.
761
881
  - Keys are shown masked (`sk-or-••••••••`) or not at all — never in full,
762
882
  never in logs, never in error messages, never in a release artifact.
763
883
  - Computer actions pass permission checks, verification, and retry limits.
884
+ - Internet retrieval is keyless, URL-attributed, character-budgeted, and
885
+ disableable with `SEEDCODE_DISABLE_INTERNET=1`; it never caches retrieved
886
+ pages to disk.
887
+ - Permission scope grants (Allow Session / Allow All) are in-memory only and are
888
+ never persisted to `config.json`.
889
+ - The built-in Default credential's state is reported as available / missing /
890
+ invalid / unavailable — never as a value.
764
891
  - `.seedcode/` memory refuses secret-looking fields at write time.
765
892
  - The release build consumes the local `.env` only during packaging; the
766
893
  secret never enters source control, logs, manifests, or package metadata.
@@ -6,7 +6,7 @@
6
6
  > *Plant ideas. Grow code.*
7
7
 
8
8
  Seed Code is a premium terminal-based AI coding assistant and task runner.
9
- v8.2.5 exposes exactly **two modes** — **Chat Mode** and **Agent Mode** — over a
9
+ v9.1.1 exposes exactly **two modes** — **Chat Mode** and **Agent Mode** — over a
10
10
  multi-provider, multi-model engine, behind the Seed Code startup logo and a
11
11
  compact block of live session state.
12
12
 
@@ -46,7 +46,22 @@ remain accepted aliases, but nothing in the UI presents a third mode.
46
46
  `AI > ✓ Tests passed`) whose lines appear only when the underlying operation
47
47
  really starts. There is no manual to-do list to create or manage, and
48
48
  completing a task never closes the application.
49
- - **Version:** 8.2.5 (`seedcode --version`)
49
+ - **Intent-driven, not tool-eager:** every turn is classified (conversation,
50
+ research, coding, computer) before anything runs, and only the capability
51
+ that intent actually needs is offered to the model. A question never reads
52
+ your project; a coding task never sees the browser tools.
53
+ - **Chat → Agent escalation, and back:** a request sent in Chat Mode that has
54
+ to *execute* something runs with the agent engine and then returns to Chat
55
+ Mode. An explicit `/agent on` stays on until you turn it off.
56
+ - **Internet access when it is actually needed:** a research request can search
57
+ and read current sources in both Chat and Agent Mode — keyless search,
58
+ URL-attributed and character-budgeted context, and
59
+ `SEEDCODE_DISABLE_INTERNET=1` to turn it off. Progress is shown while it
60
+ works.
61
+ - **Permissions that stick:** the permission panel offers Allow, Allow Session
62
+ and Allow All, and an approved scope is no longer forgotten when a new agent
63
+ engine is created.
64
+ - **Version:** 9.1.1 (`seedcode --version`)
50
65
 
51
66
  ## Installation
52
67
 
@@ -105,8 +120,8 @@ Python required) and both run the same CLI:
105
120
 
106
121
  | Download | What it is |
107
122
  | --- | --- |
108
- | `SeedCode-CLI-Setup-8.2.5.exe` | **Setup installer (recommended).** A wizard that installs to Program Files, adds Seed Code to the system `PATH`, creates a Start Menu shortcut with an optional desktop shortcut, verifies the installation before reporting success, and ships a clean uninstaller that never deletes your project data silently. |
109
- | `SeedCode-CLI-8.2.5-windows-x64.exe` | **Standalone executable.** A single portable `seedcode.exe` — no installation and no admin rights. The Windows IRM installer above downloads exactly this file. Run it directly from wherever you put it. |
123
+ | `SeedCode-CLI-Setup-9.1.1.exe` | **Setup installer (recommended).** A wizard that installs to Program Files, adds Seed Code to the system `PATH`, creates a Start Menu shortcut with an optional desktop shortcut, verifies the installation before reporting success, and ships a clean uninstaller that never deletes your project data silently. |
124
+ | `SeedCode-CLI-9.1.1-windows-x64.exe` | **Standalone executable.** A single portable `seedcode.exe` — no installation and no admin rights. The Windows IRM installer above downloads exactly this file. Run it directly from wherever you put it. |
110
125
 
111
126
  Both are published on the
112
127
  [Releases page](https://github.com/Alshahriar-07/seedcode-cli/releases) with
@@ -115,7 +130,7 @@ their SHA256 in `SHA256SUMS.txt`.
115
130
  After installing by any route:
116
131
 
117
132
  ```bash
118
- seedcode --version # -> Seed Code CLI 8.2.5
133
+ seedcode --version # -> Seed Code CLI 9.1.1
119
134
  ```
120
135
 
121
136
  > **`seedcode` not recognized?** Open a *new* terminal. `PATH` changes only
@@ -138,6 +153,30 @@ seedcode
138
153
  seedcode
139
154
  ```
140
155
 
156
+ On first launch Seed Code asks where it may work:
157
+
158
+ ```text
159
+ Select Workspace
160
+ --------------------------------------------------------------
161
+ Where should Seed Code work? Agent Mode reads, writes, indexes and
162
+ runs commands only inside the folder you pick.
163
+
164
+ 1 Current Folder D:\Projects\my-site
165
+ 2 Choose a Folder browse this PC and pick any directory
166
+
167
+ Select [1] >
168
+ ```
169
+
170
+ `Current Folder` keeps the directory you launched from. `Choose a Folder` opens
171
+ your operating system's native folder picker and makes the chosen directory the
172
+ **workspace** — the single root for Agent Mode, file reads and writes, project
173
+ indexing, the `.seedcode` context and `plan.md`, terminal commands and
174
+ verification. Nothing outside that root is touched without permission.
175
+
176
+ Automation is never blocked: `SEEDCODE_WORKSPACE=<dir>` selects the workspace
177
+ directly, and `SEEDCODE_NO_WORKSPACE_PROMPT=1` (or a non-interactive host) keeps
178
+ the launch directory.
179
+
141
180
  You land in the persistent Seed Code workspace: a fixed header carrying the
142
181
  Seed Code ASCII logo, a scrolling conversation region and a fixed message
143
182
  composer. The header is a live dashboard — it never scrolls away, and its
@@ -145,7 +184,7 @@ values (provider, model, mode, status, workspace, context budget and the masked
145
184
  API key) update in place the moment they change.
146
185
 
147
186
  ```text
148
- ╭─ Seed Code CLI v8.2.5 ───────────────────────────────────────────────────────────────────────╮
187
+ ╭─ Seed Code CLI v9.1.1 ───────────────────────────────────────────────────────────────────────╮
149
188
  │ ▄█████ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄ ▄█████ ▄▄▄ ▄▄▄▄ ▄▄▄▄▄ ▄█████ ██ ██ │
150
189
  │ ▀▀▀▄▄▄ ██▄▄ ██▄▄ ██▀██ ██ ██▀██ ██▀██ ██▄▄ ██ ██ ██ │
151
190
  │ █████▀ ██▄▄▄ ██▄▄▄ ████▀ ▀█████ ▀███▀ ████▀ ██▄▄▄ ▀█████ ██████ ██ │
@@ -194,12 +233,12 @@ Below is the rendering used when the persistent interface is not available — a
194
233
  piped host, `SEEDCODE_NO_TUI=1`, or a console that cannot draw it:
195
234
 
196
235
  ```text
197
- ╭─ Seed Code CLI v8.2.5 ───────────────────────────────────────────────────────────────────────╮
236
+ ╭─ Seed Code CLI v9.1.1 ───────────────────────────────────────────────────────────────────────╮
198
237
  │ ▄█████ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄ ▄█████ ▄▄▄ ▄▄▄▄ ▄▄▄▄▄ ▄█████ ██ ██ │
199
238
  │ ▀▀▀▄▄▄ ██▄▄ ██▄▄ ██▀██ ██ ██▀██ ██▀██ ██▄▄ ██ ██ ██ │
200
239
  │ █████▀ ██▄▄▄ ██▄▄▄ ████▀ ▀█████ ▀███▀ ████▀ ██▄▄▄ ▀█████ ██████ ██ │
201
240
  │ │
202
- │ Seed Code CLI v8.2.5 │
241
+ │ Seed Code CLI v9.1.1 │
203
242
  │ Plant ideas. Grow code. │
204
243
  │ Provider OpenRouter │
205
244
  │ Model cohere/north-mini-code:free │
@@ -232,14 +271,18 @@ own status, and its own credential slot. It resolves its credential itself,
232
271
  in this order:
233
272
 
234
273
  1. a key stored in Default's own slot (advanced/manual use);
235
- 2. the embedded Seed Code release credential (release artifacts only);
274
+ 2. the embedded Seed Code release credential — carried by the Windows
275
+ standalone EXE and the Setup installer only. The wheel and sdist
276
+ deliberately never carry it: the build refuses to package the generated
277
+ credential module, so a `pip install` is always a credential-free build;
236
278
  3. `OPENROUTER_API_KEY` / `SEEDCODE_DEFAULT_API_KEY` in the environment.
237
279
 
238
280
  It never reads or writes another provider's configuration, and no other
239
281
  provider inherits Default's credential. If a build carries no built-in
240
- credential (a source checkout, for example), Default says so plainly instead
241
- of failing with an authentication error — pick OpenRouter and add your own
242
- key.
282
+ credential (a source checkout or a `pip install`), Default says so plainly
283
+ instead of failing with an authentication error — pick OpenRouter and add your
284
+ own key. On the Windows EXE and Setup installer the credential is present, so
285
+ a fresh install is usable on the Default provider immediately.
243
286
 
244
287
  ### Your own API key
245
288
 
@@ -265,7 +308,7 @@ configuration.
265
308
 
266
309
  | Provider | API key | Best for |
267
310
  | --- | --- | --- |
268
- | **Default** | not required | Working immediately on a release install (`cohere/north-mini-code:free`) |
311
+ | **Default** | not required | Working immediately on a Windows EXE/Setup install (`cohere/north-mini-code:free`) |
269
312
  | [OpenRouter](https://openrouter.ai) | required | A broad catalogue of free and paid models |
270
313
  | FreeModel Claude | required | Claude-family models through FreeModel |
271
314
  | FreeModel Codex | required | GPT/Codex models through FreeModel |
@@ -296,6 +339,82 @@ Permission modes (view/set with `/permission`):
296
339
  | `desktop` | Add desktop automation capability after confirmation |
297
340
  | `full_system` | Allow broader computer and filesystem actions after confirmation |
298
341
 
342
+ ### Permission scopes
343
+
344
+ The permission panel is a bounded TUI component shown between the conversation
345
+ and the composer, inside the same application (never a nested prompt):
346
+
347
+ ```text
348
+ ╭─ Agent Action ───────────────────────────────────────────────╮
349
+ │ Agent wants to run: │
350
+ │ npm install │
351
+ │ Reason: Run command │
352
+ │ ❯ Allow Once approve this action only │
353
+ │ Always Allow this action type, this session │
354
+ │ Allow All every action type, this session │
355
+ │ Deny block this action │
356
+ │ Enter allow · a allow session · A allow all · d deny │
357
+ ╰──────────────────────────────────────────────────────────────╯
358
+ ```
359
+
360
+ - **Allow Once** approves the single action.
361
+ - **Always Allow** approves that action type until you exit.
362
+ - **Allow All** approves every action type until you exit.
363
+
364
+ Both broader scopes are in-memory session grants: they are never written to
365
+ `config.json`, and closing Seed Code clears them. Only the agent turn waits —
366
+ the event loop, the header and the composer stay live while you decide.
367
+ Harmless read operations (reading project files, listing directories, searching
368
+ sources, inspecting structure) do not prompt; consequential actions do.
369
+
370
+ ## Intent and capability selection
371
+
372
+ Before a turn runs, Seed Code classifies it — deterministically, without calling
373
+ the model:
374
+
375
+ | Intent | Example | What it may reach for |
376
+ | --- | --- | --- |
377
+ | conversation | "How do I fix the provider switching bug?" | nothing; it answers |
378
+ | research | "What changed in the latest Node.js release?" | web search and fetch |
379
+ | coding | "Fix the provider switching bug." | project files, terminal |
380
+ | computer | "Play this song on YouTube." | browser/desktop, web |
381
+
382
+ The classification decides which tools are advertised (the **minimum-tool
383
+ principle**), whether project context is loaded, and whether the workspace and
384
+ desktop capabilities are available at all. Two consequences matter in practice:
385
+
386
+ - **No unnecessary file access.** A question never causes your project to be
387
+ read; the project index and workspace context are only loaded for a turn that
388
+ is actually about the project.
389
+ - **No unnecessary escalation.** A research question is answered in Chat Mode —
390
+ it does not turn into an agent task.
391
+
392
+ When a Chat Mode request is one that executes something, that single turn is
393
+ handed to the agent engine and control is handed back afterwards:
394
+
395
+ ```text
396
+ You > Fix the provider switching bug in src/providers.py
397
+
398
+ AI > [Agent assist - the request asks for a change to the project]
399
+ ··· the agent inspects, edits and verifies ···
400
+ AI > [Temporary agent task finished - back to Chat Mode]
401
+ ```
402
+
403
+ ## Internet access
404
+
405
+ Seed Code can retrieve current external information when a turn's intent needs
406
+ it, in **both** modes:
407
+
408
+ - **Chat Mode** retrieves sources before answering and shows its progress
409
+ (`[Accessing internet...]`, `[Reading relevant sources...]`).
410
+ - **Agent Mode** exposes `web_search` and `web_fetch` as read-only tools to
411
+ research and computer turns only. A coding turn never sees them.
412
+
413
+ Retrieval is keyless (no search API key is required or asked for), the retrieved
414
+ text is attributed by URL and capped to a character budget before it reaches the
415
+ prompt, and every failure path degrades to "no results" instead of an error.
416
+ `SEEDCODE_DISABLE_INTERNET=1` disables the capability for a session.
417
+
299
418
  ## Workspace coding (part of Agent Mode)
300
419
 
301
420
  Agent Mode is a real coding agent for the current project. Your working
@@ -412,7 +531,7 @@ sequential console Agent Mode additionally shows the plan as a checklist. Both
412
531
  reflect what the agent really did:
413
532
 
414
533
  ```text
415
- ╭─ SEEDCODE 8.2.5 • AGENT MODE ───────────────╮
534
+ ╭─ SEEDCODE 9.1.1 • AGENT MODE ───────────────╮
416
535
  │ ● RUNNING Task 3/8 Build authentication │
417
536
  │ ████████████░░░░ 72% • 4m 32s • 18 calls │
418
537
  │ → Running: pytest tests/auth │
@@ -653,21 +772,21 @@ stage fails loudly on a version mismatch, so a stale binary can never ship.
653
772
 
654
773
  Details: [`scripts/windows/README.md`](scripts/windows/README.md).
655
774
 
656
- ### Release artifacts (v8.2.5)
775
+ ### Release artifacts (v9.1.1)
657
776
 
658
- Release: [v8.2.5](https://github.com/Alshahriar-07/seedcode-cli/releases/tag/v8.2.5)
777
+ Release: [v9.1.1](https://github.com/Alshahriar-07/seedcode-cli/releases/tag/v9.1.1)
659
778
 
660
779
  | Artifact | Purpose |
661
780
  | --- | --- |
662
- | `SeedCode-CLI-Setup-8.2.5.exe` | Windows installer (Inno Setup) |
663
- | `SeedCode-CLI-8.2.5-windows-x64.exe` | Standalone Windows EXE — downloaded by the Windows IRM installer |
664
- | `seedcode_cli-8.2.5-py3-none-any.whl` | Python wheel — downloaded by the Linux IRM installer |
665
- | `seedcode_cli-8.2.5.tar.gz` | Python source distribution |
781
+ | `SeedCode-CLI-Setup-9.1.1.exe` | Windows installer (Inno Setup) |
782
+ | `SeedCode-CLI-9.1.1-windows-x64.exe` | Standalone Windows EXE — downloaded by the Windows IRM installer |
783
+ | `seedcode_cli-9.1.1-py3-none-any.whl` | Python wheel — downloaded by the Linux IRM installer |
784
+ | `seedcode_cli-9.1.1.tar.gz` | Python source distribution |
666
785
  | `SHA256SUMS.txt` | SHA256 checksums; verified by both installers |
667
786
 
668
- Built artifacts are collected in `dist/release/8.2.5/` during a release
787
+ Built artifacts are collected in `dist/release/9.1.1/` during a release
669
788
  build. Publishing (GitHub Release) is a separate step; the remote installers
670
- read the release named `v8.2.5`.
789
+ read the release named `v9.1.1`.
671
790
 
672
791
  ### The remote installers
673
792
 
@@ -689,8 +808,9 @@ read the release named `v8.2.5`.
689
808
  Run `/provider`. Default needs a built-in credential (release builds have
690
809
  one); OpenRouter/FreeModel/AeroLink need your own key.
691
810
  - **Default says the built-in connection is unavailable** — this build has no
692
- embedded credential. Run `/provider` and choose OpenRouter, or set
693
- `OPENROUTER_API_KEY`.
811
+ embedded credential. The Windows EXE and Setup installer carry one; the
812
+ wheel and sdist deliberately do not. Run `/provider` and choose OpenRouter,
813
+ or set `OPENROUTER_API_KEY` (or `SEEDCODE_DEFAULT_API_KEY`).
694
814
  - **401/403 errors** — your key is invalid or lacks access; `/apikey` to
695
815
  replace it, `/doctor` for diagnostics.
696
816
  - **402 errors** — the model needs credits; `/model` and pick a free model
@@ -712,6 +832,13 @@ read the release named `v8.2.5`.
712
832
  - Keys are shown masked (`sk-or-••••••••`) or not at all — never in full,
713
833
  never in logs, never in error messages, never in a release artifact.
714
834
  - Computer actions pass permission checks, verification, and retry limits.
835
+ - Internet retrieval is keyless, URL-attributed, character-budgeted, and
836
+ disableable with `SEEDCODE_DISABLE_INTERNET=1`; it never caches retrieved
837
+ pages to disk.
838
+ - Permission scope grants (Allow Session / Allow All) are in-memory only and are
839
+ never persisted to `config.json`.
840
+ - The built-in Default credential's state is reported as available / missing /
841
+ invalid / unavailable — never as a value.
715
842
  - `.seedcode/` memory refuses secret-looking fields at write time.
716
843
  - The release build consumes the local `.env` only during packaging; the
717
844
  secret never enters source control, logs, manifests, or package metadata.
@@ -16,7 +16,7 @@ Releases:
16
16
  A compatibility launcher retained for users who already manage tooling through
17
17
  npm. It is a thin wrapper around the official release: on Windows it downloads
18
18
  the official `SeedCode-CLI-<version>-windows-x64.exe` for this package's
19
- version (currently **8.2.5**) from the GitHub release, verifies its SHA256
19
+ version (currently **9.1.1**) from the GitHub release, verifies its SHA256
20
20
  against the release's `SHA256SUMS.txt`, caches it under `~/.seedcode/npm/`,
21
21
  and runs it — Python is never required. On Linux and macOS it defers to the
22
22
  official installer rather than shipping a binary.
@@ -93,10 +93,21 @@ path = "seedcode/__init__.py"
93
93
  path = "scripts/pyproject_build_hook.py"
94
94
  require-runtime-dependencies = false
95
95
 
96
+ # Pin Core Metadata 2.4 rather than letting hatchling emit its 2.5 default.
97
+ # Everything this project publishes is expressible in 2.4 (PEP 639's
98
+ # License-Expression / License-File landed in 2.4; only PEP 794's Import-Name /
99
+ # Import-Namespace need 2.5, and this distribution declares neither), while
100
+ # twine 6.x still *hard-caps* the metadata versions it accepts at 2.4 - it
101
+ # monkeypatches packaging._VALID_METADATA_VERSIONS to drop 2.5. The release
102
+ # workflow runs `python -m twine check dist/*` as a publish gate, so a 2.5
103
+ # wheel would fail its own release. 2.4 is the newest version the whole
104
+ # toolchain round-trips.
96
105
  [tool.hatch.build.targets.wheel]
97
106
  packages = ["seedcode"]
107
+ core-metadata-version = "2.4"
98
108
 
99
109
  [tool.hatch.build.targets.sdist]
100
110
  # The build hook ships in the sdist: pip rebuilds the wheel from the
101
111
  # extracted sdist, and hatchling must be able to load the hook there.
102
112
  include = ["seedcode", "scripts/pyproject_build_hook.py", "README.md", "LICENSE"]
113
+ core-metadata-version = "2.4"
@@ -76,7 +76,7 @@ Python runtime and every dependency inside it.
76
76
  publishes a verified copy to the repository root as the stable
77
77
  **`seedcode-cli-setup.exe`**, and stages the versioned copy for release as
78
78
  **`SeedCode-CLI-Setup-<version>.exe`** — the name attached to the GitHub
79
- release for that version (currently **8.2.5**), alongside the standalone
79
+ release for that version (currently **9.1.1**), alongside the standalone
80
80
  `SeedCode-CLI-<version>-windows-x64.exe` and `SHA256SUMS.txt` (which is what
81
81
  the remote installers verify against).
82
82