@itphx/synth-core 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/definitions/protected-paths.json +36 -0
- package/definitions/shell-policy.json +36 -0
- package/dist/definitions/protected-paths.json +36 -0
- package/dist/definitions/shell-policy.json +36 -0
- package/dist/engine/agents/definitions/admin.json +3 -1
- package/dist/engine/agents/definitions/analyst.json +3 -1
- package/dist/engine/agents/definitions/assistant.json +2 -2
- package/dist/engine/agents/definitions/auditor.json +4 -1
- package/dist/engine/agents/definitions/developer.json +4 -1
- package/dist/engine/agents/definitions/devops.json +4 -1
- package/dist/engine/agents/definitions/explore.json +3 -3
- package/dist/engine/agents/definitions/general.json +2 -2
- package/dist/engine/agents/definitions/pm.json +5 -1
- package/dist/engine/agents/definitions/qa.json +4 -1
- package/dist/engine/agents/definitions/title.json +2 -2
- package/dist/engine/agents/index.d.ts +4 -0
- package/dist/engine/agents/index.d.ts.map +1 -1
- package/dist/engine/agents/index.js +9 -3
- package/dist/engine/agents/index.js.map +1 -1
- package/dist/engine/agents/mode.d.ts +5 -3
- package/dist/engine/agents/mode.d.ts.map +1 -1
- package/dist/engine/agents/mode.js +6 -6
- package/dist/engine/agents/mode.js.map +1 -1
- package/dist/engine/agents/mode.test.js +9 -3
- package/dist/engine/agents/mode.test.js.map +1 -1
- package/dist/engine/agents/normalize.d.ts +9 -0
- package/dist/engine/agents/normalize.d.ts.map +1 -0
- package/dist/engine/agents/normalize.js +22 -0
- package/dist/engine/agents/normalize.js.map +1 -0
- package/dist/engine/agents/normalize.test.d.ts +2 -0
- package/dist/engine/agents/normalize.test.d.ts.map +1 -0
- package/dist/engine/agents/normalize.test.js +37 -0
- package/dist/engine/agents/normalize.test.js.map +1 -0
- package/dist/engine/agents/registry.d.ts +2 -1
- package/dist/engine/agents/registry.d.ts.map +1 -1
- package/dist/engine/agents/registry.js +7 -6
- package/dist/engine/agents/registry.js.map +1 -1
- package/dist/engine/agents/registry.test.js +24 -0
- package/dist/engine/agents/registry.test.js.map +1 -1
- package/dist/engine/context/config.d.ts +43 -6
- package/dist/engine/context/config.d.ts.map +1 -1
- package/dist/engine/context/config.js +123 -26
- package/dist/engine/context/config.js.map +1 -1
- package/dist/engine/context/config.security.test.d.ts +2 -0
- package/dist/engine/context/config.security.test.d.ts.map +1 -0
- package/dist/engine/context/config.security.test.js +82 -0
- package/dist/engine/context/config.security.test.js.map +1 -0
- package/dist/engine/context/config.test.js +199 -10
- package/dist/engine/context/config.test.js.map +1 -1
- package/dist/engine/context/optimizer.d.ts +20 -1
- package/dist/engine/context/optimizer.d.ts.map +1 -1
- package/dist/engine/context/optimizer.js +63 -29
- package/dist/engine/context/optimizer.js.map +1 -1
- package/dist/engine/context/optimizer.test.js +156 -0
- package/dist/engine/context/optimizer.test.js.map +1 -1
- package/dist/engine/gateway/gateway-provider.d.ts +4 -0
- package/dist/engine/gateway/gateway-provider.d.ts.map +1 -1
- package/dist/engine/gateway/gateway-provider.js +7 -2
- package/dist/engine/gateway/gateway-provider.js.map +1 -1
- package/dist/engine/gateway/gateway-provider.test.js +3 -3
- package/dist/engine/gateway/gateway-provider.test.js.map +1 -1
- package/dist/engine/gateway/input-guard.d.ts.map +1 -1
- package/dist/engine/gateway/input-guard.js +2 -1
- package/dist/engine/gateway/input-guard.js.map +1 -1
- package/dist/engine/gateway/secret-detector.d.ts.map +1 -1
- package/dist/engine/gateway/secret-detector.js +2 -3
- package/dist/engine/gateway/secret-detector.js.map +1 -1
- package/dist/engine/gateway/secret-detector.test.js +4 -4
- package/dist/engine/gateway/secret-detector.test.js.map +1 -1
- package/dist/engine/llm-error.d.ts +23 -0
- package/dist/engine/llm-error.d.ts.map +1 -0
- package/dist/engine/llm-error.js +86 -0
- package/dist/engine/llm-error.js.map +1 -0
- package/dist/engine/llm-error.test.d.ts +2 -0
- package/dist/engine/llm-error.test.d.ts.map +1 -0
- package/dist/engine/llm-error.test.js +101 -0
- package/dist/engine/llm-error.test.js.map +1 -0
- package/dist/engine/orchestrator-deny-abort.test.d.ts +2 -0
- package/dist/engine/orchestrator-deny-abort.test.d.ts.map +1 -0
- package/dist/engine/orchestrator-deny-abort.test.js +414 -0
- package/dist/engine/orchestrator-deny-abort.test.js.map +1 -0
- package/dist/engine/orchestrator-error.test.d.ts +2 -0
- package/dist/engine/orchestrator-error.test.d.ts.map +1 -0
- package/dist/engine/orchestrator-error.test.js +136 -0
- package/dist/engine/orchestrator-error.test.js.map +1 -0
- package/dist/engine/orchestrator.d.ts +123 -10
- package/dist/engine/orchestrator.d.ts.map +1 -1
- package/dist/engine/orchestrator.js +791 -181
- package/dist/engine/orchestrator.js.map +1 -1
- package/dist/engine/orchestrator.test.js +723 -0
- package/dist/engine/orchestrator.test.js.map +1 -1
- package/dist/engine/permission/approval.d.ts.map +1 -1
- package/dist/engine/permission/approval.js +29 -10
- package/dist/engine/permission/approval.js.map +1 -1
- package/dist/engine/permission/approval.test.js +57 -0
- package/dist/engine/permission/approval.test.js.map +1 -1
- package/dist/engine/permission/evaluator.d.ts +13 -0
- package/dist/engine/permission/evaluator.d.ts.map +1 -1
- package/dist/engine/permission/evaluator.js +121 -22
- package/dist/engine/permission/evaluator.js.map +1 -1
- package/dist/engine/permission/evaluator.test.js +188 -4
- package/dist/engine/permission/evaluator.test.js.map +1 -1
- package/dist/engine/permission/groups.d.ts.map +1 -1
- package/dist/engine/permission/groups.js +19 -1
- package/dist/engine/permission/groups.js.map +1 -1
- package/dist/engine/permission/integration.test.js +165 -4
- package/dist/engine/permission/integration.test.js.map +1 -1
- package/dist/engine/plan.integration.test.js +142 -33
- package/dist/engine/plan.integration.test.js.map +1 -1
- package/dist/engine/router/micro/tasks/classify-intent.d.ts.map +1 -1
- package/dist/engine/router/micro/tasks/classify-intent.js +24 -18
- package/dist/engine/router/micro/tasks/classify-intent.js.map +1 -1
- package/dist/engine/router/micro/tasks/classify-intent.test.js +4 -4
- package/dist/engine/router/micro/tasks/classify-intent.test.js.map +1 -1
- package/dist/engine/router/micro/tasks/enum-decision.d.ts.map +1 -1
- package/dist/engine/router/micro/tasks/enum-decision.js +14 -8
- package/dist/engine/router/micro/tasks/enum-decision.js.map +1 -1
- package/dist/engine/router/micro/tasks/enum-decision.test.js +2 -2
- package/dist/engine/router/micro/tasks/enum-decision.test.js.map +1 -1
- package/dist/engine/router/micro/tasks/small-talk.d.ts.map +1 -1
- package/dist/engine/router/micro/tasks/small-talk.js +20 -17
- package/dist/engine/router/micro/tasks/small-talk.js.map +1 -1
- package/dist/engine/router/micro/types.d.ts +2 -0
- package/dist/engine/router/micro/types.d.ts.map +1 -1
- package/dist/engine/router/provider-pool.d.ts +2 -2
- package/dist/engine/router/provider-pool.d.ts.map +1 -1
- package/dist/engine/router/provider-pool.js +5 -3
- package/dist/engine/router/provider-pool.js.map +1 -1
- package/dist/engine/router/quality-checker.d.ts.map +1 -1
- package/dist/engine/router/quality-checker.js +15 -14
- package/dist/engine/router/quality-checker.js.map +1 -1
- package/dist/engine/router/router.d.ts +2 -2
- package/dist/engine/router/router.d.ts.map +1 -1
- package/dist/engine/router/router.js +8 -5
- package/dist/engine/router/router.js.map +1 -1
- package/dist/engine/router/utils.d.ts +2 -2
- package/dist/engine/router/utils.d.ts.map +1 -1
- package/dist/engine/router/utils.js +2 -1
- package/dist/engine/router/utils.js.map +1 -1
- package/dist/engine/security/index.d.ts +6 -0
- package/dist/engine/security/index.d.ts.map +1 -1
- package/dist/engine/security/index.js +3 -0
- package/dist/engine/security/index.js.map +1 -1
- package/dist/engine/security/integration.test.js +11 -11
- package/dist/engine/security/integration.test.js.map +1 -1
- package/dist/engine/security/prompt-injection.d.ts +1 -1
- package/dist/engine/security/prompt-injection.d.ts.map +1 -1
- package/dist/engine/security/prompt-injection.js +2 -1
- package/dist/engine/security/prompt-injection.js.map +1 -1
- package/dist/engine/security/prompt-injection.test.js +1 -1
- package/dist/engine/security/prompt-injection.test.js.map +1 -1
- package/dist/engine/security/protected-paths-store.d.ts +56 -0
- package/dist/engine/security/protected-paths-store.d.ts.map +1 -0
- package/dist/engine/security/protected-paths-store.js +239 -0
- package/dist/engine/security/protected-paths-store.js.map +1 -0
- package/dist/engine/security/protected-paths.d.ts +54 -0
- package/dist/engine/security/protected-paths.d.ts.map +1 -0
- package/dist/engine/security/protected-paths.js +193 -0
- package/dist/engine/security/protected-paths.js.map +1 -0
- package/dist/engine/security/protected-paths.test.d.ts +2 -0
- package/dist/engine/security/protected-paths.test.d.ts.map +1 -0
- package/dist/engine/security/protected-paths.test.js +166 -0
- package/dist/engine/security/protected-paths.test.js.map +1 -0
- package/dist/engine/security/shell-guard.d.ts +117 -0
- package/dist/engine/security/shell-guard.d.ts.map +1 -0
- package/dist/engine/security/shell-guard.js +578 -0
- package/dist/engine/security/shell-guard.js.map +1 -0
- package/dist/engine/security/shell-guard.test.d.ts +2 -0
- package/dist/engine/security/shell-guard.test.d.ts.map +1 -0
- package/dist/engine/security/shell-guard.test.js +378 -0
- package/dist/engine/security/shell-guard.test.js.map +1 -0
- package/dist/engine/system-messages.d.ts +237 -0
- package/dist/engine/system-messages.d.ts.map +1 -0
- package/dist/engine/system-messages.js +276 -0
- package/dist/engine/system-messages.js.map +1 -0
- package/dist/engine/system-messages.test.d.ts +2 -0
- package/dist/engine/system-messages.test.d.ts.map +1 -0
- package/dist/engine/system-messages.test.js +81 -0
- package/dist/engine/system-messages.test.js.map +1 -0
- package/dist/engine/tools/abort.d.ts +21 -0
- package/dist/engine/tools/abort.d.ts.map +1 -0
- package/dist/engine/tools/abort.js +44 -0
- package/dist/engine/tools/abort.js.map +1 -0
- package/dist/engine/tools/classify-conversation.d.ts.map +1 -1
- package/dist/engine/tools/classify-conversation.js +7 -2
- package/dist/engine/tools/classify-conversation.js.map +1 -1
- package/dist/engine/tools/fs-read.d.ts.map +1 -1
- package/dist/engine/tools/fs-read.js +17 -6
- package/dist/engine/tools/fs-read.js.map +1 -1
- package/dist/engine/tools/fs-read.test.js +43 -0
- package/dist/engine/tools/fs-read.test.js.map +1 -1
- package/dist/engine/tools/fs-write.d.ts.map +1 -1
- package/dist/engine/tools/fs-write.js +47 -17
- package/dist/engine/tools/fs-write.js.map +1 -1
- package/dist/engine/tools/git.d.ts +2 -1
- package/dist/engine/tools/git.d.ts.map +1 -1
- package/dist/engine/tools/git.js +85 -17
- package/dist/engine/tools/git.js.map +1 -1
- package/dist/engine/tools/git.test.js +39 -0
- package/dist/engine/tools/git.test.js.map +1 -1
- package/dist/engine/tools/index.d.ts.map +1 -1
- package/dist/engine/tools/index.js +16 -2
- package/dist/engine/tools/index.js.map +1 -1
- package/dist/engine/tools/json-schema.js +38 -0
- package/dist/engine/tools/json-schema.js.map +1 -1
- package/dist/engine/tools/json-schema.test.d.ts +2 -0
- package/dist/engine/tools/json-schema.test.d.ts.map +1 -0
- package/dist/engine/tools/json-schema.test.js +40 -0
- package/dist/engine/tools/json-schema.test.js.map +1 -0
- package/dist/engine/tools/path-utils.d.ts.map +1 -1
- package/dist/engine/tools/path-utils.js +24 -0
- package/dist/engine/tools/path-utils.js.map +1 -1
- package/dist/engine/tools/path-utils.test.js +15 -0
- package/dist/engine/tools/path-utils.test.js.map +1 -1
- package/dist/engine/tools/plan.d.ts +11 -3
- package/dist/engine/tools/plan.d.ts.map +1 -1
- package/dist/engine/tools/plan.js +326 -95
- package/dist/engine/tools/plan.js.map +1 -1
- package/dist/engine/tools/plan.test.js +161 -47
- package/dist/engine/tools/plan.test.js.map +1 -1
- package/dist/engine/tools/project-context.d.ts.map +1 -1
- package/dist/engine/tools/project-context.js +54 -42
- package/dist/engine/tools/project-context.js.map +1 -1
- package/dist/engine/tools/project-context.test.js +37 -22
- package/dist/engine/tools/project-context.test.js.map +1 -1
- package/dist/engine/tools/project-manage.d.ts +24 -0
- package/dist/engine/tools/project-manage.d.ts.map +1 -0
- package/dist/engine/tools/project-manage.js +311 -0
- package/dist/engine/tools/project-manage.js.map +1 -0
- package/dist/engine/tools/project-manage.test.d.ts +2 -0
- package/dist/engine/tools/project-manage.test.d.ts.map +1 -0
- package/dist/engine/tools/project-manage.test.js +196 -0
- package/dist/engine/tools/project-manage.test.js.map +1 -0
- package/dist/engine/tools/read-reference.d.ts.map +1 -1
- package/dist/engine/tools/read-reference.js +10 -5
- package/dist/engine/tools/read-reference.js.map +1 -1
- package/dist/engine/tools/read-reference.test.js +5 -2
- package/dist/engine/tools/read-reference.test.js.map +1 -1
- package/dist/engine/tools/search.d.ts.map +1 -1
- package/dist/engine/tools/search.js +16 -6
- package/dist/engine/tools/search.js.map +1 -1
- package/dist/engine/tools/shell.d.ts.map +1 -1
- package/dist/engine/tools/shell.js +17 -4
- package/dist/engine/tools/shell.js.map +1 -1
- package/dist/engine/tools/shell.test.js +63 -1
- package/dist/engine/tools/shell.test.js.map +1 -1
- package/dist/engine/tools/task-resume.d.ts +93 -0
- package/dist/engine/tools/task-resume.d.ts.map +1 -0
- package/dist/engine/tools/task-resume.js +269 -0
- package/dist/engine/tools/task-resume.js.map +1 -0
- package/dist/engine/tools/task-resume.test.d.ts +2 -0
- package/dist/engine/tools/task-resume.test.d.ts.map +1 -0
- package/dist/engine/tools/task-resume.test.js +423 -0
- package/dist/engine/tools/task-resume.test.js.map +1 -0
- package/dist/engine/tools/task.d.ts +81 -2
- package/dist/engine/tools/task.d.ts.map +1 -1
- package/dist/engine/tools/task.js +898 -471
- package/dist/engine/tools/task.js.map +1 -1
- package/dist/engine/tools/task.test.js +371 -3
- package/dist/engine/tools/task.test.js.map +1 -1
- package/dist/engine/tools/todo.d.ts +27 -1
- package/dist/engine/tools/todo.d.ts.map +1 -1
- package/dist/engine/tools/todo.js +320 -14
- package/dist/engine/tools/todo.js.map +1 -1
- package/dist/engine/tools/todo.test.js +150 -48
- package/dist/engine/tools/todo.test.js.map +1 -1
- package/dist/engine/tools/web.d.ts.map +1 -1
- package/dist/engine/tools/web.js +65 -18
- package/dist/engine/tools/web.js.map +1 -1
- package/dist/engine/tools/web.test.js +94 -2
- package/dist/engine/tools/web.test.js.map +1 -1
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +0 -1
- package/dist/logger.js.map +1 -1
- package/dist/main.js +3 -2
- package/dist/main.js.map +1 -1
- package/dist/prompts/roles/ADMIN.en.md +12 -11
- package/dist/prompts/roles/ADMIN.ru.md +12 -11
- package/dist/prompts/roles/ANALYST.en.md +12 -11
- package/dist/prompts/roles/ANALYST.ru.md +12 -11
- package/dist/prompts/roles/ASSISTANT.en.md +12 -11
- package/dist/prompts/roles/ASSISTANT.ru.md +12 -11
- package/dist/prompts/roles/AUDITOR.en.md +12 -11
- package/dist/prompts/roles/AUDITOR.ru.md +12 -11
- package/dist/prompts/roles/DEVELOPER.en.md +12 -11
- package/dist/prompts/roles/DEVELOPER.ru.md +12 -11
- package/dist/prompts/roles/DEVOPS.en.md +12 -11
- package/dist/prompts/roles/DEVOPS.ru.md +12 -11
- package/dist/prompts/roles/PM.en.md +12 -11
- package/dist/prompts/roles/PM.ru.md +12 -11
- package/dist/prompts/roles/QA.en.md +12 -11
- package/dist/prompts/roles/QA.ru.md +12 -11
- package/dist/prompts/roles/TITLE.en.md +30 -0
- package/dist/prompts/roles/TITLE.ru.md +3 -11
- package/dist/prompts/security/ask-protected-path.en.md +1 -0
- package/dist/prompts/security/ask-protected-path.ru.md +1 -0
- package/dist/prompts/security/deny-command.en.md +1 -0
- package/dist/prompts/security/deny-command.ru.md +1 -0
- package/dist/prompts/security/deny-protected-dir.en.md +1 -0
- package/dist/prompts/security/deny-protected-dir.ru.md +1 -0
- package/dist/prompts/security/deny-protected-path.en.md +1 -0
- package/dist/prompts/security/deny-protected-path.ru.md +1 -0
- package/dist/prompts/subagents/explore.en.md +23 -0
- package/dist/prompts/subagents/general.en.md +19 -0
- package/dist/prompts/system/MODE_ACT.en.md +20 -0
- package/{prompts/modes/act.md → dist/prompts/system/MODE_ACT.ru.md} +2 -0
- package/dist/prompts/system/MODE_PLAN.en.md +22 -0
- package/dist/prompts/{modes/plan.md → system/MODE_PLAN.ru.md} +4 -3
- package/dist/prompts/system/MODE_YOLO.en.md +22 -0
- package/{prompts/modes/yolo.md → dist/prompts/system/MODE_YOLO.ru.md} +2 -0
- package/dist/prompts/system/PLAN_GUIDE.en.md +36 -0
- package/dist/prompts/system/PLAN_GUIDE.ru.md +33 -0
- package/dist/prompts/system/PLAN_MODE_AUTO.en.md +11 -0
- package/dist/prompts/system/PLAN_MODE_AUTO.ru.md +12 -0
- package/dist/prompts/system/PLAN_MODE_STRICT_APPROVED.en.md +8 -0
- package/dist/prompts/system/PLAN_MODE_STRICT_APPROVED.ru.md +8 -0
- package/dist/prompts/system/PLAN_MODE_STRICT_NOT_APPROVED.en.md +7 -0
- package/dist/prompts/system/PLAN_MODE_STRICT_NOT_APPROVED.ru.md +7 -0
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +28 -2
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/base.d.ts +20 -1
- package/dist/providers/base.d.ts.map +1 -1
- package/dist/providers/base.js +17 -0
- package/dist/providers/base.js.map +1 -1
- package/dist/providers/exceptions.d.ts.map +1 -1
- package/dist/providers/exceptions.js +3 -2
- package/dist/providers/exceptions.js.map +1 -1
- package/dist/providers/ollama.d.ts +23 -0
- package/dist/providers/ollama.d.ts.map +1 -1
- package/dist/providers/ollama.js +128 -12
- package/dist/providers/ollama.js.map +1 -1
- package/dist/providers/ollama.test.d.ts +2 -0
- package/dist/providers/ollama.test.d.ts.map +1 -0
- package/dist/providers/ollama.test.js +129 -0
- package/dist/providers/ollama.test.js.map +1 -0
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +82 -9
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/openai.test.d.ts +2 -0
- package/dist/providers/openai.test.d.ts.map +1 -0
- package/dist/providers/openai.test.js +84 -0
- package/dist/providers/openai.test.js.map +1 -0
- package/dist/providers/stream-error.test.d.ts +2 -0
- package/dist/providers/stream-error.test.d.ts.map +1 -0
- package/dist/providers/stream-error.test.js +63 -0
- package/dist/providers/stream-error.test.js.map +1 -0
- package/dist/providers/timeout.test.d.ts +2 -0
- package/dist/providers/timeout.test.d.ts.map +1 -0
- package/dist/providers/timeout.test.js +129 -0
- package/dist/providers/timeout.test.js.map +1 -0
- package/dist/queue/processor.d.ts +22 -0
- package/dist/queue/processor.d.ts.map +1 -1
- package/dist/queue/processor.js +150 -25
- package/dist/queue/processor.js.map +1 -1
- package/dist/queue/processor.test.d.ts +2 -0
- package/dist/queue/processor.test.d.ts.map +1 -0
- package/dist/queue/processor.test.js +211 -0
- package/dist/queue/processor.test.js.map +1 -0
- package/dist/server/app.d.ts.map +1 -1
- package/dist/server/app.js +30 -8
- package/dist/server/app.js.map +1 -1
- package/dist/server/chat.d.ts.map +1 -1
- package/dist/server/chat.js +18 -2
- package/dist/server/chat.js.map +1 -1
- package/dist/server/routes/agents.d.ts.map +1 -1
- package/dist/server/routes/agents.js +39 -23
- package/dist/server/routes/agents.js.map +1 -1
- package/dist/server/routes/fs.d.ts.map +1 -1
- package/dist/server/routes/fs.js +185 -6
- package/dist/server/routes/fs.js.map +1 -1
- package/dist/server/routes/models.d.ts.map +1 -1
- package/dist/server/routes/models.js +3 -1
- package/dist/server/routes/models.js.map +1 -1
- package/dist/server/routes/queue.d.ts.map +1 -1
- package/dist/server/routes/queue.js +91 -17
- package/dist/server/routes/queue.js.map +1 -1
- package/dist/server/routes/sessions.d.ts +2 -1
- package/dist/server/routes/sessions.d.ts.map +1 -1
- package/dist/server/routes/sessions.js +68 -10
- package/dist/server/routes/sessions.js.map +1 -1
- package/dist/server/routes/sessions.test.js +102 -2
- package/dist/server/routes/sessions.test.js.map +1 -1
- package/dist/server/routes/settings.d.ts +6 -1
- package/dist/server/routes/settings.d.ts.map +1 -1
- package/dist/server/routes/settings.js +138 -0
- package/dist/server/routes/settings.js.map +1 -1
- package/dist/server/routes/settings.test.js +65 -1
- package/dist/server/routes/settings.test.js.map +1 -1
- package/dist/server/serialize.d.ts +9 -3
- package/dist/server/serialize.d.ts.map +1 -1
- package/dist/server/serialize.js +9 -3
- package/dist/server/serialize.js.map +1 -1
- package/dist/sessions/auto-title.d.ts +1 -1
- package/dist/sessions/auto-title.d.ts.map +1 -1
- package/dist/sessions/auto-title.js +24 -13
- package/dist/sessions/auto-title.js.map +1 -1
- package/dist/sessions/manager.d.ts +1 -2
- package/dist/sessions/manager.d.ts.map +1 -1
- package/dist/sessions/manager.js +11 -36
- package/dist/sessions/manager.js.map +1 -1
- package/dist/sessions/manager.test.js +2 -10
- package/dist/sessions/manager.test.js.map +1 -1
- package/dist/storage/file-store.d.ts.map +1 -1
- package/dist/storage/file-store.js +2 -6
- package/dist/storage/file-store.js.map +1 -1
- package/dist/storage/file-store.test.js +1 -6
- package/dist/storage/file-store.test.js.map +1 -1
- package/dist/storage/project-store.d.ts.map +1 -1
- package/dist/storage/project-store.js +12 -0
- package/dist/storage/project-store.js.map +1 -1
- package/dist/storage/runtime-settings.d.ts +25 -1
- package/dist/storage/runtime-settings.d.ts.map +1 -1
- package/dist/storage/runtime-settings.js +31 -0
- package/dist/storage/runtime-settings.js.map +1 -1
- package/package.json +6 -5
- package/prompts/roles/TITLE.en.md +30 -0
- package/prompts/security/ask-protected-path.en.md +1 -0
- package/prompts/security/ask-protected-path.ru.md +1 -0
- package/prompts/security/deny-command.en.md +1 -0
- package/prompts/security/deny-command.ru.md +1 -0
- package/prompts/security/deny-protected-dir.en.md +1 -0
- package/prompts/security/deny-protected-dir.ru.md +1 -0
- package/prompts/security/deny-protected-path.en.md +1 -0
- package/prompts/security/deny-protected-path.ru.md +1 -0
- package/prompts/subagents/explore.en.md +23 -0
- package/prompts/subagents/general.en.md +19 -0
- package/prompts/system/MODE_ACT.en.md +20 -0
- package/{dist/prompts/modes/act.md → prompts/system/MODE_ACT.ru.md} +2 -0
- package/prompts/system/MODE_PLAN.en.md +22 -0
- package/{dist/prompts/prompts/modes/plan.md → prompts/system/MODE_PLAN.ru.md} +4 -3
- package/prompts/system/MODE_YOLO.en.md +22 -0
- package/{dist/prompts/prompts/modes/yolo.md → prompts/system/MODE_YOLO.ru.md} +2 -0
- package/prompts/system/PLAN_GUIDE.en.md +36 -0
- package/prompts/system/PLAN_GUIDE.ru.md +33 -0
- package/prompts/system/PLAN_MODE_AUTO.en.md +11 -0
- package/prompts/system/PLAN_MODE_AUTO.ru.md +12 -0
- package/prompts/system/PLAN_MODE_STRICT_APPROVED.en.md +8 -0
- package/prompts/system/PLAN_MODE_STRICT_APPROVED.ru.md +8 -0
- package/prompts/system/PLAN_MODE_STRICT_NOT_APPROVED.en.md +7 -0
- package/prompts/system/PLAN_MODE_STRICT_NOT_APPROVED.ru.md +7 -0
- package/dist/dictionaries/dictionaries/coding.en.yaml +0 -20
- package/dist/dictionaries/dictionaries/coding.ru.yaml +0 -22
- package/dist/dictionaries/dictionaries/coding.tools.yaml +0 -12
- package/dist/dictionaries/dictionaries/enum.en.yaml +0 -54
- package/dist/dictionaries/dictionaries/enum.ru.yaml +0 -67
- package/dist/dictionaries/dictionaries/injection.en.yaml +0 -51
- package/dist/dictionaries/dictionaries/injection.ru.yaml +0 -51
- package/dist/dictionaries/dictionaries/intents.en.yaml +0 -68
- package/dist/dictionaries/dictionaries/intents.ru.yaml +0 -78
- package/dist/dictionaries/dictionaries/research.en.yaml +0 -17
- package/dist/dictionaries/dictionaries/research.ru.yaml +0 -17
- package/dist/dictionaries/dictionaries/small-talk.en.yaml +0 -67
- package/dist/dictionaries/dictionaries/small-talk.ru.yaml +0 -81
- package/dist/prompts/modes/yolo.md +0 -20
- package/dist/prompts/prompts/modes/act.md +0 -18
- package/dist/prompts/prompts/roles/ADMIN.en.md +0 -33
- package/dist/prompts/prompts/roles/ADMIN.ru.md +0 -33
- package/dist/prompts/prompts/roles/ANALYST.en.md +0 -33
- package/dist/prompts/prompts/roles/ANALYST.ru.md +0 -33
- package/dist/prompts/prompts/roles/ASSISTANT.en.md +0 -38
- package/dist/prompts/prompts/roles/ASSISTANT.ru.md +0 -38
- package/dist/prompts/prompts/roles/AUDITOR.en.md +0 -33
- package/dist/prompts/prompts/roles/AUDITOR.ru.md +0 -33
- package/dist/prompts/prompts/roles/DEVELOPER.en.md +0 -42
- package/dist/prompts/prompts/roles/DEVELOPER.ru.md +0 -42
- package/dist/prompts/prompts/roles/DEVOPS.en.md +0 -35
- package/dist/prompts/prompts/roles/DEVOPS.ru.md +0 -35
- package/dist/prompts/prompts/roles/PM.en.md +0 -33
- package/dist/prompts/prompts/roles/PM.ru.md +0 -33
- package/dist/prompts/prompts/roles/QA.en.md +0 -33
- package/dist/prompts/prompts/roles/QA.ru.md +0 -33
- package/dist/prompts/prompts/roles/TITLE.ru.md +0 -30
- package/dist/prompts/prompts/subagents/explore.ru.md +0 -23
- package/dist/prompts/prompts/subagents/general.ru.md +0 -19
- package/dist/prompts/prompts/system/COMPRESSED_DIALOG.en.md +0 -5
- package/dist/prompts/prompts/system/COMPRESSED_DIALOG.ru.md +0 -5
- package/dist/prompts/prompts/system/INTERVIEW.en.md +0 -18
- package/dist/prompts/prompts/system/INTERVIEW.ru.md +0 -18
- package/dist/prompts/prompts/system/PARTICIPANTS_NOTICE.en.md +0 -7
- package/dist/prompts/prompts/system/PARTICIPANTS_NOTICE.ru.md +0 -7
- package/dist/prompts/prompts/system/ROLES_DESCRIPTION.en.md +0 -16
- package/dist/prompts/prompts/system/ROLES_DESCRIPTION.ru.md +0 -16
- package/dist/prompts/prompts/system/ROUTING.en.md +0 -13
- package/dist/prompts/prompts/system/ROUTING.md +0 -6
- package/dist/prompts/prompts/system/ROUTING.ru.md +0 -13
- package/dist/prompts/prompts/system/RULES.en.md +0 -10
- package/dist/prompts/prompts/system/RULES.md +0 -10
- package/dist/prompts/prompts/system/RULES.ru.md +0 -10
- package/dist/prompts/prompts/system/STICKY_NOTES.en.md +0 -6
- package/dist/prompts/prompts/system/STICKY_NOTES.ru.md +0 -6
- package/dist/prompts/prompts/system/SUMMARIZER.en.md +0 -54
- package/dist/prompts/prompts/system/SUMMARIZER.ru.md +0 -54
- package/dist/prompts/prompts/system/USER_CONTEXT.en.md +0 -5
- package/dist/prompts/prompts/system/USER_CONTEXT.ru.md +0 -5
- package/dist/prompts/system/ROUTING.md +0 -6
- package/dist/prompts/system/RULES.md +0 -10
- package/dist/server/routes/i18n.d.ts +0 -3
- package/dist/server/routes/i18n.d.ts.map +0 -1
- package/dist/server/routes/i18n.js +0 -83
- package/dist/server/routes/i18n.js.map +0 -1
- package/prompts/modes/plan.md +0 -20
- package/prompts/system/ROUTING.md +0 -6
- package/prompts/system/RULES.md +0 -10
- /package/dist/prompts/{prompts/system → system}/GATEWAY.en.md +0 -0
- /package/dist/prompts/{prompts/system → system}/GATEWAY.ru.md +0 -0
package/dist/providers/ollama.js
CHANGED
|
@@ -13,10 +13,16 @@ export class OllamaProvider extends BaseProvider {
|
|
|
13
13
|
temperature: this.temperature,
|
|
14
14
|
stream: !!stream,
|
|
15
15
|
};
|
|
16
|
+
if (this.reasoningLevel === 'low')
|
|
17
|
+
body.think = true;
|
|
18
|
+
else if (this.reasoningLevel === 'none')
|
|
19
|
+
body.think = false;
|
|
16
20
|
if (systemPrompt)
|
|
17
21
|
body.system = systemPrompt;
|
|
18
22
|
if (tools?.length)
|
|
19
23
|
body.tools = this._formatTools(tools);
|
|
24
|
+
if (this.numCtx && this.numCtx > 0)
|
|
25
|
+
body.options = { num_ctx: this.numCtx };
|
|
20
26
|
const headers = { 'Content-Type': 'application/json' };
|
|
21
27
|
debugCollector?.captureApiRequest(this.url, 'POST', headers, body);
|
|
22
28
|
const controller = new AbortController();
|
|
@@ -50,10 +56,16 @@ export class OllamaProvider extends BaseProvider {
|
|
|
50
56
|
temperature: this.temperature,
|
|
51
57
|
stream: true,
|
|
52
58
|
};
|
|
59
|
+
if (this.reasoningLevel === 'low')
|
|
60
|
+
body.think = true;
|
|
61
|
+
else if (this.reasoningLevel === 'none')
|
|
62
|
+
body.think = false;
|
|
53
63
|
if (systemPrompt)
|
|
54
64
|
body.system = systemPrompt;
|
|
55
65
|
if (tools?.length)
|
|
56
66
|
body.tools = this._formatTools(tools);
|
|
67
|
+
if (this.numCtx && this.numCtx > 0)
|
|
68
|
+
body.options = { num_ctx: this.numCtx };
|
|
57
69
|
const headers = { 'Content-Type': 'application/json' };
|
|
58
70
|
debugCollector?.captureApiRequest(this.url, 'POST', headers, body);
|
|
59
71
|
let accumulatedReasoning = '';
|
|
@@ -62,13 +74,36 @@ export class OllamaProvider extends BaseProvider {
|
|
|
62
74
|
const accumulatedToolCalls = [];
|
|
63
75
|
const controller = new AbortController();
|
|
64
76
|
const timer = setTimeout(() => controller.abort(), this.timeout * 1000);
|
|
77
|
+
// Таймаут — только на ожидание первого чанка. Как только стрим пошёл,
|
|
78
|
+
// таймер снимается, дальше стрим длится сколько нужно.
|
|
79
|
+
let firstChunkReceived = false;
|
|
80
|
+
// Кнопка «Стоп»: отмена пользователя (cancellationToken.cancel) немедленно
|
|
81
|
+
// прерывает висящий fetch/reader.read() через AbortController — иначе
|
|
82
|
+
// reader.read() висит до таймаута 120с и отмена не работает.
|
|
83
|
+
if (cancellationToken) {
|
|
84
|
+
const originalCancel = cancellationToken.cancel.bind(cancellationToken);
|
|
85
|
+
cancellationToken.cancel = () => {
|
|
86
|
+
originalCancel();
|
|
87
|
+
controller.abort();
|
|
88
|
+
};
|
|
89
|
+
}
|
|
65
90
|
try {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
91
|
+
let resp;
|
|
92
|
+
try {
|
|
93
|
+
resp = await fetch(this.url, {
|
|
94
|
+
method: 'POST',
|
|
95
|
+
headers,
|
|
96
|
+
body: JSON.stringify(body),
|
|
97
|
+
signal: controller.signal,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
catch (e) {
|
|
101
|
+
// Отмена пользователя — abort() из cancellationToken до/во время fetch:
|
|
102
|
+
// молча завершаем генератор, не превращая в stream.error.
|
|
103
|
+
if (cancellationToken?.cancelled)
|
|
104
|
+
return;
|
|
105
|
+
throw e;
|
|
106
|
+
}
|
|
72
107
|
if (!resp.ok) {
|
|
73
108
|
const errorText = await resp.text();
|
|
74
109
|
this._handleErrors(resp.status, errorText);
|
|
@@ -100,6 +135,10 @@ export class OllamaProvider extends BaseProvider {
|
|
|
100
135
|
debugCollector?.captureRawModelResponse(trimmed);
|
|
101
136
|
const msg = chunkData.message;
|
|
102
137
|
if (msg?.content && typeof msg.content === 'string') {
|
|
138
|
+
if (!firstChunkReceived) {
|
|
139
|
+
firstChunkReceived = true;
|
|
140
|
+
clearTimeout(timer);
|
|
141
|
+
}
|
|
103
142
|
const hasReasoning = !!accumulatedReasoning;
|
|
104
143
|
accumulatedContent += msg.content;
|
|
105
144
|
yield {
|
|
@@ -113,18 +152,27 @@ export class OllamaProvider extends BaseProvider {
|
|
|
113
152
|
accumulatedReasoning = '';
|
|
114
153
|
}
|
|
115
154
|
if (msg?.tool_calls) {
|
|
155
|
+
if (!firstChunkReceived) {
|
|
156
|
+
firstChunkReceived = true;
|
|
157
|
+
clearTimeout(timer);
|
|
158
|
+
}
|
|
116
159
|
for (const tc of msg.tool_calls) {
|
|
117
160
|
accumulatedToolCalls.push({
|
|
118
161
|
id: tc.id,
|
|
119
162
|
type: 'function',
|
|
120
163
|
function: {
|
|
121
164
|
name: tc.function?.name,
|
|
122
|
-
|
|
165
|
+
// Строку → объект: единообразие с _parseResponse.
|
|
166
|
+
arguments: this._normalizeToolArguments(tc.function?.arguments),
|
|
123
167
|
},
|
|
124
168
|
});
|
|
125
169
|
}
|
|
126
170
|
}
|
|
127
171
|
if (msg?.thinking && typeof msg.thinking === 'string') {
|
|
172
|
+
if (!firstChunkReceived) {
|
|
173
|
+
firstChunkReceived = true;
|
|
174
|
+
clearTimeout(timer);
|
|
175
|
+
}
|
|
128
176
|
accumulatedReasoning += msg.thinking;
|
|
129
177
|
debugCollector?.captureReasoning(accumulatedReasoning);
|
|
130
178
|
yield {
|
|
@@ -148,7 +196,14 @@ export class OllamaProvider extends BaseProvider {
|
|
|
148
196
|
}
|
|
149
197
|
}
|
|
150
198
|
catch (e) {
|
|
151
|
-
|
|
199
|
+
// Ошибки чтения стрима (таймаут/обрыв сети/AbortError) пробрасываем
|
|
200
|
+
// наружу — иначе генератор «успешно» завершится с пустым ответом и
|
|
201
|
+
// оркестратор не узнает о сбое провайдера. При пользовательской
|
|
202
|
+
// отмене (cancellationToken) молча выходим.
|
|
203
|
+
if (!cancellationToken?.cancelled) {
|
|
204
|
+
info('OLLAMA', `Стрим прерван: ${e}`);
|
|
205
|
+
throw e;
|
|
206
|
+
}
|
|
152
207
|
}
|
|
153
208
|
finally {
|
|
154
209
|
reader.releaseLock();
|
|
@@ -207,6 +262,15 @@ export class OllamaProvider extends BaseProvider {
|
|
|
207
262
|
return data2.embedding ?? [];
|
|
208
263
|
}
|
|
209
264
|
async listModels() {
|
|
265
|
+
const models = await this.listModelsDetailed();
|
|
266
|
+
return models.map((m) => m.id);
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Список моделей с контекстным окном из /api/tags.
|
|
270
|
+
* Ollama отдаёт context_length внутри details.context_length
|
|
271
|
+
* (а в некоторых версиях — в model_info.context_length).
|
|
272
|
+
*/
|
|
273
|
+
async listModelsDetailed() {
|
|
210
274
|
const baseUrl = this.url.replace('/api/chat', '').replace('/v1/chat/completions', '');
|
|
211
275
|
const tagsUrl = `${baseUrl}/api/tags`;
|
|
212
276
|
try {
|
|
@@ -216,7 +280,12 @@ export class OllamaProvider extends BaseProvider {
|
|
|
216
280
|
clearTimeout(timer);
|
|
217
281
|
if (resp.ok) {
|
|
218
282
|
const data = await resp.json();
|
|
219
|
-
return (data.models || [])
|
|
283
|
+
return (data.models || [])
|
|
284
|
+
.map((m) => ({
|
|
285
|
+
id: m.name,
|
|
286
|
+
contextWindow: this._extractContextWindow(m),
|
|
287
|
+
}))
|
|
288
|
+
.filter((m) => m.id);
|
|
220
289
|
}
|
|
221
290
|
}
|
|
222
291
|
catch {
|
|
@@ -224,6 +293,37 @@ export class OllamaProvider extends BaseProvider {
|
|
|
224
293
|
}
|
|
225
294
|
return [];
|
|
226
295
|
}
|
|
296
|
+
/**
|
|
297
|
+
* Извлекает размер контекстного окна из записи /api/tags.
|
|
298
|
+
* Поле может лежать в details.context_length или model_info
|
|
299
|
+
* (context_length / ContextLength / llama.context_length) — берём
|
|
300
|
+
* первый числовой вариант. Если окно неизвестно — возвращаем undefined.
|
|
301
|
+
*/
|
|
302
|
+
_extractContextWindow(model) {
|
|
303
|
+
const info = model.model_info ?? {};
|
|
304
|
+
const raw = model.details?.context_length
|
|
305
|
+
?? info.context_length
|
|
306
|
+
?? info.ContextLength
|
|
307
|
+
?? info['llama.context_length'];
|
|
308
|
+
const num = typeof raw === 'number' ? raw : Number(raw);
|
|
309
|
+
return Number.isFinite(num) && num > 0 ? num : undefined;
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Нормализует function.arguments в tool_calls: JSON-строка → объект.
|
|
313
|
+
* Сборка Ollama (0.32.x, llama-server c --spec-type draft-mtp) принимает
|
|
314
|
+
* только объект и падает с 400 «can't find closing '}'» на строке.
|
|
315
|
+
* Если парсинг не удался — оставляем строку как есть (не роняем запрос).
|
|
316
|
+
*/
|
|
317
|
+
_normalizeToolArguments(args) {
|
|
318
|
+
if (typeof args !== 'string')
|
|
319
|
+
return args;
|
|
320
|
+
try {
|
|
321
|
+
return JSON.parse(args);
|
|
322
|
+
}
|
|
323
|
+
catch {
|
|
324
|
+
return args;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
227
327
|
_formatMessages(messages) {
|
|
228
328
|
const formatted = [];
|
|
229
329
|
for (const msg of messages) {
|
|
@@ -240,8 +340,22 @@ export class OllamaProvider extends BaseProvider {
|
|
|
240
340
|
continue;
|
|
241
341
|
}
|
|
242
342
|
const entry = { role: msg.role, content: msg.content };
|
|
243
|
-
if (msg.toolUse)
|
|
244
|
-
|
|
343
|
+
if (msg.toolUse) {
|
|
344
|
+
// Старые сессии хранят arguments строкой — приводим к объекту
|
|
345
|
+
// перед отправкой, иначе Ollama вернёт 400.
|
|
346
|
+
entry.tool_calls = msg.toolUse.map((tc) => {
|
|
347
|
+
const fn = tc.function;
|
|
348
|
+
if (!fn || typeof fn.arguments === 'undefined')
|
|
349
|
+
return tc;
|
|
350
|
+
return {
|
|
351
|
+
...tc,
|
|
352
|
+
function: {
|
|
353
|
+
...fn,
|
|
354
|
+
arguments: this._normalizeToolArguments(fn.arguments),
|
|
355
|
+
},
|
|
356
|
+
};
|
|
357
|
+
});
|
|
358
|
+
}
|
|
245
359
|
formatted.push(entry);
|
|
246
360
|
}
|
|
247
361
|
return formatted;
|
|
@@ -259,7 +373,9 @@ export class OllamaProvider extends BaseProvider {
|
|
|
259
373
|
type: 'function',
|
|
260
374
|
function: {
|
|
261
375
|
name: tc.function?.name,
|
|
262
|
-
|
|
376
|
+
// Строку → объект, чтобы в сессию сохранялись объекты (единообразие)
|
|
377
|
+
// и повторная отправка не ломалась.
|
|
378
|
+
arguments: this._normalizeToolArguments(tc.function?.arguments),
|
|
263
379
|
},
|
|
264
380
|
}));
|
|
265
381
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama.test.d.ts","sourceRoot":"","sources":["../../src/providers/ollama.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { OllamaProvider } from './ollama.js';
|
|
3
|
+
const baseParams = {
|
|
4
|
+
url: 'http://omn.example.test/api/chat',
|
|
5
|
+
apiKey: 'key',
|
|
6
|
+
model: 'qwen3.8:27b',
|
|
7
|
+
timeout: 30,
|
|
8
|
+
};
|
|
9
|
+
function makeMessage(overrides = {}) {
|
|
10
|
+
return {
|
|
11
|
+
id: 'm1',
|
|
12
|
+
role: 'assistant',
|
|
13
|
+
content: '',
|
|
14
|
+
usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },
|
|
15
|
+
disabled: false,
|
|
16
|
+
pinned: false,
|
|
17
|
+
branchId: 'b1',
|
|
18
|
+
...overrides,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const STRING_ARGS = '{"category": "research"}';
|
|
22
|
+
describe('OllamaProvider — нормализация function.arguments', () => {
|
|
23
|
+
const provider = new OllamaProvider(baseParams);
|
|
24
|
+
function firstToolCall(formatted) {
|
|
25
|
+
const tc = formatted[0].tool_calls[0];
|
|
26
|
+
return tc;
|
|
27
|
+
}
|
|
28
|
+
it('_formatMessages: arguments-строка превращается в объект', () => {
|
|
29
|
+
const formatted = provider._formatMessages([
|
|
30
|
+
makeMessage({
|
|
31
|
+
toolUse: [
|
|
32
|
+
{
|
|
33
|
+
index: 0,
|
|
34
|
+
id: 'call_1',
|
|
35
|
+
type: 'function',
|
|
36
|
+
function: { name: 'classify_conversation', arguments: STRING_ARGS },
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
}),
|
|
40
|
+
]);
|
|
41
|
+
const tc = firstToolCall(formatted);
|
|
42
|
+
const fn = tc.function;
|
|
43
|
+
expect(fn.arguments).toEqual({ category: 'research' });
|
|
44
|
+
expect(fn.name).toBe('classify_conversation');
|
|
45
|
+
expect(tc.id).toBe('call_1');
|
|
46
|
+
expect(tc.index).toBe(0);
|
|
47
|
+
});
|
|
48
|
+
it('_formatMessages: уже объект не трогается', () => {
|
|
49
|
+
const argsObj = { query: 'тест' };
|
|
50
|
+
const formatted = provider._formatMessages([
|
|
51
|
+
makeMessage({
|
|
52
|
+
toolUse: [
|
|
53
|
+
{
|
|
54
|
+
id: 'call_2',
|
|
55
|
+
type: 'function',
|
|
56
|
+
function: { name: 'web_search', arguments: argsObj },
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
}),
|
|
60
|
+
]);
|
|
61
|
+
const fn = firstToolCall(formatted).function;
|
|
62
|
+
expect(fn.arguments).toBe(argsObj);
|
|
63
|
+
});
|
|
64
|
+
it('_formatMessages: невалидная JSON-строка остаётся строкой (не роняем запрос)', () => {
|
|
65
|
+
const bad = '{не json';
|
|
66
|
+
const formatted = provider._formatMessages([
|
|
67
|
+
makeMessage({
|
|
68
|
+
toolUse: [
|
|
69
|
+
{
|
|
70
|
+
id: 'call_3',
|
|
71
|
+
type: 'function',
|
|
72
|
+
function: { name: 'tool', arguments: bad },
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
}),
|
|
76
|
+
]);
|
|
77
|
+
const fn = firstToolCall(formatted).function;
|
|
78
|
+
expect(fn.arguments).toBe(bad);
|
|
79
|
+
});
|
|
80
|
+
it('_formatMessages: отсутствие arguments не ломает отправку', () => {
|
|
81
|
+
const formatted = provider._formatMessages([
|
|
82
|
+
makeMessage({
|
|
83
|
+
toolUse: [
|
|
84
|
+
{ id: 'call_4', type: 'function', function: { name: 'noop' } },
|
|
85
|
+
],
|
|
86
|
+
}),
|
|
87
|
+
]);
|
|
88
|
+
const tc = firstToolCall(formatted);
|
|
89
|
+
expect(tc.function.name).toBe('noop');
|
|
90
|
+
expect(tc.function.arguments).toBeUndefined();
|
|
91
|
+
});
|
|
92
|
+
it('_parseResponse: arguments-строка из ответа превращается в объект', () => {
|
|
93
|
+
const resp = provider._parseResponse({
|
|
94
|
+
message: {
|
|
95
|
+
role: 'assistant',
|
|
96
|
+
content: '',
|
|
97
|
+
tool_calls: [
|
|
98
|
+
{
|
|
99
|
+
index: 0,
|
|
100
|
+
id: 'call_5',
|
|
101
|
+
type: 'function',
|
|
102
|
+
function: { name: 'classify_conversation', arguments: STRING_ARGS },
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
const fn = resp.toolCalls[0].function;
|
|
108
|
+
expect(fn.arguments).toEqual({ category: 'research' });
|
|
109
|
+
});
|
|
110
|
+
it('_parseResponse: невалидная строка остаётся строкой (fallback)', () => {
|
|
111
|
+
const bad = 'не json';
|
|
112
|
+
const resp = provider._parseResponse({
|
|
113
|
+
message: {
|
|
114
|
+
role: 'assistant',
|
|
115
|
+
content: '',
|
|
116
|
+
tool_calls: [
|
|
117
|
+
{
|
|
118
|
+
id: 'call_6',
|
|
119
|
+
type: 'function',
|
|
120
|
+
function: { name: 'tool', arguments: bad },
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
const fn = resp.toolCalls[0].function;
|
|
126
|
+
expect(fn.arguments).toBe(bad);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
//# sourceMappingURL=ollama.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama.test.js","sourceRoot":"","sources":["../../src/providers/ollama.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAc,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAElF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,qBAAa,cAAe,SAAQ,YAAY;IAC9C,eAAe,IAAI,MAAM;IAInB,IAAI,CACR,QAAQ,EAAE,UAAU,EAAE,EACtB,YAAY,CAAC,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACjC,MAAM,CAAC,EAAE,OAAO,EAChB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAc,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAElF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,qBAAa,cAAe,SAAQ,YAAY;IAC9C,eAAe,IAAI,MAAM;IAInB,IAAI,CACR,QAAQ,EAAE,UAAU,EAAE,EACtB,YAAY,CAAC,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACjC,MAAM,CAAC,EAAE,OAAO,EAChB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,WAAW,CAAC;IA8ChB,SAAS,CACd,QAAQ,EAAE,UAAU,EAAE,EACtB,YAAY,CAAC,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACjC,cAAc,CAAC,EAAE,cAAc,EAC/B,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,cAAc,CAAC,QAAQ,CAAC;IAiNrB,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAyBrC,OAAO,CAAC,eAAe;IAsDvB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,aAAa;CAatB"}
|
package/dist/providers/openai.js
CHANGED
|
@@ -13,6 +13,8 @@ export class OpenAIProvider extends BaseProvider {
|
|
|
13
13
|
messages: formattedMessages,
|
|
14
14
|
temperature: this.temperature,
|
|
15
15
|
};
|
|
16
|
+
if (this.reasoningLevel && this.reasoningLevel !== 'default')
|
|
17
|
+
body.reasoning_effort = this.reasoningLevel;
|
|
16
18
|
if (this.topP !== undefined)
|
|
17
19
|
body.top_p = this.topP;
|
|
18
20
|
if (this.topK !== undefined)
|
|
@@ -21,6 +23,8 @@ export class OpenAIProvider extends BaseProvider {
|
|
|
21
23
|
body.tools = tools;
|
|
22
24
|
if (stream)
|
|
23
25
|
body.stream = true;
|
|
26
|
+
if (this.maxTokens && this.maxTokens > 0)
|
|
27
|
+
body.max_tokens = this.maxTokens;
|
|
24
28
|
const headers = this._getHeaders();
|
|
25
29
|
debugCollector?.captureApiRequest(this.url, 'POST', headers, body);
|
|
26
30
|
const controller = new AbortController();
|
|
@@ -55,12 +59,16 @@ export class OpenAIProvider extends BaseProvider {
|
|
|
55
59
|
temperature: this.temperature,
|
|
56
60
|
stream: true,
|
|
57
61
|
};
|
|
62
|
+
if (this.reasoningLevel && this.reasoningLevel !== 'default')
|
|
63
|
+
body.reasoning_effort = this.reasoningLevel;
|
|
58
64
|
if (this.topP !== undefined)
|
|
59
65
|
body.top_p = this.topP;
|
|
60
66
|
if (this.topK !== undefined)
|
|
61
67
|
body.top_k = this.topK;
|
|
62
68
|
if (tools?.length)
|
|
63
69
|
body.tools = tools;
|
|
70
|
+
if (this.maxTokens && this.maxTokens > 0)
|
|
71
|
+
body.max_tokens = this.maxTokens;
|
|
64
72
|
const headers = this._getHeaders();
|
|
65
73
|
debugCollector?.captureApiRequest(this.url, 'POST', headers, body);
|
|
66
74
|
let accumulatedContent = '';
|
|
@@ -69,13 +77,36 @@ export class OpenAIProvider extends BaseProvider {
|
|
|
69
77
|
const accumulatedToolCalls = [];
|
|
70
78
|
const controller = new AbortController();
|
|
71
79
|
const timer = setTimeout(() => controller.abort(), this.timeout * 1000);
|
|
80
|
+
// Таймаут — только на ожидание первого чанка. Как только стрим пошёл,
|
|
81
|
+
// таймер снимается, дальше стрим длится сколько нужно.
|
|
82
|
+
let firstChunkReceived = false;
|
|
83
|
+
// Кнопка «Стоп»: отмена пользователя (cancellationToken.cancel) немедленно
|
|
84
|
+
// прерывает висящий fetch/reader.read() через AbortController — иначе
|
|
85
|
+
// reader.read() висит до таймаута 120с и отмена не работает.
|
|
86
|
+
if (cancellationToken) {
|
|
87
|
+
const originalCancel = cancellationToken.cancel.bind(cancellationToken);
|
|
88
|
+
cancellationToken.cancel = () => {
|
|
89
|
+
originalCancel();
|
|
90
|
+
controller.abort();
|
|
91
|
+
};
|
|
92
|
+
}
|
|
72
93
|
try {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
94
|
+
let resp;
|
|
95
|
+
try {
|
|
96
|
+
resp = await fetch(this.url, {
|
|
97
|
+
method: 'POST',
|
|
98
|
+
headers,
|
|
99
|
+
body: JSON.stringify(body),
|
|
100
|
+
signal: controller.signal,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
catch (e) {
|
|
104
|
+
// Отмена пользователя — abort() из cancellationToken до/во время fetch:
|
|
105
|
+
// молча завершаем генератор, не превращая в stream.error.
|
|
106
|
+
if (cancellationToken?.cancelled)
|
|
107
|
+
return;
|
|
108
|
+
throw e;
|
|
109
|
+
}
|
|
79
110
|
if (!resp.ok) {
|
|
80
111
|
const errorText = await resp.text();
|
|
81
112
|
this._handleErrors(resp.status, errorText);
|
|
@@ -114,6 +145,10 @@ export class OpenAIProvider extends BaseProvider {
|
|
|
114
145
|
if (delta.reasoning_content && typeof delta.reasoning_content === 'string') {
|
|
115
146
|
if (delta.reasoning_content === '.' || delta.reasoning_content === '.\n')
|
|
116
147
|
continue;
|
|
148
|
+
if (!firstChunkReceived) {
|
|
149
|
+
firstChunkReceived = true;
|
|
150
|
+
clearTimeout(timer);
|
|
151
|
+
}
|
|
117
152
|
accumulatedReasoning += delta.reasoning_content;
|
|
118
153
|
yield {
|
|
119
154
|
content: '',
|
|
@@ -123,6 +158,10 @@ export class OpenAIProvider extends BaseProvider {
|
|
|
123
158
|
};
|
|
124
159
|
}
|
|
125
160
|
if (delta.content && typeof delta.content === 'string') {
|
|
161
|
+
if (!firstChunkReceived) {
|
|
162
|
+
firstChunkReceived = true;
|
|
163
|
+
clearTimeout(timer);
|
|
164
|
+
}
|
|
126
165
|
accumulatedContent += delta.content;
|
|
127
166
|
yield {
|
|
128
167
|
content: delta.content,
|
|
@@ -133,6 +172,10 @@ export class OpenAIProvider extends BaseProvider {
|
|
|
133
172
|
};
|
|
134
173
|
}
|
|
135
174
|
if (delta.tool_calls) {
|
|
175
|
+
if (!firstChunkReceived) {
|
|
176
|
+
firstChunkReceived = true;
|
|
177
|
+
clearTimeout(timer);
|
|
178
|
+
}
|
|
136
179
|
for (const tc of delta.tool_calls) {
|
|
137
180
|
const tcIndex = tc.index;
|
|
138
181
|
const func = tc.function;
|
|
@@ -175,7 +218,14 @@ export class OpenAIProvider extends BaseProvider {
|
|
|
175
218
|
}
|
|
176
219
|
}
|
|
177
220
|
catch (e) {
|
|
178
|
-
|
|
221
|
+
// Ошибки чтения стрима (таймаут/обрыв сети/AbortError) пробрасываем
|
|
222
|
+
// наружу — иначе генератор «успешно» завершится с пустым ответом и
|
|
223
|
+
// оркестратор не узнает о сбое провайдера. При пользовательской
|
|
224
|
+
// отмене (cancellationToken) молча выходим.
|
|
225
|
+
if (!cancellationToken?.cancelled) {
|
|
226
|
+
info('OPENAI', `Стрим прерван: ${e}`);
|
|
227
|
+
throw e;
|
|
228
|
+
}
|
|
179
229
|
}
|
|
180
230
|
finally {
|
|
181
231
|
reader.releaseLock();
|
|
@@ -239,10 +289,33 @@ export class OpenAIProvider extends BaseProvider {
|
|
|
239
289
|
role: msg.role,
|
|
240
290
|
content: msg.content,
|
|
241
291
|
};
|
|
242
|
-
if (msg.toolUse)
|
|
243
|
-
|
|
292
|
+
if (msg.toolUse) {
|
|
293
|
+
// Нормализация function.arguments: объект → JSON-строка. OpenAI-совместимые
|
|
294
|
+
// API (DeepSeek через open-webui) требуют строку и возвращают 400
|
|
295
|
+
// «invalid type: map, expected a string» на объекте. Строку не трогаем,
|
|
296
|
+
// невалидное/undefined оставляем как есть — запрос не роняем.
|
|
297
|
+
entry.tool_calls = msg.toolUse.map((tc) => {
|
|
298
|
+
const fn = tc.function;
|
|
299
|
+
if (!fn || typeof fn.arguments !== 'object' || fn.arguments === null)
|
|
300
|
+
return tc;
|
|
301
|
+
try {
|
|
302
|
+
return {
|
|
303
|
+
...tc,
|
|
304
|
+
function: { ...fn, arguments: JSON.stringify(fn.arguments) },
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
catch {
|
|
308
|
+
return tc;
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
}
|
|
244
312
|
if (msg.toolCallId)
|
|
245
313
|
entry.tool_call_id = msg.toolCallId;
|
|
314
|
+
// DeepSeek reasoning-модели требуют возврат reasoning_content в повторной
|
|
315
|
+
// истории (иначе 400 «The reasoning_content ... must be passed back»).
|
|
316
|
+
if (msg.role === 'assistant' && msg.reasoning) {
|
|
317
|
+
entry.reasoning_content = msg.reasoning;
|
|
318
|
+
}
|
|
246
319
|
formatted.push(entry);
|
|
247
320
|
}
|
|
248
321
|
return formatted;
|