@pencil-agent/nano-pencil 2.0.0-beta.6 → 2.0.0-beta.8
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.
- package/dist/build-meta.json +4 -4
- package/dist/builtin-extensions.js +1 -319
- package/dist/cli/args.d.ts +1 -0
- package/dist/cli/args.js +35 -324
- package/dist/cli/config-selector.js +1 -33
- package/dist/cli/file-processor.js +6 -81
- package/dist/cli/list-models.d.ts +9 -2
- package/dist/cli/list-models.js +2 -88
- package/dist/cli/session-picker.js +1 -36
- package/dist/cli.js +1 -37
- package/dist/config.js +1 -326
- package/dist/core/agent-dir/agent-dir-context.js +1 -84
- package/dist/core/agent-dir/agent-metadata.js +1 -68
- package/dist/core/agent-dir/migration-tool.js +7 -179
- package/dist/core/export-html/ansi-to-html.js +2 -242
- package/dist/core/export-html/index.js +2 -221
- package/dist/core/export-html/template.js +48 -1568
- package/dist/core/export-html/tool-renderer.js +1 -50
- package/dist/core/export-html/vendor/highlight.min.js +4 -1213
- package/dist/core/export-html/vendor/marked.min.js +56 -6
- package/dist/core/extensions-host/index.js +1 -11
- package/dist/core/extensions-host/loader.js +1 -488
- package/dist/core/extensions-host/runner.js +3 -903
- package/dist/core/extensions-host/types.d.ts +11 -6
- package/dist/core/extensions-host/types.js +1 -25
- package/dist/core/extensions-host/wrapper.js +2 -114
- package/dist/core/index.js +1 -19
- package/dist/{node_modules/@pencil-agent/agent-core/dist → core/lib/agent-core/src}/types.d.ts +2 -2
- package/dist/core/lib/agent-core/src/types.js +1 -0
- package/dist/{node_modules/@pencil-agent/ai/dist → core/lib/ai/src}/types.d.ts +17 -2
- package/dist/core/lib/ai/src/types.js +0 -0
- package/dist/core/lib/ai/src/utils/event-stream-types.js +0 -0
- package/dist/core/mcp/figma-auth.js +4 -490
- package/dist/core/mcp/index.js +1 -9
- package/dist/core/mcp/mcp-adapter.js +3 -116
- package/dist/core/mcp/mcp-client.js +6 -839
- package/dist/core/mcp/mcp-config.js +1 -262
- package/dist/core/mcp/mcp-guidance.js +13 -107
- package/dist/core/mcp/mcp-manager.js +1 -98
- package/dist/core/mcp/mcp-types.js +0 -7
- package/dist/core/messages.js +13 -116
- package/dist/core/model/custom-providers.d.ts +5 -1
- package/dist/core/model/custom-providers.js +1 -171
- package/dist/core/model/discovery-cache.d.ts +65 -0
- package/dist/core/model/discovery-cache.js +1 -0
- package/dist/core/model/discovery-cache.test.d.ts +7 -0
- package/dist/core/model/discovery-cache.test.js +1 -0
- package/dist/core/model/discovery.d.ts +79 -0
- package/dist/core/model/discovery.js +1 -0
- package/dist/core/model/discovery.test.d.ts +7 -0
- package/dist/core/model/discovery.test.js +1 -0
- package/dist/core/model/index.d.ts +4 -1
- package/dist/core/model/index.js +1 -7
- package/dist/core/model/known-models.d.ts +65 -0
- package/dist/core/model/known-models.generated.d.ts +2 -0
- package/dist/core/model/known-models.generated.js +1 -0
- package/dist/core/model/known-models.js +1 -0
- package/dist/core/model/switcher.js +1 -149
- package/dist/core/model-registry.d.ts +50 -0
- package/dist/core/model-registry.js +9 -620
- package/dist/core/model-resolver.js +1 -431
- package/dist/core/package-manager.js +3 -1449
- package/dist/core/persona/persona-manager.d.ts +2 -0
- package/dist/core/persona/persona-manager.js +2 -153
- package/dist/core/platform/abort-slot.js +1 -39
- package/dist/core/platform/config/auth-storage.js +1 -395
- package/dist/core/platform/config/defaults.js +1 -1
- package/dist/core/platform/config/diagnostics.js +0 -1
- package/dist/core/platform/config/resolve-config-value.js +1 -60
- package/dist/core/platform/config/resource-loader.js +2 -715
- package/dist/core/platform/config/settings-manager.js +1 -950
- package/dist/core/platform/exec/bash-executor.js +1 -211
- package/dist/core/platform/exec/exec.js +1 -73
- package/dist/core/platform/i18n/index.js +1 -63
- package/dist/core/platform/i18n/messages.js +1 -78
- package/dist/core/platform/i18n/messages.zh.js +1 -78
- package/dist/core/platform/i18n/slash-commands.js +1 -53
- package/dist/core/platform/i18n/slash-commands.zh.js +1 -53
- package/dist/core/platform/i18n/themes.js +1 -11
- package/dist/core/platform/i18n/themes.zh.js +1 -11
- package/dist/core/platform/keybindings.js +1 -162
- package/dist/core/platform/listeners.js +1 -37
- package/dist/core/platform/telemetry/batching-dispatcher.js +1 -89
- package/dist/core/platform/telemetry/build-meta.js +1 -57
- package/dist/core/platform/telemetry/caller-context.js +1 -19
- package/dist/core/platform/telemetry/credentials.js +1 -87
- package/dist/core/platform/telemetry/ext-events.js +1 -189
- package/dist/core/platform/telemetry/index.js +1 -6
- package/dist/core/platform/telemetry/insforge-base.js +1 -160
- package/dist/core/platform/telemetry/types.js +0 -7
- package/dist/core/platform/timings.js +3 -26
- package/dist/core/platform/utils/logger.js +1 -119
- package/dist/core/platform/utils/shell.js +9 -191
- package/dist/core/platform/utils/sleep.js +1 -23
- package/dist/core/platform/utils/tools-manager.js +1 -324
- package/dist/core/prompt/prompt-templates.js +2 -256
- package/dist/core/prompt/system-prompt.js +44 -155
- package/dist/core/runtime/agent-session.d.ts +56 -2
- package/dist/core/runtime/agent-session.js +15 -1777
- package/dist/core/runtime/bash-runner.js +2 -96
- package/dist/core/runtime/compaction-controller.js +1 -230
- package/dist/core/runtime/default-tools.js +1 -10
- package/dist/core/runtime/event-bridge.js +1 -99
- package/dist/core/runtime/event-bus.js +1 -31
- package/dist/core/runtime/export-bridge.js +1 -46
- package/dist/core/runtime/extension-core-bindings.js +3 -231
- package/dist/core/runtime/model-controller.js +1 -227
- package/dist/core/runtime/model-cycle.js +1 -26
- package/dist/core/runtime/pencil-agent.js +1 -303
- package/dist/core/runtime/prompt-assembly.js +3 -29
- package/dist/core/runtime/retry-coordinator.js +1 -151
- package/dist/core/runtime/sdk.d.ts +8 -0
- package/dist/core/runtime/sdk.js +1 -421
- package/dist/core/runtime/session-context.js +0 -12
- package/dist/core/runtime/session-lifecycle-controller.js +1 -158
- package/dist/core/runtime/session-tree-controller.js +1 -187
- package/dist/core/runtime/slash-command-catalog.js +1 -83
- package/dist/core/runtime/thinking-levels.js +1 -63
- package/dist/core/runtime/tool-runtime-controller.js +1 -79
- package/dist/core/runtime/turn-context.js +1 -39
- package/dist/core/session/compaction/branch-summarization.js +10 -207
- package/dist/core/session/compaction/compaction.js +26 -522
- package/dist/core/session/compaction/index.js +1 -9
- package/dist/core/session/compaction/utils.js +16 -133
- package/dist/core/session/session-manager.js +14 -1156
- package/dist/core/skills.js +4 -373
- package/dist/core/slash-commands.js +1 -90
- package/dist/core/soul-integration.js +1 -250
- package/dist/core/soul-options-contract.js +0 -7
- package/dist/core/sub-agent/agent-definition-loader.d.ts +96 -0
- package/dist/core/sub-agent/agent-definition-loader.js +2 -0
- package/dist/core/sub-agent/agent-definition.d.ts +162 -0
- package/dist/core/sub-agent/agent-definition.js +6 -0
- package/dist/core/sub-agent/agent-handoff-safety.d.ts +39 -0
- package/dist/core/sub-agent/agent-handoff-safety.js +1 -0
- package/dist/core/sub-agent/agent-input-output.d.ts +143 -0
- package/dist/core/sub-agent/agent-input-output.js +1 -0
- package/dist/core/sub-agent/agent-output-persistence.d.ts +43 -0
- package/dist/core/sub-agent/agent-output-persistence.js +3 -0
- package/dist/core/sub-agent/agent-prompt-builder.d.ts +37 -0
- package/dist/core/sub-agent/agent-prompt-builder.js +2 -0
- package/dist/core/sub-agent/agent-registry.d.ts +145 -0
- package/dist/core/sub-agent/agent-registry.js +1 -0
- package/dist/core/sub-agent/agent-result-extractor.d.ts +28 -0
- package/dist/core/sub-agent/agent-result-extractor.js +3 -0
- package/dist/core/sub-agent/agent-telemetry.d.ts +71 -0
- package/dist/core/sub-agent/agent-telemetry.js +1 -0
- package/dist/core/sub-agent/agent-tool-filter.d.ts +89 -0
- package/dist/core/sub-agent/agent-tool-filter.js +2 -0
- package/dist/core/sub-agent/agent-tool.d.ts +69 -0
- package/dist/core/sub-agent/agent-tool.js +11 -0
- package/dist/core/sub-agent/index.d.ts +19 -4
- package/dist/core/sub-agent/index.js +1 -9
- package/dist/core/sub-agent/send-message-tool.d.ts +33 -0
- package/dist/core/sub-agent/send-message-tool.js +2 -0
- package/dist/core/sub-agent/sub-agent-backend.d.ts +12 -0
- package/dist/core/sub-agent/sub-agent-backend.js +7 -225
- package/dist/core/sub-agent/sub-agent-runtime.d.ts +1 -5
- package/dist/core/sub-agent/sub-agent-runtime.js +1 -54
- package/dist/core/sub-agent/sub-agent-types.d.ts +16 -0
- package/dist/core/sub-agent/sub-agent-types.js +0 -8
- package/dist/core/sub-agent/subprocess-backend.js +1 -104
- package/dist/core/sub-agent/subprocess-worker.js +1 -40
- package/dist/core/theme-contract.js +0 -12
- package/dist/core/tools/bash.d.ts +8 -2
- package/dist/core/tools/bash.js +21 -424
- package/dist/core/tools/edit-diff.js +16 -244
- package/dist/core/tools/edit.js +1 -146
- package/dist/core/tools/file-state-cache.d.ts +30 -0
- package/dist/core/tools/file-state-cache.js +1 -0
- package/dist/core/tools/find.d.ts +2 -0
- package/dist/core/tools/find.js +8 -208
- package/dist/core/tools/grep.d.ts +14 -0
- package/dist/core/tools/grep.js +13 -248
- package/dist/core/tools/index.d.ts +14 -1
- package/dist/core/tools/index.js +1 -109
- package/dist/core/tools/input-validation.js +1 -14
- package/dist/core/tools/ls.js +4 -125
- package/dist/core/tools/orchestrator.js +1 -102
- package/dist/core/tools/path-utils.js +1 -86
- package/dist/core/tools/pdf-extract.d.ts +11 -0
- package/dist/core/tools/pdf-extract.js +1 -0
- package/dist/core/tools/read.d.ts +2 -0
- package/dist/core/tools/read.js +11 -169
- package/dist/core/tools/source.js +1 -96
- package/dist/core/tools/time.js +2 -51
- package/dist/core/tools/truncate.js +5 -201
- package/dist/core/tools/write-guard.js +1 -26
- package/dist/core/tools/write.js +1 -78
- package/dist/core/workspace/index.js +1 -7
- package/dist/core/workspace/worktree-manager.js +3 -374
- package/dist/extensions/builtin/AGENT.md +10 -0
- package/dist/extensions/builtin/ask-user-question/ask-user-question-tool.d.ts +9 -0
- package/dist/extensions/builtin/ask-user-question/ask-user-question-tool.js +4 -0
- package/dist/extensions/builtin/ask-user-question/index.d.ts +8 -0
- package/dist/extensions/builtin/ask-user-question/index.js +1 -0
- package/dist/extensions/builtin/ask-user-question/prompt.d.ts +14 -0
- package/dist/extensions/builtin/ask-user-question/prompt.js +30 -0
- package/dist/extensions/builtin/ask-user-question/types.d.ts +69 -0
- package/dist/extensions/builtin/ask-user-question/types.js +1 -0
- package/dist/extensions/builtin/browser/index.js +15 -404
- package/dist/extensions/builtin/btw/index.js +9 -111
- package/dist/extensions/builtin/debug/collectors.js +7 -315
- package/dist/extensions/builtin/debug/index.js +24 -253
- package/dist/extensions/builtin/diagnostics/diagnostic-buffer.js +1 -139
- package/dist/extensions/builtin/diagnostics/index.js +1 -120
- package/dist/extensions/builtin/diagnostics/redaction.js +1 -45
- package/dist/extensions/builtin/diagnostics/reporter.js +1 -204
- package/dist/extensions/builtin/diagnostics/types.js +1 -7
- package/dist/extensions/builtin/discipline/index.js +7 -117
- package/dist/extensions/builtin/goal/README.md +67 -0
- package/dist/extensions/builtin/goal/goal-command.d.ts +13 -0
- package/dist/extensions/builtin/goal/goal-command.js +9 -0
- package/dist/extensions/builtin/goal/goal-controller.d.ts +114 -0
- package/dist/extensions/builtin/goal/goal-controller.js +1 -0
- package/dist/extensions/builtin/goal/goal-format.d.ts +52 -0
- package/dist/extensions/builtin/goal/goal-format.js +1 -0
- package/dist/extensions/builtin/goal/goal-parser.d.ts +27 -0
- package/dist/extensions/builtin/goal/goal-parser.js +2 -0
- package/dist/extensions/builtin/goal/goal-prompts.d.ts +13 -0
- package/dist/extensions/builtin/goal/goal-prompts.js +4 -0
- package/dist/extensions/builtin/goal/goal-store.d.ts +28 -0
- package/dist/extensions/builtin/goal/goal-store.js +1 -0
- package/dist/extensions/builtin/goal/goal-tools.d.ts +26 -0
- package/dist/extensions/builtin/goal/goal-tools.js +3 -0
- package/dist/extensions/builtin/goal/goal-types.d.ts +87 -0
- package/dist/extensions/builtin/goal/goal-types.js +1 -0
- package/dist/extensions/builtin/goal/index.d.ts +8 -0
- package/dist/extensions/builtin/goal/index.js +7 -0
- package/dist/extensions/builtin/grub/README.md +11 -0
- package/dist/extensions/builtin/grub/grub-controller.d.ts +2 -1
- package/dist/extensions/builtin/grub/grub-controller.js +1 -345
- package/dist/extensions/builtin/grub/grub-decision.js +1 -42
- package/dist/extensions/builtin/grub/grub-feature-list.d.ts +18 -0
- package/dist/extensions/builtin/grub/grub-feature-list.js +2 -213
- package/dist/extensions/builtin/grub/grub-format.js +4 -87
- package/dist/extensions/builtin/grub/grub-harness.js +3 -71
- package/dist/extensions/builtin/grub/grub-i18n.js +1 -198
- package/dist/extensions/builtin/grub/grub-parser.js +2 -164
- package/dist/extensions/builtin/grub/grub-persistence.js +2 -231
- package/dist/extensions/builtin/grub/grub-prompts.js +34 -92
- package/dist/extensions/builtin/grub/grub-turn.js +1 -61
- package/dist/extensions/builtin/grub/grub-types.d.ts +6 -0
- package/dist/extensions/builtin/grub/grub-types.js +1 -2
- package/dist/extensions/builtin/grub/index.js +6 -295
- package/dist/extensions/builtin/idle-think/curiosity.js +2 -137
- package/dist/extensions/builtin/idle-think/idle-think-runtime.js +1 -148
- package/dist/extensions/builtin/idle-think/index.js +1 -48
- package/dist/extensions/builtin/idle-think/insights.js +5 -131
- package/dist/extensions/builtin/idle-think/thinker.js +9 -208
- package/dist/extensions/builtin/insights/html-report.d.ts +21 -0
- package/dist/extensions/builtin/insights/html-report.js +463 -0
- package/dist/extensions/builtin/insights/index.d.ts +24 -0
- package/dist/extensions/builtin/insights/index.js +2 -0
- package/dist/extensions/builtin/insights/insights-engine.d.ts +18 -0
- package/dist/extensions/builtin/insights/insights-engine.js +39 -0
- package/dist/extensions/builtin/insights/prompts.d.ts +17 -0
- package/dist/extensions/builtin/insights/prompts.js +180 -0
- package/dist/extensions/builtin/insights/session-scanner.d.ts +27 -0
- package/dist/extensions/builtin/insights/session-scanner.js +19 -0
- package/dist/extensions/builtin/insights/stats.d.ts +13 -0
- package/dist/extensions/builtin/insights/stats.js +1 -0
- package/dist/extensions/builtin/insights/types.d.ts +199 -0
- package/dist/extensions/builtin/insights/types.js +0 -0
- package/dist/extensions/builtin/link-world/index.js +19 -431
- package/dist/extensions/builtin/loop/cron/cron-parser.d.ts +42 -29
- package/dist/extensions/builtin/loop/cron/cron-parser.js +1 -226
- package/dist/extensions/builtin/loop/cron/cron-scheduler.d.ts +75 -46
- package/dist/extensions/builtin/loop/cron/cron-scheduler.js +10 -329
- package/dist/extensions/builtin/loop/cron/cron-tasks-lock.d.ts +42 -0
- package/dist/extensions/builtin/loop/cron/cron-tasks-lock.js +1 -0
- package/dist/extensions/builtin/loop/cron/cron-tasks.d.ts +182 -69
- package/dist/extensions/builtin/loop/cron/cron-tasks.js +2 -425
- package/dist/extensions/builtin/loop/cron/index.d.ts +16 -10
- package/dist/extensions/builtin/loop/cron/index.js +1 -10
- package/dist/extensions/builtin/loop/cron-tools/cron-create-tool.d.ts +9 -4
- package/dist/extensions/builtin/loop/cron-tools/cron-create-tool.js +1 -71
- package/dist/extensions/builtin/loop/cron-tools/cron-delete-tool.d.ts +9 -4
- package/dist/extensions/builtin/loop/cron-tools/cron-delete-tool.js +1 -56
- package/dist/extensions/builtin/loop/cron-tools/cron-list-tool.d.ts +9 -4
- package/dist/extensions/builtin/loop/cron-tools/cron-list-tool.js +2 -79
- package/dist/extensions/builtin/loop/cron-tools/index.d.ts +9 -4
- package/dist/extensions/builtin/loop/cron-tools/index.js +1 -9
- package/dist/extensions/builtin/loop/cron-tools/prompt.d.ts +35 -0
- package/dist/extensions/builtin/loop/cron-tools/prompt.js +38 -0
- package/dist/extensions/builtin/loop/index.d.ts +14 -3
- package/dist/extensions/builtin/loop/index.js +2 -476
- package/dist/extensions/builtin/loop/loop-skill.d.ts +18 -0
- package/dist/extensions/builtin/loop/loop-skill.js +58 -0
- package/dist/extensions/builtin/lsp/index.d.ts +8 -0
- package/dist/extensions/builtin/lsp/index.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-client.d.ts +22 -0
- package/dist/extensions/builtin/lsp/lsp-client.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-config.d.ts +8 -0
- package/dist/extensions/builtin/lsp/lsp-config.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-formatters.d.ts +15 -0
- package/dist/extensions/builtin/lsp/lsp-formatters.js +18 -0
- package/dist/extensions/builtin/lsp/lsp-server-instance.d.ts +24 -0
- package/dist/extensions/builtin/lsp/lsp-server-instance.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-server-manager.d.ts +21 -0
- package/dist/extensions/builtin/lsp/lsp-server-manager.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-tool.d.ts +33 -0
- package/dist/extensions/builtin/lsp/lsp-tool.js +2 -0
- package/dist/extensions/builtin/lsp/types.d.ts +31 -0
- package/dist/extensions/builtin/lsp/types.js +1 -0
- package/dist/extensions/builtin/mcp/index.js +25 -385
- package/dist/extensions/builtin/plan/clear-context-state.d.ts +8 -0
- package/dist/extensions/builtin/plan/clear-context-state.js +1 -0
- package/dist/extensions/builtin/plan/enter-plan-mode-tool.d.ts +3 -1
- package/dist/extensions/builtin/plan/enter-plan-mode-tool.js +2 -64
- package/dist/extensions/builtin/plan/exit-plan-mode-tool.d.ts +10 -1
- package/dist/extensions/builtin/plan/exit-plan-mode-tool.js +13 -147
- package/dist/extensions/builtin/plan/index.js +24 -365
- package/dist/extensions/builtin/plan/plan-agents.js +8 -62
- package/dist/extensions/builtin/plan/plan-file-manager.js +1 -292
- package/dist/extensions/builtin/plan/plan-permissions.js +12 -234
- package/dist/extensions/builtin/plan/plan-validation.js +5 -77
- package/dist/extensions/builtin/plan/plan-workflow-prompt.d.ts +10 -4
- package/dist/extensions/builtin/plan/plan-workflow-prompt.js +60 -126
- package/dist/extensions/builtin/plan/teammate-approval.js +3 -134
- package/dist/extensions/builtin/plan/types.d.ts +11 -0
- package/dist/extensions/builtin/plan/types.js +1 -17
- package/dist/extensions/builtin/presence/index.d.ts +7 -0
- package/dist/extensions/builtin/presence/index.js +15 -708
- package/dist/extensions/builtin/presence/presence-memory.js +1 -203
- package/dist/extensions/builtin/recap/{CLAUDE.md → AGENT.md} +2 -2
- package/dist/extensions/builtin/recap/index.js +1 -116
- package/dist/extensions/builtin/recap/recap-budget.js +1 -21
- package/dist/extensions/builtin/recap/recap-extractor.js +3 -128
- package/dist/extensions/builtin/recap/recap-renderer.js +2 -55
- package/dist/extensions/builtin/recap/recap-synthesizer.js +12 -106
- package/dist/extensions/builtin/recap/recap-types.js +1 -16
- package/dist/extensions/builtin/sal/anchors.js +1 -248
- package/dist/extensions/builtin/sal/eval/index.js +1 -75
- package/dist/extensions/builtin/sal/eval/insforge-sink.js +1 -293
- package/dist/extensions/builtin/sal/eval/jsonl-sink.js +3 -93
- package/dist/extensions/builtin/sal/eval/noop-sink.js +1 -12
- package/dist/extensions/builtin/sal/eval/types.js +1 -21
- package/dist/extensions/builtin/sal/index.js +7 -720
- package/dist/extensions/builtin/sal/sal-config.js +1 -99
- package/dist/extensions/builtin/sal/sal-context.js +2 -94
- package/dist/extensions/builtin/sal/sal-runtime.js +0 -7
- package/dist/extensions/builtin/sal/sal-trace.js +1 -140
- package/dist/extensions/builtin/sal/terrain.js +3 -364
- package/dist/extensions/builtin/sal/weights.js +1 -48
- package/dist/extensions/builtin/security-audit/engine/detector.js +1 -251
- package/dist/extensions/builtin/security-audit/engine/interceptor.js +15 -194
- package/dist/extensions/builtin/security-audit/engine/logger.js +14 -225
- package/dist/extensions/builtin/security-audit/index.js +49 -264
- package/dist/extensions/builtin/security-audit/interface.js +1 -78
- package/dist/extensions/builtin/soul/index.js +1 -16
- package/dist/extensions/builtin/subagent/index.js +8 -214
- package/dist/extensions/builtin/subagent/subagent-parser.js +2 -76
- package/dist/extensions/builtin/subagent/subagent-runner.js +8 -275
- package/dist/extensions/builtin/subagent/subagent-types.js +0 -7
- package/dist/extensions/builtin/task/index.d.ts +8 -0
- package/dist/extensions/builtin/task/index.js +1 -0
- package/dist/extensions/builtin/task/task-store.d.ts +38 -0
- package/dist/extensions/builtin/task/task-store.js +1 -0
- package/dist/extensions/builtin/task/task-tools/task-create-tool.d.ts +37 -0
- package/dist/extensions/builtin/task/task-tools/task-create-tool.js +40 -0
- package/dist/extensions/builtin/task/task-tools/task-get-tool.d.ts +31 -0
- package/dist/extensions/builtin/task/task-tools/task-get-tool.js +23 -0
- package/dist/extensions/builtin/task/task-tools/task-list-tool.d.ts +27 -0
- package/dist/extensions/builtin/task/task-tools/task-list-tool.js +22 -0
- package/dist/extensions/builtin/task/task-tools/task-output-tool.d.ts +32 -0
- package/dist/extensions/builtin/task/task-tools/task-output-tool.js +10 -0
- package/dist/extensions/builtin/task/task-tools/task-stop-tool.d.ts +31 -0
- package/dist/extensions/builtin/task/task-tools/task-stop-tool.js +5 -0
- package/dist/extensions/builtin/task/task-tools/task-update-tool.d.ts +47 -0
- package/dist/extensions/builtin/task/task-tools/task-update-tool.js +77 -0
- package/dist/extensions/builtin/task/task-tools/tool-search-tool.d.ts +34 -0
- package/dist/extensions/builtin/task/task-tools/tool-search-tool.js +14 -0
- package/dist/extensions/builtin/task/task-types.d.ts +30 -0
- package/dist/extensions/builtin/task/task-types.js +1 -0
- package/dist/extensions/builtin/teach/README.md +197 -0
- package/dist/extensions/builtin/teach/index.d.ts +12 -0
- package/dist/extensions/builtin/teach/index.js +6 -0
- package/dist/extensions/builtin/teach/references/analogy-library.md +153 -0
- package/dist/extensions/builtin/teach/references/learning-paths.md +214 -0
- package/dist/extensions/builtin/teach/references/source-verification.md +268 -0
- package/dist/extensions/builtin/teach/references/teaching-template.md +237 -0
- package/dist/extensions/builtin/teach/teach-format.d.ts +35 -0
- package/dist/extensions/builtin/teach/teach-format.js +6 -0
- package/dist/extensions/builtin/teach/teach-i18n.d.ts +47 -0
- package/dist/extensions/builtin/teach/teach-i18n.js +1 -0
- package/dist/extensions/builtin/teach/teach-persistence.d.ts +36 -0
- package/dist/extensions/builtin/teach/teach-persistence.js +35 -0
- package/dist/extensions/builtin/teach/teach-prompts.d.ts +52 -0
- package/dist/extensions/builtin/teach/teach-prompts.js +35 -0
- package/dist/extensions/builtin/teach/teach-runtime.d.ts +93 -0
- package/dist/extensions/builtin/teach/teach-runtime.js +9 -0
- package/dist/extensions/builtin/teach/teach-types.d.ts +81 -0
- package/dist/extensions/builtin/teach/teach-types.js +0 -0
- package/dist/extensions/builtin/team/index.js +11 -626
- package/dist/extensions/builtin/team/team-dashboard.js +1 -117
- package/dist/extensions/builtin/team/team-harness.js +18 -351
- package/dist/extensions/builtin/team/team-mailbox.js +4 -110
- package/dist/extensions/builtin/team/team-orchestrator.js +5 -469
- package/dist/extensions/builtin/team/team-parser.js +2 -334
- package/dist/extensions/builtin/team/team-permissions.js +1 -120
- package/dist/extensions/builtin/team/team-presets.js +2 -259
- package/dist/extensions/builtin/team/team-psyche.js +5 -135
- package/dist/extensions/builtin/team/team-runtime-helpers.js +2 -324
- package/dist/extensions/builtin/team/team-runtime.js +3 -671
- package/dist/extensions/builtin/team/team-state-store.js +2 -75
- package/dist/extensions/builtin/team/team-task-store.js +2 -93
- package/dist/extensions/builtin/team/team-transcript.js +2 -58
- package/dist/extensions/builtin/team/team-types.js +0 -7
- package/dist/extensions/builtin/team/team-ui.js +2 -270
- package/dist/extensions/builtin/token-save/config.js +1 -66
- package/dist/extensions/builtin/token-save/filters.js +24 -279
- package/dist/extensions/builtin/token-save/index.js +4 -182
- package/dist/extensions/builtin/token-save/lexer.js +1 -51
- package/dist/extensions/builtin/token-save/recovery.js +1 -21
- package/dist/extensions/builtin/token-save/rewrite.js +1 -73
- package/dist/extensions/builtin/token-save/runner.js +3 -55
- package/dist/extensions/builtin/token-save/stream.js +1 -33
- package/dist/extensions/builtin/token-save/toml-dsl.js +3 -34
- package/dist/extensions/builtin/token-save/tracking.js +8 -74
- package/dist/extensions/optional/export-html/index.js +2 -269
- package/dist/extensions/optional/simplify/index.js +32 -423
- package/dist/index.js +1 -50
- package/dist/main.js +22 -908
- package/dist/migrations.js +4 -261
- package/dist/modes/acp/acp-mode.js +25 -1086
- package/dist/modes/index.js +1 -13
- package/dist/modes/interactive/agent-loop-status.js +1 -41
- package/dist/modes/interactive/components/apikey-input.js +3 -23
- package/dist/modes/interactive/components/armin.js +1 -338
- package/dist/modes/interactive/components/assistant-message.js +1 -101
- package/dist/modes/interactive/components/attachments-bar.js +1 -75
- package/dist/modes/interactive/components/bash-execution.js +13 -167
- package/dist/modes/interactive/components/bordered-loader.js +1 -56
- package/dist/modes/interactive/components/branch-summary-message.js +3 -49
- package/dist/modes/interactive/components/buddy/pet-sprites.js +1 -255
- package/dist/modes/interactive/components/compaction-summary-message.js +3 -50
- package/dist/modes/interactive/components/config-selector.js +1 -484
- package/dist/modes/interactive/components/countdown-timer.js +1 -38
- package/dist/modes/interactive/components/custom-editor.d.ts +9 -0
- package/dist/modes/interactive/components/custom-editor.js +1 -101
- package/dist/modes/interactive/components/custom-message.js +2 -88
- package/dist/modes/interactive/components/daxnuts.js +1 -145
- package/dist/modes/interactive/components/diff.js +3 -138
- package/dist/modes/interactive/components/dynamic-border.js +1 -26
- package/dist/modes/interactive/components/editor-buddy-layout.js +1 -44
- package/dist/modes/interactive/components/extension-editor.js +1 -115
- package/dist/modes/interactive/components/extension-input.js +2 -69
- package/dist/modes/interactive/components/extension-selector.js +2 -90
- package/dist/modes/interactive/components/footer.js +1 -239
- package/dist/modes/interactive/components/index.d.ts +1 -0
- package/dist/modes/interactive/components/index.js +1 -44
- package/dist/modes/interactive/components/keybinding-hints.js +1 -66
- package/dist/modes/interactive/components/login-dialog.js +1 -150
- package/dist/modes/interactive/components/memory-stats.js +2 -96
- package/dist/modes/interactive/components/model-selector.d.ts +8 -1
- package/dist/modes/interactive/components/model-selector.js +2 -284
- package/dist/modes/interactive/components/notification-queue.d.ts +49 -0
- package/dist/modes/interactive/components/notification-queue.js +1 -0
- package/dist/modes/interactive/components/oauth-selector.js +1 -94
- package/dist/modes/interactive/components/pencil-loader.d.ts +7 -1
- package/dist/modes/interactive/components/pencil-loader.js +1 -123
- package/dist/modes/interactive/components/persona-selector.d.ts +24 -0
- package/dist/modes/interactive/components/persona-selector.js +1 -0
- package/dist/modes/interactive/components/plan-progress-panel.d.ts +24 -0
- package/dist/modes/interactive/components/plan-progress-panel.js +1 -0
- package/dist/modes/interactive/components/provider-selector.js +1 -150
- package/dist/modes/interactive/components/raw-text.js +3 -28
- package/dist/modes/interactive/components/scoped-models-selector.js +1 -280
- package/dist/modes/interactive/components/session-selector-search.js +1 -160
- package/dist/modes/interactive/components/session-selector.js +2 -856
- package/dist/modes/interactive/components/settings-selector.js +1 -372
- package/dist/modes/interactive/components/show-images-selector.js +1 -40
- package/dist/modes/interactive/components/skill-invocation-message.js +3 -52
- package/dist/modes/interactive/components/soul-stats.js +2 -159
- package/dist/modes/interactive/components/sub-agent-panel.d.ts +24 -0
- package/dist/modes/interactive/components/sub-agent-panel.js +1 -0
- package/dist/modes/interactive/components/theme-selector.js +1 -51
- package/dist/modes/interactive/components/thinking-selector.js +1 -52
- package/dist/modes/interactive/components/tool-execution.js +58 -757
- package/dist/modes/interactive/components/tree-selector.js +1 -939
- package/dist/modes/interactive/components/user-message-selector.js +1 -118
- package/dist/modes/interactive/components/user-message.js +1 -21
- package/dist/modes/interactive/components/visual-truncate.js +1 -38
- package/dist/modes/interactive/controllers/auth-provider-config-controller.d.ts +3 -1
- package/dist/modes/interactive/controllers/auth-provider-config-controller.js +1 -401
- package/dist/modes/interactive/controllers/extension-ui/custom-overlay-host.js +1 -90
- package/dist/modes/interactive/controllers/extension-ui/editor-component-adapter.js +1 -78
- package/dist/modes/interactive/controllers/extension-ui/persistent-surface-registry.js +1 -169
- package/dist/modes/interactive/controllers/extension-ui/prompt-host.js +2 -109
- package/dist/modes/interactive/controllers/image-pipeline-controller.js +1 -359
- package/dist/modes/interactive/controllers/input-submit-controller.d.ts +6 -0
- package/dist/modes/interactive/controllers/input-submit-controller.js +2 -164
- package/dist/modes/interactive/controllers/interrupt-controller.js +1 -82
- package/dist/modes/interactive/controllers/model-overlay-controller.d.ts +3 -0
- package/dist/modes/interactive/controllers/model-overlay-controller.js +3 -346
- package/dist/modes/interactive/controllers/self-update-controller.js +24 -525
- package/dist/modes/interactive/controllers/settings-overlay-controller.js +2 -165
- package/dist/modes/interactive/controllers/slash-dispatcher-controller.js +1 -183
- package/dist/modes/interactive/controllers/stream-render-controller.d.ts +3 -2
- package/dist/modes/interactive/controllers/stream-render-controller.js +2 -325
- package/dist/modes/interactive/controllers/tree-overlay-controller.js +1 -171
- package/dist/modes/interactive/footer-data-provider.js +1 -147
- package/dist/modes/interactive/interactive-mode.d.ts +25 -1
- package/dist/modes/interactive/interactive-mode.js +100 -3441
- package/dist/modes/interactive/services/tips.js +1 -115
- package/dist/modes/interactive/slash-command-arguments.js +1 -126
- package/dist/modes/interactive/state/interactive-state.d.ts +29 -0
- package/dist/modes/interactive/state/interactive-state.js +1 -43
- package/dist/modes/interactive/theme/theme.js +16 -970
- package/dist/modes/print-mode.js +2 -171
- package/dist/modes/rpc/rpc-client.js +2 -417
- package/dist/modes/rpc/rpc-mode.js +1 -568
- package/dist/modes/rpc/rpc-types.js +0 -1
- package/dist/modes/utils/agent-loop-result-format.js +1 -69
- package/dist/modes/utils/clipboard-image.js +1 -170
- package/dist/modes/utils/clipboard-native.js +1 -47
- package/dist/modes/utils/clipboard.js +1 -72
- package/dist/modes/utils/image-convert.js +1 -40
- package/dist/modes/utils/image-resize.js +1 -186
- package/dist/nanopencil-defaults.d.ts +190 -4
- package/dist/nanopencil-defaults.js +2 -854
- package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop-continuations.js +1 -60
- package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop-stream-events.js +1 -55
- package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop-tool-results.js +3 -137
- package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop-tool-summaries.js +1 -64
- package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop.js +3 -913
- package/dist/node_modules/@pencil-agent/agent-core/dist/agent-run-result.js +1 -32
- package/dist/node_modules/@pencil-agent/agent-core/dist/agent.js +1 -522
- package/dist/node_modules/@pencil-agent/agent-core/dist/errors.js +1 -146
- package/dist/node_modules/@pencil-agent/agent-core/dist/index.js +1 -19
- package/dist/node_modules/@pencil-agent/agent-core/dist/proxy.js +2 -279
- package/dist/node_modules/@pencil-agent/agent-core/dist/structured-adaptive-agent-loop.js +1 -625
- package/dist/node_modules/@pencil-agent/agent-core/dist/structured-adaptive-streaming-tool-executor.js +1 -189
- package/dist/node_modules/@pencil-agent/agent-core/dist/structured-adaptive-tool-orchestration.js +3 -319
- package/dist/node_modules/@pencil-agent/agent-core/dist/types.js +1 -13
- package/dist/node_modules/@pencil-agent/ai/dist/api-registry.js +1 -152
- package/dist/node_modules/@pencil-agent/ai/dist/cli.js +9 -109
- package/dist/node_modules/@pencil-agent/ai/dist/config-path.js +1 -17
- package/dist/node_modules/@pencil-agent/ai/dist/debug-logger.js +4 -218
- package/dist/node_modules/@pencil-agent/ai/dist/env-api-keys.js +1 -107
- package/dist/node_modules/@pencil-agent/ai/dist/env.js +1 -7
- package/dist/node_modules/@pencil-agent/ai/dist/events.js +1 -7
- package/dist/node_modules/@pencil-agent/ai/dist/index.js +1 -20
- package/dist/node_modules/@pencil-agent/ai/dist/json.js +1 -7
- package/dist/node_modules/@pencil-agent/ai/dist/models.generated.js +1 -14928
- package/dist/node_modules/@pencil-agent/ai/dist/models.js +1 -60
- package/dist/node_modules/@pencil-agent/ai/dist/overflow.js +1 -7
- package/dist/node_modules/@pencil-agent/ai/dist/providers/amazon-bedrock.js +1 -606
- package/dist/node_modules/@pencil-agent/ai/dist/providers/anthropic.js +2 -737
- package/dist/node_modules/@pencil-agent/ai/dist/providers/azure-openai-responses.js +1 -193
- package/dist/node_modules/@pencil-agent/ai/dist/providers/github-copilot-headers.js +1 -34
- package/dist/node_modules/@pencil-agent/ai/dist/providers/google-gemini-cli.js +2 -753
- package/dist/node_modules/@pencil-agent/ai/dist/providers/google-shared.js +2 -311
- package/dist/node_modules/@pencil-agent/ai/dist/providers/google-vertex.js +1 -380
- package/dist/node_modules/@pencil-agent/ai/dist/providers/google.js +1 -360
- package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-codex-responses.js +7 -704
- package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-completions.js +6 -870
- package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-responses-shared.js +10 -432
- package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-responses.js +1 -207
- package/dist/node_modules/@pencil-agent/ai/dist/providers/register-builtins.js +1 -86
- package/dist/node_modules/@pencil-agent/ai/dist/providers/simple-options.js +1 -40
- package/dist/node_modules/@pencil-agent/ai/dist/providers/transform-messages.js +1 -175
- package/dist/node_modules/@pencil-agent/ai/dist/registry.js +1 -8
- package/dist/node_modules/@pencil-agent/ai/dist/schema.js +1 -9
- package/dist/node_modules/@pencil-agent/ai/dist/stream.js +1 -324
- package/dist/node_modules/@pencil-agent/ai/dist/types.js +0 -7
- package/dist/node_modules/@pencil-agent/ai/dist/utils/event-stream-types.js +0 -7
- package/dist/node_modules/@pencil-agent/ai/dist/utils/event-stream.js +1 -98
- package/dist/node_modules/@pencil-agent/ai/dist/utils/http-proxy.js +1 -20
- package/dist/node_modules/@pencil-agent/ai/dist/utils/json-parse.js +1 -34
- package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/anthropic.js +1 -109
- package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/decode-credential.js +1 -25
- package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/github-copilot.js +1 -286
- package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/google-antigravity.js +1 -378
- package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/google-gemini-cli.js +1 -483
- package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/index.js +1 -131
- package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/openai-codex.js +2 -376
- package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/pkce.js +1 -36
- package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/types.js +0 -7
- package/dist/node_modules/@pencil-agent/ai/dist/utils/overflow.js +1 -120
- package/dist/node_modules/@pencil-agent/ai/dist/utils/sanitize-unicode.js +1 -20
- package/dist/node_modules/@pencil-agent/ai/dist/utils/typebox-helpers.js +1 -26
- package/dist/node_modules/@pencil-agent/ai/dist/utils/validation.js +6 -78
- package/dist/node_modules/@pencil-agent/ai/package.json +24 -24
- package/dist/node_modules/@pencil-agent/tui/dist/autocomplete.js +2 -624
- package/dist/node_modules/@pencil-agent/tui/dist/components/box.js +1 -109
- package/dist/node_modules/@pencil-agent/tui/dist/components/cached-container.js +1 -0
- package/dist/node_modules/@pencil-agent/tui/dist/components/cancellable-loader.js +1 -40
- package/dist/node_modules/@pencil-agent/tui/dist/components/editor.js +21 -1697
- package/dist/node_modules/@pencil-agent/tui/dist/components/image.js +1 -74
- package/dist/node_modules/@pencil-agent/tui/dist/components/input.js +2 -438
- package/dist/node_modules/@pencil-agent/tui/dist/components/loader.js +1 -54
- package/dist/node_modules/@pencil-agent/tui/dist/components/markdown.js +7 -634
- package/dist/node_modules/@pencil-agent/tui/dist/components/select-list.js +1 -157
- package/dist/node_modules/@pencil-agent/tui/dist/components/settings-list.js +1 -190
- package/dist/node_modules/@pencil-agent/tui/dist/components/spacer.js +1 -28
- package/dist/node_modules/@pencil-agent/tui/dist/components/text.js +1 -94
- package/dist/node_modules/@pencil-agent/tui/dist/components/truncated-text.js +2 -56
- package/dist/node_modules/@pencil-agent/tui/dist/editor-component.js +0 -7
- package/dist/node_modules/@pencil-agent/tui/dist/fuzzy.js +1 -152
- package/dist/node_modules/@pencil-agent/tui/dist/index.js +1 -37
- package/dist/node_modules/@pencil-agent/tui/dist/keybindings.js +1 -119
- package/dist/node_modules/@pencil-agent/tui/dist/keys.js +5 -948
- package/dist/node_modules/@pencil-agent/tui/dist/kill-ring.js +1 -49
- package/dist/node_modules/@pencil-agent/tui/dist/stdin-buffer.js +1 -307
- package/dist/node_modules/@pencil-agent/tui/dist/terminal-image.js +1 -287
- package/dist/node_modules/@pencil-agent/tui/dist/terminal.js +1 -266
- package/dist/node_modules/@pencil-agent/tui/dist/tui.js +12 -1001
- package/dist/node_modules/@pencil-agent/tui/dist/undo-stack.js +1 -30
- package/dist/node_modules/@pencil-agent/tui/dist/utils.js +2 -811
- package/dist/packages/extension-sdk/src/index.js +1 -12
- package/dist/packages/extension-sdk/src/lifecycle.js +0 -13
- package/dist/packages/extension-sdk/src/tools.js +0 -12
- package/dist/packages/mem-core/src/store.js +1 -120
- package/dist/packages/mem-core/src/types.js +0 -7
- package/dist/packages/soul-core/src/config.js +1 -92
- package/dist/packages/soul-core/src/diagnostics.js +1 -56
- package/dist/packages/soul-core/src/evolution.js +1 -273
- package/dist/packages/soul-core/src/index.js +1 -13
- package/dist/packages/soul-core/src/injection.js +8 -280
- package/dist/packages/soul-core/src/manager.js +1 -441
- package/dist/packages/soul-core/src/store.js +1 -279
- package/dist/packages/soul-core/src/types.js +0 -7
- package/dist/utils/changelog.js +4 -92
- package/dist/utils/diagnostics.js +1 -83
- package/dist/utils/frontmatter.js +4 -31
- package/dist/utils/git.js +1 -168
- package/dist/utils/mime.js +1 -31
- package/dist/utils/photon.js +1 -106
- package/dist/utils/startup-profiler.js +2 -150
- package/docs/cc-agent-design.md +1297 -0
- package/docs/cc-tui-design.md +1333 -0
- package/docs/codex-goal-command-impl.md +1055 -0
- package/docs/codex-goal-vs-grub.md +500 -0
- package/docs/custom-provider.md +27 -0
- package/docs/extensions.md +27 -0
- package/docs/keybindings.md +27 -0
- package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/200/273/347/273/223.md" +251 -0
- package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/212/245/345/221/212.md" +123 -0
- package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210.md" +1222 -0
- 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
- 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
- package/docs/loop /351/207/215/346/236/204/350/256/241/345/210/222.md" +321 -0
- package/docs/loop-usage-examples.md +215 -0
- package/docs/models.md +27 -0
- package/docs/packages.md +27 -0
- package/docs/pi-design-philosophy.md +457 -0
- package/docs/planmode.md +1987 -0
- package/docs/prompt-templates.md +27 -0
- package/docs/providers.md +27 -0
- package/docs/sdk.md +27 -0
- package/docs/skills.md +27 -0
- package/docs/themes.md +27 -0
- package/docs/tui.md +27 -0
- package/docs//345/257/271/346/240/207Claude-Code.md +1775 -0
- package/package.json +21 -8
- package/dist/core/export-html/CLAUDE.md +0 -12
- package/dist/extensions/builtin/CLAUDE.md +0 -74
- package/dist/extensions/builtin/interview/index.d.ts +0 -8
- package/dist/extensions/builtin/interview/index.js +0 -335
- package/dist/extensions/builtin/interview/interview-runtime.d.ts +0 -55
- package/dist/extensions/builtin/interview/interview-runtime.js +0 -551
- package/dist/extensions/builtin/loop/cron/cron-types.d.ts +0 -87
- package/dist/extensions/builtin/loop/cron/cron-types.js +0 -14
- package/dist/extensions/builtin/loop/scheduler-parser.d.ts +0 -13
- package/dist/extensions/builtin/loop/scheduler-parser.js +0 -214
- package/dist/extensions/builtin/loop/scheduler-types.d.ts +0 -63
- package/dist/extensions/builtin/loop/scheduler-types.js +0 -7
- package/dist/extensions/builtin/loop/skill/SKILL.md +0 -79
- package/dist/extensions/builtin/team/CLAUDE.md +0 -97
- package/dist/extensions/optional/CLAUDE.md +0 -11
- package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop-continuations.d.ts +0 -17
- package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop-stream-events.d.ts +0 -19
- package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop-tool-results.d.ts +0 -10
- package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop-tool-summaries.d.ts +0 -22
- package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop.d.ts +0 -26
- package/dist/node_modules/@pencil-agent/agent-core/dist/agent-run-result.d.ts +0 -9
- package/dist/node_modules/@pencil-agent/agent-core/dist/agent.d.ts +0 -215
- package/dist/node_modules/@pencil-agent/agent-core/dist/errors.d.ts +0 -62
- package/dist/node_modules/@pencil-agent/agent-core/dist/index.d.ts +0 -14
- package/dist/node_modules/@pencil-agent/agent-core/dist/proxy.d.ts +0 -91
- package/dist/node_modules/@pencil-agent/agent-core/dist/structured-adaptive-agent-loop.d.ts +0 -15
- package/dist/node_modules/@pencil-agent/agent-core/dist/structured-adaptive-streaming-tool-executor.d.ts +0 -33
- package/dist/node_modules/@pencil-agent/agent-core/dist/structured-adaptive-tool-orchestration.d.ts +0 -35
- package/dist/node_modules/@pencil-agent/ai/dist/api-registry.d.ts +0 -27
- package/dist/node_modules/@pencil-agent/ai/dist/cli.d.ts +0 -2
- package/dist/node_modules/@pencil-agent/ai/dist/config-path.d.ts +0 -1
- package/dist/node_modules/@pencil-agent/ai/dist/debug-logger.d.ts +0 -94
- package/dist/node_modules/@pencil-agent/ai/dist/env-api-keys.d.ts +0 -8
- package/dist/node_modules/@pencil-agent/ai/dist/env.d.ts +0 -7
- package/dist/node_modules/@pencil-agent/ai/dist/events.d.ts +0 -8
- package/dist/node_modules/@pencil-agent/ai/dist/index.d.ts +0 -27
- package/dist/node_modules/@pencil-agent/ai/dist/json.d.ts +0 -7
- package/dist/node_modules/@pencil-agent/ai/dist/models.d.ts +0 -31
- package/dist/node_modules/@pencil-agent/ai/dist/models.generated.d.ts +0 -15159
- package/dist/node_modules/@pencil-agent/ai/dist/overflow.d.ts +0 -7
- package/dist/node_modules/@pencil-agent/ai/dist/providers/amazon-bedrock.d.ts +0 -20
- package/dist/node_modules/@pencil-agent/ai/dist/providers/anthropic.d.ts +0 -38
- package/dist/node_modules/@pencil-agent/ai/dist/providers/azure-openai-responses.d.ts +0 -21
- package/dist/node_modules/@pencil-agent/ai/dist/providers/github-copilot-headers.d.ts +0 -13
- package/dist/node_modules/@pencil-agent/ai/dist/providers/google-gemini-cli.d.ts +0 -79
- package/dist/node_modules/@pencil-agent/ai/dist/providers/google-shared.d.ts +0 -70
- package/dist/node_modules/@pencil-agent/ai/dist/providers/google-vertex.d.ts +0 -20
- package/dist/node_modules/@pencil-agent/ai/dist/providers/google.d.ts +0 -18
- package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-codex-responses.d.ts +0 -8
- package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-completions.d.ts +0 -20
- package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-responses-shared.d.ts +0 -22
- package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-responses.d.ts +0 -19
- package/dist/node_modules/@pencil-agent/ai/dist/providers/register-builtins.d.ts +0 -8
- package/dist/node_modules/@pencil-agent/ai/dist/providers/simple-options.d.ts +0 -13
- package/dist/node_modules/@pencil-agent/ai/dist/providers/transform-messages.d.ts +0 -13
- package/dist/node_modules/@pencil-agent/ai/dist/registry.d.ts +0 -8
- package/dist/node_modules/@pencil-agent/ai/dist/schema.d.ts +0 -10
- package/dist/node_modules/@pencil-agent/ai/dist/stream.d.ts +0 -25
- package/dist/node_modules/@pencil-agent/ai/dist/utils/event-stream.d.ts +0 -31
- package/dist/node_modules/@pencil-agent/ai/dist/utils/http-proxy.d.ts +0 -13
- package/dist/node_modules/@pencil-agent/ai/dist/utils/json-parse.d.ts +0 -14
- package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/anthropic.d.ts +0 -22
- package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/decode-credential.d.ts +0 -12
- package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/github-copilot.d.ts +0 -35
- package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/google-antigravity.d.ts +0 -31
- package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/google-gemini-cli.d.ts +0 -31
- package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/index.d.ts +0 -60
- package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/openai-codex.d.ts +0 -39
- package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/pkce.d.ts +0 -18
- package/dist/node_modules/@pencil-agent/ai/dist/utils/oauth/types.d.ts +0 -52
- package/dist/node_modules/@pencil-agent/ai/dist/utils/overflow.d.ts +0 -57
- package/dist/node_modules/@pencil-agent/ai/dist/utils/sanitize-unicode.d.ts +0 -16
- package/dist/node_modules/@pencil-agent/ai/dist/utils/typebox-helpers.d.ts +0 -22
- package/dist/node_modules/@pencil-agent/ai/dist/utils/validation.d.ts +0 -23
- package/dist/node_modules/@pencil-agent/tui/dist/autocomplete.d.ts +0 -62
- package/dist/node_modules/@pencil-agent/tui/dist/components/box.d.ts +0 -27
- package/dist/node_modules/@pencil-agent/tui/dist/components/cancellable-loader.d.ts +0 -27
- package/dist/node_modules/@pencil-agent/tui/dist/components/editor.d.ts +0 -218
- package/dist/node_modules/@pencil-agent/tui/dist/components/image.d.ts +0 -33
- package/dist/node_modules/@pencil-agent/tui/dist/components/input.d.ts +0 -42
- package/dist/node_modules/@pencil-agent/tui/dist/components/loader.d.ts +0 -26
- package/dist/node_modules/@pencil-agent/tui/dist/components/markdown.d.ts +0 -100
- package/dist/node_modules/@pencil-agent/tui/dist/components/select-list.d.ts +0 -37
- package/dist/node_modules/@pencil-agent/tui/dist/components/settings-list.d.ts +0 -55
- package/dist/node_modules/@pencil-agent/tui/dist/components/spacer.d.ts +0 -17
- package/dist/node_modules/@pencil-agent/tui/dist/components/text.d.ts +0 -24
- package/dist/node_modules/@pencil-agent/tui/dist/components/truncated-text.d.ts +0 -18
- package/dist/node_modules/@pencil-agent/tui/dist/editor-component.d.ts +0 -51
- package/dist/node_modules/@pencil-agent/tui/dist/fuzzy.d.ts +0 -32
- package/dist/node_modules/@pencil-agent/tui/dist/index.d.ts +0 -28
- package/dist/node_modules/@pencil-agent/tui/dist/keybindings.d.ts +0 -44
- package/dist/node_modules/@pencil-agent/tui/dist/keys.d.ts +0 -149
- package/dist/node_modules/@pencil-agent/tui/dist/kill-ring.d.ts +0 -33
- package/dist/node_modules/@pencil-agent/tui/dist/stdin-buffer.d.ts +0 -38
- package/dist/node_modules/@pencil-agent/tui/dist/terminal-image.d.ts +0 -73
- package/dist/node_modules/@pencil-agent/tui/dist/terminal.d.ts +0 -86
- package/dist/node_modules/@pencil-agent/tui/dist/tui.d.ts +0 -219
- package/dist/node_modules/@pencil-agent/tui/dist/undo-stack.d.ts +0 -22
- package/dist/node_modules/@pencil-agent/tui/dist/utils.d.ts +0 -83
- package/docs/API/345/257/206/351/222/245/344/277/256/345/244/215/346/200/273/347/273/223.md +0 -147
- package/docs/API/345/257/206/351/222/245/345/221/275/344/273/244.md +0 -66
- package/docs/API/345/257/206/351/222/245/346/214/207/345/215/227.md +0 -292
- package/docs/ARK/347/274/226/347/240/201/350/256/241/345/210/222.md +0 -51
- package/docs/AgentTeam/351/207/215/346/236/204/346/226/271/346/241/210.md +0 -446
- package/docs/InterviewRegression.md +0 -122
- package/docs/MCP/345/277/253/351/200/237/345/217/202/350/200/203.md +0 -113
- package/docs/MCP/351/233/206/346/210/220/346/214/207/345/215/227.md +0 -255
- package/docs/Persona/345/210/207/346/215/242.md +0 -97
- package/docs/Recap/346/211/251/345/261/225.md +0 -410
- package/docs/Simplify/346/211/251/345/261/225.md +0 -278
- package/docs/agent-loop-frameworks.md +0 -119
- package/docs/debug-logging.md +0 -148
- package/docs/eval/AGENT.md +0 -36
- package/docs/eval/README.md +0 -72
- package/docs/eval/decision-log-template.md +0 -51
- package/docs/eval/experiment-protocol.md +0 -77
- package/docs/eval/issue-usage/README.md +0 -32
- package/docs/eval/issue-usage/cases.md +0 -31
- package/docs/eval/issue-usage/metrics.md +0 -23
- package/docs/eval/issue-usage/workflow.md +0 -39
- package/docs/eval/sal-memory-anchor/README.md +0 -32
- package/docs/eval/sal-memory-anchor/hypothesis.md +0 -45
- package/docs/eval/sal-memory-anchor/metrics.md +0 -24
- package/docs/eval/sal-memory-anchor/runs.md +0 -29
- package/docs/eval/tool-usage-analysis/README.md +0 -32
- package/docs/eval/tool-usage-analysis/invalid-data-rules.md +0 -29
- package/docs/eval/tool-usage-analysis/metrics.md +0 -35
- package/docs/eval/tool-usage-analysis/report-template.md +0 -49
- package/docs/eval/tool-usage-analysis/sop.md +0 -63
- package/docs/multi-agent-fs-design.md +0 -1120
- package/docs/pencil-platform-charter.md +0 -21
- package/docs/project-structure-optimization.md +0 -66
- package/docs/remote-tool-register-design.md +0 -436
- package/docs//345/206/205/347/275/256MCP/345/267/245/345/205/267.md +0 -326
- package/docs//345/215/203/345/270/206/347/274/226/347/240/201/350/256/241/345/210/222.md +0 -52
- package/docs//345/215/225/344/275/223/344/273/223/345/272/223/350/207/252/350/277/260.md +0 -189
- 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
- package/docs//345/217/221/345/270/203/346/214/207/345/215/227.md +0 -129
- package/docs//345/217/230/346/233/264/346/200/273/347/273/223.md +0 -138
- package/docs//345/217/230/346/233/264/346/227/245/345/277/227.md +0 -50
- 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
- package/docs//345/276/252/347/216/257/345/221/275/344/273/244/350/256/241/345/210/222.md +0 -56
- package/docs//346/226/207/346/241/243/344/270/255/345/277/203.md +0 -146
- package/docs//346/236/266/346/236/204/344/274/230/345/214/226.md +0 -404
- package/docs//346/236/266/346/236/204/346/274/224/350/277/233.md +0 -228
- package/docs//347/211/210/346/234/2542.md +0 -199
- package/docs//347/272/263/350/257/272/350/256/260/345/277/206/350/257/273/345/206/231.md +0 -352
- package/docs//347/273/223/346/236/204.md +0 -339
- package/docs//350/256/241/345/210/222.md +0 -44
- package/docs//350/256/260/345/277/206/347/263/273/347/273/237.md +0 -236
- package/docs//350/277/201/347/247/273/346/200/273/347/273/223.md +0 -204
- package/docs//351/207/215/346/236/204/344/273/273/345/212/241.md +0 -181
- package/docs//351/207/215/346/236/204/350/256/241/345/210/222.md +0 -592
- /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]]
|