micro-models-agent 0.6.4 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +286 -436
- package/dist/main.js +11706 -0
- package/dist/skills/builtin/git.md +36 -0
- package/dist/skills/builtin/typescript.md +35 -0
- package/package.json +41 -47
- package/dist/agent/context.d.ts +0 -73
- package/dist/agent/context.d.ts.map +0 -1
- package/dist/agent/context.js +0 -262
- package/dist/agent/context.js.map +0 -1
- package/dist/agent/error-escalation.d.ts +0 -19
- package/dist/agent/error-escalation.d.ts.map +0 -1
- package/dist/agent/error-escalation.js +0 -168
- package/dist/agent/error-escalation.js.map +0 -1
- package/dist/agent/loop.d.ts +0 -46
- package/dist/agent/loop.d.ts.map +0 -1
- package/dist/agent/loop.js +0 -1043
- package/dist/agent/loop.js.map +0 -1
- package/dist/agent/memory.d.ts +0 -40
- package/dist/agent/memory.d.ts.map +0 -1
- package/dist/agent/memory.js +0 -231
- package/dist/agent/memory.js.map +0 -1
- package/dist/agent/modes/applier.d.ts +0 -43
- package/dist/agent/modes/applier.d.ts.map +0 -1
- package/dist/agent/modes/applier.js +0 -30
- package/dist/agent/modes/applier.js.map +0 -1
- package/dist/agent/modes/registry.d.ts +0 -35
- package/dist/agent/modes/registry.d.ts.map +0 -1
- package/dist/agent/modes/registry.js +0 -169
- package/dist/agent/modes/registry.js.map +0 -1
- package/dist/agent/modes/types.d.ts +0 -61
- package/dist/agent/modes/types.d.ts.map +0 -1
- package/dist/agent/modes/types.js +0 -13
- package/dist/agent/modes/types.js.map +0 -1
- package/dist/agent/react-loop.d.ts +0 -65
- package/dist/agent/react-loop.d.ts.map +0 -1
- package/dist/agent/react-loop.js +0 -101
- package/dist/agent/react-loop.js.map +0 -1
- package/dist/agent/system-prompt.d.ts +0 -26
- package/dist/agent/system-prompt.d.ts.map +0 -1
- package/dist/agent/system-prompt.js +0 -478
- package/dist/agent/system-prompt.js.map +0 -1
- package/dist/agent/tool-executor.d.ts +0 -36
- package/dist/agent/tool-executor.d.ts.map +0 -1
- package/dist/agent/tool-executor.js +0 -346
- package/dist/agent/tool-executor.js.map +0 -1
- package/dist/agent/user-profile.d.ts +0 -26
- package/dist/agent/user-profile.d.ts.map +0 -1
- package/dist/agent/user-profile.js +0 -169
- package/dist/agent/user-profile.js.map +0 -1
- package/dist/agent/write-enforcer.d.ts +0 -7
- package/dist/agent/write-enforcer.d.ts.map +0 -1
- package/dist/agent/write-enforcer.js +0 -8
- package/dist/agent/write-enforcer.js.map +0 -1
- package/dist/cli/config.d.ts +0 -13
- package/dist/cli/config.d.ts.map +0 -1
- package/dist/cli/config.js +0 -82
- package/dist/cli/config.js.map +0 -1
- package/dist/cli/model.d.ts +0 -13
- package/dist/cli/model.d.ts.map +0 -1
- package/dist/cli/model.js +0 -170
- package/dist/cli/model.js.map +0 -1
- package/dist/cli/provider.d.ts +0 -12
- package/dist/cli/provider.d.ts.map +0 -1
- package/dist/cli/provider.js +0 -90
- package/dist/cli/provider.js.map +0 -1
- package/dist/cli/update.d.ts +0 -12
- package/dist/cli/update.d.ts.map +0 -1
- package/dist/cli/update.js +0 -69
- package/dist/cli/update.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -310
- package/dist/cli.js.map +0 -1
- package/dist/config/config.d.ts +0 -59
- package/dist/config/config.d.ts.map +0 -1
- package/dist/config/config.js +0 -232
- package/dist/config/config.js.map +0 -1
- package/dist/config/types.d.ts +0 -122
- package/dist/config/types.d.ts.map +0 -1
- package/dist/config/types.js +0 -13
- package/dist/config/types.js.map +0 -1
- package/dist/file-loader.d.ts +0 -20
- package/dist/file-loader.d.ts.map +0 -1
- package/dist/file-loader.js +0 -121
- package/dist/file-loader.js.map +0 -1
- package/dist/index.d.ts +0 -9
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -11
- package/dist/index.js.map +0 -1
- package/dist/indexer/cache.d.ts +0 -34
- package/dist/indexer/cache.d.ts.map +0 -1
- package/dist/indexer/cache.js +0 -221
- package/dist/indexer/cache.js.map +0 -1
- package/dist/indexer/code-index.d.ts +0 -27
- package/dist/indexer/code-index.d.ts.map +0 -1
- package/dist/indexer/code-index.js +0 -219
- package/dist/indexer/code-index.js.map +0 -1
- package/dist/indexer/project-map.d.ts +0 -23
- package/dist/indexer/project-map.d.ts.map +0 -1
- package/dist/indexer/project-map.js +0 -264
- package/dist/indexer/project-map.js.map +0 -1
- package/dist/llm/lmstudio-native.d.ts +0 -10
- package/dist/llm/lmstudio-native.d.ts.map +0 -1
- package/dist/llm/lmstudio-native.js +0 -179
- package/dist/llm/lmstudio-native.js.map +0 -1
- package/dist/llm/openai-compat.d.ts +0 -11
- package/dist/llm/openai-compat.d.ts.map +0 -1
- package/dist/llm/openai-compat.js +0 -161
- package/dist/llm/openai-compat.js.map +0 -1
- package/dist/llm/provider.d.ts +0 -46
- package/dist/llm/provider.d.ts.map +0 -1
- package/dist/llm/provider.js +0 -13
- package/dist/llm/provider.js.map +0 -1
- package/dist/llm/token-counter.d.ts +0 -15
- package/dist/llm/token-counter.d.ts.map +0 -1
- package/dist/llm/token-counter.js +0 -51
- package/dist/llm/token-counter.js.map +0 -1
- package/dist/logger.d.ts +0 -24
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -156
- package/dist/logger.js.map +0 -1
- package/dist/plugins/adapters/hooks-adapter.d.ts +0 -12
- package/dist/plugins/adapters/hooks-adapter.d.ts.map +0 -1
- package/dist/plugins/adapters/hooks-adapter.js +0 -23
- package/dist/plugins/adapters/hooks-adapter.js.map +0 -1
- package/dist/plugins/builtin/lint-on-write/index.d.ts +0 -12
- package/dist/plugins/builtin/lint-on-write/index.d.ts.map +0 -1
- package/dist/plugins/builtin/lint-on-write/index.js +0 -98
- package/dist/plugins/builtin/lint-on-write/index.js.map +0 -1
- package/dist/plugins/builtin/lint-on-write/index.ts +0 -97
- package/dist/plugins/builtin/lint-on-write/manifest.json +0 -13
- package/dist/plugins/builtin/notify/index.d.ts +0 -11
- package/dist/plugins/builtin/notify/index.d.ts.map +0 -1
- package/dist/plugins/builtin/notify/index.js +0 -102
- package/dist/plugins/builtin/notify/index.js.map +0 -1
- package/dist/plugins/builtin/notify/index.ts +0 -105
- package/dist/plugins/builtin/notify/manifest.json +0 -16
- package/dist/plugins/loader.d.ts +0 -18
- package/dist/plugins/loader.d.ts.map +0 -1
- package/dist/plugins/loader.js +0 -182
- package/dist/plugins/loader.js.map +0 -1
- package/dist/plugins/manager.d.ts +0 -55
- package/dist/plugins/manager.d.ts.map +0 -1
- package/dist/plugins/manager.js +0 -190
- package/dist/plugins/manager.js.map +0 -1
- package/dist/plugins/types.d.ts +0 -76
- package/dist/plugins/types.d.ts.map +0 -1
- package/dist/plugins/types.js +0 -8
- package/dist/plugins/types.js.map +0 -1
- package/dist/repl/commands.d.ts +0 -63
- package/dist/repl/commands.d.ts.map +0 -1
- package/dist/repl/commands.js +0 -1070
- package/dist/repl/commands.js.map +0 -1
- package/dist/repl/history.d.ts +0 -32
- package/dist/repl/history.d.ts.map +0 -1
- package/dist/repl/history.js +0 -40
- package/dist/repl/history.js.map +0 -1
- package/dist/repl/index.d.ts +0 -14
- package/dist/repl/index.d.ts.map +0 -1
- package/dist/repl/index.js +0 -235
- package/dist/repl/index.js.map +0 -1
- package/dist/session/store.d.ts +0 -46
- package/dist/session/store.d.ts.map +0 -1
- package/dist/session/store.js +0 -154
- package/dist/session/store.js.map +0 -1
- package/dist/setup-wizard.d.ts +0 -3
- package/dist/setup-wizard.d.ts.map +0 -1
- package/dist/setup-wizard.js +0 -410
- package/dist/setup-wizard.js.map +0 -1
- package/dist/skills/builtin/agent-test/SKILL.md +0 -68
- package/dist/skills/builtin/cli-expert/SKILL.md +0 -848
- package/dist/skills/builtin/code-review/SKILL.md +0 -424
- package/dist/skills/builtin/git-expert/SKILL.md +0 -522
- package/dist/skills/builtin/grill-me/SKILL.md +0 -46
- package/dist/skills/builtin/jest-testing-expert/SKILL.md +0 -957
- package/dist/skills/builtin/nodejs-expert/SKILL.md +0 -192
- package/dist/skills/builtin/systematic-debugging/SKILL.md +0 -296
- package/dist/skills/builtin/test-driven-development/SKILL.md +0 -371
- package/dist/skills/builtin/typescript-expert/SKILL.md +0 -429
- package/dist/skills/builtin/web-scraping/SKILL.md +0 -422
- package/dist/skills/loader.d.ts +0 -49
- package/dist/skills/loader.d.ts.map +0 -1
- package/dist/skills/loader.js +0 -401
- package/dist/skills/loader.js.map +0 -1
- package/dist/styling/engine.d.ts +0 -39
- package/dist/styling/engine.d.ts.map +0 -1
- package/dist/styling/engine.js +0 -122
- package/dist/styling/engine.js.map +0 -1
- package/dist/styling/index.d.ts +0 -15
- package/dist/styling/index.d.ts.map +0 -1
- package/dist/styling/index.js +0 -40
- package/dist/styling/index.js.map +0 -1
- package/dist/styling/loader.d.ts +0 -9
- package/dist/styling/loader.d.ts.map +0 -1
- package/dist/styling/loader.js +0 -169
- package/dist/styling/loader.js.map +0 -1
- package/dist/styling/types.d.ts +0 -64
- package/dist/styling/types.d.ts.map +0 -1
- package/dist/styling/types.js +0 -12
- package/dist/styling/types.js.map +0 -1
- package/dist/subagent/chat.d.ts +0 -19
- package/dist/subagent/chat.d.ts.map +0 -1
- package/dist/subagent/chat.js +0 -279
- package/dist/subagent/chat.js.map +0 -1
- package/dist/subagent/context.d.ts +0 -9
- package/dist/subagent/context.d.ts.map +0 -1
- package/dist/subagent/context.js +0 -75
- package/dist/subagent/context.js.map +0 -1
- package/dist/subagent/definition.d.ts +0 -7
- package/dist/subagent/definition.d.ts.map +0 -1
- package/dist/subagent/definition.js +0 -26
- package/dist/subagent/definition.js.map +0 -1
- package/dist/subagent/errors.d.ts +0 -24
- package/dist/subagent/errors.d.ts.map +0 -1
- package/dist/subagent/errors.js +0 -85
- package/dist/subagent/errors.js.map +0 -1
- package/dist/subagent/validation.d.ts +0 -17
- package/dist/subagent/validation.d.ts.map +0 -1
- package/dist/subagent/validation.js +0 -83
- package/dist/subagent/validation.js.map +0 -1
- package/dist/tools/adapters/bash-to-fs.d.ts +0 -20
- package/dist/tools/adapters/bash-to-fs.d.ts.map +0 -1
- package/dist/tools/adapters/bash-to-fs.js +0 -74
- package/dist/tools/adapters/bash-to-fs.js.map +0 -1
- package/dist/tools/adapters/content-sanitizer.d.ts +0 -13
- package/dist/tools/adapters/content-sanitizer.d.ts.map +0 -1
- package/dist/tools/adapters/content-sanitizer.js +0 -73
- package/dist/tools/adapters/content-sanitizer.js.map +0 -1
- package/dist/tools/adapters/grounding-fixer.d.ts +0 -15
- package/dist/tools/adapters/grounding-fixer.d.ts.map +0 -1
- package/dist/tools/adapters/grounding-fixer.js +0 -57
- package/dist/tools/adapters/grounding-fixer.js.map +0 -1
- package/dist/tools/adapters/index.d.ts +0 -6
- package/dist/tools/adapters/index.d.ts.map +0 -1
- package/dist/tools/adapters/index.js +0 -5
- package/dist/tools/adapters/index.js.map +0 -1
- package/dist/tools/adapters/pipeline.d.ts +0 -34
- package/dist/tools/adapters/pipeline.d.ts.map +0 -1
- package/dist/tools/adapters/pipeline.js +0 -58
- package/dist/tools/adapters/pipeline.js.map +0 -1
- package/dist/tools/adapters/types.d.ts +0 -46
- package/dist/tools/adapters/types.d.ts.map +0 -1
- package/dist/tools/adapters/types.js +0 -2
- package/dist/tools/adapters/types.js.map +0 -1
- package/dist/tools/approve.d.ts +0 -27
- package/dist/tools/approve.d.ts.map +0 -1
- package/dist/tools/approve.js +0 -45
- package/dist/tools/approve.js.map +0 -1
- package/dist/tools/bash.d.ts +0 -25
- package/dist/tools/bash.d.ts.map +0 -1
- package/dist/tools/bash.js +0 -292
- package/dist/tools/bash.js.map +0 -1
- package/dist/tools/fs/copy-file.d.ts +0 -13
- package/dist/tools/fs/copy-file.d.ts.map +0 -1
- package/dist/tools/fs/copy-file.js +0 -54
- package/dist/tools/fs/copy-file.js.map +0 -1
- package/dist/tools/fs/create-dir.d.ts +0 -13
- package/dist/tools/fs/create-dir.d.ts.map +0 -1
- package/dist/tools/fs/create-dir.js +0 -44
- package/dist/tools/fs/create-dir.js.map +0 -1
- package/dist/tools/fs/delete-file.d.ts +0 -13
- package/dist/tools/fs/delete-file.d.ts.map +0 -1
- package/dist/tools/fs/delete-file.js +0 -52
- package/dist/tools/fs/delete-file.js.map +0 -1
- package/dist/tools/fs/edit-file.d.ts +0 -15
- package/dist/tools/fs/edit-file.d.ts.map +0 -1
- package/dist/tools/fs/edit-file.js +0 -95
- package/dist/tools/fs/edit-file.js.map +0 -1
- package/dist/tools/fs/file-info.d.ts +0 -13
- package/dist/tools/fs/file-info.d.ts.map +0 -1
- package/dist/tools/fs/file-info.js +0 -50
- package/dist/tools/fs/file-info.js.map +0 -1
- package/dist/tools/fs/glob-search.d.ts +0 -13
- package/dist/tools/fs/glob-search.d.ts.map +0 -1
- package/dist/tools/fs/glob-search.js +0 -112
- package/dist/tools/fs/glob-search.js.map +0 -1
- package/dist/tools/fs/grep-search.d.ts +0 -14
- package/dist/tools/fs/grep-search.d.ts.map +0 -1
- package/dist/tools/fs/grep-search.js +0 -135
- package/dist/tools/fs/grep-search.js.map +0 -1
- package/dist/tools/fs/list-dir.d.ts +0 -13
- package/dist/tools/fs/list-dir.d.ts.map +0 -1
- package/dist/tools/fs/list-dir.js +0 -74
- package/dist/tools/fs/list-dir.js.map +0 -1
- package/dist/tools/fs/move-file.d.ts +0 -13
- package/dist/tools/fs/move-file.d.ts.map +0 -1
- package/dist/tools/fs/move-file.js +0 -54
- package/dist/tools/fs/move-file.js.map +0 -1
- package/dist/tools/fs/path-utils.d.ts +0 -51
- package/dist/tools/fs/path-utils.d.ts.map +0 -1
- package/dist/tools/fs/path-utils.js +0 -103
- package/dist/tools/fs/path-utils.js.map +0 -1
- package/dist/tools/fs/read-file.d.ts +0 -13
- package/dist/tools/fs/read-file.d.ts.map +0 -1
- package/dist/tools/fs/read-file.js +0 -64
- package/dist/tools/fs/read-file.js.map +0 -1
- package/dist/tools/fs/tree.d.ts +0 -13
- package/dist/tools/fs/tree.d.ts.map +0 -1
- package/dist/tools/fs/tree.js +0 -89
- package/dist/tools/fs/tree.js.map +0 -1
- package/dist/tools/fs/types.d.ts +0 -14
- package/dist/tools/fs/types.d.ts.map +0 -1
- package/dist/tools/fs/types.js +0 -11
- package/dist/tools/fs/types.js.map +0 -1
- package/dist/tools/fs/write-file.d.ts +0 -14
- package/dist/tools/fs/write-file.d.ts.map +0 -1
- package/dist/tools/fs/write-file.js +0 -83
- package/dist/tools/fs/write-file.js.map +0 -1
- package/dist/tools/hooks.d.ts +0 -44
- package/dist/tools/hooks.d.ts.map +0 -1
- package/dist/tools/hooks.js +0 -217
- package/dist/tools/hooks.js.map +0 -1
- package/dist/tools/id-gen.d.ts +0 -4
- package/dist/tools/id-gen.d.ts.map +0 -1
- package/dist/tools/id-gen.js +0 -12
- package/dist/tools/id-gen.js.map +0 -1
- package/dist/tools/mcp.d.ts +0 -36
- package/dist/tools/mcp.d.ts.map +0 -1
- package/dist/tools/mcp.js +0 -93
- package/dist/tools/mcp.js.map +0 -1
- package/dist/tools/native/approve.d.ts +0 -11
- package/dist/tools/native/approve.d.ts.map +0 -1
- package/dist/tools/native/approve.js +0 -39
- package/dist/tools/native/approve.js.map +0 -1
- package/dist/tools/native/plan.d.ts +0 -10
- package/dist/tools/native/plan.d.ts.map +0 -1
- package/dist/tools/native/plan.js +0 -115
- package/dist/tools/native/plan.js.map +0 -1
- package/dist/tools/native/project-map.d.ts +0 -15
- package/dist/tools/native/project-map.d.ts.map +0 -1
- package/dist/tools/native/project-map.js +0 -203
- package/dist/tools/native/project-map.js.map +0 -1
- package/dist/tools/native/question.d.ts +0 -11
- package/dist/tools/native/question.d.ts.map +0 -1
- package/dist/tools/native/question.js +0 -41
- package/dist/tools/native/question.js.map +0 -1
- package/dist/tools/native/scaffold.d.ts +0 -5
- package/dist/tools/native/scaffold.d.ts.map +0 -1
- package/dist/tools/native/scaffold.js +0 -246
- package/dist/tools/native/scaffold.js.map +0 -1
- package/dist/tools/native/theme.d.ts +0 -10
- package/dist/tools/native/theme.d.ts.map +0 -1
- package/dist/tools/native/theme.js +0 -101
- package/dist/tools/native/theme.js.map +0 -1
- package/dist/tools/native/todo.d.ts +0 -10
- package/dist/tools/native/todo.d.ts.map +0 -1
- package/dist/tools/native/todo.js +0 -58
- package/dist/tools/native/todo.js.map +0 -1
- package/dist/tools/native/user-profile.d.ts +0 -10
- package/dist/tools/native/user-profile.d.ts.map +0 -1
- package/dist/tools/native/user-profile.js +0 -58
- package/dist/tools/native/user-profile.js.map +0 -1
- package/dist/tools/parse-tool-call.d.ts +0 -11
- package/dist/tools/parse-tool-call.d.ts.map +0 -1
- package/dist/tools/parse-tool-call.js +0 -87
- package/dist/tools/parse-tool-call.js.map +0 -1
- package/dist/tools/plan.d.ts +0 -40
- package/dist/tools/plan.d.ts.map +0 -1
- package/dist/tools/plan.js +0 -143
- package/dist/tools/plan.js.map +0 -1
- package/dist/tools/question.d.ts +0 -33
- package/dist/tools/question.d.ts.map +0 -1
- package/dist/tools/question.js +0 -62
- package/dist/tools/question.js.map +0 -1
- package/dist/tools/registry.d.ts +0 -37
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/registry.js +0 -97
- package/dist/tools/registry.js.map +0 -1
- package/dist/tools/sanitizer.d.ts +0 -30
- package/dist/tools/sanitizer.d.ts.map +0 -1
- package/dist/tools/sanitizer.js +0 -77
- package/dist/tools/sanitizer.js.map +0 -1
- package/dist/tools/subagent.d.ts +0 -39
- package/dist/tools/subagent.d.ts.map +0 -1
- package/dist/tools/subagent.js +0 -225
- package/dist/tools/subagent.js.map +0 -1
- package/dist/tools/syntax-check.d.ts +0 -32
- package/dist/tools/syntax-check.d.ts.map +0 -1
- package/dist/tools/syntax-check.js +0 -272
- package/dist/tools/syntax-check.js.map +0 -1
- package/dist/tools/todo.d.ts +0 -28
- package/dist/tools/todo.d.ts.map +0 -1
- package/dist/tools/todo.js +0 -125
- package/dist/tools/todo.js.map +0 -1
- package/dist/tools/types.d.ts +0 -51
- package/dist/tools/types.d.ts.map +0 -1
- package/dist/tools/types.js +0 -2
- package/dist/tools/types.js.map +0 -1
- package/dist/tools/web-browse.d.ts +0 -5
- package/dist/tools/web-browse.d.ts.map +0 -1
- package/dist/tools/web-browse.js +0 -757
- package/dist/tools/web-browse.js.map +0 -1
- package/dist/tools/web-fetch.d.ts +0 -19
- package/dist/tools/web-fetch.d.ts.map +0 -1
- package/dist/tools/web-fetch.js +0 -90
- package/dist/tools/web-fetch.js.map +0 -1
- package/dist/tools/web-search.d.ts +0 -19
- package/dist/tools/web-search.d.ts.map +0 -1
- package/dist/tools/web-search.js +0 -97
- package/dist/tools/web-search.js.map +0 -1
- package/dist/ui/components/status-bar.d.ts +0 -11
- package/dist/ui/components/status-bar.d.ts.map +0 -1
- package/dist/ui/components/status-bar.js +0 -20
- package/dist/ui/components/status-bar.js.map +0 -1
- package/dist/ui/index.d.ts +0 -8
- package/dist/ui/index.d.ts.map +0 -1
- package/dist/ui/index.js +0 -9
- package/dist/ui/index.js.map +0 -1
- package/dist/ui/ink/components/App.d.ts +0 -98
- package/dist/ui/ink/components/App.d.ts.map +0 -1
- package/dist/ui/ink/components/App.js +0 -212
- package/dist/ui/ink/components/App.js.map +0 -1
- package/dist/ui/ink/components/Conversation.d.ts +0 -20
- package/dist/ui/ink/components/Conversation.d.ts.map +0 -1
- package/dist/ui/ink/components/Conversation.js +0 -15
- package/dist/ui/ink/components/Conversation.js.map +0 -1
- package/dist/ui/ink/components/MessageBlock.d.ts +0 -27
- package/dist/ui/ink/components/MessageBlock.d.ts.map +0 -1
- package/dist/ui/ink/components/MessageBlock.js +0 -41
- package/dist/ui/ink/components/MessageBlock.js.map +0 -1
- package/dist/ui/ink/components/PromptInput.d.ts +0 -25
- package/dist/ui/ink/components/PromptInput.d.ts.map +0 -1
- package/dist/ui/ink/components/PromptInput.js +0 -167
- package/dist/ui/ink/components/PromptInput.js.map +0 -1
- package/dist/ui/ink/components/SelectInput.d.ts +0 -9
- package/dist/ui/ink/components/SelectInput.d.ts.map +0 -1
- package/dist/ui/ink/components/SelectInput.js +0 -30
- package/dist/ui/ink/components/SelectInput.js.map +0 -1
- package/dist/ui/ink/components/StatusBar.d.ts +0 -14
- package/dist/ui/ink/components/StatusBar.d.ts.map +0 -1
- package/dist/ui/ink/components/StatusBar.js +0 -20
- package/dist/ui/ink/components/StatusBar.js.map +0 -1
- package/dist/ui/ink/components/StreamBlock.d.ts +0 -8
- package/dist/ui/ink/components/StreamBlock.d.ts.map +0 -1
- package/dist/ui/ink/components/StreamBlock.js +0 -15
- package/dist/ui/ink/components/StreamBlock.js.map +0 -1
- package/dist/ui/ink/components/Tags.d.ts +0 -26
- package/dist/ui/ink/components/Tags.d.ts.map +0 -1
- package/dist/ui/ink/components/Tags.js +0 -37
- package/dist/ui/ink/components/Tags.js.map +0 -1
- package/dist/ui/ink/components/ToolCallBlock.d.ts +0 -31
- package/dist/ui/ink/components/ToolCallBlock.d.ts.map +0 -1
- package/dist/ui/ink/components/ToolCallBlock.js +0 -17
- package/dist/ui/ink/components/ToolCallBlock.js.map +0 -1
- package/dist/ui/ink/renderer.d.ts +0 -69
- package/dist/ui/ink/renderer.d.ts.map +0 -1
- package/dist/ui/ink/renderer.js +0 -142
- package/dist/ui/ink/renderer.js.map +0 -1
- package/dist/ui/ink/theme.d.ts +0 -28
- package/dist/ui/ink/theme.d.ts.map +0 -1
- package/dist/ui/ink/theme.js +0 -45
- package/dist/ui/ink/theme.js.map +0 -1
- package/dist/ui/md-formatter.d.ts +0 -16
- package/dist/ui/md-formatter.d.ts.map +0 -1
- package/dist/ui/md-formatter.js +0 -448
- package/dist/ui/md-formatter.js.map +0 -1
- package/dist/ui/readline-renderer.d.ts +0 -45
- package/dist/ui/readline-renderer.d.ts.map +0 -1
- package/dist/ui/readline-renderer.js +0 -181
- package/dist/ui/readline-renderer.js.map +0 -1
- package/dist/ui/renderer.d.ts +0 -66
- package/dist/ui/renderer.d.ts.map +0 -1
- package/dist/ui/renderer.js +0 -16
- package/dist/ui/renderer.js.map +0 -1
- package/dist/ui/subagent-renderer.d.ts +0 -58
- package/dist/ui/subagent-renderer.d.ts.map +0 -1
- package/dist/ui/subagent-renderer.js +0 -100
- package/dist/ui/subagent-renderer.js.map +0 -1
- package/dist/updater.d.ts +0 -15
- package/dist/updater.d.ts.map +0 -1
- package/dist/updater.js +0 -166
- package/dist/updater.js.map +0 -1
|
@@ -1,478 +0,0 @@
|
|
|
1
|
-
import { readFileSync, existsSync } from "node:fs";
|
|
2
|
-
import { resolve } from "node:path";
|
|
3
|
-
import * as os from "node:os";
|
|
4
|
-
import { loadAllMemoryDetailed } from "./memory.js";
|
|
5
|
-
import { loadProfileSummary } from "./user-profile.js";
|
|
6
|
-
import { getOrBuildProjectMap } from "../indexer/cache.js";
|
|
7
|
-
import { loadAgentsMd, listSkillsWithDescriptions, formatSkillsBlock, invalidateSkillCaches, } from "../skills/loader.js";
|
|
8
|
-
import { logInfo, logDebug } from "../logger.js";
|
|
9
|
-
import { ALL_DEFINITIONS } from "../tools/registry.js";
|
|
10
|
-
/**
|
|
11
|
-
* Build system prompt for the LLM agent.
|
|
12
|
-
*
|
|
13
|
-
* System prompt is assembled from multiple blocks:
|
|
14
|
-
* - Core agent behavior instructions
|
|
15
|
-
* - Project info (package.json, dependencies)
|
|
16
|
-
* - Project tech stack
|
|
17
|
-
* - Installed skills
|
|
18
|
-
* - User profile (agent observations)
|
|
19
|
-
* - Agent memory (long-term knowledge)
|
|
20
|
-
* - Safe behavior rules
|
|
21
|
-
*
|
|
22
|
-
* System prompt is cached: when context is unchanged,
|
|
23
|
-
* it is not rebuilt (invalidation by hash).
|
|
24
|
-
*
|
|
25
|
-
* @module agent/system-prompt
|
|
26
|
-
*/
|
|
27
|
-
// ─── Tool format ──────────────────────────────────────
|
|
28
|
-
// System prompt block describing the tool calling format
|
|
29
|
-
const TOOL_FORMAT = generateToolFormatString(ALL_DEFINITIONS);
|
|
30
|
-
function generateToolFormatString(defs) {
|
|
31
|
-
const lines = [
|
|
32
|
-
"CRITICAL: Use filesystem tools for file operations — they are more reliable than bash.",
|
|
33
|
-
"",
|
|
34
|
-
"To call a tool, output EXACTLY this format (on its own line):",
|
|
35
|
-
"",
|
|
36
|
-
'<tool_call>{"name":"tool_name","arguments":{...}}</tool_call>',
|
|
37
|
-
"",
|
|
38
|
-
];
|
|
39
|
-
const toolExamples = {
|
|
40
|
-
subagent: [
|
|
41
|
-
'{"name":"subagent","arguments":{"task":"Create src/db.ts: sqlite connection","existingFiles":"package.json"}}',
|
|
42
|
-
'{"name":"subagent","arguments":{"task":"Run tsc --noEmit to check types"}}',
|
|
43
|
-
],
|
|
44
|
-
bash: [
|
|
45
|
-
'{"name":"bash","arguments":{"cmd":"npm test"}}',
|
|
46
|
-
'{"name":"bash","arguments":{"cmd":"git status"}}',
|
|
47
|
-
],
|
|
48
|
-
read_file: [
|
|
49
|
-
'{"name":"read_file","arguments":{"path":"src/index.ts"}}',
|
|
50
|
-
'{"name":"read_file","arguments":{"path":"src/index.ts","offset":50,"limit":100}}',
|
|
51
|
-
],
|
|
52
|
-
write_file: [
|
|
53
|
-
'{"name":"write_file","arguments":{"path":"src/utils.ts","content":"export function foo() { return 1; }"}}',
|
|
54
|
-
],
|
|
55
|
-
edit_file: [
|
|
56
|
-
'{"name":"edit_file","arguments":{"path":"src/index.ts","old_string":"old text","new_string":"new text"}}',
|
|
57
|
-
],
|
|
58
|
-
list_dir: [
|
|
59
|
-
'{"name":"list_dir","arguments":{}}',
|
|
60
|
-
'{"name":"list_dir","arguments":{"path":"src"}}',
|
|
61
|
-
],
|
|
62
|
-
web_search: [
|
|
63
|
-
'{"name":"web_search","arguments":{"query":"weather in Minsk","maxResults":5}}',
|
|
64
|
-
],
|
|
65
|
-
web_fetch: [
|
|
66
|
-
'{"name":"web_fetch","arguments":{"url":"https://example.com"}}',
|
|
67
|
-
],
|
|
68
|
-
web_browse: [
|
|
69
|
-
'{"name":"web_browse","arguments":{"action":"navigate","url":"https://example.com"}}',
|
|
70
|
-
'{"name":"web_browse","arguments":{"action":"scrape","url":"https://example.com/catalog"}}',
|
|
71
|
-
'{"name":"web_browse","arguments":{"action":"click","selector":"button.submit"}}',
|
|
72
|
-
'{"name":"web_browse","arguments":{"action":"screenshot"}}',
|
|
73
|
-
],
|
|
74
|
-
plan: [
|
|
75
|
-
'{"name":"plan","arguments":{"action":"create","name":"Todo App","steps":["Step 1","Step 2"]}}',
|
|
76
|
-
'{"name":"plan","arguments":{"action":"done","step":1}}',
|
|
77
|
-
],
|
|
78
|
-
todo: [
|
|
79
|
-
'{"name":"todo","arguments":{"action":"add","text":"Implement feature X"}}',
|
|
80
|
-
],
|
|
81
|
-
question: [
|
|
82
|
-
'{"name":"question","arguments":{"question":"What color?","choices":["Red","Blue"]}}',
|
|
83
|
-
],
|
|
84
|
-
approve: ['{"name":"approve","arguments":{"action":"Delete file foo.ts"}}'],
|
|
85
|
-
user_profile: ['{"name":"user_profile","arguments":{"action":"show"}}'],
|
|
86
|
-
theme: [
|
|
87
|
-
'{"name":"theme","arguments":{"action":"list"}}',
|
|
88
|
-
'{"name":"theme","arguments":{"action":"switch","name":"dark"}}',
|
|
89
|
-
],
|
|
90
|
-
project_map: [
|
|
91
|
-
'{"name":"project_map","arguments":{"action":"list"}}',
|
|
92
|
-
'{"name":"project_map","arguments":{"action":"info","path":"src/App.tsx"}}',
|
|
93
|
-
],
|
|
94
|
-
scaffold: [
|
|
95
|
-
'{"name":"scaffold","arguments":{"template":"vite-react-ts","dir":"my-app"}}',
|
|
96
|
-
],
|
|
97
|
-
create_dir: [],
|
|
98
|
-
delete_file: [],
|
|
99
|
-
copy_file: [],
|
|
100
|
-
move_file: [],
|
|
101
|
-
file_info: [],
|
|
102
|
-
glob_search: [],
|
|
103
|
-
grep_search: [],
|
|
104
|
-
tree: [],
|
|
105
|
-
};
|
|
106
|
-
for (const def of defs) {
|
|
107
|
-
const name = def.function.name;
|
|
108
|
-
const desc = def.function.description;
|
|
109
|
-
const examples = toolExamples[name] || [];
|
|
110
|
-
lines.push(`## ${name} — ${desc}`);
|
|
111
|
-
for (const ex of examples) {
|
|
112
|
-
lines.push(` ${ex}`);
|
|
113
|
-
}
|
|
114
|
-
lines.push("");
|
|
115
|
-
}
|
|
116
|
-
lines.push("NEVER output tool calls in any other format. ALWAYS use <tool_call> tags.");
|
|
117
|
-
return lines.join("\n");
|
|
118
|
-
}
|
|
119
|
-
// ─── Conversation flow ──────────────────────────────────
|
|
120
|
-
// System prompt block explaining how the dialog cycle works
|
|
121
|
-
const CONVERSATION_FLOW = `## How This Works (IMPORTANT — read this carefully)
|
|
122
|
-
|
|
123
|
-
You are in a loop. Each turn works like this:
|
|
124
|
-
|
|
125
|
-
1. User sends a message
|
|
126
|
-
2. You respond with TEXT and/or TOOL CALLS
|
|
127
|
-
3. Tool results appear — then it is YOUR TURN AGAIN
|
|
128
|
-
4. Repeat until the task is done
|
|
129
|
-
|
|
130
|
-
### What you see after a tool executes:
|
|
131
|
-
|
|
132
|
-
You will see a message like:
|
|
133
|
-
[tool result: "Written 42 bytes (3 lines) to src/index.ts"]
|
|
134
|
-
|
|
135
|
-
This is NOT the end. You MUST continue:
|
|
136
|
-
- If more files need work → call the next tool
|
|
137
|
-
- If the task is done → write a summary to the user
|
|
138
|
-
- If there was an error → explain it and fix it
|
|
139
|
-
|
|
140
|
-
### Example conversation:
|
|
141
|
-
|
|
142
|
-
User: "Create a file src/utils.ts with a hello function"
|
|
143
|
-
|
|
144
|
-
You:
|
|
145
|
-
<tool_call>{"name":"write_file","arguments":{"path":"src/utils.ts","content":"export function hello() { return 'world'; }"}}</tool_call>
|
|
146
|
-
|
|
147
|
-
[Tool result: "Written 52 bytes (1 lines) to src/utils.ts"]
|
|
148
|
-
|
|
149
|
-
You:
|
|
150
|
-
File src/utils.ts created successfully. It exports a hello() function that returns 'world'.
|
|
151
|
-
|
|
152
|
-
---
|
|
153
|
-
|
|
154
|
-
NEVER stop after a tool call. ALWAYS continue with either another tool call or a text reply.`;
|
|
155
|
-
const R = {
|
|
156
|
-
fs_tools: `Use filesystem tools for file operations (read_file, write_file, edit_file, list_dir, glob_search, grep_search, tree). Use bash ONLY for non-file commands (npm, git, etc).`,
|
|
157
|
-
user_language: `Always respond in the user's language (Russian or English). Do NOT mix languages in one response — pick ONE and stick with it.`,
|
|
158
|
-
check_result: `CRITICAL: After every tool call, CHECK the result (exit code + output).
|
|
159
|
-
If exit code != 0, DO NOT claim success — tell the user about the error.
|
|
160
|
-
Verify files were created before saying "done".`,
|
|
161
|
-
no_empty: `NEVER return an empty response. After receiving a tool result, you MUST either:
|
|
162
|
-
a) Call another tool (if more work is needed), OR
|
|
163
|
-
b) Write a text response to the user (summarize what was done, report errors, ask questions).
|
|
164
|
-
Staying silent after a tool result is always wrong.`,
|
|
165
|
-
valid_json: `The JSON inside <tool_call> must be VALID JSON. Escape " inside values as \\".
|
|
166
|
-
For grep_search patterns: escape regex special chars with \\ (e.g. \\. for literal dot, \\( for literal paren).
|
|
167
|
-
Do NOT put quotes inside the pattern — it searches for literal quote characters.`,
|
|
168
|
-
large_files: `For large files (>500 lines), prefer grep_search to find specific content:
|
|
169
|
-
{"name":"grep_search","arguments":{"pattern":"function","include":"*.ts"}}
|
|
170
|
-
Only use read_file with offset/limit when you need to SEE the full file context.
|
|
171
|
-
Do NOT call read_file multiple times on the same file sequentially — use grep first.`,
|
|
172
|
-
// ── Base/Pro only ──
|
|
173
|
-
planning_skills: `SKILLS AND PLANNING: For complex tasks (3+ steps):
|
|
174
|
-
a. AUTOMATICALLY load relevant skills by mentioning them: "@nodejs-expert @typescript-expert"
|
|
175
|
-
b. Do NOT ask the user — just load and start working
|
|
176
|
-
c. Create a plan with SPECIFIC STEP NAMES: plan({action:"create", name:"TodoApp", steps:["Create package.json and install deps", "Create src/App.tsx", "Create src/main.tsx", "Verify with tsc --noEmit"]})
|
|
177
|
-
d. For each step: use subagent to create the file, then mark step done: plan({action:"done", step:1})
|
|
178
|
-
e. Do NOT use write_file directly when a plan is active — delegate to subagents
|
|
179
|
-
f. ONE FILE PER STEP — never combine multiple files in one step`,
|
|
180
|
-
simple_tasks: `FOR SIMPLE TASKS (1-2 steps): Just do it, no plan needed. Use common sense.`,
|
|
181
|
-
never_just_talk_common: `NEVER JUST TALK — ALWAYS ACT. Do NOT say "write skills in the next message" or similar waiting phrases. If skills are loaded, START WORKING IMMEDIATELY.`,
|
|
182
|
-
skills_loaded: `When skills are already loaded in your context, you MUST use filesystem tools (write_file, create_dir, etc.) for file operations. Do NOT ask the user to load skills again.`,
|
|
183
|
-
user_profile_common: `USER PROFILE: The ## User Profile block contains observations about the user (name, stack, style). Use it silently — never mention or comment on it to the user. Do NOT proactively ask for the user's name or personal details. Never call user_profile, list_dir, tree, or any other tool just for exploration — only use tools when there is actual work to do.`,
|
|
184
|
-
no_list_dir_common: `NEVER call list_dir or tree just to "see what's in the project". Use glob_search or grep_search instead — they give more useful results. Only use list_dir when a user explicitly asks to see a directory listing.`,
|
|
185
|
-
off_topic_common: `OFF-TOPIC QUESTIONS: If the user asks something unrelated to coding (jokes, space, cooking, etc.), answer briefly and warmly — 1-2 sentences. Do NOT refuse or say "I'm a coding assistant". Just answer, then naturally offer to return to work.`,
|
|
186
|
-
one_file_common: `ONE FILE AT A TIME: When creating multiple files: a) Write the FIRST file completely, b) Wait for syntax check result, c) If error → fix it before continuing, d) Only then write the NEXT file. NEVER write multiple files in one response — small models lose track.`,
|
|
187
|
-
subagents_common: `SUBAGENTS — strict delegation for multi-file projects:
|
|
188
|
-
ABSOLUTE RULE: 1 FILE = 1 SUBAGENT CALL. No exceptions.
|
|
189
|
-
- Every file in the plan gets its OWN subagent call.
|
|
190
|
-
- NEVER combine multiple files in one subagent task.
|
|
191
|
-
- If plan has 5 files → 5 separate subagent calls.
|
|
192
|
-
- Task description MUST include the FULL path: "Create ONLY src/db.ts" not just "db.ts".
|
|
193
|
-
CRITICAL RULES FOR SUBAGENT:
|
|
194
|
-
- Subagent MUST create ONLY what is in the task description. Do NOT create extra files.
|
|
195
|
-
- If task says "Create src/db.ts" — create ONLY src/db.ts. Nothing else.
|
|
196
|
-
- NEVER let subagent "help" by creating additional files beyond the task scope.
|
|
197
|
-
- After subagent completes, parent checks what was created and verifies it matches the plan.
|
|
198
|
-
Example: subagent({task:"Create ONLY src/db.ts with sqlite connection", existingFiles:"src/types.ts"})
|
|
199
|
-
Do NOT use subagent for:
|
|
200
|
-
- Editing existing files (use edit_file directly)
|
|
201
|
-
- Bash commands like npm install, git, etc. (use bash tool)
|
|
202
|
-
Each subagent gets fresh context. Parent only tracks results (summary). After all subagents — verify with tsc --noEmit.`,
|
|
203
|
-
check_before_install: `CHECK BEFORE INSTALLING: Read the project dependency file. If the package is already listed — do not install it.`,
|
|
204
|
-
file_extensions: `FILE EXTENSIONS MATTER: .tsx for TypeScript, .jsx for plain JavaScript. Check existing files to determine which stack the project uses.`,
|
|
205
|
-
user_answers: `USER ANSWERS: When you see "User answered: X" in the conversation, this is the user's response to your question. Use it and proceed. NEVER ask the same question again.`,
|
|
206
|
-
project_map_common: `PROJECT MAP FIRST: ALWAYS check the ## Project Map section in your context BEFORE reading any files. The map shows ALL files in the project with their paths. If a file is not in the map — it doesn't exist. Do NOT guess file paths — use the map. If the map shows files inside a subdirectory (e.g. my-project/src/App.tsx), that's where the actual project lives — work inside that subdirectory.`,
|
|
207
|
-
subagent_context_common: `SUBAGENT CONTEXT: When calling subagent, ALWAYS pass:
|
|
208
|
-
- existingFiles: files already created in this session (prevents duplicates)
|
|
209
|
-
- The task description should say "Create ONLY file X" — not "Create file X and related files"
|
|
210
|
-
Example: subagent({task:"Create ONLY src/api.ts with Express CRUD", existingFiles:"src/db.ts,src/types.ts"})
|
|
211
|
-
The subagent will see the project context and should NOT create files beyond what's in the task.`,
|
|
212
|
-
web_tools: `WEB TOOLS STRATEGY:
|
|
213
|
-
a. For data extraction (products, listings, cards): use web_browse(action:"scrape") — ONE call navigates, scrolls, discovers, and extracts.
|
|
214
|
-
b. For simple pages (blogs, docs, API): use web_fetch — lightweight, no browser needed.
|
|
215
|
-
c. For interactive pages (login, forms, search): navigate → click/type → wait → scrape.
|
|
216
|
-
d. Retry scrape with a custom pattern if the default misses content: {pattern:"product|card|item"}.`,
|
|
217
|
-
// ── Fast mode only ──
|
|
218
|
-
execute_directly: `Execute tasks directly. Simple tasks (1-2 steps): just do it without commentary. Complex tasks: break into steps and execute ONE FILE AT A TIME. Write first file → check syntax → fix if needed → then next file.`,
|
|
219
|
-
never_just_talk_fast: `NEVER JUST TALK — ALWAYS ACT. Do NOT say "write" or similar waiting phrases. START WORKING IMMEDIATELY.`,
|
|
220
|
-
user_profile_fast: `USER PROFILE: The ## User Profile block contains observations about the user (name, stack, style). Use it silently — never mention or comment on it to the user. Do NOT proactively ask for the user's name or personal details. Never call tools just for exploration.`,
|
|
221
|
-
no_list_dir_fast: `NEVER call list_dir or tree just to "see what's in the project". Use glob_search or grep_search instead. Only use list_dir when explicitly asked.`,
|
|
222
|
-
off_topic_fast: `OFF-TOPIC QUESTIONS: Answer briefly and warmly (1-2 sentences). Do NOT refuse. Then offer to return to work.`,
|
|
223
|
-
one_file_fast: `ONE FILE AT A TIME: When creating multiple files, complete each file fully before starting the next. NEVER write multiple files in one response.`,
|
|
224
|
-
subagents_fast: `SUBAGENTS: 1 FILE = 1 SUBAGENT CALL. Every file gets its own subagent. NEVER combine multiple files in one task. Task MUST include FULL path (e.g. "Create ONLY src/db.ts"). Subagent MUST create ONLY what is in the task — no extra files. Do NOT use subagent for bash or edits.`,
|
|
225
|
-
project_map_fast: `PROJECT MAP FIRST: ALWAYS check the ## Project Map section in your context BEFORE reading any files. The map shows ALL files in the project with their paths. If a file is not in the map — it doesn't exist. Do NOT guess file paths — use the map. If the map shows files inside a subdirectory, that's where the actual project lives — work inside that subdirectory.`,
|
|
226
|
-
subagent_context_fast: `SUBAGENT CONTEXT: When calling subagent, pass existingFiles and use "Create ONLY" in task. Example: subagent({task:"Create ONLY X.ts with debounce function", existingFiles:"Y.ts"})`,
|
|
227
|
-
};
|
|
228
|
-
function composeRules(keys) {
|
|
229
|
-
return "Rules:\n" + keys.map((k, i) => `${i + 1}. ${R[k]}`).join("\n");
|
|
230
|
-
}
|
|
231
|
-
const RULES_COMMON = composeRules([
|
|
232
|
-
"fs_tools",
|
|
233
|
-
"user_language",
|
|
234
|
-
"check_result",
|
|
235
|
-
"no_empty",
|
|
236
|
-
"valid_json",
|
|
237
|
-
"large_files",
|
|
238
|
-
"planning_skills",
|
|
239
|
-
"simple_tasks",
|
|
240
|
-
"never_just_talk_common",
|
|
241
|
-
"skills_loaded",
|
|
242
|
-
"user_profile_common",
|
|
243
|
-
"no_list_dir_common",
|
|
244
|
-
"off_topic_common",
|
|
245
|
-
"one_file_common",
|
|
246
|
-
"subagents_common",
|
|
247
|
-
"check_before_install",
|
|
248
|
-
"file_extensions",
|
|
249
|
-
"user_answers",
|
|
250
|
-
"project_map_common",
|
|
251
|
-
"subagent_context_common",
|
|
252
|
-
"web_tools",
|
|
253
|
-
]);
|
|
254
|
-
const RULES_FAST = composeRules([
|
|
255
|
-
"fs_tools",
|
|
256
|
-
"user_language",
|
|
257
|
-
"check_result",
|
|
258
|
-
"no_empty",
|
|
259
|
-
"valid_json",
|
|
260
|
-
"large_files",
|
|
261
|
-
"execute_directly",
|
|
262
|
-
"never_just_talk_fast",
|
|
263
|
-
"user_profile_fast",
|
|
264
|
-
"no_list_dir_fast",
|
|
265
|
-
"off_topic_fast",
|
|
266
|
-
"one_file_fast",
|
|
267
|
-
"subagents_fast",
|
|
268
|
-
"check_before_install",
|
|
269
|
-
"file_extensions",
|
|
270
|
-
"user_answers",
|
|
271
|
-
"project_map_fast",
|
|
272
|
-
"subagent_context_fast",
|
|
273
|
-
"web_tools",
|
|
274
|
-
]);
|
|
275
|
-
const POWERSHELL_EXAMPLES = `Examples (PowerShell):
|
|
276
|
-
<tool_call>{"name":"bash","arguments":{"cmd":"dir"}}</tool_call>
|
|
277
|
-
<tool_call>{"name":"bash","arguments":{"cmd":"Get-Content src\\\\index.ts"}}</tool_call>
|
|
278
|
-
<tool_call>{"name":"bash","arguments":{"cmd":"npm test"}}</tool_call>
|
|
279
|
-
<tool_call>{"name":"bash","arguments":{"cmd":"Set-Content -Path file.md -Value 'Hello World'"}}</tool_call>`;
|
|
280
|
-
const POWERSHELL_RULES = `PowerShell specifics:
|
|
281
|
-
- NEVER use && in commands — PowerShell doesn't support it. Use ; instead, or make separate bash calls.
|
|
282
|
-
WRONG: cd my-app && npm install
|
|
283
|
-
RIGHT: npm install (run from my-app directory)
|
|
284
|
-
RIGHT: Set-Location my-app; npm install
|
|
285
|
-
- Use Get-ChildItem (NOT dir /s) to list files recursively.
|
|
286
|
-
WRONG: dir /s src (PowerShell interprets /s as a path, not a flag)
|
|
287
|
-
RIGHT: Get-ChildItem -Recurse src
|
|
288
|
-
- Create/write files: Set-Content -Path file.md -Value "content"
|
|
289
|
-
- Append to file: Add-Content -Path file.md -Value "line"
|
|
290
|
-
- Read files: Get-Content file.md
|
|
291
|
-
- List directory: Get-ChildItem (or dir)
|
|
292
|
-
- List directory recursively: Get-ChildItem -Recurse
|
|
293
|
-
- Create directories: New-Item -ItemType Directory -Force -Path "folder"
|
|
294
|
-
- NEVER use: echo -e, cat (use Get-Content), mkdir -p, cp, mv, sed (PowerShell has different syntax)
|
|
295
|
-
- NEVER use single quotes for strings with \\n, \\t — use DOUBLE quotes: "line1\\nline2"
|
|
296
|
-
- Paths use backslashes: src\\index.ts
|
|
297
|
-
- Check file exists: Test-Path file.md
|
|
298
|
-
- Install deps: npm install (NOT npm i)
|
|
299
|
-
- Run dev: npm run dev (NOT npx tsx watch)
|
|
300
|
-
- Run status checks: git status (works fine, no special syntax needed)`;
|
|
301
|
-
const UNIX_EXAMPLES = `Examples (Linux/macOS):
|
|
302
|
-
<tool_call>{"name":"bash","arguments":{"cmd":"ls -la"}}</tool_call>
|
|
303
|
-
<tool_call>{"name":"bash","arguments":{"cmd":"cat src/index.ts"}}</tool_call>
|
|
304
|
-
<tool_call>{"name":"bash","arguments":{"cmd":"npm test"}}</tool_call>
|
|
305
|
-
<tool_call>{"name":"bash","arguments":{"cmd":"echo 'Hello World' > file.md"}}</tool_call>`;
|
|
306
|
-
const UNIX_RULES = `Unix specifics:
|
|
307
|
-
- Create/write files: echo "content" > file.md
|
|
308
|
-
- Read files: cat file.md
|
|
309
|
-
- List directory: ls -la
|
|
310
|
-
- Paths use forward slashes: src/index.ts
|
|
311
|
-
- Check file exists: test -f file.md`;
|
|
312
|
-
// ─── System prompt cache ────────────────────────────────
|
|
313
|
-
// Caches the assembled prompt by key (cwd + mode + skills)
|
|
314
|
-
const systemPromptCache = new Map();
|
|
315
|
-
/** Invalidate system prompt cache (called when config changes) */
|
|
316
|
-
export function invalidateSystemPromptCache() {
|
|
317
|
-
systemPromptCache.clear();
|
|
318
|
-
invalidateSkillCaches();
|
|
319
|
-
}
|
|
320
|
-
/**
|
|
321
|
-
* Assembles system prompt from all blocks.
|
|
322
|
-
*
|
|
323
|
-
* Algorithm:
|
|
324
|
-
* 1. Check cache by key (cwd + mode + skill names)
|
|
325
|
-
* 2. Build header (agent name, description)
|
|
326
|
-
* 3. Platform-dependent blocks (PowerShell/Unix examples + rules)
|
|
327
|
-
* 4. System info (date, OS, path, project)
|
|
328
|
-
* 5. Agent memory + user profile
|
|
329
|
-
* 6. Project map (indexer)
|
|
330
|
-
* 7. Instructions from AGENTS.md
|
|
331
|
-
* 8. Available skills hint
|
|
332
|
-
* 9. Current mode block (fast/pro/base)
|
|
333
|
-
* 10. Loaded skill content
|
|
334
|
-
*
|
|
335
|
-
* @param extraSkills - additional skills from user prompt
|
|
336
|
-
* @param mode - working mode (fast/pro/base)
|
|
337
|
-
* @returns Assembled system prompt string
|
|
338
|
-
*/
|
|
339
|
-
export function buildSystemPrompt(extraSkills, mode, flags) {
|
|
340
|
-
const start = performance.now();
|
|
341
|
-
// Cache key: current directory + mode + skill names (sorted)
|
|
342
|
-
const key = `${process.cwd()}:${mode || "base"}:${extraSkills
|
|
343
|
-
?.map((s) => s.name)
|
|
344
|
-
.sort()
|
|
345
|
-
.join(",") || ""}`;
|
|
346
|
-
const cached = systemPromptCache.get(key);
|
|
347
|
-
if (cached) {
|
|
348
|
-
logDebug("SYSTEM", "buildSystemPrompt: cache hit");
|
|
349
|
-
return cached;
|
|
350
|
-
}
|
|
351
|
-
logDebug("SYSTEM", "buildSystemPrompt: building from scratch");
|
|
352
|
-
const isWin = os.platform() === "win32";
|
|
353
|
-
const platformName = isWin ? "Windows" : os.platform();
|
|
354
|
-
let osVersion = platformName;
|
|
355
|
-
try {
|
|
356
|
-
osVersion += ` (${os.version()})`;
|
|
357
|
-
}
|
|
358
|
-
catch {
|
|
359
|
-
/* ignore */
|
|
360
|
-
}
|
|
361
|
-
const now = new Date();
|
|
362
|
-
const dateStr = now.toLocaleDateString("en-US", {
|
|
363
|
-
year: "numeric",
|
|
364
|
-
month: "long",
|
|
365
|
-
day: "numeric",
|
|
366
|
-
weekday: "long",
|
|
367
|
-
});
|
|
368
|
-
const timeStr = now.toLocaleTimeString("en-US");
|
|
369
|
-
let projectName = "unknown";
|
|
370
|
-
const pkgPath = resolve(process.cwd(), "package.json");
|
|
371
|
-
if (existsSync(pkgPath)) {
|
|
372
|
-
try {
|
|
373
|
-
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
374
|
-
// Читаем ТОЛЬКО имя проекта — никакие другие поля package.json
|
|
375
|
-
// не должны попадать в system prompt (возможны токены, apiKey и т.д.)
|
|
376
|
-
if (typeof pkg.name === "string" && pkg.name) {
|
|
377
|
-
projectName = pkg.name;
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
catch {
|
|
381
|
-
/* ignore */
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
const rules = mode === "fast" ? RULES_FAST : RULES_COMMON;
|
|
385
|
-
const platformBlock = isWin
|
|
386
|
-
? [
|
|
387
|
-
TOOL_FORMAT,
|
|
388
|
-
CONVERSATION_FLOW,
|
|
389
|
-
POWERSHELL_EXAMPLES,
|
|
390
|
-
rules,
|
|
391
|
-
POWERSHELL_RULES,
|
|
392
|
-
].join("\n\n")
|
|
393
|
-
: [TOOL_FORMAT, CONVERSATION_FLOW, UNIX_EXAMPLES, rules, UNIX_RULES].join("\n\n");
|
|
394
|
-
const header = `You are Micro Models Agent (MMA), an AI coding assistant.
|
|
395
|
-
You help with software engineering tasks in the project directory.`;
|
|
396
|
-
const sysInfo = [
|
|
397
|
-
"",
|
|
398
|
-
"## System",
|
|
399
|
-
`Date: ${dateStr}`,
|
|
400
|
-
`Time: ${timeStr}`,
|
|
401
|
-
`OS: ${osVersion}`,
|
|
402
|
-
`Node.js: ${process.version}`,
|
|
403
|
-
`CWD: ${process.cwd()}`,
|
|
404
|
-
`Project: ${projectName}`,
|
|
405
|
-
"",
|
|
406
|
-
].join("\n");
|
|
407
|
-
// ─── Memory and user profile ──────────────────────────
|
|
408
|
-
const memory = loadAllMemoryDetailed();
|
|
409
|
-
const userProfile = loadProfileSummary();
|
|
410
|
-
// ─── Project map (from indexer) ───────────────────────
|
|
411
|
-
let projectMap = "";
|
|
412
|
-
try {
|
|
413
|
-
const { formatted, fromCache } = getOrBuildProjectMap(process.cwd());
|
|
414
|
-
if (formatted) {
|
|
415
|
-
projectMap = `\n## Project Map${fromCache ? " (cached)" : ""}\n${formatted}`;
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
catch {
|
|
419
|
-
/* ignore */
|
|
420
|
-
}
|
|
421
|
-
// ─── Project instructions (AGENTS.md) ─────────────────
|
|
422
|
-
const agentsMd = flags?.dev ? null : loadAgentsMd(process.cwd());
|
|
423
|
-
const agentsBlock = agentsMd
|
|
424
|
-
? `\n## Project Instructions (AGENTS.md)\n${agentsMd}`
|
|
425
|
-
: "";
|
|
426
|
-
// ─── Available skills hint ────────────────────────────
|
|
427
|
-
const allSkills = listSkillsWithDescriptions();
|
|
428
|
-
const truncateDesc = (d, max = 100) => d.length <= max ? d : d.slice(0, max - 1) + "…";
|
|
429
|
-
const skillsHint = allSkills.length > 0
|
|
430
|
-
? `\n## Available Skills (${allSkills.length})\nSkills contain ready-made workflows, best practices, and step-by-step guides.\nFor complex tasks (3+ steps): mention @skill-name in your response — skills will be auto-loaded into context.\nDo NOT put @skill-name inside tool_call. Just mention them naturally in your text.\nWorkflow:\n 1. User asks: "Create a REST API"\n 2. You: "I'll use @typescript-expert @nodejs-expert for this task." (skills auto-load on next turn)\n 3. You create plan BASED ON skill guidance: plan create REST API ...\n 4. You execute plan step by step\n\nAvailable skills:\n${allSkills
|
|
431
|
-
.map((s) => s.description
|
|
432
|
-
? ` @${s.name} — ${truncateDesc(s.description)}`
|
|
433
|
-
: ` @${s.name}`)
|
|
434
|
-
.join("\n")}`
|
|
435
|
-
: "";
|
|
436
|
-
// ─── Mode block ──────────────────────────────────────
|
|
437
|
-
const modeBlock = mode === "fast"
|
|
438
|
-
? `\n## Mode: Fast\n\u26a1 Fast mode \u2014 execute tasks directly without planning or loading skills. Skills are not available in this mode. Proceed immediately.`
|
|
439
|
-
: mode === "pro"
|
|
440
|
-
? `\n## Mode: Pro\n\ud83d\udd0d Pro mode — @grill-me skill is pre-loaded. Before starting any task, you MUST first read and run the grill-me skill instructions to clarify requirements. Use it to refine the task before execution. Minimum context window: 64000.`
|
|
441
|
-
: "";
|
|
442
|
-
// ─── Final prompt assembly ───────────────────────────
|
|
443
|
-
const base = mode === "fast"
|
|
444
|
-
? [
|
|
445
|
-
header,
|
|
446
|
-
platformBlock,
|
|
447
|
-
sysInfo,
|
|
448
|
-
memory,
|
|
449
|
-
userProfile,
|
|
450
|
-
projectMap,
|
|
451
|
-
agentsBlock,
|
|
452
|
-
modeBlock,
|
|
453
|
-
]
|
|
454
|
-
.filter(Boolean)
|
|
455
|
-
.join("\n")
|
|
456
|
-
: [
|
|
457
|
-
header,
|
|
458
|
-
platformBlock,
|
|
459
|
-
sysInfo,
|
|
460
|
-
memory,
|
|
461
|
-
userProfile,
|
|
462
|
-
projectMap,
|
|
463
|
-
agentsBlock,
|
|
464
|
-
skillsHint,
|
|
465
|
-
modeBlock,
|
|
466
|
-
]
|
|
467
|
-
.filter(Boolean)
|
|
468
|
-
.join("\n");
|
|
469
|
-
const result = base +
|
|
470
|
-
(extraSkills && extraSkills.length > 0 && mode !== "fast"
|
|
471
|
-
? "\n\n" + formatSkillsBlock(extraSkills)
|
|
472
|
-
: "");
|
|
473
|
-
const elapsed = (performance.now() - start).toFixed(0);
|
|
474
|
-
logInfo("SYSTEM", `buildSystemPrompt: ${result.length} chars in ${elapsed}ms`);
|
|
475
|
-
systemPromptCache.set(key, result);
|
|
476
|
-
return result;
|
|
477
|
-
}
|
|
478
|
-
//# sourceMappingURL=system-prompt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { ToolHandler, ToolResult, ToolContext, ParsedToolCall } from "../tools/types.js";
|
|
2
|
-
/** Обрезка вывода инструмента для экономии токенов */
|
|
3
|
-
export declare function truncateOutput(toolName: string, output: string, exitCode: number): string;
|
|
4
|
-
/** Результат выполнения ToolExecutor */
|
|
5
|
-
export interface ExecutorResult {
|
|
6
|
-
result: ToolResult;
|
|
7
|
-
/** Время выполнения в секундах */
|
|
8
|
-
elapsed: number;
|
|
9
|
-
}
|
|
10
|
-
export declare class ToolExecutor {
|
|
11
|
-
private handlers;
|
|
12
|
-
/** Повторяющиеся ошибки: hash → { count, lastStderr } */
|
|
13
|
-
private recentErrors;
|
|
14
|
-
/** Регистрация обработчика инструмента */
|
|
15
|
-
register(handler: ToolHandler): void;
|
|
16
|
-
/** Регистрация нескольких обработчиков */
|
|
17
|
-
registerAll(handlers: ToolHandler[]): void;
|
|
18
|
-
/** Проверка существования обработчика */
|
|
19
|
-
has(name: string): boolean;
|
|
20
|
-
/** Получение обработчика по имени */
|
|
21
|
-
get(name: string): ToolHandler | undefined;
|
|
22
|
-
/** Получение определений всех инструментов для LLM */
|
|
23
|
-
getDefinitions(): import("../tools/registry.js").ToolDefinition[];
|
|
24
|
-
/** Pre-flight проверка существования пути для FS-тулов */
|
|
25
|
-
private preFlightCheck;
|
|
26
|
-
/**
|
|
27
|
-
* Выполнение tool call через пайплайн.
|
|
28
|
-
*
|
|
29
|
-
* @param call - инструментальный вызов из LLM
|
|
30
|
-
* @param context - контекст выполнения (cwd, renderer и т.д.)
|
|
31
|
-
* @param hookCmd - строка для хуков (bash command или tool name + args)
|
|
32
|
-
* @returns результат выполнения с обрезанным выводом
|
|
33
|
-
*/
|
|
34
|
-
execute(call: ParsedToolCall, context: ToolContext, hookCmd: string): Promise<ExecutorResult>;
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=tool-executor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../src/agent/tool-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACf,MAAM,mBAAmB,CAAC;AAmH3B,sDAAsD;AACtD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,MAAM,CASR;AAED,wCAAwC;AACxC,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AA2BD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAuC;IACvD,yDAAyD;IACzD,OAAO,CAAC,YAAY,CACR;IAEZ,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAIpC,0CAA0C;IAC1C,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI;IAM1C,yCAAyC;IACzC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,qCAAqC;IACrC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI1C,sDAAsD;IACtD,cAAc;IAId,0DAA0D;IAC1D,OAAO,CAAC,cAAc;IA8CtB;;;;;;;OAOG;IACG,OAAO,CACX,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC;CA8K3B"}
|