micro-models-agent 2.16.1 → 2.17.2
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/CHANGELOG.md +34 -0
- package/README.md +8 -3
- package/dist/assets/app.js +1 -314
- package/dist/assets/hljs.js +5 -1244
- package/dist/assets/index.html +11 -0
- package/dist/assets/js/api.js +1 -28
- package/dist/assets/js/core/menus.js +1 -0
- package/dist/assets/js/core/store/feed.js +1 -0
- package/dist/assets/js/core/store/index.js +1 -0
- package/dist/assets/js/core/store/session.js +1 -0
- package/dist/assets/js/core/store/settings.js +1 -0
- package/dist/assets/js/core/store/tabs.js +1 -0
- package/dist/assets/js/dialog.js +1 -105
- package/dist/assets/js/dom.js +1 -178
- package/dist/assets/js/feed/core.js +1 -0
- package/dist/assets/js/feed/history.js +1 -0
- package/dist/assets/js/feed/plan.js +1 -0
- package/dist/assets/js/feed/question.js +3 -0
- package/dist/assets/js/feed/sidebar.js +1 -0
- package/dist/assets/js/feed/stream.js +1 -0
- package/dist/assets/js/feed/turn.js +5 -0
- package/dist/assets/js/feed.js +1 -1250
- package/dist/assets/js/format.js +2 -122
- package/dist/assets/js/i18n.js +1 -46
- package/dist/assets/js/rail.js +1 -114
- package/dist/assets/js/session/cmdk.js +1 -0
- package/dist/assets/js/session/composer.js +1 -0
- package/dist/assets/js/session/sessions-menu.js +1 -0
- package/dist/assets/js/session/tabs.js +1 -0
- package/dist/assets/js/settings/controls.js +1 -0
- package/dist/assets/js/settings/editors.js +1 -0
- package/dist/assets/js/settings/form.js +1 -0
- package/dist/assets/js/settings/modal.js +1 -0
- package/dist/assets/js/settings/panels.js +1 -0
- package/dist/assets/js/settings/providers.js +1 -0
- package/dist/assets/js/settings/search.js +1 -0
- package/dist/assets/js/settings/subdialog.js +1 -0
- package/dist/assets/js/settings/write.js +1 -0
- package/dist/assets/js/settings.js +1 -1914
- package/dist/assets/js/sidebar/core.js +1 -0
- package/dist/assets/js/sidebar/lsp.js +2 -0
- package/dist/assets/js/sidebar/map.js +1 -0
- package/dist/assets/js/sidebar/state.js +1 -0
- package/dist/assets/js/sidebar/trace.js +5 -0
- package/dist/assets/js/sidebar.js +1 -705
- package/dist/assets/js/store.js +1 -82
- package/dist/assets/js/subdialog.js +1 -0
- package/dist/assets/md.js +1 -291
- package/dist/assets/setup.js +3 -816
- package/dist/assets/smd.js +29 -1665
- package/dist/assets/styles.css +1 -1598
- package/dist/certification/certifications.json +1 -494
- package/dist/i18n/en.json +1 -1851
- package/dist/i18n/ru.json +1 -1854
- package/dist/main.js +815 -55797
- package/dist/modules/browser/bridge-server.mjs +2 -252
- package/package.json +10 -5
- package/dist/assets/js/settings-controls.js +0 -452
- package/dist/assets/js/tabs.js +0 -867
- package/dist/cli/cache-line.js +0 -31
- package/dist/cli/command-suggest.js +0 -39
- package/dist/cli/commands.js +0 -781
- package/dist/cli/completer.js +0 -268
- package/dist/cli/index.js +0 -3
- package/dist/cli/json-payload.js +0 -32
- package/dist/cli/main.js +0 -346
- package/dist/cli/onboarding-commands.js +0 -126
- package/dist/cli/plugin-commands.js +0 -38
- package/dist/cli/relaunch.js +0 -40
- package/dist/cli/repl-commands-lsp.js +0 -75
- package/dist/cli/repl-commands-skills.js +0 -105
- package/dist/cli/repl-commands.js +0 -1218
- package/dist/cli/repl.js +0 -1238
- package/dist/cli/run-result.js +0 -38
- package/dist/cli/security-commands.js +0 -177
- package/dist/cli/setup-order.js +0 -6
- package/dist/cli/setup-prompt.js +0 -50
- package/dist/cli/setup.js +0 -161
- package/dist/cli/web-command.js +0 -98
- package/dist/config/budget.js +0 -48
- package/dist/config/config.js +0 -345
- package/dist/config/defaults.js +0 -197
- package/dist/config/domains.js +0 -135
- package/dist/config/env.js +0 -46
- package/dist/config/experts.js +0 -17
- package/dist/config/index.js +0 -5
- package/dist/config/paths.js +0 -56
- package/dist/config/redact.js +0 -44
- package/dist/config/registry-extra.js +0 -334
- package/dist/config/registry.js +0 -584
- package/dist/config/security.js +0 -212
- package/dist/config/timeouts.js +0 -74
- package/dist/config/types.js +0 -1
- package/dist/config/utils.js +0 -57
- package/dist/core/agent/artifact-progress.js +0 -59
- package/dist/core/agent/artifact-resolve.js +0 -79
- package/dist/core/agent/audit-gate.js +0 -53
- package/dist/core/agent/compaction.js +0 -89
- package/dist/core/agent/constants.js +0 -90
- package/dist/core/agent/context-log.js +0 -454
- package/dist/core/agent/context-renderer.js +0 -45
- package/dist/core/agent/critic-gate.js +0 -132
- package/dist/core/agent/hallucination-gate.js +0 -197
- package/dist/core/agent/loop-state.js +0 -68
- package/dist/core/agent/prefix-monitor.js +0 -101
- package/dist/core/agent/reasoning-resolver.js +0 -65
- package/dist/core/agent/token-tracker.js +0 -99
- package/dist/core/agent/tool-batch.js +0 -312
- package/dist/core/agent/tool-images.js +0 -18
- package/dist/core/agent/tool-output.js +0 -116
- package/dist/core/agent/tool-pairing.js +0 -60
- package/dist/core/agent-moe.js +0 -248
- package/dist/core/agent.js +0 -1299
- package/dist/core/bootstrap/agent-phase.js +0 -66
- package/dist/core/bootstrap/config-phase.js +0 -86
- package/dist/core/bootstrap/modules-phase.js +0 -269
- package/dist/core/bootstrap/provider-phase.js +0 -183
- package/dist/core/bootstrap/session-phase.js +0 -204
- package/dist/core/bootstrap/state.js +0 -94
- package/dist/core/bootstrap/workspace-phase.js +0 -115
- package/dist/core/bootstrap.js +0 -112
- package/dist/core/crash-handler.js +0 -62
- package/dist/core/environment.js +0 -224
- package/dist/core/host-plan.js +0 -43
- package/dist/core/host.js +0 -23
- package/dist/core/index.js +0 -3
- package/dist/core/prompt-builder.js +0 -95
- package/dist/core/prompt-overflow.js +0 -306
- package/dist/core/session-logger.js +0 -375
- package/dist/core/system-prompt.js +0 -117
- package/dist/core/types.js +0 -1
- package/dist/core/version.js +0 -28
- package/dist/core/web-host.js +0 -34
- package/dist/core/workspace.js +0 -80
- package/dist/i18n/index.js +0 -80
- package/dist/index.js +0 -30
- package/dist/llm/cache-usage.js +0 -76
- package/dist/llm/image-utils.js +0 -138
- package/dist/llm/index.js +0 -4
- package/dist/llm/llm-errors.js +0 -50
- package/dist/llm/model-loader.js +0 -86
- package/dist/llm/models-dev.js +0 -121
- package/dist/llm/openai-compat.js +0 -756
- package/dist/llm/orchestrator.js +0 -294
- package/dist/llm/provider-budget.js +0 -68
- package/dist/llm/provider-context.js +0 -233
- package/dist/llm/provider.js +0 -9
- package/dist/llm/response.js +0 -44
- package/dist/llm/stream-state.js +0 -26
- package/dist/llm/token-counter.js +0 -83
- package/dist/llm/types.js +0 -1
- package/dist/logger/app-logger.js +0 -212
- package/dist/logger/file-log.js +0 -160
- package/dist/logger/index.js +0 -2
- package/dist/migration/backup.js +0 -56
- package/dist/migration/detect.js +0 -61
- package/dist/migration/index.js +0 -3
- package/dist/modules/artifacts/store.js +0 -62
- package/dist/modules/browser/actions.js +0 -79
- package/dist/modules/browser/bridge-client.js +0 -203
- package/dist/modules/browser/bridge-path.js +0 -10
- package/dist/modules/browser/console-buffer.js +0 -37
- package/dist/modules/browser/cookie-store.js +0 -29
- package/dist/modules/browser/driver-types.js +0 -1
- package/dist/modules/browser/driver.js +0 -186
- package/dist/modules/browser/index.js +0 -9
- package/dist/modules/browser/module.js +0 -30
- package/dist/modules/browser/session.js +0 -322
- package/dist/modules/browser/snapshot.js +0 -154
- package/dist/modules/browser/types.js +0 -13
- package/dist/modules/certification/cli.js +0 -264
- package/dist/modules/certification/fact-checker.js +0 -90
- package/dist/modules/certification/loader.js +0 -127
- package/dist/modules/certification/manifest.js +0 -231
- package/dist/modules/certification/runner.js +0 -233
- package/dist/modules/certification/scenarios.js +0 -586
- package/dist/modules/certification/syntax-scenarios.js +0 -50
- package/dist/modules/certification/types.js +0 -1
- package/dist/modules/context/chunk-query.js +0 -122
- package/dist/modules/context/fact-extractor.js +0 -170
- package/dist/modules/context/history.js +0 -15
- package/dist/modules/context/index.js +0 -2
- package/dist/modules/context/manager.js +0 -482
- package/dist/modules/critic/client.js +0 -176
- package/dist/modules/critic/evidence.js +0 -81
- package/dist/modules/critic/provider.js +0 -45
- package/dist/modules/critic/tools.js +0 -78
- package/dist/modules/critic/types.js +0 -1
- package/dist/modules/execution/audit-runners.js +0 -206
- package/dist/modules/execution/auditor.js +0 -222
- package/dist/modules/execution/execution-plugin.js +0 -478
- package/dist/modules/execution/index.js +0 -8
- package/dist/modules/execution/input-from.js +0 -70
- package/dist/modules/execution/module.js +0 -891
- package/dist/modules/execution/moe-executor.js +0 -443
- package/dist/modules/execution/plan-actions.js +0 -642
- package/dist/modules/execution/plan-checks.js +0 -35
- package/dist/modules/execution/plan-coverage.js +0 -71
- package/dist/modules/execution/plan-persister.js +0 -46
- package/dist/modules/execution/plan-steps.js +0 -31
- package/dist/modules/execution/plan-store.js +0 -274
- package/dist/modules/execution/plan-tool.js +0 -249
- package/dist/modules/execution/plan-validator.js +0 -197
- package/dist/modules/execution/planner.js +0 -103
- package/dist/modules/execution/stuck-detector.js +0 -834
- package/dist/modules/execution/tracker.js +0 -92
- package/dist/modules/execution/transient-error.js +0 -30
- package/dist/modules/execution/types.js +0 -1
- package/dist/modules/execution/verifier.js +0 -343
- package/dist/modules/execution/windows-commands.js +0 -52
- package/dist/modules/hallucination/artifact-claim.js +0 -93
- package/dist/modules/hallucination/confidence.js +0 -81
- package/dist/modules/hallucination/consistency.js +0 -37
- package/dist/modules/hallucination/detector.js +0 -57
- package/dist/modules/hallucination/factual.js +0 -205
- package/dist/modules/hallucination/index.js +0 -6
- package/dist/modules/hallucination/js-identifiers.js +0 -261
- package/dist/modules/hallucination/llm-judge.js +0 -116
- package/dist/modules/hallucination/success-claim.js +0 -59
- package/dist/modules/index.js +0 -5
- package/dist/modules/indexer/cache.js +0 -88
- package/dist/modules/indexer/index.js +0 -4
- package/dist/modules/indexer/map-command.js +0 -33
- package/dist/modules/indexer/map-select.js +0 -87
- package/dist/modules/indexer/module.js +0 -293
- package/dist/modules/indexer/project-profile.js +0 -184
- package/dist/modules/indexer/symbols.js +0 -189
- package/dist/modules/indexer/walker.js +0 -285
- package/dist/modules/lsp/check-tool.js +0 -61
- package/dist/modules/lsp/client.js +0 -406
- package/dist/modules/lsp/command.js +0 -53
- package/dist/modules/lsp/config.js +0 -189
- package/dist/modules/lsp/index.js +0 -4
- package/dist/modules/lsp/module.js +0 -295
- package/dist/modules/lsp/probe.js +0 -86
- package/dist/modules/lsp/project-root.js +0 -69
- package/dist/modules/lsp/startup-check.js +0 -154
- package/dist/modules/lsp/types.js +0 -1
- package/dist/modules/mcp/client.js +0 -445
- package/dist/modules/mcp/index.js +0 -4
- package/dist/modules/mcp/module.js +0 -295
- package/dist/modules/mcp/registry.js +0 -20
- package/dist/modules/memory/index.js +0 -2
- package/dist/modules/memory/module.js +0 -101
- package/dist/modules/memory/search.js +0 -45
- package/dist/modules/memory/store.js +0 -107
- package/dist/modules/onboarding/init.js +0 -47
- package/dist/modules/onboarding/meet.js +0 -30
- package/dist/modules/onboarding/mode.js +0 -30
- package/dist/modules/onboarding/prompts.js +0 -43
- package/dist/modules/pipelines/engine.js +0 -70
- package/dist/modules/pipelines/index.js +0 -4
- package/dist/modules/pipelines/parser.js +0 -59
- package/dist/modules/pipelines/template.js +0 -18
- package/dist/modules/plugins/builtin/lint-on-write.js +0 -377
- package/dist/modules/plugins/builtin/notify.js +0 -11
- package/dist/modules/plugins/index.js +0 -2
- package/dist/modules/plugins/loader.js +0 -85
- package/dist/modules/plugins/manager.js +0 -244
- package/dist/modules/plugins/types.js +0 -1
- package/dist/modules/pricing/index.js +0 -70
- package/dist/modules/pricing/prices.js +0 -147
- package/dist/modules/processes/detect.js +0 -34
- package/dist/modules/processes/index.js +0 -4
- package/dist/modules/processes/kill-tree.js +0 -52
- package/dist/modules/processes/registry.js +0 -294
- package/dist/modules/processes/runner.js +0 -23
- package/dist/modules/providers/cache.js +0 -23
- package/dist/modules/providers/capabilities.js +0 -28
- package/dist/modules/providers/create.js +0 -21
- package/dist/modules/providers/factory.js +0 -28
- package/dist/modules/providers/fallback.js +0 -81
- package/dist/modules/providers/health.js +0 -47
- package/dist/modules/providers/index.js +0 -6
- package/dist/modules/providers/manager.js +0 -207
- package/dist/modules/providers/naming.js +0 -15
- package/dist/modules/providers/preflight.js +0 -71
- package/dist/modules/providers/presets.js +0 -232
- package/dist/modules/providers/registry.js +0 -27
- package/dist/modules/providers/types.js +0 -1
- package/dist/modules/reasoning/policy.js +0 -42
- package/dist/modules/reasoning/probe.js +0 -116
- package/dist/modules/registry.js +0 -48
- package/dist/modules/security/audit-log.js +0 -119
- package/dist/modules/security/audit-notifier.js +0 -267
- package/dist/modules/security/command-validator.js +0 -272
- package/dist/modules/security/content-scanner.js +0 -53
- package/dist/modules/security/data-sanitizer.js +0 -82
- package/dist/modules/security/encryption.js +0 -216
- package/dist/modules/security/index.js +0 -15
- package/dist/modules/security/network-validator.js +0 -236
- package/dist/modules/security/path-validator.js +0 -261
- package/dist/modules/security/protected-paths.js +0 -73
- package/dist/modules/security/rate-limiter.js +0 -98
- package/dist/modules/security/security-policies.js +0 -499
- package/dist/modules/security/session-encryption.js +0 -182
- package/dist/modules/security/session-isolation.js +0 -75
- package/dist/modules/session/auto-name.js +0 -63
- package/dist/modules/session/export.js +0 -98
- package/dist/modules/session/index.js +0 -4
- package/dist/modules/session/manager.js +0 -234
- package/dist/modules/session/module.js +0 -33
- package/dist/modules/session/store.js +0 -295
- package/dist/modules/session/types.js +0 -1
- package/dist/modules/setup/answers.js +0 -35
- package/dist/modules/setup/apply.js +0 -79
- package/dist/modules/setup/discovery.js +0 -72
- package/dist/modules/skills/index.js +0 -3
- package/dist/modules/skills/loader.js +0 -86
- package/dist/modules/skills/matcher.js +0 -27
- package/dist/modules/skills/module.js +0 -141
- package/dist/modules/types.js +0 -1
- package/dist/modules/updater/changelog-reader.js +0 -93
- package/dist/modules/updater/checker.js +0 -101
- package/dist/modules/updater/dev-detect.js +0 -18
- package/dist/modules/updater/index.js +0 -4
- package/dist/modules/updater/module.js +0 -129
- package/dist/modules/user-profile/compressor.js +0 -18
- package/dist/modules/user-profile/index.js +0 -2
- package/dist/modules/user-profile/profile.js +0 -77
- package/dist/modules/webui/answer-api.js +0 -29
- package/dist/modules/webui/assets.js +0 -50
- package/dist/modules/webui/body.js +0 -21
- package/dist/modules/webui/commands-settings.js +0 -209
- package/dist/modules/webui/commands-shared.js +0 -60
- package/dist/modules/webui/commands.js +0 -174
- package/dist/modules/webui/config-api.js +0 -134
- package/dist/modules/webui/file-api.js +0 -202
- package/dist/modules/webui/forward.js +0 -159
- package/dist/modules/webui/history-api.js +0 -112
- package/dist/modules/webui/host-state.js +0 -60
- package/dist/modules/webui/i18n-api.js +0 -9
- package/dist/modules/webui/limits.js +0 -6
- package/dist/modules/webui/log-forward.js +0 -20
- package/dist/modules/webui/memory-commands.js +0 -64
- package/dist/modules/webui/model-cache.js +0 -18
- package/dist/modules/webui/module.js +0 -148
- package/dist/modules/webui/persist.js +0 -24
- package/dist/modules/webui/prompt-io.js +0 -97
- package/dist/modules/webui/providers-api.js +0 -337
- package/dist/modules/webui/providers-view.js +0 -56
- package/dist/modules/webui/reasoning-view.js +0 -15
- package/dist/modules/webui/run-agent.js +0 -81
- package/dist/modules/webui/server.js +0 -284
- package/dist/modules/webui/sessions-api.js +0 -178
- package/dist/modules/webui/settings-api.js +0 -561
- package/dist/modules/webui/setup-api.js +0 -201
- package/dist/modules/webui/state.js +0 -74
- package/dist/modules/webui/util.js +0 -261
- package/dist/output/bus.js +0 -37
- package/dist/output/channel.js +0 -285
- package/dist/output/format.js +0 -15
- package/dist/output/index.js +0 -8
- package/dist/output/json-sink.js +0 -24
- package/dist/output/machine.js +0 -9
- package/dist/output/session-sink.js +0 -27
- package/dist/output/types.js +0 -1
- package/dist/tools/approve.js +0 -41
- package/dist/tools/attach-image.js +0 -102
- package/dist/tools/auto-fixer.js +0 -180
- package/dist/tools/auto-tags.js +0 -83
- package/dist/tools/bash.js +0 -649
- package/dist/tools/browser.js +0 -160
- package/dist/tools/chunk-query.js +0 -112
- package/dist/tools/create-dir.js +0 -60
- package/dist/tools/delete-file.js +0 -67
- package/dist/tools/download-file.js +0 -142
- package/dist/tools/edit-file.js +0 -136
- package/dist/tools/enable-tools.js +0 -59
- package/dist/tools/executor.js +0 -304
- package/dist/tools/file-info.js +0 -49
- package/dist/tools/filter-tools.js +0 -17
- package/dist/tools/glob-tool.js +0 -37
- package/dist/tools/grep-tool.js +0 -142
- package/dist/tools/hidden-tools-block.js +0 -37
- package/dist/tools/index.js +0 -88
- package/dist/tools/list-dir.js +0 -53
- package/dist/tools/load-skill.js +0 -51
- package/dist/tools/mcp-call.js +0 -80
- package/dist/tools/meet-done.js +0 -14
- package/dist/tools/move-file.js +0 -94
- package/dist/tools/path-utils.js +0 -108
- package/dist/tools/pipeline-run.js +0 -167
- package/dist/tools/preview.js +0 -2
- package/dist/tools/process-ids.js +0 -31
- package/dist/tools/process-kill.js +0 -33
- package/dist/tools/process-list.js +0 -38
- package/dist/tools/process-log.js +0 -49
- package/dist/tools/process-wait.js +0 -63
- package/dist/tools/prompt-io.js +0 -29
- package/dist/tools/question.js +0 -288
- package/dist/tools/read-file.js +0 -200
- package/dist/tools/recall.js +0 -124
- package/dist/tools/registry.js +0 -48
- package/dist/tools/remember.js +0 -72
- package/dist/tools/scope-check.js +0 -32
- package/dist/tools/scope-request.js +0 -96
- package/dist/tools/search-history.js +0 -88
- package/dist/tools/session-info.js +0 -46
- package/dist/tools/set-thinking.js +0 -75
- package/dist/tools/subagent.js +0 -257
- package/dist/tools/syntax-validator.js +0 -379
- package/dist/tools/types.js +0 -1
- package/dist/tools/user-input.js +0 -134
- package/dist/tools/web-browse.js +0 -93
- package/dist/tools/web-fetch.js +0 -108
- package/dist/tools/web-search.js +0 -107
- package/dist/tools/write-file.js +0 -128
- package/dist/ui/action-log.js +0 -13
- package/dist/ui/box.js +0 -78
- package/dist/ui/colors.js +0 -6
- package/dist/ui/diff.js +0 -189
- package/dist/ui/index.js +0 -7
- package/dist/ui/line-editor.js +0 -1083
- package/dist/ui/line-math.js +0 -98
- package/dist/ui/md-formatter.js +0 -322
- package/dist/ui/output.js +0 -19
- package/dist/ui/plan-view.js +0 -109
- package/dist/ui/renderer.js +0 -589
- package/dist/ui/spinner.js +0 -91
- package/dist/ui/table.js +0 -142
- package/dist/ui/theme.js +0 -143
- package/dist/utils/child-run.js +0 -20
- package/dist/utils/error.js +0 -4
- package/dist/utils/index.js +0 -6
- package/dist/utils/retry.js +0 -17
- package/dist/utils/sleep.js +0 -23
- package/dist/utils/truncate.js +0 -9
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
/** Тул прогона именованного YAML-пайплайна (DAG субагентов). */
|
|
2
|
-
import { t } from "../i18n/index";
|
|
3
|
-
import { PipelineEngine } from "../modules/pipelines/engine";
|
|
4
|
-
import { PipelineParser } from "../modules/pipelines/parser";
|
|
5
|
-
import { TemplateEngine } from "../modules/pipelines/template";
|
|
6
|
-
import { Agent } from "../core/agent";
|
|
7
|
-
import { ContextManager } from "../modules/context/manager";
|
|
8
|
-
import { PluginManager } from "../modules/plugins/manager";
|
|
9
|
-
import { HallucinationDetector } from "../modules/hallucination/detector";
|
|
10
|
-
import { logSecurityBlock } from "../modules/security/audit-log";
|
|
11
|
-
import { getSessionSecurityConfig } from "../modules/security/session-isolation";
|
|
12
|
-
/** Максимум параллельных шагов / попыток шага. */
|
|
13
|
-
const MAX_CONCURRENT = 3;
|
|
14
|
-
const MAX_ATTEMPTS = 3;
|
|
15
|
-
/** Прогоняет шаг пайплайна субагентом с ретраями (параметры/выходы — в промпт). */
|
|
16
|
-
async function runStep(ctx, step, params, outputs) {
|
|
17
|
-
const prompt = TemplateEngine.render(step.prompt, params, outputs);
|
|
18
|
-
let lastError = "";
|
|
19
|
-
for (let attempt = 1; attempt <= MAX_ATTEMPTS; attempt++) {
|
|
20
|
-
try {
|
|
21
|
-
const subContextManager = new ContextManager(ctx.config.contextWindow, ctx.config.contextBudget);
|
|
22
|
-
const subPluginManager = new PluginManager();
|
|
23
|
-
const systemPrompt = {
|
|
24
|
-
content: `You are a pipeline step agent ("${step.agent}"). Complete the given task using the available tools.`,
|
|
25
|
-
priority: "critical",
|
|
26
|
-
essential: true,
|
|
27
|
-
estimatedTokens: 80,
|
|
28
|
-
};
|
|
29
|
-
const subDeps = {
|
|
30
|
-
config: ctx.config,
|
|
31
|
-
llmProvider: ctx.llmProvider,
|
|
32
|
-
toolExecutor: ctx.toolExecutor,
|
|
33
|
-
pluginManager: subPluginManager,
|
|
34
|
-
contextManager: subContextManager,
|
|
35
|
-
hallucinationDetector: new HallucinationDetector(ctx.baseDir, ctx.llmProvider),
|
|
36
|
-
logger: ctx.logger,
|
|
37
|
-
baseDir: ctx.baseDir,
|
|
38
|
-
scope: ctx.scope,
|
|
39
|
-
recursionDepth: (ctx.recursionDepth ?? 0) + 1,
|
|
40
|
-
promptBlocks: [systemPrompt],
|
|
41
|
-
};
|
|
42
|
-
const subAgent = new Agent(subDeps);
|
|
43
|
-
const result = await subAgent.run(prompt);
|
|
44
|
-
if (result.success) {
|
|
45
|
-
return { ok: true, output: result.text };
|
|
46
|
-
}
|
|
47
|
-
lastError = result.error || "no output";
|
|
48
|
-
}
|
|
49
|
-
catch (e) {
|
|
50
|
-
lastError = e.message;
|
|
51
|
-
}
|
|
52
|
-
await new Promise((r) => setTimeout(r, 500 * attempt));
|
|
53
|
-
}
|
|
54
|
-
return { ok: false, output: "", error: lastError };
|
|
55
|
-
}
|
|
56
|
-
/** Запускает DAG субагентов в порядке зависимостей. Параметры: name, yaml, params. */
|
|
57
|
-
export const pipelineRunTool = {
|
|
58
|
-
name: "pipeline_run",
|
|
59
|
-
icon: "▶️",
|
|
60
|
-
description: "Run a named pipeline with YAML definition. Creates a DAG of sub-agents that execute in dependency order.",
|
|
61
|
-
tags: ["shell"],
|
|
62
|
-
parameters: {
|
|
63
|
-
type: "object",
|
|
64
|
-
properties: {
|
|
65
|
-
name: { type: "string", description: "Pipeline name" },
|
|
66
|
-
yaml: { type: "string", description: "Pipeline YAML definition with steps" },
|
|
67
|
-
params: { type: "object", description: "Template params for {key} placeholders" },
|
|
68
|
-
},
|
|
69
|
-
required: ["name", "yaml"],
|
|
70
|
-
},
|
|
71
|
-
handler: async (ctx, args) => {
|
|
72
|
-
const name = String(args.name || "");
|
|
73
|
-
const yaml = String(args.yaml || "");
|
|
74
|
-
const params = args.params || {};
|
|
75
|
-
if (!yaml) {
|
|
76
|
-
return { success: false, output: t("pipeline.invalid") };
|
|
77
|
-
}
|
|
78
|
-
if (!ctx.llmProvider || !ctx.toolExecutor) {
|
|
79
|
-
return {
|
|
80
|
-
success: false,
|
|
81
|
-
output: t("tool.pipeline_cannot_run"),
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
const securityConfig = ctx.sessionContext
|
|
85
|
-
? getSessionSecurityConfig(ctx.config, ctx.sessionContext)
|
|
86
|
-
: ctx.config.security;
|
|
87
|
-
const maxDepth = securityConfig?.maxRecursionDepth ?? 3;
|
|
88
|
-
// Глубина — на SHARED-контексте исполнителя (вложенные субагенты/пайплайны
|
|
89
|
-
// читают её там); `ctx.recursionDepth` снапшотится раз и не инкрементится,
|
|
90
|
-
// поэтому старый гард не срабатывал. Зеркало subagent.ts.
|
|
91
|
-
const executor = ctx.toolExecutor;
|
|
92
|
-
const currentDepth = executor?.getRecursionDepth?.() ?? ctx.recursionDepth ?? 0;
|
|
93
|
-
if (currentDepth >= maxDepth) {
|
|
94
|
-
logSecurityBlock(ctx.sessionId, "bash_command", `Maximum recursion depth (${maxDepth}) exceeded`, name);
|
|
95
|
-
return {
|
|
96
|
-
success: false,
|
|
97
|
-
output: `[SECURITY BLOCKED] Maximum pipeline recursion depth (${maxDepth}) exceeded`,
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
// Свежий движок на вызов: module-level синглтон сбрасывался конкурентными
|
|
101
|
-
// вызовами (MoE-волны делят исполнитель) и портил состояние шагов.
|
|
102
|
-
const engine = new PipelineEngine();
|
|
103
|
-
executor?.setRecursionDepth?.(currentDepth + 1);
|
|
104
|
-
try {
|
|
105
|
-
const pipeline = PipelineParser.parse(yaml);
|
|
106
|
-
const order = engine.resolveDependencies(pipeline.steps);
|
|
107
|
-
const completed = new Set();
|
|
108
|
-
const outputs = {};
|
|
109
|
-
const logs = [];
|
|
110
|
-
const failed = new Set();
|
|
111
|
-
while (completed.size < pipeline.steps.length) {
|
|
112
|
-
const ready = engine
|
|
113
|
-
.getReadySteps(pipeline.steps, completed)
|
|
114
|
-
.filter((s) => !failed.has(s.id));
|
|
115
|
-
if (ready.length === 0) {
|
|
116
|
-
if (failed.size > 0)
|
|
117
|
-
break;
|
|
118
|
-
throw new Error(t("pipeline.circular", { stepId: order.join(", ") }));
|
|
119
|
-
}
|
|
120
|
-
const batch = ready.slice(0, MAX_CONCURRENT);
|
|
121
|
-
const results = await Promise.all(batch.map((step) => runStep(ctx, step, params, outputs)));
|
|
122
|
-
for (let i = 0; i < batch.length; i++) {
|
|
123
|
-
const step = batch[i];
|
|
124
|
-
const result = results[i];
|
|
125
|
-
if (result.ok) {
|
|
126
|
-
completed.add(step.id);
|
|
127
|
-
outputs[step.id] = { output: result.output };
|
|
128
|
-
engine.setStepStatus(step.id, "done");
|
|
129
|
-
logs.push(` ✓ ${step.id}: ${result.output.split("\n")[0]}`);
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
failed.add(step.id);
|
|
133
|
-
engine.setStepStatus(step.id, "failed");
|
|
134
|
-
logs.push(` ✗ ${step.id}: ${result.error}`);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
if (failed.size > 0)
|
|
138
|
-
break;
|
|
139
|
-
}
|
|
140
|
-
if (failed.size > 0) {
|
|
141
|
-
return {
|
|
142
|
-
success: false,
|
|
143
|
-
output: t("tool.pipeline_failed", {
|
|
144
|
-
name: pipeline.name,
|
|
145
|
-
done: String(completed.size),
|
|
146
|
-
total: String(pipeline.steps.length),
|
|
147
|
-
logs: logs.join("\n"),
|
|
148
|
-
}),
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
return {
|
|
152
|
-
success: true,
|
|
153
|
-
output: t("tool.pipeline_completed", {
|
|
154
|
-
name: pipeline.name,
|
|
155
|
-
steps: String(completed.size),
|
|
156
|
-
logs: logs.join("\n"),
|
|
157
|
-
}),
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
catch (e) {
|
|
161
|
-
return { success: false, output: t("tool.pipeline_error", { error: e.message }) };
|
|
162
|
-
}
|
|
163
|
-
finally {
|
|
164
|
-
executor?.setRecursionDepth?.(currentDepth);
|
|
165
|
-
}
|
|
166
|
-
},
|
|
167
|
-
};
|
package/dist/tools/preview.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/** Общие хелперы process_*-тулов: хинт без id, валидация + lookup. */
|
|
2
|
-
import { processRegistry } from "../modules/processes";
|
|
3
|
-
import { t } from "../i18n/index";
|
|
4
|
-
/**
|
|
5
|
-
* Общий ответ "id не дан" для process_*-тулов: хинт использования плюс
|
|
6
|
-
* известные сейчас id (или пометка пустого реестра). Одна копия, чтобы
|
|
7
|
-
* process-kill/log/wait не расходились.
|
|
8
|
-
*/
|
|
9
|
-
export function missingProcessIdHint() {
|
|
10
|
-
const ids = processRegistry.list().map((p) => p.id);
|
|
11
|
-
const listPart = ids.length
|
|
12
|
-
? `\n${t("proc.list_header")}: ${ids.join(", ")}`
|
|
13
|
-
: `\n${t("proc.missing_id_list")}`;
|
|
14
|
-
return `${t("proc.missing_id")}${listPart}`;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Общая валидация id + lookup в реестре для process_*-тулов. Возвращает запись
|
|
18
|
-
* либо `{ ok: false, output }` для прямого возврата (нет id — хинт,
|
|
19
|
-
* неизвестный id — not-found).
|
|
20
|
-
*/
|
|
21
|
-
export function lookupProcess(args) {
|
|
22
|
-
if (args.id === undefined || String(args.id).trim() === "") {
|
|
23
|
-
return { ok: false, output: missingProcessIdHint() };
|
|
24
|
-
}
|
|
25
|
-
const id = String(args.id);
|
|
26
|
-
const entry = processRegistry.get(id);
|
|
27
|
-
if (!entry) {
|
|
28
|
-
return { ok: false, output: t("proc.not_found", { id }) };
|
|
29
|
-
}
|
|
30
|
-
return { ok: true, id, entry };
|
|
31
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { processRegistry } from "../modules/processes";
|
|
2
|
-
import { t } from "../i18n/index";
|
|
3
|
-
import { lookupProcess } from "./process-ids";
|
|
4
|
-
/** Останавливает фоновый процесс по id из bash/process_list. */
|
|
5
|
-
export const processKillTool = {
|
|
6
|
-
name: "process_kill",
|
|
7
|
-
icon: "⛔",
|
|
8
|
-
description: "Stop a background process started via bash (dev server, watcher). Kills the whole process tree (children included). Use the id returned by bash or process_list.",
|
|
9
|
-
tags: ["shell"],
|
|
10
|
-
parameters: {
|
|
11
|
-
type: "object",
|
|
12
|
-
properties: {
|
|
13
|
-
id: { type: "string", description: "Process id from bash output or process_list" },
|
|
14
|
-
},
|
|
15
|
-
required: ["id"],
|
|
16
|
-
},
|
|
17
|
-
handler: async (_ctx, args) => {
|
|
18
|
-
// Без id отвечаем использованием: голое "not found: undefined" не
|
|
19
|
-
// подсказывает верный формат.
|
|
20
|
-
const found = lookupProcess(args);
|
|
21
|
-
if (!found.ok)
|
|
22
|
-
return { success: false, output: found.output };
|
|
23
|
-
const { id, entry } = found;
|
|
24
|
-
const killed = processRegistry.kill(id);
|
|
25
|
-
if (!killed) {
|
|
26
|
-
return { success: false, output: t("proc.kill_failed", { id }) };
|
|
27
|
-
}
|
|
28
|
-
return {
|
|
29
|
-
success: true,
|
|
30
|
-
output: t("proc.killed", { id, pid: entry.pid }),
|
|
31
|
-
};
|
|
32
|
-
},
|
|
33
|
-
};
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { processRegistry } from "../modules/processes";
|
|
2
|
-
import { t } from "../i18n/index";
|
|
3
|
-
/** Показывает фоновые процессы сессии с хинтом управления. */
|
|
4
|
-
export const processListTool = {
|
|
5
|
-
name: "process_list",
|
|
6
|
-
icon: "📊",
|
|
7
|
-
description: "List background processes started via the bash tool (dev servers, watchers, long-running commands). Shows id, pid, command, status, and recent output. Use with process_log and process_kill to inspect or stop them.",
|
|
8
|
-
tags: ["shell"],
|
|
9
|
-
parameters: {
|
|
10
|
-
type: "object",
|
|
11
|
-
properties: {},
|
|
12
|
-
},
|
|
13
|
-
handler: async (ctx) => {
|
|
14
|
-
const list = processRegistry.list(ctx.sessionId);
|
|
15
|
-
if (list.length === 0) {
|
|
16
|
-
return { success: true, output: t("proc.none") };
|
|
17
|
-
}
|
|
18
|
-
const statusLabel = (status) => {
|
|
19
|
-
if (status === "running")
|
|
20
|
-
return t("proc.status_running");
|
|
21
|
-
if (status === "exited")
|
|
22
|
-
return t("proc.status_exited");
|
|
23
|
-
return t("proc.status_killed");
|
|
24
|
-
};
|
|
25
|
-
const lines = [`${t("proc.list_header")} (${list.length}):`];
|
|
26
|
-
for (const entry of list) {
|
|
27
|
-
const tail = entry.log.length > 0 ? entry.log[entry.log.length - 1] : "";
|
|
28
|
-
const detail = tail ? ` — ${tail.slice(0, 80)}${tail.length > 80 ? "…" : ""}` : "";
|
|
29
|
-
lines.push(` ${entry.id} PID ${entry.pid} ${statusLabel(entry.status)} ${entry.command}${detail}`);
|
|
30
|
-
}
|
|
31
|
-
lines.push(`\n${t("proc.hint", {
|
|
32
|
-
list: "process_list",
|
|
33
|
-
log: "process_log",
|
|
34
|
-
kill: "process_kill",
|
|
35
|
-
})}`);
|
|
36
|
-
return { success: true, output: lines.join("\n") };
|
|
37
|
-
},
|
|
38
|
-
};
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { processRegistry } from "../modules/processes";
|
|
2
|
-
import { t } from "../i18n/index";
|
|
3
|
-
import { MAX_PREVIEW_LINES } from "./preview";
|
|
4
|
-
import { lookupProcess } from "./process-ids";
|
|
5
|
-
const DEFAULT_TAIL = MAX_PREVIEW_LINES;
|
|
6
|
-
/** Потолок из описания тула; тул вне усечения по бюджету. */
|
|
7
|
-
const MAX_TAIL = 300;
|
|
8
|
-
/** Показывает буферизированный вывод фонового процесса (последние N строк). */
|
|
9
|
-
export const processLogTool = {
|
|
10
|
-
name: "process_log",
|
|
11
|
-
icon: "📜",
|
|
12
|
-
description: `Show the buffered output of a background process started via bash. Shows the last ${DEFAULT_TAIL} lines by default. Use after starting a dev server to verify it came up without errors, and while it runs to check its state. For a finite task that should complete, prefer process_wait over polling this tool.`,
|
|
13
|
-
tags: ["shell"],
|
|
14
|
-
boundedOutput: true,
|
|
15
|
-
parameters: {
|
|
16
|
-
type: "object",
|
|
17
|
-
properties: {
|
|
18
|
-
id: { type: "string", description: "Process id from bash output or process_list" },
|
|
19
|
-
tail: {
|
|
20
|
-
type: "number",
|
|
21
|
-
description: `Number of trailing lines to show (default: ${DEFAULT_TAIL}, max 300)`,
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
required: ["id"],
|
|
25
|
-
},
|
|
26
|
-
handler: async (_ctx, args) => {
|
|
27
|
-
const found = lookupProcess(args);
|
|
28
|
-
if (!found.ok)
|
|
29
|
-
return { success: false, output: found.output };
|
|
30
|
-
const { id, entry } = found;
|
|
31
|
-
const status = entry.status === "running"
|
|
32
|
-
? t("proc.status_running")
|
|
33
|
-
: entry.status === "exited"
|
|
34
|
-
? t("proc.status_exited")
|
|
35
|
-
: t("proc.status_killed");
|
|
36
|
-
const tail = Math.min(MAX_TAIL, Math.max(1, typeof args.tail === "number" ? Math.floor(args.tail) : DEFAULT_TAIL));
|
|
37
|
-
const log = processRegistry.getLog(id, tail);
|
|
38
|
-
if (!log) {
|
|
39
|
-
return {
|
|
40
|
-
success: true,
|
|
41
|
-
output: `${t("proc.log_header", { id, status })} ${t("proc.log_empty")}`,
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
return {
|
|
45
|
-
success: true,
|
|
46
|
-
output: `${t("proc.log_header", { id, status })}\n${log}`,
|
|
47
|
-
};
|
|
48
|
-
},
|
|
49
|
-
};
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { processRegistry } from "../modules/processes";
|
|
2
|
-
import { t } from "../i18n/index";
|
|
3
|
-
import { lookupProcess } from "./process-ids";
|
|
4
|
-
import { PROCESS_WAIT_DEFAULT_MS as DEFAULT_WAIT_MS, PROCESS_WAIT_MAX_MS as MAX_WAIT_MS, } from "../config/timeouts";
|
|
5
|
-
/**
|
|
6
|
-
* Дефолтное ожидание: хватает на типичный тест/билд, но в пределах таймаута
|
|
7
|
-
* исполнителя. `timeoutMs` тула даёт запас под явное долгое ожидание
|
|
8
|
-
* (кламп MAX_WAIT_MS).
|
|
9
|
-
*/
|
|
10
|
-
const DEFAULT_TAIL = 20;
|
|
11
|
-
const MAX_TAIL = 100;
|
|
12
|
-
/** Ждёт выхода процесса до timeoutMs; отчитывается кодом и хвостом вывода. */
|
|
13
|
-
export const processWaitTool = {
|
|
14
|
-
name: "process_wait",
|
|
15
|
-
icon: "⏳",
|
|
16
|
-
description: "Wait for a background process started via bash to finish, instead of polling process_log or sleeping (ping/timeout/sleep commands). Blocks up to timeoutMs, then reports whether the process exited (with its exit code and recent output) or is still running. For dev servers/watchers that never exit, use process_log to inspect and process_kill to stop them.",
|
|
17
|
-
tags: ["shell"],
|
|
18
|
-
boundedOutput: true,
|
|
19
|
-
timeoutMs: 120000,
|
|
20
|
-
parameters: {
|
|
21
|
-
type: "object",
|
|
22
|
-
properties: {
|
|
23
|
-
id: { type: "string", description: "Process id from bash output or process_list" },
|
|
24
|
-
timeoutMs: {
|
|
25
|
-
type: "number",
|
|
26
|
-
description: `How long to wait in milliseconds (default: ${DEFAULT_WAIT_MS}, max ${MAX_WAIT_MS})`,
|
|
27
|
-
},
|
|
28
|
-
tail: {
|
|
29
|
-
type: "number",
|
|
30
|
-
description: `Number of trailing output lines to include (default: ${DEFAULT_TAIL}, max ${MAX_TAIL})`,
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
|
-
required: ["id"],
|
|
34
|
-
},
|
|
35
|
-
handler: async (_ctx, args) => {
|
|
36
|
-
const found = lookupProcess(args);
|
|
37
|
-
if (!found.ok)
|
|
38
|
-
return { success: false, output: found.output };
|
|
39
|
-
const { id } = found;
|
|
40
|
-
const waitMs = Math.min(MAX_WAIT_MS, Math.max(1000, typeof args.timeoutMs === "number" ? Math.floor(args.timeoutMs) : DEFAULT_WAIT_MS));
|
|
41
|
-
const started = Date.now();
|
|
42
|
-
await processRegistry.waitForExit(id, waitMs);
|
|
43
|
-
const elapsed = Date.now() - started;
|
|
44
|
-
const entry = processRegistry.get(id);
|
|
45
|
-
if (!entry) {
|
|
46
|
-
return { success: false, output: t("proc.not_found", { id }) };
|
|
47
|
-
}
|
|
48
|
-
const tail = Math.min(MAX_TAIL, Math.max(1, typeof args.tail === "number" ? Math.floor(args.tail) : DEFAULT_TAIL));
|
|
49
|
-
const log = processRegistry.getLog(id, tail);
|
|
50
|
-
const logPart = log ? `\n${log}` : `\n${t("proc.log_empty")}`;
|
|
51
|
-
if (entry.status !== "running") {
|
|
52
|
-
const status = entry.status === "exited" ? t("proc.status_exited") : t("proc.status_killed");
|
|
53
|
-
return {
|
|
54
|
-
success: true,
|
|
55
|
-
output: `${t("proc.wait_exited", { id, ms: elapsed, status, code: entry.exitCode ?? "?" })}${logPart}`,
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
return {
|
|
59
|
-
success: true,
|
|
60
|
-
output: `${t("proc.wait_running", { id, ms: elapsed })}\n${t("proc.wait_hint", { id })}${logPart}`,
|
|
61
|
-
};
|
|
62
|
-
},
|
|
63
|
-
};
|
package/dist/tools/prompt-io.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/** Терминал-независимая поверхность промпта для интерактивных тулов. */
|
|
2
|
-
import { formatMenu, choicePrompt, parseSelection, CUSTOM_INDEX, } from "./user-input";
|
|
3
|
-
import { t } from "../i18n/index";
|
|
4
|
-
/** Собирает PromptIO из инжектируемых ask/print (тестируемо, без терминала). */
|
|
5
|
-
export function createPromptIO(deps) {
|
|
6
|
-
return {
|
|
7
|
-
async askText(question) {
|
|
8
|
-
return (await deps.ask(`${question} `)).trim();
|
|
9
|
-
},
|
|
10
|
-
async askChoice(question, options, opts = {}) {
|
|
11
|
-
const multiple = opts.multiple ?? false;
|
|
12
|
-
const entryCount = options.length + (opts.allowCustom ? 1 : 0);
|
|
13
|
-
// Выбирать нечего (и кастома нет) — parseSelection не сойдётся никогда,
|
|
14
|
-
// поэтому выходим без печати мёртвого меню и вечного цикла.
|
|
15
|
-
if (entryCount === 0)
|
|
16
|
-
return [];
|
|
17
|
-
const customEntry = options.length;
|
|
18
|
-
deps.print(formatMenu(question, options, opts));
|
|
19
|
-
for (;;) {
|
|
20
|
-
const answer = await deps.ask(choicePrompt(entryCount, multiple));
|
|
21
|
-
const parsed = parseSelection(answer, entryCount, multiple);
|
|
22
|
-
if (parsed) {
|
|
23
|
-
return parsed.map((i) => (opts.allowCustom && i === customEntry ? CUSTOM_INDEX : i));
|
|
24
|
-
}
|
|
25
|
-
deps.print(t("tool.user_input.invalid"));
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
}
|