@pencil-agent/nano-pencil 2.0.0-beta.4 → 2.0.0-beta.7

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 (811) hide show
  1. package/dist/build-meta.json +4 -4
  2. package/dist/builtin-extensions.js +1 -319
  3. package/dist/cli/args.d.ts +1 -0
  4. package/dist/cli/args.js +35 -324
  5. package/dist/cli/config-selector.js +1 -33
  6. package/dist/cli/file-processor.js +6 -81
  7. package/dist/cli/list-models.d.ts +9 -2
  8. package/dist/cli/list-models.js +2 -88
  9. package/dist/cli/session-picker.js +1 -36
  10. package/dist/cli.js +1 -37
  11. package/dist/config.js +1 -326
  12. package/dist/core/agent-dir/agent-dir-context.js +1 -84
  13. package/dist/core/agent-dir/agent-metadata.js +1 -68
  14. package/dist/core/agent-dir/migration-tool.js +7 -179
  15. package/dist/core/export-html/ansi-to-html.js +2 -242
  16. package/dist/core/export-html/index.js +2 -221
  17. package/dist/core/export-html/template.js +48 -1568
  18. package/dist/core/export-html/tool-renderer.js +1 -50
  19. package/dist/core/export-html/vendor/highlight.min.js +4 -1213
  20. package/dist/core/export-html/vendor/marked.min.js +56 -6
  21. package/dist/core/extensions-host/index.js +1 -11
  22. package/dist/core/extensions-host/loader.js +1 -488
  23. package/dist/core/extensions-host/runner.js +3 -903
  24. package/dist/core/extensions-host/types.d.ts +11 -6
  25. package/dist/core/extensions-host/types.js +1 -25
  26. package/dist/core/extensions-host/wrapper.js +2 -114
  27. package/dist/core/index.js +1 -19
  28. package/dist/{node_modules/@pencil-agent/agent-core/dist → core/lib/agent-core/src}/types.d.ts +2 -2
  29. package/dist/core/lib/agent-core/src/types.js +1 -0
  30. package/dist/{node_modules/@pencil-agent/ai/dist → core/lib/ai/src}/types.d.ts +17 -2
  31. package/dist/core/lib/ai/src/types.js +0 -0
  32. package/dist/core/lib/ai/src/utils/event-stream-types.js +0 -0
  33. package/dist/core/mcp/figma-auth.js +4 -490
  34. package/dist/core/mcp/index.js +1 -9
  35. package/dist/core/mcp/mcp-adapter.js +3 -116
  36. package/dist/core/mcp/mcp-client.js +6 -839
  37. package/dist/core/mcp/mcp-config.js +1 -262
  38. package/dist/core/mcp/mcp-guidance.js +13 -107
  39. package/dist/core/mcp/mcp-manager.js +1 -98
  40. package/dist/core/mcp/mcp-types.js +0 -7
  41. package/dist/core/messages.js +13 -116
  42. package/dist/core/model/custom-providers.d.ts +5 -1
  43. package/dist/core/model/custom-providers.js +1 -171
  44. package/dist/core/model/discovery-cache.d.ts +65 -0
  45. package/dist/core/model/discovery-cache.js +1 -0
  46. package/dist/core/model/discovery-cache.test.d.ts +7 -0
  47. package/dist/core/model/discovery-cache.test.js +1 -0
  48. package/dist/core/model/discovery.d.ts +79 -0
  49. package/dist/core/model/discovery.js +1 -0
  50. package/dist/core/model/discovery.test.d.ts +7 -0
  51. package/dist/core/model/discovery.test.js +1 -0
  52. package/dist/core/model/index.d.ts +4 -1
  53. package/dist/core/model/index.js +1 -7
  54. package/dist/core/model/known-models.d.ts +65 -0
  55. package/dist/core/model/known-models.generated.d.ts +2 -0
  56. package/dist/core/model/known-models.generated.js +1 -0
  57. package/dist/core/model/known-models.js +1 -0
  58. package/dist/core/model/switcher.js +1 -149
  59. package/dist/core/model-registry.d.ts +50 -0
  60. package/dist/core/model-registry.js +9 -620
  61. package/dist/core/model-resolver.js +1 -431
  62. package/dist/core/package-manager.js +3 -1449
  63. package/dist/core/persona/persona-manager.d.ts +2 -0
  64. package/dist/core/persona/persona-manager.js +2 -153
  65. package/dist/core/platform/abort-slot.js +1 -39
  66. package/dist/core/platform/config/auth-storage.js +1 -395
  67. package/dist/core/platform/config/defaults.js +1 -1
  68. package/dist/core/platform/config/diagnostics.js +0 -1
  69. package/dist/core/platform/config/resolve-config-value.js +1 -60
  70. package/dist/core/platform/config/resource-loader.js +2 -715
  71. package/dist/core/platform/config/settings-manager.js +1 -950
  72. package/dist/core/platform/exec/bash-executor.js +1 -211
  73. package/dist/core/platform/exec/exec.js +1 -73
  74. package/dist/core/platform/i18n/index.js +1 -63
  75. package/dist/core/platform/i18n/messages.js +1 -78
  76. package/dist/core/platform/i18n/messages.zh.js +1 -78
  77. package/dist/core/platform/i18n/slash-commands.js +1 -53
  78. package/dist/core/platform/i18n/slash-commands.zh.js +1 -53
  79. package/dist/core/platform/i18n/themes.js +1 -11
  80. package/dist/core/platform/i18n/themes.zh.js +1 -11
  81. package/dist/core/platform/keybindings.js +1 -162
  82. package/dist/core/platform/listeners.js +1 -37
  83. package/dist/core/platform/telemetry/batching-dispatcher.js +1 -89
  84. package/dist/core/platform/telemetry/build-meta.js +1 -57
  85. package/dist/core/platform/telemetry/caller-context.js +1 -19
  86. package/dist/core/platform/telemetry/credentials.js +1 -87
  87. package/dist/core/platform/telemetry/ext-events.js +1 -189
  88. package/dist/core/platform/telemetry/index.js +1 -6
  89. package/dist/core/platform/telemetry/insforge-base.js +1 -160
  90. package/dist/core/platform/telemetry/types.js +0 -7
  91. package/dist/core/platform/timings.js +3 -26
  92. package/dist/core/platform/utils/logger.js +1 -119
  93. package/dist/core/platform/utils/shell.js +9 -191
  94. package/dist/core/platform/utils/sleep.js +1 -23
  95. package/dist/core/platform/utils/tools-manager.js +1 -324
  96. package/dist/core/prompt/prompt-templates.js +2 -256
  97. package/dist/core/prompt/system-prompt.js +44 -155
  98. package/dist/core/runtime/agent-session.d.ts +56 -2
  99. package/dist/core/runtime/agent-session.js +15 -1777
  100. package/dist/core/runtime/bash-runner.js +2 -96
  101. package/dist/core/runtime/compaction-controller.js +1 -230
  102. package/dist/core/runtime/default-tools.js +1 -10
  103. package/dist/core/runtime/event-bridge.js +1 -99
  104. package/dist/core/runtime/event-bus.js +1 -31
  105. package/dist/core/runtime/export-bridge.js +1 -46
  106. package/dist/core/runtime/extension-core-bindings.js +3 -231
  107. package/dist/core/runtime/model-controller.js +1 -227
  108. package/dist/core/runtime/model-cycle.js +1 -26
  109. package/dist/core/runtime/pencil-agent.js +1 -303
  110. package/dist/core/runtime/prompt-assembly.js +3 -29
  111. package/dist/core/runtime/retry-coordinator.js +1 -151
  112. package/dist/core/runtime/sdk.d.ts +8 -0
  113. package/dist/core/runtime/sdk.js +1 -421
  114. package/dist/core/runtime/session-context.js +0 -12
  115. package/dist/core/runtime/session-lifecycle-controller.js +1 -158
  116. package/dist/core/runtime/session-tree-controller.js +1 -187
  117. package/dist/core/runtime/slash-command-catalog.js +1 -83
  118. package/dist/core/runtime/thinking-levels.js +1 -63
  119. package/dist/core/runtime/tool-runtime-controller.js +1 -79
  120. package/dist/core/runtime/turn-context.js +1 -39
  121. package/dist/core/session/compaction/branch-summarization.js +10 -207
  122. package/dist/core/session/compaction/compaction.js +26 -522
  123. package/dist/core/session/compaction/index.js +1 -9
  124. package/dist/core/session/compaction/utils.js +16 -133
  125. package/dist/core/session/session-manager.js +14 -1156
  126. package/dist/core/skills.js +4 -373
  127. package/dist/core/slash-commands.js +1 -90
  128. package/dist/core/soul-integration.js +1 -250
  129. package/dist/core/soul-options-contract.js +0 -7
  130. package/dist/core/sub-agent/agent-definition-loader.d.ts +96 -0
  131. package/dist/core/sub-agent/agent-definition-loader.js +2 -0
  132. package/dist/core/sub-agent/agent-definition.d.ts +162 -0
  133. package/dist/core/sub-agent/agent-definition.js +6 -0
  134. package/dist/core/sub-agent/agent-handoff-safety.d.ts +39 -0
  135. package/dist/core/sub-agent/agent-handoff-safety.js +1 -0
  136. package/dist/core/sub-agent/agent-input-output.d.ts +143 -0
  137. package/dist/core/sub-agent/agent-input-output.js +1 -0
  138. package/dist/core/sub-agent/agent-output-persistence.d.ts +43 -0
  139. package/dist/core/sub-agent/agent-output-persistence.js +3 -0
  140. package/dist/core/sub-agent/agent-prompt-builder.d.ts +37 -0
  141. package/dist/core/sub-agent/agent-prompt-builder.js +2 -0
  142. package/dist/core/sub-agent/agent-registry.d.ts +145 -0
  143. package/dist/core/sub-agent/agent-registry.js +1 -0
  144. package/dist/core/sub-agent/agent-result-extractor.d.ts +28 -0
  145. package/dist/core/sub-agent/agent-result-extractor.js +3 -0
  146. package/dist/core/sub-agent/agent-telemetry.d.ts +71 -0
  147. package/dist/core/sub-agent/agent-telemetry.js +1 -0
  148. package/dist/core/sub-agent/agent-tool-filter.d.ts +89 -0
  149. package/dist/core/sub-agent/agent-tool-filter.js +2 -0
  150. package/dist/core/sub-agent/agent-tool.d.ts +69 -0
  151. package/dist/core/sub-agent/agent-tool.js +11 -0
  152. package/dist/core/sub-agent/index.d.ts +19 -4
  153. package/dist/core/sub-agent/index.js +1 -9
  154. package/dist/core/sub-agent/send-message-tool.d.ts +33 -0
  155. package/dist/core/sub-agent/send-message-tool.js +2 -0
  156. package/dist/core/sub-agent/sub-agent-backend.d.ts +12 -0
  157. package/dist/core/sub-agent/sub-agent-backend.js +7 -225
  158. package/dist/core/sub-agent/sub-agent-runtime.d.ts +1 -5
  159. package/dist/core/sub-agent/sub-agent-runtime.js +1 -54
  160. package/dist/core/sub-agent/sub-agent-types.d.ts +16 -0
  161. package/dist/core/sub-agent/sub-agent-types.js +0 -8
  162. package/dist/core/sub-agent/subprocess-backend.js +1 -104
  163. package/dist/core/sub-agent/subprocess-worker.js +1 -40
  164. package/dist/core/theme-contract.js +0 -12
  165. package/dist/core/tools/bash.d.ts +8 -2
  166. package/dist/core/tools/bash.js +21 -424
  167. package/dist/core/tools/edit-diff.js +16 -244
  168. package/dist/core/tools/edit.js +1 -146
  169. package/dist/core/tools/file-state-cache.d.ts +30 -0
  170. package/dist/core/tools/file-state-cache.js +1 -0
  171. package/dist/core/tools/find.d.ts +2 -0
  172. package/dist/core/tools/find.js +8 -208
  173. package/dist/core/tools/grep.d.ts +14 -0
  174. package/dist/core/tools/grep.js +13 -248
  175. package/dist/core/tools/index.d.ts +14 -1
  176. package/dist/core/tools/index.js +1 -109
  177. package/dist/core/tools/input-validation.js +1 -14
  178. package/dist/core/tools/ls.js +4 -125
  179. package/dist/core/tools/orchestrator.js +1 -102
  180. package/dist/core/tools/path-utils.js +1 -86
  181. package/dist/core/tools/pdf-extract.d.ts +11 -0
  182. package/dist/core/tools/pdf-extract.js +1 -0
  183. package/dist/core/tools/read.d.ts +2 -0
  184. package/dist/core/tools/read.js +11 -169
  185. package/dist/core/tools/source.js +1 -96
  186. package/dist/core/tools/time.js +2 -51
  187. package/dist/core/tools/truncate.js +5 -201
  188. package/dist/core/tools/write-guard.js +1 -26
  189. package/dist/core/tools/write.js +1 -78
  190. package/dist/core/workspace/index.js +1 -7
  191. package/dist/core/workspace/worktree-manager.js +3 -374
  192. package/dist/extensions/builtin/AGENT.md +10 -0
  193. package/dist/extensions/builtin/ask-user-question/ask-user-question-tool.d.ts +9 -0
  194. package/dist/extensions/builtin/ask-user-question/ask-user-question-tool.js +4 -0
  195. package/dist/extensions/builtin/ask-user-question/index.d.ts +8 -0
  196. package/dist/extensions/builtin/ask-user-question/index.js +1 -0
  197. package/dist/extensions/builtin/ask-user-question/prompt.d.ts +14 -0
  198. package/dist/extensions/builtin/ask-user-question/prompt.js +30 -0
  199. package/dist/extensions/builtin/ask-user-question/types.d.ts +69 -0
  200. package/dist/extensions/builtin/ask-user-question/types.js +1 -0
  201. package/dist/extensions/builtin/browser/index.js +15 -404
  202. package/dist/extensions/builtin/btw/index.js +9 -111
  203. package/dist/extensions/builtin/debug/collectors.js +7 -315
  204. package/dist/extensions/builtin/debug/index.js +24 -253
  205. package/dist/extensions/builtin/diagnostics/diagnostic-buffer.js +1 -139
  206. package/dist/extensions/builtin/diagnostics/index.js +1 -120
  207. package/dist/extensions/builtin/diagnostics/redaction.js +1 -45
  208. package/dist/extensions/builtin/diagnostics/reporter.js +1 -204
  209. package/dist/extensions/builtin/diagnostics/types.js +1 -7
  210. package/dist/extensions/builtin/discipline/index.js +7 -117
  211. package/dist/extensions/builtin/goal/README.md +67 -0
  212. package/dist/extensions/builtin/goal/goal-command.d.ts +13 -0
  213. package/dist/extensions/builtin/goal/goal-command.js +9 -0
  214. package/dist/extensions/builtin/goal/goal-controller.d.ts +114 -0
  215. package/dist/extensions/builtin/goal/goal-controller.js +1 -0
  216. package/dist/extensions/builtin/goal/goal-format.d.ts +52 -0
  217. package/dist/extensions/builtin/goal/goal-format.js +1 -0
  218. package/dist/extensions/builtin/goal/goal-parser.d.ts +27 -0
  219. package/dist/extensions/builtin/goal/goal-parser.js +2 -0
  220. package/dist/extensions/builtin/goal/goal-prompts.d.ts +13 -0
  221. package/dist/extensions/builtin/goal/goal-prompts.js +4 -0
  222. package/dist/extensions/builtin/goal/goal-store.d.ts +28 -0
  223. package/dist/extensions/builtin/goal/goal-store.js +1 -0
  224. package/dist/extensions/builtin/goal/goal-tools.d.ts +26 -0
  225. package/dist/extensions/builtin/goal/goal-tools.js +3 -0
  226. package/dist/extensions/builtin/goal/goal-types.d.ts +87 -0
  227. package/dist/extensions/builtin/goal/goal-types.js +1 -0
  228. package/dist/extensions/builtin/goal/index.d.ts +8 -0
  229. package/dist/extensions/builtin/goal/index.js +7 -0
  230. package/dist/extensions/builtin/grub/README.md +11 -0
  231. package/dist/extensions/builtin/grub/grub-controller.d.ts +2 -1
  232. package/dist/extensions/builtin/grub/grub-controller.js +1 -345
  233. package/dist/extensions/builtin/grub/grub-decision.js +1 -42
  234. package/dist/extensions/builtin/grub/grub-feature-list.d.ts +18 -0
  235. package/dist/extensions/builtin/grub/grub-feature-list.js +2 -213
  236. package/dist/extensions/builtin/grub/grub-format.js +4 -87
  237. package/dist/extensions/builtin/grub/grub-harness.js +3 -71
  238. package/dist/extensions/builtin/grub/grub-i18n.js +1 -198
  239. package/dist/extensions/builtin/grub/grub-parser.js +2 -164
  240. package/dist/extensions/builtin/grub/grub-persistence.js +2 -231
  241. package/dist/extensions/builtin/grub/grub-prompts.js +34 -92
  242. package/dist/extensions/builtin/grub/grub-turn.js +1 -61
  243. package/dist/extensions/builtin/grub/grub-types.d.ts +6 -0
  244. package/dist/extensions/builtin/grub/grub-types.js +1 -2
  245. package/dist/extensions/builtin/grub/index.js +6 -295
  246. package/dist/extensions/builtin/idle-think/curiosity.js +2 -137
  247. package/dist/extensions/builtin/idle-think/idle-think-runtime.js +1 -148
  248. package/dist/extensions/builtin/idle-think/index.js +1 -48
  249. package/dist/extensions/builtin/idle-think/insights.js +5 -131
  250. package/dist/extensions/builtin/idle-think/thinker.js +9 -208
  251. package/dist/extensions/builtin/insights/html-report.d.ts +21 -0
  252. package/dist/extensions/builtin/insights/html-report.js +463 -0
  253. package/dist/extensions/builtin/insights/index.d.ts +24 -0
  254. package/dist/extensions/builtin/insights/index.js +2 -0
  255. package/dist/extensions/builtin/insights/insights-engine.d.ts +18 -0
  256. package/dist/extensions/builtin/insights/insights-engine.js +39 -0
  257. package/dist/extensions/builtin/insights/prompts.d.ts +17 -0
  258. package/dist/extensions/builtin/insights/prompts.js +180 -0
  259. package/dist/extensions/builtin/insights/session-scanner.d.ts +27 -0
  260. package/dist/extensions/builtin/insights/session-scanner.js +19 -0
  261. package/dist/extensions/builtin/insights/stats.d.ts +13 -0
  262. package/dist/extensions/builtin/insights/stats.js +1 -0
  263. package/dist/extensions/builtin/insights/types.d.ts +199 -0
  264. package/dist/extensions/builtin/insights/types.js +0 -0
  265. package/dist/extensions/builtin/link-world/index.js +19 -431
  266. package/dist/extensions/builtin/loop/cron/cron-parser.d.ts +42 -29
  267. package/dist/extensions/builtin/loop/cron/cron-parser.js +1 -226
  268. package/dist/extensions/builtin/loop/cron/cron-scheduler.d.ts +75 -46
  269. package/dist/extensions/builtin/loop/cron/cron-scheduler.js +10 -329
  270. package/dist/extensions/builtin/loop/cron/cron-tasks-lock.d.ts +42 -0
  271. package/dist/extensions/builtin/loop/cron/cron-tasks-lock.js +1 -0
  272. package/dist/extensions/builtin/loop/cron/cron-tasks.d.ts +182 -69
  273. package/dist/extensions/builtin/loop/cron/cron-tasks.js +2 -425
  274. package/dist/extensions/builtin/loop/cron/index.d.ts +16 -10
  275. package/dist/extensions/builtin/loop/cron/index.js +1 -10
  276. package/dist/extensions/builtin/loop/cron-tools/cron-create-tool.d.ts +9 -4
  277. package/dist/extensions/builtin/loop/cron-tools/cron-create-tool.js +1 -71
  278. package/dist/extensions/builtin/loop/cron-tools/cron-delete-tool.d.ts +9 -4
  279. package/dist/extensions/builtin/loop/cron-tools/cron-delete-tool.js +1 -56
  280. package/dist/extensions/builtin/loop/cron-tools/cron-list-tool.d.ts +9 -4
  281. package/dist/extensions/builtin/loop/cron-tools/cron-list-tool.js +2 -79
  282. package/dist/extensions/builtin/loop/cron-tools/index.d.ts +9 -4
  283. package/dist/extensions/builtin/loop/cron-tools/index.js +1 -9
  284. package/dist/extensions/builtin/loop/cron-tools/prompt.d.ts +35 -0
  285. package/dist/extensions/builtin/loop/cron-tools/prompt.js +38 -0
  286. package/dist/extensions/builtin/loop/index.d.ts +14 -3
  287. package/dist/extensions/builtin/loop/index.js +2 -476
  288. package/dist/extensions/builtin/loop/loop-skill.d.ts +18 -0
  289. package/dist/extensions/builtin/loop/loop-skill.js +58 -0
  290. package/dist/extensions/builtin/lsp/index.d.ts +8 -0
  291. package/dist/extensions/builtin/lsp/index.js +1 -0
  292. package/dist/extensions/builtin/lsp/lsp-client.d.ts +22 -0
  293. package/dist/extensions/builtin/lsp/lsp-client.js +1 -0
  294. package/dist/extensions/builtin/lsp/lsp-config.d.ts +8 -0
  295. package/dist/extensions/builtin/lsp/lsp-config.js +1 -0
  296. package/dist/extensions/builtin/lsp/lsp-formatters.d.ts +15 -0
  297. package/dist/extensions/builtin/lsp/lsp-formatters.js +18 -0
  298. package/dist/extensions/builtin/lsp/lsp-server-instance.d.ts +24 -0
  299. package/dist/extensions/builtin/lsp/lsp-server-instance.js +1 -0
  300. package/dist/extensions/builtin/lsp/lsp-server-manager.d.ts +21 -0
  301. package/dist/extensions/builtin/lsp/lsp-server-manager.js +1 -0
  302. package/dist/extensions/builtin/lsp/lsp-tool.d.ts +33 -0
  303. package/dist/extensions/builtin/lsp/lsp-tool.js +2 -0
  304. package/dist/extensions/builtin/lsp/types.d.ts +31 -0
  305. package/dist/extensions/builtin/lsp/types.js +1 -0
  306. package/dist/extensions/builtin/mcp/index.js +25 -385
  307. package/dist/extensions/builtin/plan/clear-context-state.d.ts +8 -0
  308. package/dist/extensions/builtin/plan/clear-context-state.js +1 -0
  309. package/dist/extensions/builtin/plan/enter-plan-mode-tool.d.ts +3 -1
  310. package/dist/extensions/builtin/plan/enter-plan-mode-tool.js +2 -64
  311. package/dist/extensions/builtin/plan/exit-plan-mode-tool.d.ts +10 -1
  312. package/dist/extensions/builtin/plan/exit-plan-mode-tool.js +13 -147
  313. package/dist/extensions/builtin/plan/index.js +24 -365
  314. package/dist/extensions/builtin/plan/plan-agents.js +8 -62
  315. package/dist/extensions/builtin/plan/plan-file-manager.js +1 -292
  316. package/dist/extensions/builtin/plan/plan-permissions.js +12 -234
  317. package/dist/extensions/builtin/plan/plan-validation.js +5 -77
  318. package/dist/extensions/builtin/plan/plan-workflow-prompt.d.ts +10 -4
  319. package/dist/extensions/builtin/plan/plan-workflow-prompt.js +60 -126
  320. package/dist/extensions/builtin/plan/teammate-approval.js +3 -134
  321. package/dist/extensions/builtin/plan/types.d.ts +11 -0
  322. package/dist/extensions/builtin/plan/types.js +1 -17
  323. package/dist/extensions/builtin/presence/index.d.ts +7 -0
  324. package/dist/extensions/builtin/presence/index.js +15 -708
  325. package/dist/extensions/builtin/presence/presence-memory.js +1 -203
  326. package/dist/extensions/builtin/recap/{CLAUDE.md → AGENT.md} +2 -2
  327. package/dist/extensions/builtin/recap/index.js +1 -116
  328. package/dist/extensions/builtin/recap/recap-budget.js +1 -21
  329. package/dist/extensions/builtin/recap/recap-extractor.js +3 -128
  330. package/dist/extensions/builtin/recap/recap-renderer.js +2 -55
  331. package/dist/extensions/builtin/recap/recap-synthesizer.js +12 -106
  332. package/dist/extensions/builtin/recap/recap-types.js +1 -16
  333. package/dist/extensions/builtin/sal/anchors.js +1 -248
  334. package/dist/extensions/builtin/sal/eval/index.js +1 -75
  335. package/dist/extensions/builtin/sal/eval/insforge-sink.js +1 -293
  336. package/dist/extensions/builtin/sal/eval/jsonl-sink.js +3 -93
  337. package/dist/extensions/builtin/sal/eval/noop-sink.js +1 -12
  338. package/dist/extensions/builtin/sal/eval/types.js +1 -21
  339. package/dist/extensions/builtin/sal/index.js +7 -720
  340. package/dist/extensions/builtin/sal/sal-config.js +1 -99
  341. package/dist/extensions/builtin/sal/sal-context.js +2 -94
  342. package/dist/extensions/builtin/sal/sal-runtime.js +0 -7
  343. package/dist/extensions/builtin/sal/sal-trace.js +1 -140
  344. package/dist/extensions/builtin/sal/terrain.js +3 -364
  345. package/dist/extensions/builtin/sal/weights.js +1 -48
  346. package/dist/extensions/builtin/security-audit/engine/detector.js +1 -251
  347. package/dist/extensions/builtin/security-audit/engine/interceptor.js +15 -194
  348. package/dist/extensions/builtin/security-audit/engine/logger.js +14 -225
  349. package/dist/extensions/builtin/security-audit/index.js +49 -264
  350. package/dist/extensions/builtin/security-audit/interface.js +1 -78
  351. package/dist/extensions/builtin/soul/index.js +1 -16
  352. package/dist/extensions/builtin/subagent/index.js +8 -214
  353. package/dist/extensions/builtin/subagent/subagent-parser.js +2 -76
  354. package/dist/extensions/builtin/subagent/subagent-runner.js +8 -275
  355. package/dist/extensions/builtin/subagent/subagent-types.js +0 -7
  356. package/dist/extensions/builtin/task/index.d.ts +8 -0
  357. package/dist/extensions/builtin/task/index.js +1 -0
  358. package/dist/extensions/builtin/task/task-store.d.ts +38 -0
  359. package/dist/extensions/builtin/task/task-store.js +1 -0
  360. package/dist/extensions/builtin/task/task-tools/task-create-tool.d.ts +37 -0
  361. package/dist/extensions/builtin/task/task-tools/task-create-tool.js +40 -0
  362. package/dist/extensions/builtin/task/task-tools/task-get-tool.d.ts +31 -0
  363. package/dist/extensions/builtin/task/task-tools/task-get-tool.js +23 -0
  364. package/dist/extensions/builtin/task/task-tools/task-list-tool.d.ts +27 -0
  365. package/dist/extensions/builtin/task/task-tools/task-list-tool.js +22 -0
  366. package/dist/extensions/builtin/task/task-tools/task-output-tool.d.ts +32 -0
  367. package/dist/extensions/builtin/task/task-tools/task-output-tool.js +10 -0
  368. package/dist/extensions/builtin/task/task-tools/task-stop-tool.d.ts +31 -0
  369. package/dist/extensions/builtin/task/task-tools/task-stop-tool.js +5 -0
  370. package/dist/extensions/builtin/task/task-tools/task-update-tool.d.ts +47 -0
  371. package/dist/extensions/builtin/task/task-tools/task-update-tool.js +77 -0
  372. package/dist/extensions/builtin/task/task-tools/tool-search-tool.d.ts +34 -0
  373. package/dist/extensions/builtin/task/task-tools/tool-search-tool.js +14 -0
  374. package/dist/extensions/builtin/task/task-types.d.ts +30 -0
  375. package/dist/extensions/builtin/task/task-types.js +1 -0
  376. package/dist/extensions/builtin/teach/README.md +197 -0
  377. package/dist/extensions/builtin/teach/index.d.ts +12 -0
  378. package/dist/extensions/builtin/teach/index.js +6 -0
  379. package/dist/extensions/builtin/teach/references/analogy-library.md +153 -0
  380. package/dist/extensions/builtin/teach/references/learning-paths.md +214 -0
  381. package/dist/extensions/builtin/teach/references/source-verification.md +268 -0
  382. package/dist/extensions/builtin/teach/references/teaching-template.md +237 -0
  383. package/dist/extensions/builtin/teach/teach-format.d.ts +35 -0
  384. package/dist/extensions/builtin/teach/teach-format.js +6 -0
  385. package/dist/extensions/builtin/teach/teach-i18n.d.ts +47 -0
  386. package/dist/extensions/builtin/teach/teach-i18n.js +1 -0
  387. package/dist/extensions/builtin/teach/teach-persistence.d.ts +36 -0
  388. package/dist/extensions/builtin/teach/teach-persistence.js +35 -0
  389. package/dist/extensions/builtin/teach/teach-prompts.d.ts +52 -0
  390. package/dist/extensions/builtin/teach/teach-prompts.js +35 -0
  391. package/dist/extensions/builtin/teach/teach-runtime.d.ts +93 -0
  392. package/dist/extensions/builtin/teach/teach-runtime.js +9 -0
  393. package/dist/extensions/builtin/teach/teach-types.d.ts +81 -0
  394. package/dist/extensions/builtin/teach/teach-types.js +0 -0
  395. package/dist/extensions/builtin/team/index.js +11 -626
  396. package/dist/extensions/builtin/team/team-dashboard.js +1 -117
  397. package/dist/extensions/builtin/team/team-harness.js +18 -351
  398. package/dist/extensions/builtin/team/team-mailbox.js +4 -110
  399. package/dist/extensions/builtin/team/team-orchestrator.js +5 -469
  400. package/dist/extensions/builtin/team/team-parser.js +2 -334
  401. package/dist/extensions/builtin/team/team-permissions.js +1 -120
  402. package/dist/extensions/builtin/team/team-presets.js +2 -259
  403. package/dist/extensions/builtin/team/team-psyche.js +5 -135
  404. package/dist/extensions/builtin/team/team-runtime-helpers.js +2 -324
  405. package/dist/extensions/builtin/team/team-runtime.js +3 -671
  406. package/dist/extensions/builtin/team/team-state-store.js +2 -75
  407. package/dist/extensions/builtin/team/team-task-store.js +2 -93
  408. package/dist/extensions/builtin/team/team-transcript.js +2 -58
  409. package/dist/extensions/builtin/team/team-types.js +0 -7
  410. package/dist/extensions/builtin/team/team-ui.js +2 -270
  411. package/dist/extensions/builtin/token-save/config.js +1 -66
  412. package/dist/extensions/builtin/token-save/filters.js +24 -279
  413. package/dist/extensions/builtin/token-save/index.js +4 -182
  414. package/dist/extensions/builtin/token-save/lexer.js +1 -51
  415. package/dist/extensions/builtin/token-save/recovery.js +1 -21
  416. package/dist/extensions/builtin/token-save/rewrite.js +1 -73
  417. package/dist/extensions/builtin/token-save/runner.js +3 -55
  418. package/dist/extensions/builtin/token-save/stream.js +1 -33
  419. package/dist/extensions/builtin/token-save/toml-dsl.js +3 -34
  420. package/dist/extensions/builtin/token-save/tracking.js +8 -74
  421. package/dist/extensions/optional/export-html/index.js +2 -269
  422. package/dist/extensions/optional/simplify/index.js +32 -423
  423. package/dist/index.js +1 -50
  424. package/dist/main.js +22 -908
  425. package/dist/migrations.js +4 -261
  426. package/dist/modes/acp/acp-mode.js +25 -1086
  427. package/dist/modes/index.js +1 -13
  428. package/dist/modes/interactive/agent-loop-status.js +1 -41
  429. package/dist/modes/interactive/components/apikey-input.js +3 -23
  430. package/dist/modes/interactive/components/armin.js +1 -338
  431. package/dist/modes/interactive/components/assistant-message.js +1 -101
  432. package/dist/modes/interactive/components/attachments-bar.js +1 -75
  433. package/dist/modes/interactive/components/bash-execution.js +13 -167
  434. package/dist/modes/interactive/components/bordered-loader.js +1 -56
  435. package/dist/modes/interactive/components/branch-summary-message.js +3 -49
  436. package/dist/modes/interactive/components/buddy/pet-sprites.js +1 -255
  437. package/dist/modes/interactive/components/compaction-summary-message.js +3 -50
  438. package/dist/modes/interactive/components/config-selector.js +1 -484
  439. package/dist/modes/interactive/components/countdown-timer.js +1 -38
  440. package/dist/modes/interactive/components/custom-editor.d.ts +9 -0
  441. package/dist/modes/interactive/components/custom-editor.js +1 -101
  442. package/dist/modes/interactive/components/custom-message.js +2 -88
  443. package/dist/modes/interactive/components/daxnuts.js +1 -145
  444. package/dist/modes/interactive/components/diff.js +3 -138
  445. package/dist/modes/interactive/components/dynamic-border.js +1 -26
  446. package/dist/modes/interactive/components/editor-buddy-layout.js +1 -44
  447. package/dist/modes/interactive/components/extension-editor.js +1 -115
  448. package/dist/modes/interactive/components/extension-input.js +2 -69
  449. package/dist/modes/interactive/components/extension-selector.js +2 -90
  450. package/dist/modes/interactive/components/footer.js +1 -239
  451. package/dist/modes/interactive/components/index.d.ts +1 -0
  452. package/dist/modes/interactive/components/index.js +1 -44
  453. package/dist/modes/interactive/components/keybinding-hints.js +1 -66
  454. package/dist/modes/interactive/components/login-dialog.js +1 -150
  455. package/dist/modes/interactive/components/memory-stats.js +2 -96
  456. package/dist/modes/interactive/components/model-selector.d.ts +8 -1
  457. package/dist/modes/interactive/components/model-selector.js +2 -284
  458. package/dist/modes/interactive/components/notification-queue.d.ts +49 -0
  459. package/dist/modes/interactive/components/notification-queue.js +1 -0
  460. package/dist/modes/interactive/components/oauth-selector.js +1 -94
  461. package/dist/modes/interactive/components/pencil-loader.d.ts +7 -1
  462. package/dist/modes/interactive/components/pencil-loader.js +1 -123
  463. package/dist/modes/interactive/components/persona-selector.d.ts +24 -0
  464. package/dist/modes/interactive/components/persona-selector.js +1 -0
  465. package/dist/modes/interactive/components/plan-progress-panel.d.ts +24 -0
  466. package/dist/modes/interactive/components/plan-progress-panel.js +1 -0
  467. package/dist/modes/interactive/components/provider-selector.js +1 -150
  468. package/dist/modes/interactive/components/raw-text.js +3 -28
  469. package/dist/modes/interactive/components/scoped-models-selector.js +1 -280
  470. package/dist/modes/interactive/components/session-selector-search.js +1 -160
  471. package/dist/modes/interactive/components/session-selector.js +2 -856
  472. package/dist/modes/interactive/components/settings-selector.js +1 -372
  473. package/dist/modes/interactive/components/show-images-selector.js +1 -40
  474. package/dist/modes/interactive/components/skill-invocation-message.js +3 -52
  475. package/dist/modes/interactive/components/soul-stats.js +2 -159
  476. package/dist/modes/interactive/components/sub-agent-panel.d.ts +24 -0
  477. package/dist/modes/interactive/components/sub-agent-panel.js +1 -0
  478. package/dist/modes/interactive/components/theme-selector.js +1 -51
  479. package/dist/modes/interactive/components/thinking-selector.js +1 -52
  480. package/dist/modes/interactive/components/tool-execution.js +58 -757
  481. package/dist/modes/interactive/components/tree-selector.js +1 -939
  482. package/dist/modes/interactive/components/user-message-selector.js +1 -118
  483. package/dist/modes/interactive/components/user-message.js +1 -21
  484. package/dist/modes/interactive/components/visual-truncate.js +1 -38
  485. package/dist/modes/interactive/controllers/auth-provider-config-controller.d.ts +3 -1
  486. package/dist/modes/interactive/controllers/auth-provider-config-controller.js +1 -401
  487. package/dist/modes/interactive/controllers/extension-ui/custom-overlay-host.js +1 -90
  488. package/dist/modes/interactive/controllers/extension-ui/editor-component-adapter.js +1 -78
  489. package/dist/modes/interactive/controllers/extension-ui/persistent-surface-registry.js +1 -169
  490. package/dist/modes/interactive/controllers/extension-ui/prompt-host.js +2 -109
  491. package/dist/modes/interactive/controllers/image-pipeline-controller.js +1 -359
  492. package/dist/modes/interactive/controllers/input-submit-controller.d.ts +6 -0
  493. package/dist/modes/interactive/controllers/input-submit-controller.js +2 -164
  494. package/dist/modes/interactive/controllers/interrupt-controller.js +1 -82
  495. package/dist/modes/interactive/controllers/model-overlay-controller.d.ts +3 -0
  496. package/dist/modes/interactive/controllers/model-overlay-controller.js +3 -346
  497. package/dist/modes/interactive/controllers/self-update-controller.js +24 -525
  498. package/dist/modes/interactive/controllers/settings-overlay-controller.js +2 -165
  499. package/dist/modes/interactive/controllers/slash-dispatcher-controller.js +1 -183
  500. package/dist/modes/interactive/controllers/stream-render-controller.d.ts +3 -2
  501. package/dist/modes/interactive/controllers/stream-render-controller.js +2 -325
  502. package/dist/modes/interactive/controllers/tree-overlay-controller.js +1 -171
  503. package/dist/modes/interactive/footer-data-provider.js +1 -147
  504. package/dist/modes/interactive/interactive-mode.d.ts +25 -1
  505. package/dist/modes/interactive/interactive-mode.js +100 -3441
  506. package/dist/modes/interactive/services/tips.js +1 -115
  507. package/dist/modes/interactive/slash-command-arguments.js +1 -126
  508. package/dist/modes/interactive/state/interactive-state.d.ts +29 -0
  509. package/dist/modes/interactive/state/interactive-state.js +1 -43
  510. package/dist/modes/interactive/theme/theme.js +16 -970
  511. package/dist/modes/print-mode.js +2 -171
  512. package/dist/modes/rpc/rpc-client.js +2 -417
  513. package/dist/modes/rpc/rpc-mode.js +1 -568
  514. package/dist/modes/rpc/rpc-types.js +0 -1
  515. package/dist/modes/utils/agent-loop-result-format.js +1 -69
  516. package/dist/modes/utils/clipboard-image.js +1 -170
  517. package/dist/modes/utils/clipboard-native.js +1 -47
  518. package/dist/modes/utils/clipboard.js +1 -72
  519. package/dist/modes/utils/image-convert.js +1 -40
  520. package/dist/modes/utils/image-resize.js +1 -186
  521. package/dist/nanopencil-defaults.d.ts +190 -4
  522. package/dist/nanopencil-defaults.js +2 -854
  523. package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop-continuations.js +1 -60
  524. package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop-stream-events.js +1 -55
  525. package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop-tool-results.js +3 -137
  526. package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop-tool-summaries.js +1 -64
  527. package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop.js +3 -913
  528. package/dist/node_modules/@pencil-agent/agent-core/dist/agent-run-result.js +1 -32
  529. package/dist/node_modules/@pencil-agent/agent-core/dist/agent.js +1 -522
  530. package/dist/node_modules/@pencil-agent/agent-core/dist/errors.js +1 -146
  531. package/dist/node_modules/@pencil-agent/agent-core/dist/index.js +1 -19
  532. package/dist/node_modules/@pencil-agent/agent-core/dist/proxy.js +2 -279
  533. package/dist/node_modules/@pencil-agent/agent-core/dist/structured-adaptive-agent-loop.js +1 -625
  534. package/dist/node_modules/@pencil-agent/agent-core/dist/structured-adaptive-streaming-tool-executor.js +1 -189
  535. package/dist/node_modules/@pencil-agent/agent-core/dist/structured-adaptive-tool-orchestration.js +3 -319
  536. package/dist/node_modules/@pencil-agent/agent-core/dist/types.js +1 -13
  537. package/dist/node_modules/@pencil-agent/ai/dist/api-registry.js +1 -152
  538. package/dist/node_modules/@pencil-agent/ai/dist/cli.js +9 -109
  539. package/dist/node_modules/@pencil-agent/ai/dist/config-path.js +1 -17
  540. package/dist/node_modules/@pencil-agent/ai/dist/debug-logger.js +4 -218
  541. package/dist/node_modules/@pencil-agent/ai/dist/env-api-keys.js +1 -107
  542. package/dist/node_modules/@pencil-agent/ai/dist/env.js +1 -7
  543. package/dist/node_modules/@pencil-agent/ai/dist/events.js +1 -7
  544. package/dist/node_modules/@pencil-agent/ai/dist/index.js +1 -20
  545. package/dist/node_modules/@pencil-agent/ai/dist/json.js +1 -7
  546. package/dist/node_modules/@pencil-agent/ai/dist/models.generated.js +1 -14928
  547. package/dist/node_modules/@pencil-agent/ai/dist/models.js +1 -60
  548. package/dist/node_modules/@pencil-agent/ai/dist/overflow.js +1 -7
  549. package/dist/node_modules/@pencil-agent/ai/dist/providers/amazon-bedrock.js +1 -606
  550. package/dist/node_modules/@pencil-agent/ai/dist/providers/anthropic.js +2 -737
  551. package/dist/node_modules/@pencil-agent/ai/dist/providers/azure-openai-responses.js +1 -193
  552. package/dist/node_modules/@pencil-agent/ai/dist/providers/github-copilot-headers.js +1 -34
  553. package/dist/node_modules/@pencil-agent/ai/dist/providers/google-gemini-cli.js +2 -753
  554. package/dist/node_modules/@pencil-agent/ai/dist/providers/google-shared.js +2 -311
  555. package/dist/node_modules/@pencil-agent/ai/dist/providers/google-vertex.js +1 -380
  556. package/dist/node_modules/@pencil-agent/ai/dist/providers/google.js +1 -360
  557. package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-codex-responses.js +7 -704
  558. package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-completions.js +6 -870
  559. package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-responses-shared.js +10 -432
  560. package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-responses.js +1 -207
  561. package/dist/node_modules/@pencil-agent/ai/dist/providers/register-builtins.js +1 -86
  562. package/dist/node_modules/@pencil-agent/ai/dist/providers/simple-options.js +1 -40
  563. package/dist/node_modules/@pencil-agent/ai/dist/providers/transform-messages.js +1 -175
  564. package/dist/node_modules/@pencil-agent/ai/dist/registry.js +1 -8
  565. package/dist/node_modules/@pencil-agent/ai/dist/schema.js +1 -9
  566. package/dist/node_modules/@pencil-agent/ai/dist/stream.js +1 -324
  567. package/dist/node_modules/@pencil-agent/ai/dist/types.js +0 -7
  568. package/dist/node_modules/@pencil-agent/ai/dist/utils/event-stream-types.js +0 -7
  569. package/dist/node_modules/@pencil-agent/ai/dist/utils/event-stream.js +1 -98
  570. package/dist/node_modules/@pencil-agent/ai/dist/utils/http-proxy.js +1 -20
  571. package/dist/node_modules/@pencil-agent/ai/dist/utils/json-parse.js +1 -34
  572. package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/anthropic.js +1 -109
  573. package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/decode-credential.js +1 -25
  574. package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/github-copilot.js +1 -286
  575. package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/google-antigravity.js +1 -378
  576. package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/google-gemini-cli.js +1 -483
  577. package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/index.js +1 -131
  578. package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/openai-codex.js +2 -376
  579. package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/pkce.js +1 -36
  580. package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/types.js +0 -7
  581. package/dist/node_modules/@pencil-agent/ai/dist/utils/overflow.js +1 -120
  582. package/dist/node_modules/@pencil-agent/ai/dist/utils/sanitize-unicode.js +1 -20
  583. package/dist/node_modules/@pencil-agent/ai/dist/utils/typebox-helpers.js +1 -26
  584. package/dist/node_modules/@pencil-agent/ai/dist/utils/validation.js +6 -78
  585. package/dist/node_modules/@pencil-agent/ai/package.json +24 -24
  586. package/dist/node_modules/@pencil-agent/tui/dist/autocomplete.js +2 -624
  587. package/dist/node_modules/@pencil-agent/tui/dist/components/box.js +1 -109
  588. package/dist/node_modules/@pencil-agent/tui/dist/components/cached-container.js +1 -0
  589. package/dist/node_modules/@pencil-agent/tui/dist/components/cancellable-loader.js +1 -40
  590. package/dist/node_modules/@pencil-agent/tui/dist/components/editor.js +21 -1697
  591. package/dist/node_modules/@pencil-agent/tui/dist/components/image.js +1 -74
  592. package/dist/node_modules/@pencil-agent/tui/dist/components/input.js +2 -438
  593. package/dist/node_modules/@pencil-agent/tui/dist/components/loader.js +1 -54
  594. package/dist/node_modules/@pencil-agent/tui/dist/components/markdown.js +7 -634
  595. package/dist/node_modules/@pencil-agent/tui/dist/components/select-list.js +1 -157
  596. package/dist/node_modules/@pencil-agent/tui/dist/components/settings-list.js +1 -190
  597. package/dist/node_modules/@pencil-agent/tui/dist/components/spacer.js +1 -28
  598. package/dist/node_modules/@pencil-agent/tui/dist/components/text.js +1 -94
  599. package/dist/node_modules/@pencil-agent/tui/dist/components/truncated-text.js +2 -56
  600. package/dist/node_modules/@pencil-agent/tui/dist/editor-component.js +0 -7
  601. package/dist/node_modules/@pencil-agent/tui/dist/fuzzy.js +1 -152
  602. package/dist/node_modules/@pencil-agent/tui/dist/index.js +1 -37
  603. package/dist/node_modules/@pencil-agent/tui/dist/keybindings.js +1 -119
  604. package/dist/node_modules/@pencil-agent/tui/dist/keys.js +5 -948
  605. package/dist/node_modules/@pencil-agent/tui/dist/kill-ring.js +1 -49
  606. package/dist/node_modules/@pencil-agent/tui/dist/stdin-buffer.js +1 -307
  607. package/dist/node_modules/@pencil-agent/tui/dist/terminal-image.js +1 -287
  608. package/dist/node_modules/@pencil-agent/tui/dist/terminal.js +1 -266
  609. package/dist/node_modules/@pencil-agent/tui/dist/tui.js +12 -1001
  610. package/dist/node_modules/@pencil-agent/tui/dist/undo-stack.js +1 -30
  611. package/dist/node_modules/@pencil-agent/tui/dist/utils.js +2 -811
  612. package/dist/packages/extension-sdk/src/index.js +1 -12
  613. package/dist/packages/extension-sdk/src/lifecycle.js +0 -13
  614. package/dist/packages/extension-sdk/src/tools.js +0 -12
  615. package/dist/packages/mem-core/src/store.js +1 -120
  616. package/dist/packages/mem-core/src/types.js +0 -7
  617. package/dist/packages/soul-core/src/config.js +1 -92
  618. package/dist/packages/soul-core/src/diagnostics.js +1 -56
  619. package/dist/packages/soul-core/src/evolution.js +1 -273
  620. package/dist/packages/soul-core/src/index.js +1 -13
  621. package/dist/packages/soul-core/src/injection.js +8 -280
  622. package/dist/packages/soul-core/src/manager.js +1 -441
  623. package/dist/packages/soul-core/src/store.js +1 -279
  624. package/dist/packages/soul-core/src/types.js +0 -7
  625. package/dist/utils/changelog.js +4 -92
  626. package/dist/utils/diagnostics.js +1 -83
  627. package/dist/utils/frontmatter.js +4 -31
  628. package/dist/utils/git.js +1 -168
  629. package/dist/utils/mime.js +1 -31
  630. package/dist/utils/photon.js +1 -106
  631. package/dist/utils/startup-profiler.js +2 -150
  632. package/docs/cc-agent-design.md +1297 -0
  633. package/docs/cc-tui-design.md +1333 -0
  634. package/docs/codex-goal-command-impl.md +1055 -0
  635. package/docs/codex-goal-vs-grub.md +500 -0
  636. package/docs/custom-provider.md +27 -0
  637. package/docs/extensions.md +27 -0
  638. package/docs/keybindings.md +27 -0
  639. package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/200/273/347/273/223.md" +251 -0
  640. package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/212/245/345/221/212.md" +123 -0
  641. package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210.md" +1222 -0
  642. 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 -0
  643. 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 -0
  644. package/docs/loop /351/207/215/346/236/204/350/256/241/345/210/222.md" +321 -0
  645. package/docs/loop-usage-examples.md +215 -0
  646. package/docs/models.md +27 -0
  647. package/docs/packages.md +27 -0
  648. package/docs/pi-design-philosophy.md +457 -0
  649. package/docs/planmode.md +1987 -0
  650. package/docs/prompt-templates.md +27 -0
  651. package/docs/providers.md +27 -0
  652. package/docs/sdk.md +27 -0
  653. package/docs/skills.md +27 -0
  654. package/docs/themes.md +27 -0
  655. package/docs/tui.md +27 -0
  656. package/docs//345/257/271/346/240/207Claude-Code.md +1775 -0
  657. package/package.json +21 -8
  658. package/dist/core/export-html/CLAUDE.md +0 -12
  659. package/dist/extensions/builtin/CLAUDE.md +0 -74
  660. package/dist/extensions/builtin/interview/index.d.ts +0 -8
  661. package/dist/extensions/builtin/interview/index.js +0 -335
  662. package/dist/extensions/builtin/interview/interview-runtime.d.ts +0 -55
  663. package/dist/extensions/builtin/interview/interview-runtime.js +0 -551
  664. package/dist/extensions/builtin/loop/cron/cron-types.d.ts +0 -87
  665. package/dist/extensions/builtin/loop/cron/cron-types.js +0 -14
  666. package/dist/extensions/builtin/loop/scheduler-parser.d.ts +0 -13
  667. package/dist/extensions/builtin/loop/scheduler-parser.js +0 -214
  668. package/dist/extensions/builtin/loop/scheduler-types.d.ts +0 -63
  669. package/dist/extensions/builtin/loop/scheduler-types.js +0 -7
  670. package/dist/extensions/builtin/loop/skill/SKILL.md +0 -79
  671. package/dist/extensions/builtin/team/CLAUDE.md +0 -97
  672. package/dist/extensions/optional/CLAUDE.md +0 -11
  673. package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop-continuations.d.ts +0 -17
  674. package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop-stream-events.d.ts +0 -19
  675. package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop-tool-results.d.ts +0 -10
  676. package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop-tool-summaries.d.ts +0 -22
  677. package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop.d.ts +0 -26
  678. package/dist/node_modules/@pencil-agent/agent-core/dist/agent-run-result.d.ts +0 -9
  679. package/dist/node_modules/@pencil-agent/agent-core/dist/agent.d.ts +0 -215
  680. package/dist/node_modules/@pencil-agent/agent-core/dist/errors.d.ts +0 -62
  681. package/dist/node_modules/@pencil-agent/agent-core/dist/index.d.ts +0 -14
  682. package/dist/node_modules/@pencil-agent/agent-core/dist/proxy.d.ts +0 -91
  683. package/dist/node_modules/@pencil-agent/agent-core/dist/structured-adaptive-agent-loop.d.ts +0 -15
  684. package/dist/node_modules/@pencil-agent/agent-core/dist/structured-adaptive-streaming-tool-executor.d.ts +0 -33
  685. package/dist/node_modules/@pencil-agent/agent-core/dist/structured-adaptive-tool-orchestration.d.ts +0 -35
  686. package/dist/node_modules/@pencil-agent/ai/dist/api-registry.d.ts +0 -27
  687. package/dist/node_modules/@pencil-agent/ai/dist/cli.d.ts +0 -2
  688. package/dist/node_modules/@pencil-agent/ai/dist/config-path.d.ts +0 -1
  689. package/dist/node_modules/@pencil-agent/ai/dist/debug-logger.d.ts +0 -94
  690. package/dist/node_modules/@pencil-agent/ai/dist/env-api-keys.d.ts +0 -8
  691. package/dist/node_modules/@pencil-agent/ai/dist/env.d.ts +0 -7
  692. package/dist/node_modules/@pencil-agent/ai/dist/events.d.ts +0 -8
  693. package/dist/node_modules/@pencil-agent/ai/dist/index.d.ts +0 -27
  694. package/dist/node_modules/@pencil-agent/ai/dist/json.d.ts +0 -7
  695. package/dist/node_modules/@pencil-agent/ai/dist/models.d.ts +0 -31
  696. package/dist/node_modules/@pencil-agent/ai/dist/models.generated.d.ts +0 -15159
  697. package/dist/node_modules/@pencil-agent/ai/dist/overflow.d.ts +0 -7
  698. package/dist/node_modules/@pencil-agent/ai/dist/providers/amazon-bedrock.d.ts +0 -20
  699. package/dist/node_modules/@pencil-agent/ai/dist/providers/anthropic.d.ts +0 -38
  700. package/dist/node_modules/@pencil-agent/ai/dist/providers/azure-openai-responses.d.ts +0 -21
  701. package/dist/node_modules/@pencil-agent/ai/dist/providers/github-copilot-headers.d.ts +0 -13
  702. package/dist/node_modules/@pencil-agent/ai/dist/providers/google-gemini-cli.d.ts +0 -79
  703. package/dist/node_modules/@pencil-agent/ai/dist/providers/google-shared.d.ts +0 -70
  704. package/dist/node_modules/@pencil-agent/ai/dist/providers/google-vertex.d.ts +0 -20
  705. package/dist/node_modules/@pencil-agent/ai/dist/providers/google.d.ts +0 -18
  706. package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-codex-responses.d.ts +0 -8
  707. package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-completions.d.ts +0 -20
  708. package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-responses-shared.d.ts +0 -22
  709. package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-responses.d.ts +0 -19
  710. package/dist/node_modules/@pencil-agent/ai/dist/providers/register-builtins.d.ts +0 -8
  711. package/dist/node_modules/@pencil-agent/ai/dist/providers/simple-options.d.ts +0 -13
  712. package/dist/node_modules/@pencil-agent/ai/dist/providers/transform-messages.d.ts +0 -13
  713. package/dist/node_modules/@pencil-agent/ai/dist/registry.d.ts +0 -8
  714. package/dist/node_modules/@pencil-agent/ai/dist/schema.d.ts +0 -10
  715. package/dist/node_modules/@pencil-agent/ai/dist/stream.d.ts +0 -25
  716. package/dist/node_modules/@pencil-agent/ai/dist/utils/event-stream.d.ts +0 -31
  717. package/dist/node_modules/@pencil-agent/ai/dist/utils/http-proxy.d.ts +0 -13
  718. package/dist/node_modules/@pencil-agent/ai/dist/utils/json-parse.d.ts +0 -14
  719. package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/anthropic.d.ts +0 -22
  720. package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/decode-credential.d.ts +0 -12
  721. package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/github-copilot.d.ts +0 -35
  722. package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/google-antigravity.d.ts +0 -31
  723. package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/google-gemini-cli.d.ts +0 -31
  724. package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/index.d.ts +0 -60
  725. package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/openai-codex.d.ts +0 -39
  726. package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/pkce.d.ts +0 -18
  727. package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/types.d.ts +0 -52
  728. package/dist/node_modules/@pencil-agent/ai/dist/utils/overflow.d.ts +0 -57
  729. package/dist/node_modules/@pencil-agent/ai/dist/utils/sanitize-unicode.d.ts +0 -16
  730. package/dist/node_modules/@pencil-agent/ai/dist/utils/typebox-helpers.d.ts +0 -22
  731. package/dist/node_modules/@pencil-agent/ai/dist/utils/validation.d.ts +0 -23
  732. package/dist/node_modules/@pencil-agent/tui/dist/autocomplete.d.ts +0 -62
  733. package/dist/node_modules/@pencil-agent/tui/dist/components/box.d.ts +0 -27
  734. package/dist/node_modules/@pencil-agent/tui/dist/components/cancellable-loader.d.ts +0 -27
  735. package/dist/node_modules/@pencil-agent/tui/dist/components/editor.d.ts +0 -218
  736. package/dist/node_modules/@pencil-agent/tui/dist/components/image.d.ts +0 -33
  737. package/dist/node_modules/@pencil-agent/tui/dist/components/input.d.ts +0 -42
  738. package/dist/node_modules/@pencil-agent/tui/dist/components/loader.d.ts +0 -26
  739. package/dist/node_modules/@pencil-agent/tui/dist/components/markdown.d.ts +0 -100
  740. package/dist/node_modules/@pencil-agent/tui/dist/components/select-list.d.ts +0 -37
  741. package/dist/node_modules/@pencil-agent/tui/dist/components/settings-list.d.ts +0 -55
  742. package/dist/node_modules/@pencil-agent/tui/dist/components/spacer.d.ts +0 -17
  743. package/dist/node_modules/@pencil-agent/tui/dist/components/text.d.ts +0 -24
  744. package/dist/node_modules/@pencil-agent/tui/dist/components/truncated-text.d.ts +0 -18
  745. package/dist/node_modules/@pencil-agent/tui/dist/editor-component.d.ts +0 -51
  746. package/dist/node_modules/@pencil-agent/tui/dist/fuzzy.d.ts +0 -32
  747. package/dist/node_modules/@pencil-agent/tui/dist/index.d.ts +0 -28
  748. package/dist/node_modules/@pencil-agent/tui/dist/keybindings.d.ts +0 -44
  749. package/dist/node_modules/@pencil-agent/tui/dist/keys.d.ts +0 -149
  750. package/dist/node_modules/@pencil-agent/tui/dist/kill-ring.d.ts +0 -33
  751. package/dist/node_modules/@pencil-agent/tui/dist/stdin-buffer.d.ts +0 -38
  752. package/dist/node_modules/@pencil-agent/tui/dist/terminal-image.d.ts +0 -73
  753. package/dist/node_modules/@pencil-agent/tui/dist/terminal.d.ts +0 -86
  754. package/dist/node_modules/@pencil-agent/tui/dist/tui.d.ts +0 -219
  755. package/dist/node_modules/@pencil-agent/tui/dist/undo-stack.d.ts +0 -22
  756. package/dist/node_modules/@pencil-agent/tui/dist/utils.d.ts +0 -83
  757. package/docs/API/345/257/206/351/222/245/344/277/256/345/244/215/346/200/273/347/273/223.md +0 -147
  758. package/docs/API/345/257/206/351/222/245/345/221/275/344/273/244.md +0 -66
  759. package/docs/API/345/257/206/351/222/245/346/214/207/345/215/227.md +0 -292
  760. package/docs/ARK/347/274/226/347/240/201/350/256/241/345/210/222.md +0 -51
  761. package/docs/AgentTeam/351/207/215/346/236/204/346/226/271/346/241/210.md +0 -446
  762. package/docs/InterviewRegression.md +0 -122
  763. package/docs/MCP/345/277/253/351/200/237/345/217/202/350/200/203.md +0 -113
  764. package/docs/MCP/351/233/206/346/210/220/346/214/207/345/215/227.md +0 -255
  765. package/docs/Persona/345/210/207/346/215/242.md +0 -97
  766. package/docs/Recap/346/211/251/345/261/225.md +0 -410
  767. package/docs/Simplify/346/211/251/345/261/225.md +0 -278
  768. package/docs/agent-loop-frameworks.md +0 -119
  769. package/docs/debug-logging.md +0 -148
  770. package/docs/eval/AGENT.md +0 -36
  771. package/docs/eval/README.md +0 -72
  772. package/docs/eval/decision-log-template.md +0 -51
  773. package/docs/eval/experiment-protocol.md +0 -77
  774. package/docs/eval/issue-usage/README.md +0 -32
  775. package/docs/eval/issue-usage/cases.md +0 -31
  776. package/docs/eval/issue-usage/metrics.md +0 -23
  777. package/docs/eval/issue-usage/workflow.md +0 -39
  778. package/docs/eval/sal-memory-anchor/README.md +0 -32
  779. package/docs/eval/sal-memory-anchor/hypothesis.md +0 -45
  780. package/docs/eval/sal-memory-anchor/metrics.md +0 -24
  781. package/docs/eval/sal-memory-anchor/runs.md +0 -29
  782. package/docs/eval/tool-usage-analysis/README.md +0 -32
  783. package/docs/eval/tool-usage-analysis/invalid-data-rules.md +0 -29
  784. package/docs/eval/tool-usage-analysis/metrics.md +0 -35
  785. package/docs/eval/tool-usage-analysis/report-template.md +0 -49
  786. package/docs/eval/tool-usage-analysis/sop.md +0 -63
  787. package/docs/multi-agent-fs-design.md +0 -1120
  788. package/docs/pencil-platform-charter.md +0 -21
  789. package/docs/project-structure-optimization.md +0 -66
  790. package/docs/remote-tool-register-design.md +0 -436
  791. package/docs//345/206/205/347/275/256MCP/345/267/245/345/205/267.md +0 -326
  792. package/docs//345/215/203/345/270/206/347/274/226/347/240/201/350/256/241/345/210/222.md +0 -52
  793. package/docs//345/215/225/344/275/223/344/273/223/345/272/223/350/207/252/350/277/260.md +0 -189
  794. package/docs//345/215/225/344/275/223/344/273/223/345/272/223/350/277/201/347/247/273/346/214/207/345/215/227.md +0 -232
  795. package/docs//345/217/221/345/270/203/346/214/207/345/215/227.md +0 -129
  796. package/docs//345/217/230/346/233/264/346/200/273/347/273/223.md +0 -138
  797. package/docs//345/217/230/346/233/264/346/227/245/345/277/227.md +0 -50
  798. package/docs//345/267/245/345/205/267/347/256/241/347/220/206/345/231/250/344/274/230/345/214/226.md +0 -208
  799. package/docs//345/276/252/347/216/257/345/221/275/344/273/244/350/256/241/345/210/222.md +0 -56
  800. package/docs//346/226/207/346/241/243/344/270/255/345/277/203.md +0 -146
  801. package/docs//346/236/266/346/236/204/344/274/230/345/214/226.md +0 -404
  802. package/docs//346/236/266/346/236/204/346/274/224/350/277/233.md +0 -228
  803. package/docs//347/211/210/346/234/2542.md +0 -199
  804. package/docs//347/272/263/350/257/272/350/256/260/345/277/206/350/257/273/345/206/231.md +0 -352
  805. package/docs//347/273/223/346/236/204.md +0 -339
  806. package/docs//350/256/241/345/210/222.md +0 -44
  807. package/docs//350/256/260/345/277/206/347/263/273/347/273/237.md +0 -236
  808. package/docs//350/277/201/347/247/273/346/200/273/347/273/223.md +0 -204
  809. package/docs//351/207/215/346/236/204/344/273/273/345/212/241.md +0 -181
  810. package/docs//351/207/215/346/236/204/350/256/241/345/210/222.md +0 -592
  811. /package/dist/{node_modules/@pencil-agent/ai/dist → core/lib/ai/src}/utils/event-stream-types.d.ts +0 -0
