@pencil-agent/nano-pencil 2.0.0-beta.8 → 2.0.0

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 (241) 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/extensions-host/index.d.ts +1 -1
  7. package/dist/core/extensions-host/loader.js +1 -1
  8. package/dist/core/extensions-host/runner.d.ts +1 -0
  9. package/dist/core/extensions-host/runner.js +2 -2
  10. package/dist/core/extensions-host/types.d.ts +17 -22
  11. package/dist/core/lib/ai/src/types.d.ts +12 -2
  12. package/dist/core/persona/persona-manager.js +5 -2
  13. package/dist/core/runtime/agent-session.js +3 -3
  14. package/dist/core/runtime/extension-core-bindings.d.ts +1 -0
  15. package/dist/core/runtime/extension-core-bindings.js +2 -2
  16. package/dist/extensions/builtin/AGENT.md +115 -115
  17. package/dist/extensions/builtin/browser/AGENT.md +17 -17
  18. package/dist/extensions/builtin/browser/agent-workspace/agent_helpers.py +12 -12
  19. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/amazon/product-search.md +198 -198
  20. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/archive-org/scraping.md +341 -341
  21. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv/scraping.md +311 -311
  22. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv-bulk/scraping.md +333 -333
  23. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/atlas/overview.md +70 -70
  24. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/booking-com/scraping.md +578 -578
  25. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/capterra/scraping.md +440 -440
  26. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/centilebrain/generate-estimates.md +110 -110
  27. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coingecko/scraping.md +325 -325
  28. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coinmarketcap/scraping.md +463 -463
  29. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coursera/scraping.md +360 -360
  30. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/craigslist/scraping.md +390 -390
  31. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/crossref/scraping.md +568 -568
  32. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/dev-to/scraping.md +323 -323
  33. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/duckduckgo/scraping.md +349 -349
  34. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/ebay/scraping.md +435 -435
  35. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/etsy/scraping.md +506 -506
  36. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/eventbrite/scraping.md +363 -363
  37. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/expedia/automation.md +168 -168
  38. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/groups.md +236 -236
  39. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/pages.md +295 -295
  40. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/framer/editor.md +108 -108
  41. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/fred/scraping.md +493 -493
  42. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/g2/scraping.md +580 -580
  43. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/genius/scraping.md +511 -511
  44. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/repo-actions.md +65 -65
  45. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/scraping.md +184 -184
  46. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/glassdoor/scraping.md +543 -543
  47. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gmail/compose.md +122 -122
  48. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/goodreads/scraping.md +461 -461
  49. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gutenberg/scraping.md +383 -383
  50. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/hackernews/scraping.md +243 -243
  51. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/howlongtobeat/scraping.md +473 -473
  52. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/imdb/scraping.md +271 -271
  53. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/itch-io/scraping.md +436 -436
  54. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/job-boards/indeed-glassdoor.md +1021 -1021
  55. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/letterboxd/scraping.md +349 -349
  56. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/linkedin/invitation-manager.md +109 -109
  57. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/loom/folder-enumeration.md +170 -170
  58. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/macrotrends/scraping.md +537 -537
  59. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/article-hydration.md +120 -120
  60. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/scraping.md +414 -414
  61. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/metacritic/scraping.md +477 -477
  62. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/musicbrainz/scraping.md +478 -478
  63. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/nasa/scraping.md +339 -339
  64. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/news-aggregation/multi-source.md +205 -205
  65. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/open-library/scraping.md +472 -472
  66. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openalex/scraping.md +470 -470
  67. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openstreetmap/scraping.md +490 -490
  68. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/package-registries/npm-pypi.md +478 -478
  69. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/polymarket/scraping.md +234 -234
  70. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/producthunt/scraping.md +307 -307
  71. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/pubmed/scraping.md +421 -421
  72. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/quora/scraping.md +364 -364
  73. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rawg/scraping.md +352 -352
  74. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/reddit/scraping.md +124 -124
  75. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rest-countries/scraping.md +233 -233
  76. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/sec-edgar/scraping.md +361 -361
  77. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/README.md +36 -36
  78. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/embedded-apps.md +72 -72
  79. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/knowledge-base.md +109 -109
  80. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/polaris-inputs.md +137 -137
  81. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/soundcloud/scraping.md +362 -362
  82. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/spotify/scraping.md +339 -339
  83. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/stackoverflow/scraping.md +435 -435
  84. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/steam/scraping.md +575 -575
  85. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/substack/scraping.md +338 -338
  86. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/thetechgeeks/pricing.md +52 -52
  87. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tiktok/upload.md +107 -107
  88. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tradingview/scraping.md +309 -309
  89. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trello/boards-and-lists.md +88 -88
  90. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trustpilot/scraping.md +375 -375
  91. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/walmart/scraping.md +444 -444
  92. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wayback-machine/scraping.md +306 -306
  93. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/weather/scraping.md +398 -398
  94. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wellfound/scraping.md +596 -596
  95. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/world-bank/scraping.md +356 -356
  96. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/xiaohongshu/scraping.md +84 -84
  97. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/youtube/scraping.md +418 -418
  98. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/zillow/scraping.md +433 -433
  99. package/dist/extensions/builtin/browser/browser.md +73 -73
  100. package/dist/extensions/builtin/browser/install.md +142 -142
  101. package/dist/extensions/builtin/browser/interaction-skills/connection.md +48 -48
  102. package/dist/extensions/builtin/browser/interaction-skills/cookies.md +3 -3
  103. package/dist/extensions/builtin/browser/interaction-skills/cross-origin-iframes.md +3 -3
  104. package/dist/extensions/builtin/browser/interaction-skills/dialogs.md +64 -64
  105. package/dist/extensions/builtin/browser/interaction-skills/downloads.md +3 -3
  106. package/dist/extensions/builtin/browser/interaction-skills/drag-and-drop.md +3 -3
  107. package/dist/extensions/builtin/browser/interaction-skills/dropdowns.md +3 -3
  108. package/dist/extensions/builtin/browser/interaction-skills/iframes.md +3 -3
  109. package/dist/extensions/builtin/browser/interaction-skills/network-requests.md +3 -3
  110. package/dist/extensions/builtin/browser/interaction-skills/print-as-pdf.md +3 -3
  111. package/dist/extensions/builtin/browser/interaction-skills/profile-sync.md +90 -90
  112. package/dist/extensions/builtin/browser/interaction-skills/screenshots.md +17 -17
  113. package/dist/extensions/builtin/browser/interaction-skills/scrolling.md +3 -3
  114. package/dist/extensions/builtin/browser/interaction-skills/shadow-dom.md +3 -3
  115. package/dist/extensions/builtin/browser/interaction-skills/tabs.md +69 -69
  116. package/dist/extensions/builtin/browser/interaction-skills/uploads.md +1 -1
  117. package/dist/extensions/builtin/browser/interaction-skills/viewport.md +3 -3
  118. package/dist/extensions/builtin/browser/src/browser_harness/AGENT.md +15 -15
  119. package/dist/extensions/builtin/browser/src/browser_harness/__init__.py +8 -8
  120. package/dist/extensions/builtin/browser/src/browser_harness/_ipc.py +90 -90
  121. package/dist/extensions/builtin/browser/src/browser_harness/admin.py +722 -722
  122. package/dist/extensions/builtin/browser/src/browser_harness/daemon.py +328 -328
  123. package/dist/extensions/builtin/browser/src/browser_harness/helpers.py +396 -396
  124. package/dist/extensions/builtin/browser/src/browser_harness/run.py +103 -103
  125. package/dist/extensions/builtin/discipline/skills/brainstorming/SKILL.md +33 -33
  126. package/dist/extensions/builtin/discipline/skills/executing-plans/SKILL.md +25 -25
  127. package/dist/extensions/builtin/discipline/skills/finishing-development-branch/SKILL.md +25 -25
  128. package/dist/extensions/builtin/discipline/skills/receiving-code-review/SKILL.md +22 -22
  129. package/dist/extensions/builtin/discipline/skills/requesting-code-review/SKILL.md +31 -31
  130. package/dist/extensions/builtin/discipline/skills/systematic-debugging/SKILL.md +28 -28
  131. package/dist/extensions/builtin/discipline/skills/test-driven-development/SKILL.md +32 -32
  132. package/dist/extensions/builtin/discipline/skills/using-git-worktrees/SKILL.md +25 -25
  133. package/dist/extensions/builtin/discipline/skills/verification-before-completion/SKILL.md +27 -27
  134. package/dist/extensions/builtin/discipline/skills/writing-plans/SKILL.md +26 -26
  135. package/dist/extensions/builtin/goal/README.md +67 -67
  136. package/dist/extensions/builtin/goal/goal-controller.d.ts +39 -10
  137. package/dist/extensions/builtin/goal/goal-controller.js +1 -1
  138. package/dist/extensions/builtin/goal/goal-format.js +1 -1
  139. package/dist/extensions/builtin/goal/goal-prompts.d.ts +2 -0
  140. package/dist/extensions/builtin/goal/goal-prompts.js +5 -4
  141. package/dist/extensions/builtin/goal/goal-store.js +1 -1
  142. package/dist/extensions/builtin/goal/index.d.ts +1 -1
  143. package/dist/extensions/builtin/goal/index.js +10 -7
  144. package/dist/extensions/builtin/grub/README.md +112 -112
  145. package/dist/extensions/builtin/link-world/agent-workspace/README.md +16 -16
  146. package/dist/extensions/builtin/link-world/index.js +6 -6
  147. package/dist/extensions/builtin/link-world/internet-search/internet-search.md +65 -65
  148. package/dist/extensions/builtin/link-world/link-world-agent.md +82 -82
  149. package/dist/extensions/builtin/link-world/linkworld.md +313 -313
  150. package/dist/extensions/builtin/link-world/{network-routing.md → network-routing/network-routing.md} +67 -67
  151. package/dist/extensions/builtin/loop/README.md +92 -92
  152. package/dist/extensions/builtin/mcp/figma-design.md +68 -68
  153. package/dist/extensions/builtin/mcp/mcp-management.md +85 -85
  154. package/dist/extensions/builtin/plan/index.js +1 -1
  155. package/dist/extensions/builtin/recap/AGENT.md +15 -15
  156. package/dist/extensions/builtin/sal/README.md +72 -72
  157. package/dist/extensions/builtin/security-audit/README.md +289 -289
  158. package/dist/extensions/builtin/task/task-store.d.ts +4 -0
  159. package/dist/extensions/builtin/task/task-store.js +1 -1
  160. package/dist/extensions/builtin/team/AGENT.md +112 -112
  161. package/dist/extensions/builtin/team/TESTING.md +299 -299
  162. package/dist/extensions/builtin/token-save/README.md +56 -56
  163. package/dist/extensions/optional/AGENT.md +10 -10
  164. package/dist/index.d.ts +5 -30
  165. package/dist/index.js +1 -1
  166. package/dist/models.d.ts +7 -0
  167. package/dist/models.js +1 -0
  168. package/dist/modes/interactive/components/footer.js +1 -1
  169. package/dist/modes/interactive/components/task-status-panel.d.ts +36 -0
  170. package/dist/modes/interactive/components/task-status-panel.js +1 -0
  171. package/dist/modes/interactive/controllers/stream-render-controller.d.ts +7 -0
  172. package/dist/modes/interactive/controllers/stream-render-controller.js +2 -2
  173. package/dist/modes/interactive/interactive-mode.js +40 -40
  174. package/dist/modes/interactive/state/interactive-state.d.ts +2 -0
  175. package/dist/modes/interactive/state/interactive-state.js +1 -1
  176. package/dist/modes/interactive/theme/dark.json +85 -85
  177. package/dist/modes/interactive/theme/light.json +84 -84
  178. package/dist/modes/interactive/theme/theme-schema.json +335 -335
  179. package/dist/modes/interactive/theme/warm.json +81 -81
  180. package/dist/node_modules/@pencil-agent/ai/dist/cli.js +0 -0
  181. package/dist/node_modules/@pencil-agent/ai/dist/models.generated.js +1 -1
  182. package/dist/node_modules/@pencil-agent/ai/dist/providers/anthropic.js +2 -2
  183. package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-completions.js +5 -5
  184. package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-responses.js +1 -1
  185. package/dist/node_modules/@pencil-agent/ai/dist/stream.js +1 -1
  186. package/dist/packages/protocol/src/commands.d.ts +33 -0
  187. package/dist/packages/protocol/src/flags.d.ts +20 -0
  188. package/dist/packages/protocol/src/hooks.d.ts +17 -0
  189. package/dist/packages/protocol/src/hooks.js +0 -0
  190. package/dist/packages/{extension-sdk → protocol}/src/index.d.ts +7 -4
  191. package/dist/packages/protocol/src/index.js +1 -0
  192. package/dist/packages/{extension-sdk → protocol}/src/lifecycle.d.ts +15 -27
  193. package/dist/packages/protocol/src/lifecycle.js +0 -0
  194. package/dist/packages/{extension-sdk → protocol}/src/tools.d.ts +1 -1
  195. package/dist/packages/protocol/src/tools.js +0 -0
  196. package/dist/public-config.d.ts +12 -0
  197. package/dist/public-config.js +1 -0
  198. package/dist/runtime.d.ts +9 -0
  199. package/dist/runtime.js +1 -0
  200. package/dist/session-compaction.d.ts +7 -0
  201. package/dist/session-compaction.js +1 -0
  202. package/dist/session.d.ts +7 -0
  203. package/dist/session.js +1 -0
  204. package/dist/skills.d.ts +7 -0
  205. package/dist/skills.js +1 -0
  206. package/dist/tools.d.ts +7 -0
  207. package/dist/tools.js +1 -0
  208. 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 +851 -0
  209. package/docs/SDK-TESTING.md +364 -0
  210. package/docs/codex-goal-command-impl.md +1055 -1055
  211. package/docs/codex-goal-vs-grub.md +500 -500
  212. package/docs/custom-provider.md +27 -27
  213. package/docs/extensions.md +27 -27
  214. package/docs/keybindings.md +27 -27
  215. package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/200/273/347/273/223.md" +250 -250
  216. package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/212/245/345/221/212.md" +122 -122
  217. package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210.md" +1222 -1222
  218. 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
  219. 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
  220. package/docs/loop /351/207/215/346/236/204/350/256/241/345/210/222.md" +320 -320
  221. package/docs/loop-usage-examples.md +214 -214
  222. package/docs/mem-core/346/212/200/346/234/257/346/226/207/346/241/243.md +593 -0
  223. package/docs/models.md +27 -27
  224. package/docs/packages.md +27 -27
  225. package/docs/pi-design-philosophy.md +457 -457
  226. package/docs/planmode.md +1987 -1987
  227. package/docs/prompt-templates.md +27 -27
  228. package/docs/providers.md +27 -27
  229. package/docs/sdk.md +27 -27
  230. package/docs/skills.md +27 -27
  231. package/docs/startup-performance-optimization.md +301 -0
  232. package/docs/themes.md +27 -27
  233. package/docs/tui.md +27 -27
  234. package/docs//350/256/244/347/237/245/345/234/260/345/233/276.md +47 -0
  235. package/package.json +190 -162
  236. package/dist/packages/extension-sdk/src/index.js +0 -1
  237. package/docs/cc-agent-design.md +0 -1297
  238. package/docs/cc-tui-design.md +0 -1333
  239. package/docs//345/257/271/346/240/207Claude-Code.md +0 -1775
  240. /package/dist/packages/{extension-sdk/src/lifecycle.js → protocol/src/commands.js} +0 -0
  241. /package/dist/packages/{extension-sdk/src/tools.js → protocol/src/flags.js} +0 -0
@@ -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