@pencil-agent/nano-pencil 2.0.0 → 2.0.1

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 (195) hide show
  1. package/README.md +267 -267
  2. package/dist/build-meta.json +3 -3
  3. package/dist/core/export-html/AGENT.md +11 -11
  4. package/dist/core/export-html/template.css +971 -971
  5. package/dist/core/export-html/template.html +54 -54
  6. package/dist/core/mcp/mcp-client.d.ts +3 -1
  7. package/dist/core/mcp/mcp-client.js +6 -6
  8. package/dist/core/mcp/mcp-config.d.ts +3 -3
  9. package/dist/core/mcp/mcp-config.js +1 -1
  10. package/dist/core/mcp/mcp-manager.d.ts +5 -1
  11. package/dist/core/mcp/mcp-manager.js +1 -1
  12. package/dist/core/platform/config/resource-loader.d.ts +2 -0
  13. package/dist/core/platform/config/resource-loader.js +2 -2
  14. package/dist/core/runtime/agent-session.d.ts +12 -0
  15. package/dist/core/runtime/agent-session.js +8 -8
  16. package/dist/core/runtime/sdk.d.ts +8 -0
  17. package/dist/core/runtime/sdk.js +1 -1
  18. package/dist/extensions/builtin/AGENT.md +115 -115
  19. package/dist/extensions/builtin/browser/AGENT.md +17 -17
  20. package/dist/extensions/builtin/browser/agent-workspace/agent_helpers.py +12 -12
  21. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/amazon/product-search.md +198 -198
  22. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/archive-org/scraping.md +341 -341
  23. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv/scraping.md +311 -311
  24. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv-bulk/scraping.md +333 -333
  25. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/atlas/overview.md +70 -70
  26. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/booking-com/scraping.md +578 -578
  27. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/capterra/scraping.md +440 -440
  28. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/centilebrain/generate-estimates.md +110 -110
  29. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coingecko/scraping.md +325 -325
  30. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coinmarketcap/scraping.md +463 -463
  31. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coursera/scraping.md +360 -360
  32. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/craigslist/scraping.md +390 -390
  33. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/crossref/scraping.md +568 -568
  34. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/dev-to/scraping.md +323 -323
  35. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/duckduckgo/scraping.md +349 -349
  36. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/ebay/scraping.md +435 -435
  37. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/etsy/scraping.md +506 -506
  38. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/eventbrite/scraping.md +363 -363
  39. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/expedia/automation.md +168 -168
  40. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/groups.md +236 -236
  41. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/pages.md +295 -295
  42. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/framer/editor.md +108 -108
  43. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/fred/scraping.md +493 -493
  44. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/g2/scraping.md +580 -580
  45. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/genius/scraping.md +511 -511
  46. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/repo-actions.md +65 -65
  47. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/scraping.md +184 -184
  48. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/glassdoor/scraping.md +543 -543
  49. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gmail/compose.md +122 -122
  50. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/goodreads/scraping.md +461 -461
  51. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gutenberg/scraping.md +383 -383
  52. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/hackernews/scraping.md +243 -243
  53. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/howlongtobeat/scraping.md +473 -473
  54. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/imdb/scraping.md +271 -271
  55. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/itch-io/scraping.md +436 -436
  56. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/job-boards/indeed-glassdoor.md +1021 -1021
  57. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/letterboxd/scraping.md +349 -349
  58. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/linkedin/invitation-manager.md +109 -109
  59. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/loom/folder-enumeration.md +170 -170
  60. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/macrotrends/scraping.md +537 -537
  61. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/article-hydration.md +120 -120
  62. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/scraping.md +414 -414
  63. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/metacritic/scraping.md +477 -477
  64. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/musicbrainz/scraping.md +478 -478
  65. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/nasa/scraping.md +339 -339
  66. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/news-aggregation/multi-source.md +205 -205
  67. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/open-library/scraping.md +472 -472
  68. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openalex/scraping.md +470 -470
  69. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openstreetmap/scraping.md +490 -490
  70. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/package-registries/npm-pypi.md +478 -478
  71. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/polymarket/scraping.md +234 -234
  72. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/producthunt/scraping.md +307 -307
  73. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/pubmed/scraping.md +421 -421
  74. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/quora/scraping.md +364 -364
  75. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rawg/scraping.md +352 -352
  76. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/reddit/scraping.md +124 -124
  77. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rest-countries/scraping.md +233 -233
  78. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/sec-edgar/scraping.md +361 -361
  79. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/README.md +36 -36
  80. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/embedded-apps.md +72 -72
  81. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/knowledge-base.md +109 -109
  82. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/polaris-inputs.md +137 -137
  83. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/soundcloud/scraping.md +362 -362
  84. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/spotify/scraping.md +339 -339
  85. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/stackoverflow/scraping.md +435 -435
  86. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/steam/scraping.md +575 -575
  87. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/substack/scraping.md +338 -338
  88. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/thetechgeeks/pricing.md +52 -52
  89. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tiktok/upload.md +107 -107
  90. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tradingview/scraping.md +309 -309
  91. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trello/boards-and-lists.md +88 -88
  92. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trustpilot/scraping.md +375 -375
  93. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/walmart/scraping.md +444 -444
  94. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wayback-machine/scraping.md +306 -306
  95. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/weather/scraping.md +398 -398
  96. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wellfound/scraping.md +596 -596
  97. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/world-bank/scraping.md +356 -356
  98. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/xiaohongshu/scraping.md +84 -84
  99. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/youtube/scraping.md +418 -418
  100. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/zillow/scraping.md +433 -433
  101. package/dist/extensions/builtin/browser/browser.md +73 -73
  102. package/dist/extensions/builtin/browser/install.md +142 -142
  103. package/dist/extensions/builtin/browser/interaction-skills/connection.md +48 -48
  104. package/dist/extensions/builtin/browser/interaction-skills/cookies.md +3 -3
  105. package/dist/extensions/builtin/browser/interaction-skills/cross-origin-iframes.md +3 -3
  106. package/dist/extensions/builtin/browser/interaction-skills/dialogs.md +64 -64
  107. package/dist/extensions/builtin/browser/interaction-skills/downloads.md +3 -3
  108. package/dist/extensions/builtin/browser/interaction-skills/drag-and-drop.md +3 -3
  109. package/dist/extensions/builtin/browser/interaction-skills/dropdowns.md +3 -3
  110. package/dist/extensions/builtin/browser/interaction-skills/iframes.md +3 -3
  111. package/dist/extensions/builtin/browser/interaction-skills/network-requests.md +3 -3
  112. package/dist/extensions/builtin/browser/interaction-skills/print-as-pdf.md +3 -3
  113. package/dist/extensions/builtin/browser/interaction-skills/profile-sync.md +90 -90
  114. package/dist/extensions/builtin/browser/interaction-skills/screenshots.md +17 -17
  115. package/dist/extensions/builtin/browser/interaction-skills/scrolling.md +3 -3
  116. package/dist/extensions/builtin/browser/interaction-skills/shadow-dom.md +3 -3
  117. package/dist/extensions/builtin/browser/interaction-skills/tabs.md +69 -69
  118. package/dist/extensions/builtin/browser/interaction-skills/uploads.md +1 -1
  119. package/dist/extensions/builtin/browser/interaction-skills/viewport.md +3 -3
  120. package/dist/extensions/builtin/browser/src/browser_harness/AGENT.md +15 -15
  121. package/dist/extensions/builtin/browser/src/browser_harness/__init__.py +8 -8
  122. package/dist/extensions/builtin/browser/src/browser_harness/_ipc.py +90 -90
  123. package/dist/extensions/builtin/browser/src/browser_harness/admin.py +722 -722
  124. package/dist/extensions/builtin/browser/src/browser_harness/daemon.py +328 -328
  125. package/dist/extensions/builtin/browser/src/browser_harness/helpers.py +396 -396
  126. package/dist/extensions/builtin/browser/src/browser_harness/run.py +103 -103
  127. package/dist/extensions/builtin/discipline/skills/brainstorming/SKILL.md +33 -33
  128. package/dist/extensions/builtin/discipline/skills/executing-plans/SKILL.md +25 -25
  129. package/dist/extensions/builtin/discipline/skills/finishing-development-branch/SKILL.md +25 -25
  130. package/dist/extensions/builtin/discipline/skills/receiving-code-review/SKILL.md +22 -22
  131. package/dist/extensions/builtin/discipline/skills/requesting-code-review/SKILL.md +31 -31
  132. package/dist/extensions/builtin/discipline/skills/systematic-debugging/SKILL.md +28 -28
  133. package/dist/extensions/builtin/discipline/skills/test-driven-development/SKILL.md +32 -32
  134. package/dist/extensions/builtin/discipline/skills/using-git-worktrees/SKILL.md +25 -25
  135. package/dist/extensions/builtin/discipline/skills/verification-before-completion/SKILL.md +27 -27
  136. package/dist/extensions/builtin/discipline/skills/writing-plans/SKILL.md +26 -26
  137. package/dist/extensions/builtin/goal/README.md +67 -67
  138. package/dist/extensions/builtin/grub/README.md +112 -112
  139. package/dist/extensions/builtin/link-world/agent-workspace/README.md +16 -16
  140. package/dist/extensions/builtin/link-world/internet-search/internet-search.md +65 -65
  141. package/dist/extensions/builtin/link-world/link-world-agent.md +82 -82
  142. package/dist/extensions/builtin/link-world/linkworld.md +313 -313
  143. package/dist/extensions/builtin/link-world/network-routing/network-routing.md +67 -67
  144. package/dist/extensions/builtin/loop/README.md +92 -92
  145. package/dist/extensions/builtin/mcp/figma-design.md +68 -68
  146. package/dist/extensions/builtin/mcp/mcp-management.md +85 -85
  147. package/dist/extensions/builtin/recap/AGENT.md +15 -15
  148. package/dist/extensions/builtin/sal/README.md +72 -72
  149. package/dist/extensions/builtin/security-audit/README.md +289 -289
  150. package/dist/extensions/builtin/team/AGENT.md +112 -112
  151. package/dist/extensions/builtin/team/TESTING.md +299 -299
  152. package/dist/extensions/builtin/token-save/README.md +56 -56
  153. package/dist/extensions/optional/AGENT.md +10 -10
  154. package/dist/modes/interactive/interactive-mode.js +36 -36
  155. package/dist/modes/interactive/theme/dark.json +85 -85
  156. package/dist/modes/interactive/theme/light.json +84 -84
  157. package/dist/modes/interactive/theme/theme-schema.json +335 -335
  158. package/dist/modes/interactive/theme/warm.json +81 -81
  159. package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop.js +3 -2
  160. package/dist/node_modules/@pencil-agent/agent-core/dist/structured-adaptive-agent-loop.js +2 -1
  161. package/dist/node_modules/@pencil-agent/ai/dist/cli.js +0 -0
  162. package/docs/cc-agent-design.md +1297 -0
  163. package/docs/cc-tui-design.md +1333 -0
  164. package/docs/codex-goal-command-impl.md +1055 -1055
  165. package/docs/codex-goal-vs-grub.md +500 -500
  166. package/docs/custom-provider.md +27 -27
  167. package/docs/extensions.md +27 -27
  168. package/docs/keybindings.md +27 -27
  169. package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/200/273/347/273/223.md" +250 -250
  170. package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/212/245/345/221/212.md" +122 -122
  171. package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210.md" +1222 -1222
  172. package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210/345/256/236/347/216/260/346/212/245/345/221/212.md" +158 -158
  173. package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210/345/257/271/346/257/224/345/210/206/346/236/220.md" +128 -128
  174. package/docs/loop /351/207/215/346/236/204/350/256/241/345/210/222.md" +320 -320
  175. package/docs/loop-usage-examples.md +214 -214
  176. package/docs/models.md +27 -27
  177. package/docs/nanoPencil-/345/255/246/344/271/240/350/256/241/345/210/222.md +170 -0
  178. package/docs/packages.md +27 -27
  179. package/docs/pi-design-philosophy.md +457 -457
  180. package/docs/planmode.md +1987 -1987
  181. package/docs/prompt-templates.md +27 -27
  182. package/docs/providers.md +27 -27
  183. package/docs/scan-report.md +3820 -0
  184. package/docs/sdk.md +27 -27
  185. package/docs/skills.md +27 -27
  186. package/docs/themes.md +27 -27
  187. package/docs/tui.md +27 -27
  188. package/docs//345/257/271/346/240/207Claude-Code.md +1775 -0
  189. package/docs//351/230/277/351/207/214/345/267/264/345/267/264/350/264/242/346/212/245/345/210/206/346/236/220/344/271/246.md +261 -0
  190. package/package.json +190 -190
  191. package/docs/ACP/345/215/217/350/256/256/351/233/206/346/210/220/345/274/200/345/217/221/346/226/207/346/241/243.md +0 -851
  192. package/docs/SDK-TESTING.md +0 -364
  193. package/docs/mem-core/346/212/200/346/234/257/346/226/207/346/241/243.md +0 -593
  194. package/docs/startup-performance-optimization.md +0 -301
  195. package/docs//350/256/244/347/237/245/345/234/260/345/233/276.md +0 -47