@@ -0,0 +1,500 @@
1
+ # Codex `/goal` vs nanoPencil `/grub`:同源异流的长期任务机制
2
+
3
+ > 两个系统解决同一个问题:让 AI agent 自主迭代完成复杂任务。
4
+ > 但设计哲学、实现路径和约束模型截然不同。
5
+
6
+ ---
7
+
8
+ ## 一、一句话概括
9
+
10
+ | | Codex `/goal` | nanoPencil `/grub` |
11
+ |---|---|---|
12
+ | **核心理念** | "设个目标,我 idle 时自动继续" | "设个目标,我每轮严格推进一个 feature" |
13
+ | **控制粒度** | token 预算 + 时间 | 迭代轮次 + 连续失败次数 |
14
+ | **完成判定** | LLM 自己说了算(但有 completion audit prompt) | feature-list.json 所有项 passes:true 才算完成 |
15
+ | **持久化** | SQLite(进程内) | 文件系统(.grub/ 目录) |
16
+
17
+ ---
18
+
19
+ ## 二、命令对比
20
+
21
+ ### 2.1 命令格式
22
+
23
+ | 操作 | Codex `/goal` | nanoPencil `/grub` |
24
+ |------|--------------|-------------------|
25
+ | 设置目标 | `/goal <objective>` | `/grub <goal>` |
26
+ | 查看状态 | `/goal`(显示摘要菜单) | `/grub status` 或 `/grub status --json` |
27
+ | 暂停 | `/goal pause` | 无(只有 stop) |
28
+ | 恢复 | `/goal resume` | `/grub resume` |
29
+ | 停止 | `/goal clear` | `/grub stop` |
30
+ | 编辑 | `/goal edit` | 无(stop 后重新 start) |
31
+ | 帮助 | 无(直接显示 usage) | `/grub help` |
32
+ | 限制参数 | token_budget(LLM 工具设置) | `--max-iter N`, `--max-fail N` |
33
+
34
+ ### 2.2 命令解析
35
+
36
+ **Codex**:在 TUI 层解析,通过 `AppEvent` 事件总线分派到 `App` 层的 `thread_goal_actions`。
37
+
38
+ **nanoPencil**:在扩展层解析,`parseGrubCommand()` 返回类型化的命令对象:
39
+
40
+ ```typescript
41
+ type ParsedGrubCommand =
42
+ | { type: "start"; goal: string; maxIterations?: number; maxConsecutiveFailures?: number }
43
+ | { type: "status"; json?: boolean }
44
+ | { type: "stop" }
45
+ | { type: "resume" }
46
+ | { type: "help"; reason?: string };
47
+ ```
48
+
49
+ ---
50
+
51
+ ## 三、数据模型对比
52
+
53
+ ### 3.1 状态枚举
54
+
55
+ | Codex `ThreadGoalStatus` | nanoPencil `GrubStatus` | 对应关系 |
56
+ |--------------------------|------------------------|----------|
57
+ | `active` | `running` | 等价 |
58
+ | `paused` | 无 | grub 无暂停概念 |
59
+ | `blocked` | `blocked` | 等价(但触发条件不同) |
60
+ | `usage_limited` | 无 | grub 无用量限制 |
61
+ | `budget_limited` | 无 | grub 无 token 预算 |
62
+ | `complete` | `complete` | 等价 |
63
+ | 无 | `stopped` | grub 有手动停止 |
64
+ | 无 | `failed` | grub 有失败终止 |
65
+
66
+ **关键差异**:Codex 有 6 种状态,grub 有 5 种。Codex 的 `paused`/`usage_limited`/`budget_limited` 在 grub 中不存在;grub 的 `stopped`/`failed` 在 Codex 中不存在。
67
+
68
+ ### 3.2 实体结构
69
+
70
+ **Codex `ThreadGoal`**:
71
+ ```typescript
72
+ interface ThreadGoal {
73
+ thread_id: string;
74
+ goal_id: string; // UUID,每次 replace 生成新 ID
75
+ objective: string;
76
+ status: ThreadGoalStatus;
77
+ token_budget: number | null;
78
+ tokens_used: number;
79
+ time_used_seconds: number;
80
+ created_at: number; // epoch ms
81
+ updated_at: number; // epoch ms
82
+ }
83
+ ```
84
+
85
+ **nanoPencil `GrubTaskState`**:
86
+ ```typescript
87
+ interface GrubTaskState {
88
+ id: string; // 8 位 hex
89
+ goal: string;
90
+ locale: "en" | "zh";
91
+ status: GrubStatus;
92
+ phase: "initializer" | "execution"; // ⭐ grub 独有
93
+ startedAt: number;
94
+ updatedAt: number;
95
+ currentIteration: number; // ⭐ 当前轮次
96
+ awaitingTurn: boolean; // ⭐ 是否在等 turn 返回
97
+ consecutiveFailures: number; // ⭐ 连续失败计数
98
+ maxIterations: number; // 默认 25
99
+ maxConsecutiveFailures: number; // 默认 3
100
+ maxInitializerFailures?: number; // 默认 5(初始化阶段更宽容)
101
+ harnessDirectory: string; // ⭐ .grub/<id>/
102
+ featureChecklistPath: string;
103
+ featureListPath: string;
104
+ stateFilePath: string;
105
+ progressLogPath: string;
106
+ initScriptPath: string;
107
+ featureListBaseline?: FeatureList;
108
+ lastDecision?: GrubDecision;
109
+ lastError?: string;
110
+ }
111
+ ```
112
+
113
+ **关键差异**:
114
+ - Codex 用 token 预算做限制,grub 用轮次和失败次数
115
+ - grub 有 `phase`(initializer/execution),Codex 没有
116
+ - grub 有完整的 harness 文件系统(feature-list.json、progress-log.md、init.sh),Codex 没有
117
+ - grub 有 `consecutiveFailures` 计数和 `lastDecision`/`lastError` 恢复上下文
118
+
119
+ ### 3.3 持久化
120
+
121
+ | | Codex | nanoPencil grub |
122
+ |---|---|---|
123
+ | **存储** | SQLite `thread_goals` 表 | JSON 文件 `state.json` |
124
+ | **粒度** | 每个 thread 一行 | 每个 task 一个目录 |
125
+ | **事务** | SQL 事务保证原子性 | 文件写入(best-effort) |
126
+ | **并发** | 行锁 + 乐观锁(`expected_goal_id`) | 内存锁(`GrubController` 单例) |
127
+ | **跨会话** | 天然支持(SQLite 持久) | 支持(文件持久 + resume 命令) |
128
+
129
+ ---
130
+
131
+ ## 四、续作机制对比
132
+
133
+ 这是两个系统最核心的差异。
134
+
135
+ ### 4.1 Codex:Idle Continuation(空闲续作)
136
+
137
+ ```
138
+ Agent turn 结束 → idle
139
+
140
+ on_thread_idle() 触发
141
+
142
+ 检查 goal 是否 active
143
+
144
+ 注入 continuation prompt
145
+
146
+ 触发新 turn(自动,无需用户干预)
147
+ ```
148
+
149
+ **特点**:
150
+ - 完全自动,agent idle 就续作
151
+ - 续作 prompt 包含 objective、budget 信息、completion audit 规则
152
+ - token 预算在每次 tool 完成时实时记账
153
+ - budget 耗尽时注入 `budget_limit_prompt` 收尾
154
+
155
+ ### 4.2 nanoPencil grub:Controller Loop(控制器循环)
156
+
157
+ ```
158
+ /grub <goal> 启动
159
+
160
+ GrubController.start() → 创建 harness 目录 + state.json
161
+
162
+ injectGrubTurn() → 注入初始化 prompt → 触发 turn
163
+
164
+ Turn 结束 → extractGrubDecision() 解析 <loop-state> 块
165
+
166
+ ┌─ status === "continue"?
167
+ │ ├─ YES → validateFeatureListAfterTurn()
168
+ │ │ → finishTurn(decision) → currentIteration++
169
+ │ │ → injectGrubTurn() → 触发下一个 turn
170
+ │ └─ NO → status === "complete"?
171
+ │ ├─ YES → validateCompletion() → 检查 feature-list 所有 passes:true
172
+ │ │ ├─ 全部通过 → stop("complete")
173
+ │ │ └─ 有未完成 → 降级为 continue,指定 nextStep
174
+ │ └─ status === "blocked" → stop("blocked")
175
+
176
+ 失败时 → recordFailure() → consecutiveFailures++
177
+
178
+ consecutiveFailures >= maxConsecutiveFailures → stop("failed")
179
+ currentIteration >= maxIterations → stop("failed")
180
+ ```
181
+
182
+ **特点**:
183
+ - 有明确的初始化阶段(initializer)和执行阶段(execution)
184
+ - 每轮必须输出 `<loop-state>` JSON 块
185
+ - feature-list.json 是完成的 ground truth,不是 LLM 说了算
186
+ - 有 init.sh 每轮验证项目健康状态
187
+ - 有 progress-log.md 记录每轮进展
188
+
189
+ ### 4.3 续作 Prompt 对比
190
+
191
+ **Codex continuation prompt**(52 行):
192
+ ```
193
+ Continue working toward the active thread goal.
194
+ <objective>{{ objective }}</objective>
195
+ - This goal persists across turns.
196
+ - Keep the full objective intact.
197
+ - Temporary rough edges are acceptable.
198
+ Budget: Tokens used: X / Token budget: Y / Remaining: Z
199
+ Work from evidence: Use current worktree as authoritative.
200
+ Completion audit: Derive requirements, verify against actual state.
201
+ Blocked audit: 3+ consecutive turns of same blocker before marking blocked.
202
+ ```
203
+
204
+ **grub execution prompt**(100+ 行):
205
+ ```
206
+ [GRUB:<id>:<iteration>]
207
+ Autonomous grub goal: <goal>
208
+ You are inside a managed grub harness.
209
+ 1) Run .grub/<id>/init.sh and verify project boots.
210
+ 2) Read feature-list.json. Pick EXACTLY one feature with passes:false.
211
+ 3) Implement + verify that single feature end-to-end.
212
+ 4) Flip ONLY "passes" to true and set "evidence".
213
+ 5) Append to progress-log.md.
214
+ 6) End with <loop-state>{"status":"continue|complete|blocked","summary":"...","nextStep":"..."}</loop-state>
215
+ ```
216
+
217
+ **关键差异**:
218
+ - Codex 的 prompt 侧重"忠实于 objective"和"防止 premature completion"
219
+ - grub 的 prompt 侧重"每轮只做一个 feature"和"严格遵守 feature-list 契约"
220
+ - Codex 用 XML `<objective>` 包裹用户输入(安全边界)
221
+ - grub 用 `<loop-state>` XML 块作为 agent→系统的结构化通信协议
222
+
223
+ ---
224
+
225
+ ## 五、完成判定对比
226
+
227
+ ### 5.1 Codex:LLM 自判 + Prompt 约束
228
+
229
+ ```
230
+ LLM 判断任务完成
231
+
232
+ 调用 update_goal(status: "complete")
233
+
234
+ 系统接受(无额外验证)
235
+
236
+ 但如果 continuation prompt 的 completion audit 被严格执行:
237
+ - LLM 应该验证每个 requirement
238
+ - LLM 应该检查 evidence
239
+ - LLM 应该避免 premature completion
240
+ ```
241
+
242
+ **问题**:完成判定完全依赖 LLM 的自律。prompt 再严格,LLM 仍可能"偷懒"。
243
+
244
+ ### 5.2 nanoPencil grub:Feature-List 门控
245
+
246
+ ```
247
+ LLM 判断任务完成
248
+
249
+ 输出 <loop-state>{"status":"complete",...}
250
+
251
+ extractGrubDecision() 解析
252
+
253
+ validateCompletion() 检查:
254
+
255
+ 读取 feature-list.json
256
+
257
+ allPassing(list)?
258
+ ├─ YES → 接受 complete
259
+ └─ NO → 降级为 continue,指定下一个 pending feature
260
+ ```
261
+
262
+ **关键差异**:grub 有**硬编码的完成门控**。LLM 说"complete"但 feature-list 还有 `passes:false` 的项 → 系统拒绝,强制继续。这不是 prompt 约束,是代码约束。
263
+
264
+ ---
265
+
266
+ ## 六、错误恢复对比
267
+
268
+ ### 6.1 Codex
269
+
270
+ | 场景 | 处理 |
271
+ |------|------|
272
+ | Turn 出错(非 usage limit) | `on_turn_error` → stop goal for turn error(→ blocked) |
273
+ | Usage limit exceeded | `on_turn_error` → stop goal for usage limit(→ usage_limited) |
274
+ | Provider 错误 | turn 内部重试(由 agent-core 处理) |
275
+ | 预算耗尽 | 注入 budget_limit_prompt,LLM 收尾 |
276
+
277
+ ### 6.2 nanoPencil grub
278
+
279
+ | 场景 | 处理 |
280
+ |------|------|
281
+ | Turn 返回但无 `<loop-state>` | `recordFailure()` → consecutiveFailures++ |
282
+ | `<loop-state>` 解析失败 | `recordFailure()` → consecutiveFailures++ |
283
+ | feature-list 被非法修改 | `validateFeatureListAfterTurn()` → recordFailure() |
284
+ | 连续失败 >= maxConsecutiveFailures | stop("failed") |
285
+ | 轮次 >= maxIterations | stop("failed") |
286
+ | 初始化阶段连续失败 >= maxInitializerFailures | stop("failed")(更宽容的预算) |
287
+
288
+ **关键差异**:
289
+ - Codex 的错误恢复依赖 provider 级重试和 LLM 自我修正
290
+ - grub 有**显式的失败计数器**和**结构化验证**(feature-list diff 检查)
291
+
292
+ ---
293
+
294
+ ## 七、Token 预算 vs 轮次预算
295
+
296
+ ### 7.1 Codex:Token 预算
297
+
298
+ ```typescript
299
+ // 创建时设置
300
+ create_goal({ objective: "...", token_budget: 50000 });
301
+
302
+ // 每次 tool 完成时记账
303
+ account_thread_goal_usage(threadId, timeDelta, tokenDelta, "ActiveOnly");
304
+
305
+ // 预算耗尽 → 自动标记 budget_limited
306
+ if (tokens_used >= token_budget) {
307
+ status = "budget_limited";
308
+ inject_budget_limit_prompt(); // 告诉 LLM 收尾
309
+ }
310
+ ```
311
+
312
+ **优点**:精细控制成本,token 是硬通货。
313
+ **缺点**:不同 provider 的 token 计费不同,用户难以估算。
314
+
315
+ ### 7.2 nanoPencil grub:轮次预算
316
+
317
+ ```typescript
318
+ // 启动时设置
319
+ /grub <goal> --max-iter 25 --max-fail 3
320
+
321
+ // 每轮结束时检查
322
+ if (currentIteration >= maxIterations) stop("failed");
323
+ if (consecutiveFailures >= maxConsecutiveFailures) stop("failed");
324
+ ```
325
+
326
+ **优点**:用户直观理解("最多跑 25 轮"),不依赖 token 计费。
327
+ **缺点**:每轮消耗的 token 可能差异很大,无法精确控制成本。
328
+
329
+ ---
330
+
331
+ ## 八、Harness 文件系统(grub 独有)
332
+
333
+ grub 创建了一个完整的 harness 目录:
334
+
335
+ ```
336
+ .grub/<task-id>/
337
+ ├── feature-list.json # 功能清单(ground truth)
338
+ ├── feature-checklist.md # 清单的 markdown 可读版
339
+ ├── progress-log.md # 每轮进展日志
340
+ ├── init.sh # 项目健康检查脚本
341
+ └── state.json # 任务状态持久化
342
+ ```
343
+
344
+ ### 8.1 feature-list.json
345
+
346
+ ```json
347
+ {
348
+ "version": 1,
349
+ "goal": "实现用户认证系统",
350
+ "features": [
351
+ {
352
+ "id": "auth-login-endpoint",
353
+ "category": "functional",
354
+ "description": "POST /auth/login 接受 email+password,返回 JWT",
355
+ "steps": [
356
+ "创建路由和控制器",
357
+ "实现密码哈希验证",
358
+ "生成 JWT token",
359
+ "返回 token 和 user 对象"
360
+ ],
361
+ "passes": false,
362
+ "evidence": null
363
+ }
364
+ ]
365
+ }
366
+ ```
367
+
368
+ **契约**:
369
+ - 初始化阶段:agent 生成 15-40 个 feature,全部 `passes: false`
370
+ - 执行阶段:agent 每轮只能改一个 feature 的 `passes` 和 `evidence` 字段
371
+ - 其他字段(id、category、description、steps)不可变
372
+ - 系统用 `validateFeatureListDiff()` 检查是否有非法修改
373
+
374
+ ### 8.2 init.sh
375
+
376
+ ```bash
377
+ #!/bin/bash
378
+ pwd
379
+ git log --oneline -n 20
380
+ tail -5 .grub/*/progress-log.md
381
+ grep -c '"passes": true' .grub/*/feature-list.json
382
+ npm test # 项目特定的烟测
383
+ ```
384
+
385
+ 每轮执行前运行,确保项目健康。
386
+
387
+ ### 8.3 Codex 的对应物
388
+
389
+ Codex 没有 harness 文件系统。它的"ground truth"是:
390
+ - LLM 自己的记忆(上下文窗口内的对话历史)
391
+ - continuation prompt 中的 objective 描述
392
+ - completion audit prompt 的验证规则
393
+
394
+ ---
395
+
396
+ ## 九、生命周期钩子对比
397
+
398
+ ### 9.1 Codex 的钩子系统
399
+
400
+ ```typescript
401
+ // 6 个扩展 trait
402
+ ThreadLifecycleContributor: on_thread_start, on_thread_resume, on_thread_idle, on_thread_stop
403
+ ConfigContributor: on_config_changed
404
+ TurnLifecycleContributor: on_turn_start, on_turn_stop, on_turn_abort, on_turn_error
405
+ TokenUsageContributor: on_token_usage
406
+ ToolLifecycleContributor: on_tool_finish
407
+ ToolContributor: tools() // 注册 get_goal, create_goal, update_goal
408
+ ```
409
+
410
+ ### 9.2 nanoPencil grub 的钩子
411
+
412
+ grub 不使用生命周期钩子。它在扩展入口(`index.ts`)中:
413
+ - 注册 `/grub` 命令和补全
414
+ - 注册 `user_message` 事件拦截(检测 grub turn 的响应)
415
+ - 注册 `session_start` 事件(发现并恢复持久化的任务)
416
+ - 手动调用 `injectGrubTurn()` 触发每轮
417
+
418
+ **关键差异**:Codex 的 goal 是深度集成到 agent 生命周期的;grub 是通过扩展 API 在外层编排的。
419
+
420
+ ---
421
+
422
+ ## 十、设计哲学差异
423
+
424
+ ### 10.1 Codex:信任 LLM + 预算约束
425
+
426
+ - **信任**:LLM 可以自主判断 complete/blocked
427
+ - **约束**:token 预算硬限制
428
+ - **恢复**:continuation prompt 的 completion audit 是"建议"而非"强制"
429
+ - **哲学**:"给 LLM 足够的上下文和规则,让它做出正确判断"
430
+
431
+ ### 10.2 nanoPencil grub:不信任 LLM + 结构化验证
432
+
433
+ - **不信任**:LLM 说 complete 时,系统验证 feature-list
434
+ - **约束**:轮次 + 失败次数
435
+ - **恢复**:feature-list diff 检查、结构化 `<loop-state>` 解析
436
+ - **哲学**:"LLM 是执行者,系统是裁判"
437
+
438
+ ### 10.3 这反映了什么
439
+
440
+ Codex 是 OpenAI 的产品,倾向于**让模型更强然后信任它**。
441
+ grub 是工程团队的工具,倾向于**用结构约束弥补模型的不确定性**。
442
+
443
+ 两种哲学都有道理:
444
+ - Codex 的方式在模型足够强时效率更高(少一轮验证就少一轮 token)
445
+ - grub 的方式在模型不够强时更可靠(不会 premature completion)
446
+
447
+ ---
448
+
449
+ ## 十一、复刻指南:如何在 nanoPencil 中融合两者
450
+
451
+ 如果你想把 Codex goal 的优点融入 grub,以下是可借鉴的点:
452
+
453
+ ### 11.1 可以直接借鉴的
454
+
455
+ | Codex 特性 | 融入 grub 的方式 |
456
+ |-----------|-----------------|
457
+ | Token 预算 | 在 `GrubTaskState` 加 `tokenBudget` 和 `tokensUsed` 字段 |
458
+ | 自动续作 | 在 `on_thread_idle` 时检查是否有 running task,自动注入下一轮 |
459
+ | 编辑 objective | 加 `/grub edit <new-goal>` 子命令 |
460
+ | 暂停/恢复 | 加 `/grub pause` + 状态 `paused` |
461
+ | 状态行指示器 | 在 TUI status bar 显示当前 grub task 状态 |
462
+ | 记账系统 | 在 `on_tool_finish` 时累加 token 使用 |
463
+
464
+ ### 11.2 不建议借鉴的
465
+
466
+ | Codex 特性 | 原因 |
467
+ |-----------|------|
468
+ | LLM 自判 complete | grub 的 feature-list 门控更可靠 |
469
+ | SQLite 存储 | 文件系统对 grub 的 harness 模式更自然(可 git 追踪) |
470
+ | 6 种状态 | grub 的 5 种 + phase 已经足够表达 |
471
+
472
+ ### 11.3 grub 独有的优势应保留
473
+
474
+ | 特性 | 为什么重要 |
475
+ |------|-----------|
476
+ | feature-list.json | 完成的 ground truth,不依赖 LLM 记忆 |
477
+ | init.sh | 每轮健康检查,防止退化 |
478
+ | progress-log.md | 人类可读的进展记录 |
479
+ | initializer/execution phase | 先规划后执行,防止 LLM 直接跳到实现 |
480
+ | `<loop-state>` 协议 | 结构化的 agent→系统通信 |
481
+ | feature-list diff 验证 | 防止 LLM 偷改清单 |
482
+
483
+ ---
484
+
485
+ ## 十二、总结矩阵
486
+
487
+ | 维度 | Codex `/goal` | nanoPencil `/grub` | 谁更好 |
488
+ |------|--------------|-------------------|--------|
489
+ | **命令丰富度** | 6 个子命令 | 5 个子命令 | Codex(有 edit) |
490
+ | **状态模型** | 6 种状态 | 5 种状态 + 2 种 phase | grub(phase 更清晰) |
491
+ | **续作机制** | idle 自动续作 | controller loop 驱动 | Codex(更无缝) |
492
+ | **完成判定** | LLM 自判 | feature-list 门控 | grub(更可靠) |
493
+ | **错误恢复** | provider 重试 + LLM 自修 | 结构化失败计数 | grub(更可预测) |
494
+ | **成本控制** | token 预算 | 轮次预算 | 各有优劣 |
495
+ | **持久化** | SQLite | 文件系统 | 各有优劣 |
496
+ | **可审计性** | 低(只有 DB 行) | 高(feature-list + progress-log) | grub |
497
+ | **集成深度** | 深(6 个生命周期 trait) | 浅(扩展 API 外层编排) | Codex |
498
+ | **模型依赖** | 高(强依赖模型自律) | 低(结构约束兜底) | grub |
499
+
500
+ **最终结论**:Codex 的 goal 是"给模型自由",grub 是"给模型笼子"。两者不是好坏之分,是信任边界的差异。grub 的 feature-list 门控是它最大的结构性优势,不应被 Codex 的"信任 LLM"哲学取代。
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: custom-provider
3
+ description: Use when the user asks how to add or configure a custom model provider.
4
+ surface: TODO # user entry points: /command, --flag, config key, file location
5
+ owner: core/lib/ai/ # DIP P2 anchor — read its AGENT.md member list to find code
6
+ status: draft
7
+ ---
8
+
9
+ # Custom Providers
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/lib/ai/` — 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
+ [[models]] [[providers]]
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: extensions
3
+ description: Use when the user asks how to write, load, or configure a NanoPencil extension.
4
+ surface: TODO # user entry points: /command, --flag, config key, file location
5
+ owner: core/extensions-host/ # DIP P2 anchor — read its AGENT.md member list to find code
6
+ status: draft
7
+ ---
8
+
9
+ # Extensions
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/extensions-host/` — 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
+ [[sdk]] [[packages]] [[skills]]
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: keybindings
3
+ description: Use when the user asks how to view or remap keybindings.
4
+ surface: TODO # user entry points: /command, --flag, config key, file location
5
+ owner: core/platform/keybindings.ts # DIP P2 anchor — read its AGENT.md member list to find code
6
+ status: draft
7
+ ---
8
+
9
+ # Keybindings
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/platform/keybindings.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
+ [[tui]]