@caupulican/pi-adaptative 0.80.86 → 0.80.89
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 +178 -0
- package/dist/core/agent-session.d.ts +412 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +2053 -41
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/autonomy/approval-gate.d.ts +4 -0
- package/dist/core/autonomy/approval-gate.d.ts.map +1 -0
- package/dist/core/autonomy/approval-gate.js +27 -0
- package/dist/core/autonomy/approval-gate.js.map +1 -0
- package/dist/core/autonomy/bounded-completion.d.ts +27 -0
- package/dist/core/autonomy/bounded-completion.d.ts.map +1 -0
- package/dist/core/autonomy/bounded-completion.js +44 -0
- package/dist/core/autonomy/bounded-completion.js.map +1 -0
- package/dist/core/autonomy/contracts.d.ts +129 -0
- package/dist/core/autonomy/contracts.d.ts.map +1 -0
- package/dist/core/autonomy/contracts.js +2 -0
- package/dist/core/autonomy/contracts.js.map +1 -0
- package/dist/core/autonomy/gates.d.ts +15 -0
- package/dist/core/autonomy/gates.d.ts.map +1 -0
- package/dist/core/autonomy/gates.js +205 -0
- package/dist/core/autonomy/gates.js.map +1 -0
- package/dist/core/autonomy/lane-tracker.d.ts +48 -0
- package/dist/core/autonomy/lane-tracker.d.ts.map +1 -0
- package/dist/core/autonomy/lane-tracker.js +125 -0
- package/dist/core/autonomy/lane-tracker.js.map +1 -0
- package/dist/core/autonomy/path-scope.d.ts +9 -0
- package/dist/core/autonomy/path-scope.d.ts.map +1 -0
- package/dist/core/autonomy/path-scope.js +122 -0
- package/dist/core/autonomy/path-scope.js.map +1 -0
- package/dist/core/autonomy/risk-assessment.d.ts +3 -0
- package/dist/core/autonomy/risk-assessment.d.ts.map +1 -0
- package/dist/core/autonomy/risk-assessment.js +122 -0
- package/dist/core/autonomy/risk-assessment.js.map +1 -0
- package/dist/core/autonomy/session-lane-record.d.ts +10 -0
- package/dist/core/autonomy/session-lane-record.d.ts.map +1 -0
- package/dist/core/autonomy/session-lane-record.js +36 -0
- package/dist/core/autonomy/session-lane-record.js.map +1 -0
- package/dist/core/autonomy/status.d.ts +40 -0
- package/dist/core/autonomy/status.d.ts.map +1 -0
- package/dist/core/autonomy/status.js +107 -0
- package/dist/core/autonomy/status.js.map +1 -0
- package/dist/core/autonomy/subagent-prompt.d.ts +21 -0
- package/dist/core/autonomy/subagent-prompt.d.ts.map +1 -0
- package/dist/core/autonomy/subagent-prompt.js +28 -0
- package/dist/core/autonomy/subagent-prompt.js.map +1 -0
- package/dist/core/autonomy/telemetry-events.d.ts +18 -0
- package/dist/core/autonomy/telemetry-events.d.ts.map +1 -0
- package/dist/core/autonomy/telemetry-events.js +60 -0
- package/dist/core/autonomy/telemetry-events.js.map +1 -0
- package/dist/core/context/artifact-retrieval.d.ts +49 -0
- package/dist/core/context/artifact-retrieval.d.ts.map +1 -0
- package/dist/core/context/artifact-retrieval.js +49 -0
- package/dist/core/context/artifact-retrieval.js.map +1 -0
- package/dist/core/context/brain-curator.d.ts +88 -0
- package/dist/core/context/brain-curator.d.ts.map +1 -0
- package/dist/core/context/brain-curator.js +192 -0
- package/dist/core/context/brain-curator.js.map +1 -0
- package/dist/core/context/context-artifacts.d.ts +94 -0
- package/dist/core/context/context-artifacts.d.ts.map +1 -0
- package/dist/core/context/context-artifacts.js +307 -0
- package/dist/core/context/context-artifacts.js.map +1 -0
- package/dist/core/context/context-audit.d.ts +66 -0
- package/dist/core/context/context-audit.d.ts.map +1 -0
- package/dist/core/context/context-audit.js +173 -0
- package/dist/core/context/context-audit.js.map +1 -0
- package/dist/core/context/context-composition.d.ts +122 -0
- package/dist/core/context/context-composition.d.ts.map +1 -0
- package/dist/core/context/context-composition.js +163 -0
- package/dist/core/context/context-composition.js.map +1 -0
- package/dist/core/context/context-item.d.ts +117 -0
- package/dist/core/context/context-item.d.ts.map +1 -0
- package/dist/core/context/context-item.js +36 -0
- package/dist/core/context/context-item.js.map +1 -0
- package/dist/core/context/context-prompt-enforcement.d.ts +86 -0
- package/dist/core/context/context-prompt-enforcement.d.ts.map +1 -0
- package/dist/core/context/context-prompt-enforcement.js +168 -0
- package/dist/core/context/context-prompt-enforcement.js.map +1 -0
- package/dist/core/context/context-prompt-policy.d.ts +90 -0
- package/dist/core/context/context-prompt-policy.d.ts.map +1 -0
- package/dist/core/context/context-prompt-policy.js +73 -0
- package/dist/core/context/context-prompt-policy.js.map +1 -0
- package/dist/core/context/context-retention.d.ts +36 -0
- package/dist/core/context/context-retention.d.ts.map +1 -0
- package/dist/core/context/context-retention.js +108 -0
- package/dist/core/context/context-retention.js.map +1 -0
- package/dist/core/context/context-store.d.ts +37 -0
- package/dist/core/context/context-store.d.ts.map +1 -0
- package/dist/core/context/context-store.js +45 -0
- package/dist/core/context/context-store.js.map +1 -0
- package/dist/core/context/memory-diagnostics.d.ts +50 -0
- package/dist/core/context/memory-diagnostics.d.ts.map +1 -0
- package/dist/core/context/memory-diagnostics.js +43 -0
- package/dist/core/context/memory-diagnostics.js.map +1 -0
- package/dist/core/context/memory-index-store.d.ts +28 -0
- package/dist/core/context/memory-index-store.d.ts.map +1 -0
- package/dist/core/context/memory-index-store.js +38 -0
- package/dist/core/context/memory-index-store.js.map +1 -0
- package/dist/core/context/memory-prompt-block.d.ts +34 -0
- package/dist/core/context/memory-prompt-block.d.ts.map +1 -0
- package/dist/core/context/memory-prompt-block.js +58 -0
- package/dist/core/context/memory-prompt-block.js.map +1 -0
- package/dist/core/context/memory-provider-contract.d.ts +114 -0
- package/dist/core/context/memory-provider-contract.d.ts.map +1 -0
- package/dist/core/context/memory-provider-contract.js +121 -0
- package/dist/core/context/memory-provider-contract.js.map +1 -0
- package/dist/core/context/memory-retrieval.d.ts +27 -0
- package/dist/core/context/memory-retrieval.d.ts.map +1 -0
- package/dist/core/context/memory-retrieval.js +91 -0
- package/dist/core/context/memory-retrieval.js.map +1 -0
- package/dist/core/context/okf-memory-provider.d.ts +26 -0
- package/dist/core/context/okf-memory-provider.d.ts.map +1 -0
- package/dist/core/context/okf-memory-provider.js +154 -0
- package/dist/core/context/okf-memory-provider.js.map +1 -0
- package/dist/core/context/okf-memory.d.ts +42 -0
- package/dist/core/context/okf-memory.d.ts.map +1 -0
- package/dist/core/context/okf-memory.js +175 -0
- package/dist/core/context/okf-memory.js.map +1 -0
- package/dist/core/context/policy-engine.d.ts +66 -0
- package/dist/core/context/policy-engine.d.ts.map +1 -0
- package/dist/core/context/policy-engine.js +171 -0
- package/dist/core/context/policy-engine.js.map +1 -0
- package/dist/core/context/policy-types.d.ts +102 -0
- package/dist/core/context/policy-types.d.ts.map +1 -0
- package/dist/core/context/policy-types.js +7 -0
- package/dist/core/context/policy-types.js.map +1 -0
- package/dist/core/context/sqlite-runtime-index.d.ts +19 -0
- package/dist/core/context/sqlite-runtime-index.d.ts.map +1 -0
- package/dist/core/context/sqlite-runtime-index.js +344 -0
- package/dist/core/context/sqlite-runtime-index.js.map +1 -0
- package/dist/core/context/storage-authority.d.ts +20 -0
- package/dist/core/context/storage-authority.d.ts.map +1 -0
- package/dist/core/context/storage-authority.js +51 -0
- package/dist/core/context/storage-authority.js.map +1 -0
- package/dist/core/context/tool-output-packer.d.ts +75 -0
- package/dist/core/context/tool-output-packer.d.ts.map +1 -0
- package/dist/core/context/tool-output-packer.js +77 -0
- package/dist/core/context/tool-output-packer.js.map +1 -0
- package/dist/core/context-gc.d.ts +13 -0
- package/dist/core/context-gc.d.ts.map +1 -1
- package/dist/core/context-gc.js +6 -0
- package/dist/core/context-gc.js.map +1 -1
- package/dist/core/cost/session-usage.d.ts +20 -0
- package/dist/core/cost/session-usage.d.ts.map +1 -0
- package/dist/core/cost/session-usage.js +164 -0
- package/dist/core/cost/session-usage.js.map +1 -0
- package/dist/core/delegation/session-worker-result.d.ts +10 -0
- package/dist/core/delegation/session-worker-result.d.ts.map +1 -0
- package/dist/core/delegation/session-worker-result.js +36 -0
- package/dist/core/delegation/session-worker-result.js.map +1 -0
- package/dist/core/delegation/worker-result.d.ts +9 -0
- package/dist/core/delegation/worker-result.d.ts.map +1 -0
- package/dist/core/delegation/worker-result.js +152 -0
- package/dist/core/delegation/worker-result.js.map +1 -0
- package/dist/core/delegation/worker-runner.d.ts +58 -0
- package/dist/core/delegation/worker-runner.d.ts.map +1 -0
- package/dist/core/delegation/worker-runner.js +188 -0
- package/dist/core/delegation/worker-runner.js.map +1 -0
- package/dist/core/extensions/builtin.d.ts +5 -1
- package/dist/core/extensions/builtin.d.ts.map +1 -1
- package/dist/core/extensions/builtin.js +23 -1
- package/dist/core/extensions/builtin.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts +5 -1
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +13 -0
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/goals/goal-continuation-controller.d.ts +22 -0
- package/dist/core/goals/goal-continuation-controller.d.ts.map +1 -0
- package/dist/core/goals/goal-continuation-controller.js +88 -0
- package/dist/core/goals/goal-continuation-controller.js.map +1 -0
- package/dist/core/goals/goal-continuation-defaults.d.ts +10 -0
- package/dist/core/goals/goal-continuation-defaults.d.ts.map +1 -0
- package/dist/core/goals/goal-continuation-defaults.js +10 -0
- package/dist/core/goals/goal-continuation-defaults.js.map +1 -0
- package/dist/core/goals/goal-continuation-prompt.d.ts +18 -0
- package/dist/core/goals/goal-continuation-prompt.d.ts.map +1 -0
- package/dist/core/goals/goal-continuation-prompt.js +141 -0
- package/dist/core/goals/goal-continuation-prompt.js.map +1 -0
- package/dist/core/goals/goal-runtime-snapshot.d.ts +19 -0
- package/dist/core/goals/goal-runtime-snapshot.d.ts.map +1 -0
- package/dist/core/goals/goal-runtime-snapshot.js +23 -0
- package/dist/core/goals/goal-runtime-snapshot.js.map +1 -0
- package/dist/core/goals/goal-state.d.ts +87 -0
- package/dist/core/goals/goal-state.d.ts.map +1 -0
- package/dist/core/goals/goal-state.js +259 -0
- package/dist/core/goals/goal-state.js.map +1 -0
- package/dist/core/goals/goal-tool-core.d.ts +66 -0
- package/dist/core/goals/goal-tool-core.d.ts.map +1 -0
- package/dist/core/goals/goal-tool-core.js +146 -0
- package/dist/core/goals/goal-tool-core.js.map +1 -0
- package/dist/core/goals/session-goal-state.d.ts +10 -0
- package/dist/core/goals/session-goal-state.d.ts.map +1 -0
- package/dist/core/goals/session-goal-state.js +35 -0
- package/dist/core/goals/session-goal-state.js.map +1 -0
- package/dist/core/learning/learning-audit.d.ts +45 -0
- package/dist/core/learning/learning-audit.d.ts.map +1 -0
- package/dist/core/learning/learning-audit.js +139 -0
- package/dist/core/learning/learning-audit.js.map +1 -0
- package/dist/core/learning/learning-gate.d.ts +29 -0
- package/dist/core/learning/learning-gate.d.ts.map +1 -0
- package/dist/core/learning/learning-gate.js +150 -0
- package/dist/core/learning/learning-gate.js.map +1 -0
- package/dist/core/learning/session-learning-decision.d.ts +10 -0
- package/dist/core/learning/session-learning-decision.d.ts.map +1 -0
- package/dist/core/learning/session-learning-decision.js +36 -0
- package/dist/core/learning/session-learning-decision.js.map +1 -0
- package/dist/core/model-capability.d.ts +41 -0
- package/dist/core/model-capability.d.ts.map +1 -0
- package/dist/core/model-capability.js +101 -0
- package/dist/core/model-capability.js.map +1 -0
- package/dist/core/model-router/config-diagnostics.d.ts.map +1 -1
- package/dist/core/model-router/config-diagnostics.js +1 -0
- package/dist/core/model-router/config-diagnostics.js.map +1 -1
- package/dist/core/model-router/intent-classifier.d.ts +2 -0
- package/dist/core/model-router/intent-classifier.d.ts.map +1 -1
- package/dist/core/model-router/intent-classifier.js +154 -9
- package/dist/core/model-router/intent-classifier.js.map +1 -1
- package/dist/core/model-router/route-judge.d.ts +54 -0
- package/dist/core/model-router/route-judge.d.ts.map +1 -0
- package/dist/core/model-router/route-judge.js +128 -0
- package/dist/core/model-router/route-judge.js.map +1 -0
- package/dist/core/model-router/status.d.ts +4 -1
- package/dist/core/model-router/status.d.ts.map +1 -1
- package/dist/core/model-router/status.js +30 -6
- package/dist/core/model-router/status.js.map +1 -1
- package/dist/core/model-router/tool-escalation.d.ts +4 -6
- package/dist/core/model-router/tool-escalation.d.ts.map +1 -1
- package/dist/core/model-router/tool-escalation.js +1 -1
- package/dist/core/model-router/tool-escalation.js.map +1 -1
- package/dist/core/models/fitness-store.d.ts +40 -0
- package/dist/core/models/fitness-store.d.ts.map +1 -0
- package/dist/core/models/fitness-store.js +61 -0
- package/dist/core/models/fitness-store.js.map +1 -0
- package/dist/core/profile-registry.d.ts.map +1 -1
- package/dist/core/profile-registry.js +1 -1
- package/dist/core/profile-registry.js.map +1 -1
- package/dist/core/prompt-templates.d.ts +2 -0
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +12 -4
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/research/automata-provider.d.ts +5 -0
- package/dist/core/research/automata-provider.d.ts.map +1 -0
- package/dist/core/research/automata-provider.js +15 -0
- package/dist/core/research/automata-provider.js.map +1 -0
- package/dist/core/research/evidence-bundle.d.ts +10 -0
- package/dist/core/research/evidence-bundle.d.ts.map +1 -0
- package/dist/core/research/evidence-bundle.js +116 -0
- package/dist/core/research/evidence-bundle.js.map +1 -0
- package/dist/core/research/model-fitness.d.ts +82 -0
- package/dist/core/research/model-fitness.d.ts.map +1 -0
- package/dist/core/research/model-fitness.js +308 -0
- package/dist/core/research/model-fitness.js.map +1 -0
- package/dist/core/research/research-gate.d.ts +11 -0
- package/dist/core/research/research-gate.d.ts.map +1 -0
- package/dist/core/research/research-gate.js +82 -0
- package/dist/core/research/research-gate.js.map +1 -0
- package/dist/core/research/research-runner.d.ts +59 -0
- package/dist/core/research/research-runner.d.ts.map +1 -0
- package/dist/core/research/research-runner.js +155 -0
- package/dist/core/research/research-runner.js.map +1 -0
- package/dist/core/research/session-evidence-bundle.d.ts +11 -0
- package/dist/core/research/session-evidence-bundle.d.ts.map +1 -0
- package/dist/core/research/session-evidence-bundle.js +55 -0
- package/dist/core/research/session-evidence-bundle.js.map +1 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +4 -0
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/settings-manager.d.ts +160 -4
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +304 -9
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts +4 -0
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +18 -6
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +10 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/toolkit/script-registry.d.ts +34 -0
- package/dist/core/toolkit/script-registry.d.ts.map +1 -0
- package/dist/core/toolkit/script-registry.js +71 -0
- package/dist/core/toolkit/script-registry.js.map +1 -0
- package/dist/core/toolkit/script-runner.d.ts +28 -0
- package/dist/core/toolkit/script-runner.d.ts.map +1 -0
- package/dist/core/toolkit/script-runner.js +48 -0
- package/dist/core/toolkit/script-runner.js.map +1 -0
- package/dist/core/tools/artifact-retrieve.d.ts +23 -0
- package/dist/core/tools/artifact-retrieve.d.ts.map +1 -0
- package/dist/core/tools/artifact-retrieve.js +110 -0
- package/dist/core/tools/artifact-retrieve.js.map +1 -0
- package/dist/core/tools/delegate.d.ts +32 -0
- package/dist/core/tools/delegate.d.ts.map +1 -0
- package/dist/core/tools/delegate.js +60 -0
- package/dist/core/tools/delegate.js.map +1 -0
- package/dist/core/tools/fff-search-backend.d.ts +103 -0
- package/dist/core/tools/fff-search-backend.d.ts.map +1 -0
- package/dist/core/tools/fff-search-backend.js +151 -0
- package/dist/core/tools/fff-search-backend.js.map +1 -0
- package/dist/core/tools/find.d.ts +21 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +183 -10
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/goal.d.ts +35 -0
- package/dist/core/tools/goal.d.ts.map +1 -0
- package/dist/core/tools/goal.js +122 -0
- package/dist/core/tools/goal.js.map +1 -0
- package/dist/core/tools/grep.d.ts +21 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +272 -27
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts +4 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +9 -0
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/model-fitness.d.ts +30 -0
- package/dist/core/tools/model-fitness.d.ts.map +1 -0
- package/dist/core/tools/model-fitness.js +38 -0
- package/dist/core/tools/model-fitness.js.map +1 -0
- package/dist/core/tools/run-toolkit-script.d.ts +24 -0
- package/dist/core/tools/run-toolkit-script.d.ts.map +1 -0
- package/dist/core/tools/run-toolkit-script.js +103 -0
- package/dist/core/tools/run-toolkit-script.js.map +1 -0
- package/dist/core/tools/search-router.d.ts +75 -0
- package/dist/core/tools/search-router.d.ts.map +1 -0
- package/dist/core/tools/search-router.js +85 -0
- package/dist/core/tools/search-router.js.map +1 -0
- package/dist/modes/interactive/components/fitness-role-selector.d.ts +13 -0
- package/dist/modes/interactive/components/fitness-role-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/fitness-role-selector.js +65 -0
- package/dist/modes/interactive/components/fitness-role-selector.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +18 -16
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +16 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +555 -11
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +9 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +308 -39
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/utils/tools-manager.d.ts +2 -0
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +154 -2
- package/dist/utils/tools-manager.js.map +1 -1
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +368 -12
- package/package.json +5 -4
|
@@ -6,11 +6,47 @@ import { basename, dirname, join, relative, resolve, sep } from "path";
|
|
|
6
6
|
import lockfile from "proper-lockfile";
|
|
7
7
|
import { CONFIG_DIR_NAME, getAgentDir, getProfilesDir } from "../config.js";
|
|
8
8
|
import { normalizePath, resolvePath } from "../utils/paths.js";
|
|
9
|
+
import { DEFAULT_GOAL_AUTO_CONTINUE, DEFAULT_GOAL_AUTO_CONTINUE_DELAY_MS, DEFAULT_GOAL_CONTINUE_MAX_STALL_TURNS, DEFAULT_GOAL_CONTINUE_MAX_TURNS, DEFAULT_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES, MAX_GOAL_AUTO_CONTINUE_DELAY_MS, MAX_GOAL_CONTINUE_MAX_STALL_TURNS, MAX_GOAL_CONTINUE_MAX_TURNS, MAX_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES, } from "./goals/goal-continuation-defaults.js";
|
|
9
10
|
import { DEFAULT_HTTP_IDLE_TIMEOUT_MS, parseHttpIdleTimeoutMs } from "./http-dispatcher.js";
|
|
10
11
|
import { ProfileRegistry } from "./profile-registry.js";
|
|
11
12
|
import { mergeResourceProfileMap } from "./resource-profile-blocks.js";
|
|
12
13
|
import { validateSkillName } from "./skills.js";
|
|
13
|
-
export const
|
|
14
|
+
export const MEMORY_RETRIEVAL_MAX_RESULTS_MIN = 1;
|
|
15
|
+
export const MEMORY_RETRIEVAL_MAX_RESULTS_MAX = 20;
|
|
16
|
+
const MEMORY_RETRIEVAL_MAX_RESULTS_DEFAULT = 5;
|
|
17
|
+
function clampMemoryRetrievalMaxResults(value) {
|
|
18
|
+
return Math.min(MEMORY_RETRIEVAL_MAX_RESULTS_MAX, Math.max(MEMORY_RETRIEVAL_MAX_RESULTS_MIN, Math.trunc(value)));
|
|
19
|
+
}
|
|
20
|
+
export const DEFAULT_AUTONOMY_MAX_STALL_TURNS = DEFAULT_GOAL_CONTINUE_MAX_STALL_TURNS;
|
|
21
|
+
export const DEFAULT_AUTONOMY_GOAL_CONTINUE_TURNS = DEFAULT_GOAL_CONTINUE_MAX_TURNS;
|
|
22
|
+
export const DEFAULT_AUTONOMY_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES = DEFAULT_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES;
|
|
23
|
+
export const DEFAULT_AUTONOMY_GOAL_AUTO_CONTINUE = DEFAULT_GOAL_AUTO_CONTINUE;
|
|
24
|
+
export const DEFAULT_AUTONOMY_GOAL_AUTO_CONTINUE_DELAY_MS = DEFAULT_GOAL_AUTO_CONTINUE_DELAY_MS;
|
|
25
|
+
export const DEFAULT_RESEARCH_LANE_ENABLED = false;
|
|
26
|
+
export const DEFAULT_RESEARCH_LANE_MAX_USD = 0.25;
|
|
27
|
+
export const DEFAULT_RESEARCH_LANE_MAX_SOURCES = 8;
|
|
28
|
+
export const DEFAULT_RESEARCH_LANE_MAX_FINDINGS = 10;
|
|
29
|
+
export const DEFAULT_RESEARCH_LANE_MAX_WALL_CLOCK_MS = 120_000;
|
|
30
|
+
export const DEFAULT_RESEARCH_LANE_IDLE_DELAY_MS = 0;
|
|
31
|
+
export const DEFAULT_RESEARCH_LANE_MAX_RUNS_PER_SESSION = 10;
|
|
32
|
+
export const MAX_RESEARCH_LANE_MAX_USD = 5;
|
|
33
|
+
export const MAX_RESEARCH_LANE_MAX_SOURCES = 32;
|
|
34
|
+
export const MAX_RESEARCH_LANE_MAX_FINDINGS = 50;
|
|
35
|
+
export const MAX_RESEARCH_LANE_MAX_WALL_CLOCK_MS = 3_600_000;
|
|
36
|
+
export const MAX_RESEARCH_LANE_IDLE_DELAY_MS = 300_000;
|
|
37
|
+
export const MAX_RESEARCH_LANE_MAX_RUNS_PER_SESSION = 100;
|
|
38
|
+
export const DEFAULT_WORKER_DELEGATION_ENABLED = false;
|
|
39
|
+
export const DEFAULT_WORKER_DELEGATION_MAX_USD = 0.5;
|
|
40
|
+
export const DEFAULT_WORKER_DELEGATION_MAX_WALL_CLOCK_MS = 120_000;
|
|
41
|
+
export const MAX_WORKER_DELEGATION_MAX_USD = 5;
|
|
42
|
+
export const MAX_WORKER_DELEGATION_MAX_WALL_CLOCK_MS = 3_600_000;
|
|
43
|
+
export const DEFAULT_LEARNING_POLICY_ENABLED = false;
|
|
44
|
+
export const DEFAULT_LEARNING_POLICY_AUTO_APPLY_ENABLED = false;
|
|
45
|
+
export const DEFAULT_LEARNING_POLICY_CONFIDENCE_THRESHOLD = 90;
|
|
46
|
+
export const DEFAULT_LEARNING_POLICY_MIN_OBSERVATIONS = 2;
|
|
47
|
+
export const DEFAULT_LEARNING_POLICY_ALLOWED_AUTO_APPLY_LAYERS = ["memory"];
|
|
48
|
+
export const DEFAULT_LEARNING_POLICY_REFLECTION_SOURCE_CONFIDENCE = 50;
|
|
49
|
+
export const DEFAULT_MODEL_CAPABILITY_MODE = "auto";
|
|
14
50
|
/** Deep merge settings: project/overrides take precedence, nested objects merge recursively */
|
|
15
51
|
function deepMergeSettings(base, overrides) {
|
|
16
52
|
const result = { ...base };
|
|
@@ -145,6 +181,20 @@ function parseTimeoutSetting(value, settingName) {
|
|
|
145
181
|
}
|
|
146
182
|
return undefined;
|
|
147
183
|
}
|
|
184
|
+
function sanitizeIntegerSetting(value, fallback, min, max) {
|
|
185
|
+
if (typeof value !== "number" || !Number.isInteger(value))
|
|
186
|
+
return fallback;
|
|
187
|
+
if (value < min || value > max)
|
|
188
|
+
return fallback;
|
|
189
|
+
return value;
|
|
190
|
+
}
|
|
191
|
+
function sanitizeNumberSetting(value, fallback, min, max) {
|
|
192
|
+
if (typeof value !== "number" || !Number.isFinite(value))
|
|
193
|
+
return fallback;
|
|
194
|
+
if (value < min || value > max)
|
|
195
|
+
return fallback;
|
|
196
|
+
return value;
|
|
197
|
+
}
|
|
148
198
|
const VALID_THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
|
|
149
199
|
function isThinkingLevel(value) {
|
|
150
200
|
return typeof value === "string" && VALID_THINKING_LEVELS.includes(value);
|
|
@@ -185,7 +235,7 @@ function normalizeModelRouterSettings(value) {
|
|
|
185
235
|
const settings = {};
|
|
186
236
|
if (typeof input.enabled === "boolean")
|
|
187
237
|
settings.enabled = input.enabled;
|
|
188
|
-
for (const key of ["cheapModel", "expensiveModel", "learningModel"]) {
|
|
238
|
+
for (const key of ["cheapModel", "mediumModel", "expensiveModel", "learningModel"]) {
|
|
189
239
|
const candidate = input[key];
|
|
190
240
|
if (typeof candidate !== "string")
|
|
191
241
|
continue;
|
|
@@ -579,11 +629,24 @@ export class SettingsManager {
|
|
|
579
629
|
const profileFilter = {};
|
|
580
630
|
const seenProfiles = new Set();
|
|
581
631
|
const registry = this.getProfileRegistry();
|
|
582
|
-
|
|
632
|
+
const activeProfileNames = this.getActiveResourceProfileNames();
|
|
633
|
+
let kindMentionedByProfile = false;
|
|
634
|
+
for (const profileName of activeProfileNames) {
|
|
583
635
|
if (seenProfiles.has(profileName))
|
|
584
636
|
continue;
|
|
585
637
|
seenProfiles.add(profileName);
|
|
586
|
-
|
|
638
|
+
const kindFilter = registry.getProfile(profileName)?.resources[kind];
|
|
639
|
+
if (kindFilter && ((kindFilter.allow?.length ?? 0) > 0 || (kindFilter.block?.length ?? 0) > 0)) {
|
|
640
|
+
kindMentionedByProfile = true;
|
|
641
|
+
}
|
|
642
|
+
appendFilter(profileFilter, kindFilter);
|
|
643
|
+
}
|
|
644
|
+
// Strict UAC: an active profile set is the COMPLETE grant. An authority-bearing kind that no
|
|
645
|
+
// active profile explicitly mentions is denied outright — grant-all must be said out loud
|
|
646
|
+
// via `allow: ["*"]`. Themes are exempt (cosmetic, no authority). With no active profile,
|
|
647
|
+
// behavior is unchanged: profiles are the opt-in least-privilege boundary.
|
|
648
|
+
if (activeProfileNames.length > 0 && kind !== "themes" && !kindMentionedByProfile) {
|
|
649
|
+
return { allow: [], block: ["*"] };
|
|
587
650
|
}
|
|
588
651
|
const filter = mergeResourceProfileFilters(legacyFilter, profileFilter);
|
|
589
652
|
return {
|
|
@@ -1354,6 +1417,8 @@ export class SettingsManager {
|
|
|
1354
1417
|
merged.enabled = router.enabled;
|
|
1355
1418
|
if (router.cheapModel !== undefined)
|
|
1356
1419
|
merged.cheapModel = router.cheapModel;
|
|
1420
|
+
if (router.mediumModel !== undefined)
|
|
1421
|
+
merged.mediumModel = router.mediumModel;
|
|
1357
1422
|
if (router.expensiveModel !== undefined)
|
|
1358
1423
|
merged.expensiveModel = router.expensiveModel;
|
|
1359
1424
|
if (router.learningModel !== undefined)
|
|
@@ -1366,22 +1431,31 @@ export class SettingsManager {
|
|
|
1366
1431
|
const settings = {
|
|
1367
1432
|
enabled: this.settings.modelRouter?.enabled ?? false,
|
|
1368
1433
|
cheapModel: this.settings.modelRouter?.cheapModel?.trim() || undefined,
|
|
1434
|
+
mediumModel: this.settings.modelRouter?.mediumModel?.trim() || undefined,
|
|
1369
1435
|
expensiveModel: this.settings.modelRouter?.expensiveModel?.trim() || undefined,
|
|
1370
1436
|
learningModel: this.settings.modelRouter?.learningModel?.trim() || undefined,
|
|
1437
|
+
judgeEnabled: this.settings.modelRouter?.judgeEnabled ?? true,
|
|
1438
|
+
judgeModel: this.settings.modelRouter?.judgeModel?.trim() || undefined,
|
|
1371
1439
|
};
|
|
1372
1440
|
return {
|
|
1373
1441
|
enabled: profileSettings?.enabled ?? settings.enabled,
|
|
1374
1442
|
cheapModel: profileSettings?.cheapModel?.trim() || settings.cheapModel,
|
|
1443
|
+
mediumModel: profileSettings?.mediumModel?.trim() || settings.mediumModel,
|
|
1375
1444
|
expensiveModel: profileSettings?.expensiveModel?.trim() || settings.expensiveModel,
|
|
1376
1445
|
learningModel: profileSettings?.learningModel?.trim() || settings.learningModel,
|
|
1446
|
+
judgeEnabled: profileSettings?.judgeEnabled ?? settings.judgeEnabled,
|
|
1447
|
+
judgeModel: profileSettings?.judgeModel?.trim() || settings.judgeModel,
|
|
1377
1448
|
};
|
|
1378
1449
|
}
|
|
1379
1450
|
setModelRouterSettings(settings, scope = "global") {
|
|
1380
1451
|
const normalized = {
|
|
1381
1452
|
enabled: settings.enabled ?? false,
|
|
1382
1453
|
cheapModel: settings.cheapModel?.trim() || undefined,
|
|
1454
|
+
mediumModel: settings.mediumModel?.trim() || undefined,
|
|
1383
1455
|
expensiveModel: settings.expensiveModel?.trim() || undefined,
|
|
1384
1456
|
learningModel: settings.learningModel?.trim() || undefined,
|
|
1457
|
+
judgeEnabled: settings.judgeEnabled ?? true,
|
|
1458
|
+
judgeModel: settings.judgeModel?.trim() || undefined,
|
|
1385
1459
|
};
|
|
1386
1460
|
if (scope === "project") {
|
|
1387
1461
|
const projectSettings = structuredClone(this.projectSettings);
|
|
@@ -1439,6 +1513,10 @@ export class SettingsManager {
|
|
|
1439
1513
|
preserveRecentPages: this.settings.contextGc?.semanticMemory?.preserveRecentPages ?? 1,
|
|
1440
1514
|
minChars: this.settings.contextGc?.semanticMemory?.minChars ?? 900,
|
|
1441
1515
|
markers: this.settings.contextGc?.semanticMemory?.markers ?? [
|
|
1516
|
+
// Generic recall-page marker the bundled default provider (transcript-recall)
|
|
1517
|
+
// emits; must be present here because a non-empty settings list fully replaces
|
|
1518
|
+
// the context-gc code default that already includes it.
|
|
1519
|
+
"<memory_context",
|
|
1442
1520
|
"<automata_context",
|
|
1443
1521
|
"<automata_response",
|
|
1444
1522
|
"<automata_query",
|
|
@@ -1452,6 +1530,68 @@ export class SettingsManager {
|
|
|
1452
1530
|
},
|
|
1453
1531
|
};
|
|
1454
1532
|
}
|
|
1533
|
+
getContextPromptEnforcementSettings() {
|
|
1534
|
+
return {
|
|
1535
|
+
enabled: this.settings.contextPolicy?.enforcement?.enabled ?? false,
|
|
1536
|
+
preserveRecentMessages: this.settings.contextPolicy?.enforcement?.preserveRecentMessages ?? 8,
|
|
1537
|
+
minChars: this.settings.contextPolicy?.enforcement?.minChars ?? 1200,
|
|
1538
|
+
};
|
|
1539
|
+
}
|
|
1540
|
+
getContextCurationSettings() {
|
|
1541
|
+
return {
|
|
1542
|
+
enabled: this.settings.contextPolicy?.curation?.enabled ?? false,
|
|
1543
|
+
model: this.settings.contextPolicy?.curation?.model?.trim() || undefined,
|
|
1544
|
+
maxJobsPerTurn: sanitizeIntegerSetting(this.settings.contextPolicy?.curation?.maxJobsPerTurn, 4, 1, 16),
|
|
1545
|
+
};
|
|
1546
|
+
}
|
|
1547
|
+
setContextCurationSettings(settings, scope = "global") {
|
|
1548
|
+
if (scope === "project") {
|
|
1549
|
+
const projectSettings = structuredClone(this.projectSettings);
|
|
1550
|
+
projectSettings.contextPolicy = { ...projectSettings.contextPolicy, curation: { ...settings } };
|
|
1551
|
+
this.markProjectModified("contextPolicy");
|
|
1552
|
+
this.saveProjectSettings(projectSettings);
|
|
1553
|
+
return;
|
|
1554
|
+
}
|
|
1555
|
+
this.globalSettings.contextPolicy = { ...this.globalSettings.contextPolicy, curation: { ...settings } };
|
|
1556
|
+
this.markModified("contextPolicy");
|
|
1557
|
+
this.save();
|
|
1558
|
+
}
|
|
1559
|
+
setContextPromptEnforcementSettings(settings, scope = "global") {
|
|
1560
|
+
if (scope === "project") {
|
|
1561
|
+
const projectSettings = structuredClone(this.projectSettings);
|
|
1562
|
+
projectSettings.contextPolicy = { ...projectSettings.contextPolicy, enforcement: { ...settings } };
|
|
1563
|
+
this.markProjectModified("contextPolicy");
|
|
1564
|
+
this.saveProjectSettings(projectSettings);
|
|
1565
|
+
return;
|
|
1566
|
+
}
|
|
1567
|
+
this.globalSettings.contextPolicy = { ...this.globalSettings.contextPolicy, enforcement: { ...settings } };
|
|
1568
|
+
this.markModified("contextPolicy");
|
|
1569
|
+
this.save();
|
|
1570
|
+
}
|
|
1571
|
+
getMemoryRetrievalSettings() {
|
|
1572
|
+
return {
|
|
1573
|
+
enabled: this.settings.contextPolicy?.memory?.enabled ?? false,
|
|
1574
|
+
maxResults: clampMemoryRetrievalMaxResults(this.settings.contextPolicy?.memory?.maxResults ?? MEMORY_RETRIEVAL_MAX_RESULTS_DEFAULT),
|
|
1575
|
+
includeInPrompt: this.settings.contextPolicy?.memory?.includeInPrompt ?? false,
|
|
1576
|
+
};
|
|
1577
|
+
}
|
|
1578
|
+
setMemoryRetrievalSettings(settings, scope = "global") {
|
|
1579
|
+
const normalized = {
|
|
1580
|
+
enabled: settings.enabled,
|
|
1581
|
+
maxResults: settings.maxResults === undefined ? undefined : clampMemoryRetrievalMaxResults(settings.maxResults),
|
|
1582
|
+
includeInPrompt: settings.includeInPrompt,
|
|
1583
|
+
};
|
|
1584
|
+
if (scope === "project") {
|
|
1585
|
+
const projectSettings = structuredClone(this.projectSettings);
|
|
1586
|
+
projectSettings.contextPolicy = { ...projectSettings.contextPolicy, memory: normalized };
|
|
1587
|
+
this.markProjectModified("contextPolicy");
|
|
1588
|
+
this.saveProjectSettings(projectSettings);
|
|
1589
|
+
return;
|
|
1590
|
+
}
|
|
1591
|
+
this.globalSettings.contextPolicy = { ...this.globalSettings.contextPolicy, memory: normalized };
|
|
1592
|
+
this.markModified("contextPolicy");
|
|
1593
|
+
this.save();
|
|
1594
|
+
}
|
|
1455
1595
|
getBranchSummarySettings() {
|
|
1456
1596
|
return {
|
|
1457
1597
|
reserveTokens: this.settings.branchSummary?.reserveTokens ?? 16384,
|
|
@@ -1798,11 +1938,25 @@ export class SettingsManager {
|
|
|
1798
1938
|
}
|
|
1799
1939
|
getAutonomySettings() {
|
|
1800
1940
|
const mode = this.settings.autonomy?.mode;
|
|
1801
|
-
const
|
|
1802
|
-
const
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1941
|
+
const configuredMaxStallTurns = this.settings.autonomy?.maxStallTurns;
|
|
1942
|
+
const configuredGoalContinueTurns = this.settings.autonomy?.goalContinueTurns;
|
|
1943
|
+
const configuredGoalContinueMaxWallClockMinutes = this.settings.autonomy?.goalContinueMaxWallClockMinutes;
|
|
1944
|
+
const configuredGoalAutoContinue = this.settings.autonomy?.goalAutoContinue;
|
|
1945
|
+
const configuredGoalAutoContinueDelayMs = this.settings.autonomy?.goalAutoContinueDelayMs;
|
|
1946
|
+
const maxStallTurns = sanitizeIntegerSetting(configuredMaxStallTurns, DEFAULT_AUTONOMY_MAX_STALL_TURNS, 0, MAX_GOAL_CONTINUE_MAX_STALL_TURNS);
|
|
1947
|
+
const goalContinueTurns = sanitizeIntegerSetting(configuredGoalContinueTurns, DEFAULT_AUTONOMY_GOAL_CONTINUE_TURNS, 1, MAX_GOAL_CONTINUE_MAX_TURNS);
|
|
1948
|
+
const goalContinueMaxWallClockMinutes = sanitizeIntegerSetting(configuredGoalContinueMaxWallClockMinutes, DEFAULT_AUTONOMY_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES, 0, MAX_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES);
|
|
1949
|
+
const goalAutoContinueDelayMs = sanitizeIntegerSetting(configuredGoalAutoContinueDelayMs, DEFAULT_AUTONOMY_GOAL_AUTO_CONTINUE_DELAY_MS, 0, MAX_GOAL_AUTO_CONTINUE_DELAY_MS);
|
|
1950
|
+
return {
|
|
1951
|
+
mode: mode === "safe" || mode === "balanced" || mode === "full" ? mode : "off",
|
|
1952
|
+
maxStallTurns,
|
|
1953
|
+
goalContinueTurns,
|
|
1954
|
+
goalContinueMaxWallClockMinutes,
|
|
1955
|
+
goalAutoContinue: typeof configuredGoalAutoContinue === "boolean"
|
|
1956
|
+
? configuredGoalAutoContinue
|
|
1957
|
+
: DEFAULT_AUTONOMY_GOAL_AUTO_CONTINUE,
|
|
1958
|
+
goalAutoContinueDelayMs,
|
|
1959
|
+
};
|
|
1806
1960
|
}
|
|
1807
1961
|
setAutonomySettings(settings, scope = "global") {
|
|
1808
1962
|
if (scope === "project") {
|
|
@@ -1816,6 +1970,147 @@ export class SettingsManager {
|
|
|
1816
1970
|
this.markModified("autonomy");
|
|
1817
1971
|
this.save();
|
|
1818
1972
|
}
|
|
1973
|
+
getResearchLaneSettings() {
|
|
1974
|
+
const configured = this.settings.researchLane ?? {};
|
|
1975
|
+
const resolved = {
|
|
1976
|
+
enabled: typeof configured.enabled === "boolean" ? configured.enabled : DEFAULT_RESEARCH_LANE_ENABLED,
|
|
1977
|
+
maxUsd: sanitizeNumberSetting(configured.maxUsd, DEFAULT_RESEARCH_LANE_MAX_USD, 0, MAX_RESEARCH_LANE_MAX_USD),
|
|
1978
|
+
maxSources: sanitizeIntegerSetting(configured.maxSources, DEFAULT_RESEARCH_LANE_MAX_SOURCES, 1, MAX_RESEARCH_LANE_MAX_SOURCES),
|
|
1979
|
+
maxFindings: sanitizeIntegerSetting(configured.maxFindings, DEFAULT_RESEARCH_LANE_MAX_FINDINGS, 1, MAX_RESEARCH_LANE_MAX_FINDINGS),
|
|
1980
|
+
maxWallClockMs: sanitizeIntegerSetting(configured.maxWallClockMs, DEFAULT_RESEARCH_LANE_MAX_WALL_CLOCK_MS, 0, MAX_RESEARCH_LANE_MAX_WALL_CLOCK_MS),
|
|
1981
|
+
idleDelayMs: sanitizeIntegerSetting(configured.idleDelayMs, DEFAULT_RESEARCH_LANE_IDLE_DELAY_MS, 0, MAX_RESEARCH_LANE_IDLE_DELAY_MS),
|
|
1982
|
+
maxRunsPerSession: sanitizeIntegerSetting(configured.maxRunsPerSession, DEFAULT_RESEARCH_LANE_MAX_RUNS_PER_SESSION, 0, MAX_RESEARCH_LANE_MAX_RUNS_PER_SESSION),
|
|
1983
|
+
};
|
|
1984
|
+
if (typeof configured.model === "string" && configured.model.trim().length > 0) {
|
|
1985
|
+
resolved.model = configured.model;
|
|
1986
|
+
}
|
|
1987
|
+
if (typeof configured.profile === "string" && configured.profile.trim().length > 0) {
|
|
1988
|
+
resolved.profile = configured.profile;
|
|
1989
|
+
}
|
|
1990
|
+
if (typeof configured.systemPrompt === "string" && configured.systemPrompt.trim().length > 0) {
|
|
1991
|
+
resolved.systemPrompt = configured.systemPrompt;
|
|
1992
|
+
}
|
|
1993
|
+
return resolved;
|
|
1994
|
+
}
|
|
1995
|
+
setResearchLaneSettings(settings, scope = "global") {
|
|
1996
|
+
if (scope === "project") {
|
|
1997
|
+
const projectSettings = structuredClone(this.projectSettings);
|
|
1998
|
+
projectSettings.researchLane = { ...settings };
|
|
1999
|
+
this.markProjectModified("researchLane");
|
|
2000
|
+
this.saveProjectSettings(projectSettings);
|
|
2001
|
+
return;
|
|
2002
|
+
}
|
|
2003
|
+
this.globalSettings.researchLane = { ...settings };
|
|
2004
|
+
this.markModified("researchLane");
|
|
2005
|
+
this.save();
|
|
2006
|
+
}
|
|
2007
|
+
getWorkerDelegationSettings() {
|
|
2008
|
+
const configured = this.settings.workerDelegation ?? {};
|
|
2009
|
+
const resolved = {
|
|
2010
|
+
enabled: typeof configured.enabled === "boolean" ? configured.enabled : DEFAULT_WORKER_DELEGATION_ENABLED,
|
|
2011
|
+
maxUsd: sanitizeNumberSetting(configured.maxUsd, DEFAULT_WORKER_DELEGATION_MAX_USD, 0, MAX_WORKER_DELEGATION_MAX_USD),
|
|
2012
|
+
maxWallClockMs: sanitizeIntegerSetting(configured.maxWallClockMs, DEFAULT_WORKER_DELEGATION_MAX_WALL_CLOCK_MS, 0, MAX_WORKER_DELEGATION_MAX_WALL_CLOCK_MS),
|
|
2013
|
+
};
|
|
2014
|
+
if (typeof configured.model === "string" && configured.model.trim().length > 0) {
|
|
2015
|
+
resolved.model = configured.model;
|
|
2016
|
+
}
|
|
2017
|
+
if (typeof configured.profile === "string" && configured.profile.trim().length > 0) {
|
|
2018
|
+
resolved.profile = configured.profile;
|
|
2019
|
+
}
|
|
2020
|
+
if (typeof configured.systemPrompt === "string" && configured.systemPrompt.trim().length > 0) {
|
|
2021
|
+
resolved.systemPrompt = configured.systemPrompt;
|
|
2022
|
+
}
|
|
2023
|
+
return resolved;
|
|
2024
|
+
}
|
|
2025
|
+
setWorkerDelegationSettings(settings, scope = "global") {
|
|
2026
|
+
if (scope === "project") {
|
|
2027
|
+
const projectSettings = structuredClone(this.projectSettings);
|
|
2028
|
+
projectSettings.workerDelegation = { ...settings };
|
|
2029
|
+
this.markProjectModified("workerDelegation");
|
|
2030
|
+
this.saveProjectSettings(projectSettings);
|
|
2031
|
+
return;
|
|
2032
|
+
}
|
|
2033
|
+
this.globalSettings.workerDelegation = { ...settings };
|
|
2034
|
+
this.markModified("workerDelegation");
|
|
2035
|
+
this.save();
|
|
2036
|
+
}
|
|
2037
|
+
getLearningPolicySettings() {
|
|
2038
|
+
const configured = this.settings.learningPolicy ?? {};
|
|
2039
|
+
const allowedLayers = Array.isArray(configured.allowedAutoApplyLayers)
|
|
2040
|
+
? configured.allowedAutoApplyLayers.filter((layer) => typeof layer === "string" &&
|
|
2041
|
+
["memory", "skill", "prompt", "extension", "tool", "script", "settings", "source"].includes(layer))
|
|
2042
|
+
: [...DEFAULT_LEARNING_POLICY_ALLOWED_AUTO_APPLY_LAYERS];
|
|
2043
|
+
return {
|
|
2044
|
+
enabled: typeof configured.enabled === "boolean" ? configured.enabled : DEFAULT_LEARNING_POLICY_ENABLED,
|
|
2045
|
+
autoApplyEnabled: typeof configured.autoApplyEnabled === "boolean"
|
|
2046
|
+
? configured.autoApplyEnabled
|
|
2047
|
+
: DEFAULT_LEARNING_POLICY_AUTO_APPLY_ENABLED,
|
|
2048
|
+
confidenceThreshold: sanitizeIntegerSetting(configured.confidenceThreshold, DEFAULT_LEARNING_POLICY_CONFIDENCE_THRESHOLD, 0, 100),
|
|
2049
|
+
minObservations: sanitizeIntegerSetting(configured.minObservations, DEFAULT_LEARNING_POLICY_MIN_OBSERVATIONS, 0, 100),
|
|
2050
|
+
allowedAutoApplyLayers: allowedLayers,
|
|
2051
|
+
requireRollbackPlan: typeof configured.requireRollbackPlan === "boolean" ? configured.requireRollbackPlan : true,
|
|
2052
|
+
reflectionSourceConfidence: sanitizeIntegerSetting(configured.reflectionSourceConfidence, DEFAULT_LEARNING_POLICY_REFLECTION_SOURCE_CONFIDENCE, 0, 100),
|
|
2053
|
+
};
|
|
2054
|
+
}
|
|
2055
|
+
getToolkitScripts() {
|
|
2056
|
+
const configured = this.settings.toolkit?.scripts;
|
|
2057
|
+
if (!Array.isArray(configured))
|
|
2058
|
+
return [];
|
|
2059
|
+
return configured.filter((script) => Boolean(script) &&
|
|
2060
|
+
typeof script.name === "string" &&
|
|
2061
|
+
script.name.length > 0 &&
|
|
2062
|
+
typeof script.description === "string" &&
|
|
2063
|
+
typeof script.path === "string" &&
|
|
2064
|
+
(script.runner === "uv" || script.runner === "powershell" || script.runner === "bash"));
|
|
2065
|
+
}
|
|
2066
|
+
setToolkitSettings(settings, scope = "global") {
|
|
2067
|
+
if (scope === "project") {
|
|
2068
|
+
const projectSettings = structuredClone(this.projectSettings);
|
|
2069
|
+
projectSettings.toolkit = { ...settings };
|
|
2070
|
+
this.markProjectModified("toolkit");
|
|
2071
|
+
this.saveProjectSettings(projectSettings);
|
|
2072
|
+
return;
|
|
2073
|
+
}
|
|
2074
|
+
this.globalSettings.toolkit = { ...settings };
|
|
2075
|
+
this.markModified("toolkit");
|
|
2076
|
+
this.save();
|
|
2077
|
+
}
|
|
2078
|
+
getModelCapabilitySettings() {
|
|
2079
|
+
const configured = this.settings.modelCapability?.mode;
|
|
2080
|
+
const mode = configured === "auto" ||
|
|
2081
|
+
configured === "off" ||
|
|
2082
|
+
configured === "full" ||
|
|
2083
|
+
configured === "lean" ||
|
|
2084
|
+
configured === "minimal" ||
|
|
2085
|
+
configured === "chat"
|
|
2086
|
+
? configured
|
|
2087
|
+
: DEFAULT_MODEL_CAPABILITY_MODE;
|
|
2088
|
+
return { mode };
|
|
2089
|
+
}
|
|
2090
|
+
setModelCapabilitySettings(settings, scope = "global") {
|
|
2091
|
+
if (scope === "project") {
|
|
2092
|
+
const projectSettings = structuredClone(this.projectSettings);
|
|
2093
|
+
projectSettings.modelCapability = { ...settings };
|
|
2094
|
+
this.markProjectModified("modelCapability");
|
|
2095
|
+
this.saveProjectSettings(projectSettings);
|
|
2096
|
+
return;
|
|
2097
|
+
}
|
|
2098
|
+
this.globalSettings.modelCapability = { ...settings };
|
|
2099
|
+
this.markModified("modelCapability");
|
|
2100
|
+
this.save();
|
|
2101
|
+
}
|
|
2102
|
+
setLearningPolicySettings(settings, scope = "global") {
|
|
2103
|
+
if (scope === "project") {
|
|
2104
|
+
const projectSettings = structuredClone(this.projectSettings);
|
|
2105
|
+
projectSettings.learningPolicy = { ...settings };
|
|
2106
|
+
this.markProjectModified("learningPolicy");
|
|
2107
|
+
this.saveProjectSettings(projectSettings);
|
|
2108
|
+
return;
|
|
2109
|
+
}
|
|
2110
|
+
this.globalSettings.learningPolicy = { ...settings };
|
|
2111
|
+
this.markModified("learningPolicy");
|
|
2112
|
+
this.save();
|
|
2113
|
+
}
|
|
1819
2114
|
getAutoLearnSettings() {
|
|
1820
2115
|
const settings = this.settings.autoLearn ?? {};
|
|
1821
2116
|
return {
|