@@ -1,215 +1,215 @@
1
- # Loop Extension Usage Examples
2
-
3
- ## Basic Usage
4
-
5
- ### Session-Scoped Loops (Default)
6
-
7
- Session-scoped loops are cleared when you close the session.
8
-
9
- ```bash
10
- # Check the build every 10 minutes (default)
11
- /loop check the build
12
-
13
- # Run a command every 5 minutes
14
- /loop 5m /grub status
15
-
16
- # Check PR reviews every 20 minutes
17
- /loop every 20m Review test failures
18
-
19
- # Remind to drink water every 30 minutes
20
- /loop Drink water every 30m --name hydrate --max 8 --quiet
21
- ```
22
-
23
- ### Durable Loops (Persistent Across Sessions)
24
-
25
- Durable loops are saved to `.nanopencil/loop-tasks.json` and resume when you reopen the project.
26
-
27
- ```bash
28
- # Monitor build status every 5 minutes, persists across sessions
29
- /loop Check build status every 5m --durable
30
-
31
- # Check for new commits every hour
32
- /loop 1h Check for new commits --durable
33
-
34
- # Daily status check at 9 AM
35
- /loop Daily status check --durable --name daily-check
36
- ```
37
-
38
- ## Managing Loops
39
-
40
- ### List All Loops
41
-
42
- ```bash
43
- /loop list
44
- ```
45
-
46
- Output:
47
- ```
48
- [Loop] 3 scheduled tasks:
49
- - build-monitor (abc123) every 5m next in 3m [durable] Check build status
50
- - hydrate (def456) every 30m next in 15m [quiet, max 2/8] Drink water every 30m
51
- - ghi789 every 10m next in 8m /grub status
52
- ```
53
-
54
- ### Get Loop Status
55
-
56
- ```bash
57
- /loop status build-monitor
58
- ```
59
-
60
- Output:
61
- ```
62
- [Loop] build-monitor (abc123) — scheduled
63
- Every: 5m
64
- Kind: prompt (durable)
65
- Next run: Sat Apr 18 2025 01:05:00 GMT+0800 (in 3m)
66
- Last run: Sat Apr 18 2025 01:00:00 GMT+0800
67
- Run count: 5
68
- Input: Check build status
69
- Last output: Build is green
70
- ```
71
-
72
- ### Pause and Resume
73
-
74
- ```bash
75
- /loop pause build-monitor
76
- /loop resume build-monitor
77
- ```
78
-
79
- ### Run Immediately
80
-
81
- ```bash
82
- /loop run build-monitor
83
- ```
84
-
85
- ### Cancel a Loop
86
-
87
- ```bash
88
- /loop cancel build-monitor
89
- # or by ID
90
- /loop cancel abc123
91
- ```
92
-
93
- ### Clear All Loops
94
-
95
- ```bash
96
- /loop clear
97
- ```
98
-
99
- ## Advanced Features
100
-
101
- ### Named Loops
102
-
103
- ```bash
104
- /loop Check build every 5m --name build-monitor
105
- /loop pause build-monitor
106
- ```
107
-
108
- ### Maximum Runs
109
-
110
- ```bash
111
- /loop Drink water every 30m --name hydrate --max 8 --quiet
112
- ```
113
-
114
- ### Quiet Mode
115
-
116
- Suppresses per-tick UI messages (errors and terminal events still surface):
117
-
118
- ```bash
119
- /loop 5m Check system status --quiet
120
- ```
121
-
122
- ### Combining Flags
123
-
124
- ```bash
125
- /loop Check build every 5m --name build-monitor --durable --quiet
126
- ```
127
-
128
- ## Durable vs Session-Scoped Loops
129
-
130
- | Feature | Session-Scoped | Durable |
131
- |---------|---------------|---------|
132
- | Persistence | Lost when session closes | Saved to disk |
133
- | Multi-process safety | N/A (per-process) | Protected by lock |
134
- | Use case | Temporary tasks | Long-running monitoring |
135
- | Storage | In-memory | `.nanopencil/loop-tasks.json` |
136
-
137
- ## Real-World Examples
138
-
139
- ### Development Workflow
140
-
141
- ```bash
142
- # Monitor build status while developing
143
- /loop npm run build --name build-check
144
-
145
- # Run tests every time you save
146
- /loop npm test --name test-checker --quiet
147
-
148
- # Check for linting errors
149
- /loop npm run lint --name linter --durable
150
- ```
151
-
152
- ### Project Monitoring
153
-
154
- ```bash
155
- # Check for new git commits
156
- /loop git pull --name git-update --durable
157
-
158
- # Monitor dependencies
159
- /loop npm outdated --name deps-check --durable
160
-
161
- # Check server health
162
- /loop curl http://localhost:3000/health --name health-check --durable
163
- ```
164
-
165
- ### Productivity
166
-
167
- ```bash
168
- # Take breaks
169
- /loop Take a break every hour --name break-reminder --max 4
170
-
171
- # Daily standup reminder
172
- /loop Daily standup every 24h --name standup --durable
173
-
174
- # Code review reminder
175
- /loop Review pending PRs every 2h --name pr-review --durable
176
- ```
177
-
178
- ## Troubleshooting
179
-
180
- ### Loop Not Running
181
-
182
- 1. Check if loop is paused: `/loop status <name>`
183
- 2. Check if max runs reached: look at run count in status
184
- 3. Check if session is idle: loops only run when agent is idle
185
-
186
- ### Durable Loop Not Persisting
187
-
188
- 1. Check if `.nanopencil/loop-tasks.json` exists
189
- 2. Verify you used `--durable` flag
190
- 3. Check file permissions on project directory
191
-
192
- ### Multiple Instances Triggering Same Loop
193
-
194
- The scheduler lock prevents this. If you see multiple triggers:
195
- 1. Check if lock file exists: `.nanopencil/loop-scheduler.lock`
196
- 2. Manually remove lock file if necessary
197
- 3. Restart nanoPencil
198
-
199
- ## File Locations
200
-
201
- ```
202
- <nanopencil>
203
- ├── .nanopencil/
204
- │ ├── loop-tasks.json # Durable loop storage
205
- │ └── loop-scheduler.lock # Scheduler lock file
206
- ```
207
-
208
- ## Best Practices
209
-
210
- 1. **Use meaningful names**: `--name` makes it easier to manage loops
211
- 2. **Set appropriate intervals**: Don't poll too frequently (minimum 1m)
212
- 3. **Use durable for long-running tasks**: `--durable` for tasks that should survive session restarts
213
- 4. **Use max runs for finite tasks**: `--max` for tasks that should auto-cancel
214
- 5. **Use quiet for frequent tasks**: `--quiet` reduces UI noise
1
+ # Loop Extension Usage Examples
2
+
3
+ ## Basic Usage
4
+
5
+ ### Session-Scoped Loops (Default)
6
+
7
+ Session-scoped loops are cleared when you close the session.
8
+
9
+ ```bash
10
+ # Check the build every 10 minutes (default)
11
+ /loop check the build
12
+
13
+ # Run a command every 5 minutes
14
+ /loop 5m /grub status
15
+
16
+ # Check PR reviews every 20 minutes
17
+ /loop every 20m Review test failures
18
+
19
+ # Remind to drink water every 30 minutes
20
+ /loop Drink water every 30m --name hydrate --max 8 --quiet
21
+ ```
22
+
23
+ ### Durable Loops (Persistent Across Sessions)
24
+
25
+ Durable loops are saved to `.nanopencil/loop-tasks.json` and resume when you reopen the project.
26
+
27
+ ```bash
28
+ # Monitor build status every 5 minutes, persists across sessions
29
+ /loop Check build status every 5m --durable
30
+
31
+ # Check for new commits every hour
32
+ /loop 1h Check for new commits --durable
33
+
34
+ # Daily status check at 9 AM
35
+ /loop Daily status check --durable --name daily-check
36
+ ```
37
+
38
+ ## Managing Loops
39
+
40
+ ### List All Loops
41
+
42
+ ```bash
43
+ /loop list
44
+ ```
45
+
46
+ Output:
47
+ ```
48
+ [Loop] 3 scheduled tasks:
49
+ - build-monitor (abc123) every 5m next in 3m [durable] Check build status
50
+ - hydrate (def456) every 30m next in 15m [quiet, max 2/8] Drink water every 30m
51
+ - ghi789 every 10m next in 8m /grub status
52
+ ```
53
+
54
+ ### Get Loop Status
55
+
56
+ ```bash
57
+ /loop status build-monitor
58
+ ```
59
+
60
+ Output:
61
+ ```
62
+ [Loop] build-monitor (abc123) — scheduled
63
+ Every: 5m
64
+ Kind: prompt (durable)
65
+ Next run: Sat Apr 18 2025 01:05:00 GMT+0800 (in 3m)
66
+ Last run: Sat Apr 18 2025 01:00:00 GMT+0800
67
+ Run count: 5
68
+ Input: Check build status
69
+ Last output: Build is green
70
+ ```
71
+
72
+ ### Pause and Resume
73
+
74
+ ```bash
75
+ /loop pause build-monitor
76
+ /loop resume build-monitor
77
+ ```
78
+
79
+ ### Run Immediately
80
+
81
+ ```bash
82
+ /loop run build-monitor
83
+ ```
84
+
85
+ ### Cancel a Loop
86
+
87
+ ```bash
88
+ /loop cancel build-monitor
89
+ # or by ID
90
+ /loop cancel abc123
91
+ ```
92
+
93
+ ### Clear All Loops
94
+
95
+ ```bash
96
+ /loop clear
97
+ ```
98
+
99
+ ## Advanced Features
100
+
101
+ ### Named Loops
102
+
103
+ ```bash
104
+ /loop Check build every 5m --name build-monitor
105
+ /loop pause build-monitor
106
+ ```
107
+
108
+ ### Maximum Runs
109
+
110
+ ```bash
111
+ /loop Drink water every 30m --name hydrate --max 8 --quiet
112
+ ```
113
+
114
+ ### Quiet Mode
115
+
116
+ Suppresses per-tick UI messages (errors and terminal events still surface):
117
+
118
+ ```bash
119
+ /loop 5m Check system status --quiet
120
+ ```
121
+
122
+ ### Combining Flags
123
+
124
+ ```bash
125
+ /loop Check build every 5m --name build-monitor --durable --quiet
126
+ ```
127
+
128
+ ## Durable vs Session-Scoped Loops
129
+
130
+ | Feature | Session-Scoped | Durable |
131
+ |---------|---------------|---------|
132
+ | Persistence | Lost when session closes | Saved to disk |
133
+ | Multi-process safety | N/A (per-process) | Protected by lock |
134
+ | Use case | Temporary tasks | Long-running monitoring |
135
+ | Storage | In-memory | `.nanopencil/loop-tasks.json` |
136
+
137
+ ## Real-World Examples
138
+
139
+ ### Development Workflow
140
+
141
+ ```bash
142
+ # Monitor build status while developing
143
+ /loop npm run build --name build-check
144
+
145
+ # Run tests every time you save
146
+ /loop npm test --name test-checker --quiet
147
+
148
+ # Check for linting errors
149
+ /loop npm run lint --name linter --durable
150
+ ```
151
+
152
+ ### Project Monitoring
153
+
154
+ ```bash
155
+ # Check for new git commits
156
+ /loop git pull --name git-update --durable
157
+
158
+ # Monitor dependencies
159
+ /loop npm outdated --name deps-check --durable
160
+
161
+ # Check server health
162
+ /loop curl http://localhost:3000/health --name health-check --durable
163
+ ```
164
+
165
+ ### Productivity
166
+
167
+ ```bash
168
+ # Take breaks
169
+ /loop Take a break every hour --name break-reminder --max 4
170
+
171
+ # Daily standup reminder
172
+ /loop Daily standup every 24h --name standup --durable
173
+
174
+ # Code review reminder
175
+ /loop Review pending PRs every 2h --name pr-review --durable
176
+ ```
177
+
178
+ ## Troubleshooting
179
+
180
+ ### Loop Not Running
181
+
182
+ 1. Check if loop is paused: `/loop status <name>`
183
+ 2. Check if max runs reached: look at run count in status
184
+ 3. Check if session is idle: loops only run when agent is idle
185
+
186
+ ### Durable Loop Not Persisting
187
+
188
+ 1. Check if `.nanopencil/loop-tasks.json` exists
189
+ 2. Verify you used `--durable` flag
190
+ 3. Check file permissions on project directory
191
+
192
+ ### Multiple Instances Triggering Same Loop
193
+
194
+ The scheduler lock prevents this. If you see multiple triggers:
195
+ 1. Check if lock file exists: `.nanopencil/loop-scheduler.lock`
196
+ 2. Manually remove lock file if necessary
197
+ 3. Restart nanoPencil
198
+
199
+ ## File Locations
200
+
201
+ ```
202
+ <nanopencil>
203
+ ├── .nanopencil/
204
+ │ ├── loop-tasks.json # Durable loop storage
205
+ │ └── loop-scheduler.lock # Scheduler lock file
206
+ ```
207
+
208
+ ## Best Practices
209
+
210
+ 1. **Use meaningful names**: `--name` makes it easier to manage loops
211
+ 2. **Set appropriate intervals**: Don't poll too frequently (minimum 1m)
212
+ 3. **Use durable for long-running tasks**: `--durable` for tasks that should survive session restarts
213
+ 4. **Use max runs for finite tasks**: `--max` for tasks that should auto-cancel
214
+ 5. **Use quiet for frequent tasks**: `--quiet` reduces UI noise
215
215
  6. **Monitor loops**: Regularly check `/loop list` to ensure loops are working as expected
package/docs/models.md CHANGED
@@ -1,27 +1,27 @@
1
- ---
2
- name: models
3
- description: Use when the user asks how to add, select, or configure models.
4
- surface: TODO # user entry points: /command, --flag, config key, file location
5
- owner: core/model-registry.ts # DIP P2 anchor — read its AGENT.md member list to find code
6
- status: draft
7
- ---
8
-
9
- # Models
10
-
11
- > TODO: one line — what this feature does for the user.
12
-
13
- ## When to use
14
- TODO: the user intents that should pull this doc (mirrors the frontmatter `description`).
15
-
16
- ## Usage
17
- TODO: commands / flags / config keys / file locations, with one minimal example.
18
-
19
- ## Behavior & defaults
20
- TODO: default on/off, side effects, opt-in/opt-out.
21
-
22
- ## Code map → DIP
23
- - Owner: `core/model-registry.ts` — read its DIP **P2 member list** (the nearest `AGENT.md`) to locate files.
24
- - Then follow **P3** file headers (WHO / FROM / TO / HERE) to navigate. Do **not** duplicate code paths here.
25
-
26
- ## Related
27
- [[custom-provider]] [[providers]]
1
+ ---
2
+ name: models
3
+ description: Use when the user asks how to add, select, or configure models.
4
+ surface: TODO # user entry points: /command, --flag, config key, file location
5
+ owner: core/model-registry.ts # DIP P2 anchor — read its AGENT.md member list to find code
6
+ status: draft
7
+ ---
8
+
9
+ # Models
10
+
11
+ > TODO: one line — what this feature does for the user.
12
+
13
+ ## When to use
14
+ TODO: the user intents that should pull this doc (mirrors the frontmatter `description`).
15
+
16
+ ## Usage
17
+ TODO: commands / flags / config keys / file locations, with one minimal example.
18
+
19
+ ## Behavior & defaults
20
+ TODO: default on/off, side effects, opt-in/opt-out.
21
+
22
+ ## Code map → DIP
23
+ - Owner: `core/model-registry.ts` — read its DIP **P2 member list** (the nearest `AGENT.md`) to locate files.
24
+ - Then follow **P3** file headers (WHO / FROM / TO / HERE) to navigate. Do **not** duplicate code paths here.
25
+
26
+ ## Related
27
+ [[custom-provider]] [[providers]]
@@ -0,0 +1,170 @@
1
+ # nanoPencil 学习计划
2
+
3
+ > 一份循序渐进的学习路线,帮助寸哥系统掌握 nanoPencil 项目的架构与代码。
4
+
5
+ ---
6
+
7
+ ## 📌 学习前置
8
+
9
+ - 熟悉 TypeScript 基础
10
+ - 了解 Node.js 运行时
11
+ - 对 CLI / TUI 应用有基本概念
12
+ - 对 Agent / LLM API 有基本了解
13
+
14
+ ---
15
+
16
+ ## Phase 1:全局认知 — 项目是什么(1-2 天)
17
+
18
+ **目标**:搞清楚 nanoPencil 是什么、能做什么、怎么跑起来。
19
+
20
+ | # | 学习项 | 文件 / 命令 | 产出 |
21
+ |---|--------|------------|------|
22
+ | 1 | 阅读产品宪章 | `.PENCIL.md` | 理解产品性格、交互哲学 |
23
+ | 2 | 阅读项目导航 | `AGENTS.md` | 理解架构拓扑、目录结构、三大模式 |
24
+ | 3 | 安装与运行 | `npm install && npm run build`<br>`npx tsx cli.ts` | 能在终端启动 nanoPencil |
25
+ | 4 | 体验三个模式 | 分别跑 interactive / print / rpc | 感受不同模式的使用场景 |
26
+ | 5 | 体验斜杠命令 | `/model`, `/thinking`, `/fork`, `/compact` 等 | 熟悉内置命令 |
27
+
28
+ **验收标准**:能向别人用一句话解释 nanoPencil 是什么,并演示 TUI 模式下的基本对话。
29
+
30
+ ---
31
+
32
+ ## Phase 2:核心链路 — 一条消息的生命周期(2-3 天)
33
+
34
+ **目标**:追踪从用户输入到 AI 回复的完整流程。
35
+
36
+ | # | 学习项 | 文件 | 关键概念 |
37
+ |---|--------|------|----------|
38
+ | 1 | CLI 入口 | `cli.ts`, `main.ts` | 参数解析、模式选择 |
39
+ | 2 | AgentSession 生命周期 | `core/runtime/agent-session.ts` | 会话创建、模型切换、工具执行 |
40
+ | 3 | TUI 模式交互 | `modes/interactive/interactive-mode.ts` | 输入读取、输出渲染、事件循环 |
41
+ | 4 | 工具执行链路 | `core/tools/` 目录 | ToolOrchestrator、bash/read/edit/write |
42
+ | 5 | Prompt 构建 | `core/prompt/system-prompt.ts` | 系统提示词组装、上下文注入 |
43
+ | 6 | 模型调用 | `core/lib/ai/` + `core/model/` | Provider 抽象、API 调用、流式响应 |
44
+
45
+ **验收标准**:能画出从用户输入到模型返回的调用链,标注每个关键节点的职责。
46
+
47
+ ---
48
+
49
+ ## Phase 3:扩展系统 — 能力如何生长(2-3 天)
50
+
51
+ **目标**:理解 nanoPencil 的插件架构,学会写扩展。
52
+
53
+ | # | 学习项 | 文件 | 关键概念 |
54
+ |---|--------|------|----------|
55
+ | 1 | Extension Host | `core/extensions-host/loader.ts`<br>`runner.ts`, `wrapper.ts` | 发现、加载、生命周期 |
56
+ | 2 | 扩展事件钩子 | `core/extensions-host/types.ts` | before_agent_start, tool_call, context 等 |
57
+ | 3 | 内置扩展源码 | `extensions/builtin/` | interview, loop, link-world, soul 等 |
58
+ | 4 | Skill 系统 | `core/skills.ts` + `.agents/skills/` | Skill 定义、触发条件 |
59
+ | 5 | MCP 集成 | `core/mcp/` 目录 | MCP 协议、客户端、适配器 |
60
+
61
+ **动手任务**:写一个最小的自定义扩展(注册一个自定义工具或斜杠命令)。
62
+
63
+ **验收标准**:能独立创建一个扩展,并在 nanoPencil 中加载运行。
64
+
65
+ ---
66
+
67
+ ## Phase 4:会话管理 — 记忆与持久化(1-2 天)
68
+
69
+ **目标**:理解对话如何保存、分支、压缩。
70
+
71
+ | # | 学习项 | 文件 | 关键概念 |
72
+ |---|--------|------|----------|
73
+ | 1 | 会话持久化 | `core/session/session-manager.ts` | JSONL 格式、会话切换 |
74
+ | 2 | 会话分支 | `core/session/branch-summarization.ts` | Fork、分支摘要 |
75
+ | 3 | 上下文压缩 | `core/session/compaction/compaction.ts` | 窗口管理、Token 估算 |
76
+ | 4 | 配置系统 | `core/platform/config/` | 全局+项目级设置、auth 存储 |
77
+
78
+ **验收标准**:能解释会话 fork 和 compaction 的工作原理。
79
+
80
+ ---
81
+
82
+ ## Phase 5:特色能力 — 差异化功能(2-3 天)
83
+
84
+ **目标**:掌握 nanoPencil 区别于其他 Agent 的核心能力。
85
+
86
+ | # | 学习项 | 文件 | 关键概念 |
87
+ |---|--------|------|----------|
88
+ | 1 | SubAgent 系统 | `core/sub-agent/` | Agent 工具、子进程隔离、结果提取 |
89
+ | 2 | Git Worktree | `core/workspace/worktree-manager.ts` | 临时工作区、变更检测、Patch 生成 |
90
+ | 3 | Soul / 人格系统 | `core/soul-integration.ts`<br>`packages/soul-core/` | AI 人格演化 |
91
+ | 4 | Memory 系统 | `packages/mem-core/` | 持久化记忆、记忆检索 |
92
+ | 5 | 联网能力 | `extensions/builtin/link-world/` | agent-reach、搜索、浏览器 |
93
+
94
+ **验收标准**:能用一句话解释 SubAgent 和 Worktree 的设计意图。
95
+
96
+ ---
97
+
98
+ ## Phase 6:架构深度 — 设计哲学与规范(2-3 天)
99
+
100
+ **目标**:理解项目的设计哲学,为贡献代码做准备。
101
+
102
+ | # | 学习项 | 文件 | 关键概念 |
103
+ |---|--------|------|----------|
104
+ | 1 | DIP 协议 | `AGENTS.md` §DIP Protocol | P1/P2/P3 文档层级、同构性 |
105
+ | 2 | 特性工作流 | `.dev-docs/feature-workflow.md` | 四步循环、层级归属、验收门 |
106
+ | 3 | 代码规范 | `AGENTS.md` §Code Standards | 语言策略、提交约定 |
107
+ | 4 | 代码异味 | `AGENTS.md` §Code Smells | 识别和消除坏味道 |
108
+ | 5 | 发布流程 | `AGENTS.md` §Release Process | 版本管理、CHANGELOG 生成 |
109
+ | 6 | 对标分析 | `docs/对标Claude-Code.md` | 与竞品的差距与优势 |
110
+
111
+ **验收标准**:能按照项目规范完成一次完整的 PR 流程(从创建分支到提交)。
112
+
113
+ ---
114
+
115
+ ## Phase 7:实战演练(持续)
116
+
117
+ | # | 任务 | 说明 |
118
+ |---|------|------|
119
+ | 1 | 修复一个 bug | 从 issue 或测试失败入手 |
120
+ | 2 | 新增一个小功能 | 比如一个新工具或新命令 |
121
+ | 3 | 写一篇扩展教程 | 帮助新人入门 |
122
+ | 4 | 参与 Code Review | 用 `requesting-code-review` skill |
123
+
124
+ ---
125
+
126
+ ## 🗂️ 学习资源索引
127
+
128
+ ### 核心文档
129
+ | 文件 | 说明 |
130
+ |------|------|
131
+ | `AGENTS.md` | P1 根文档:架构、命令、规范 |
132
+ | `.PENCIL.md` | 产品性格宪章 |
133
+ | `core/AGENT.md` | P2 Core 模块地图 |
134
+ | `modes/AGENT.md` | P2 模式模块地图 |
135
+ | `extensions/AGENT.md` | P2 扩展模块地图 |
136
+
137
+ ### 设计文档
138
+ | 文件 | 说明 |
139
+ |------|------|
140
+ | `docs/cc-agent-design.md` | Claude Code Agent 设计 |
141
+ | `docs/cc-tui-design.md` | TUI 设计规范 |
142
+ | `docs/planmode.md` | Plan Mode 设计 |
143
+ | `docs/pi-design-philosophy.md` | PI 设计哲学 |
144
+ | `docs/对标Claude-Code.md` | 竞品对标分析 |
145
+
146
+ ### 配置路径
147
+ | 路径 | 说明 |
148
+ |------|------|
149
+ | `~/.pencils/agents/` | 全局配置根目录 |
150
+ | `~/.pencils/agents/<id>/settings.json` | 用户偏好 |
151
+ | `~/.pencils/agents/<id>/models.json` | 模型定义 |
152
+ | `~/.pencils/agents/<id>/auth.json` | API 密钥 |
153
+ | `~/.pencils/agents/<id>/sessions/` | 对话历史 |
154
+
155
+ ---
156
+
157
+ ## 📅 建议节奏
158
+
159
+ | 周次 | 阶段 | 时间投入 |
160
+ |------|------|----------|
161
+ | 第 1 周 | Phase 1-2 | 每天 1-2 小时 |
162
+ | 第 2 周 | Phase 3-4 | 每天 1-2 小时 |
163
+ | 第 3 周 | Phase 5-6 | 每天 1-2 小时 |
164
+ | 第 4 周+ | Phase 7 | 按需实战 |
165
+
166
+ > 蕾姆的建议:不用急着赶进度。每个阶段结束后,试着用自己的话总结一遍"这个部分解决了什么问题"。这样理解会更深。
167
+
168
+ ---
169
+
170
+ *这份计划由蕾姆为寸哥整理。*