@calliopelabs/cli 2.5.0 → 3.0.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/README.md +45 -661
- package/dist/acp.d.ts +78 -0
- package/dist/acp.d.ts.map +1 -0
- package/dist/acp.js +572 -0
- package/dist/acp.js.map +1 -0
- package/dist/bin.d.ts +3 -7
- package/dist/bin.d.ts.map +1 -1
- package/dist/bin.js +56 -79
- package/dist/bin.js.map +1 -1
- package/dist/budget.d.ts +64 -0
- package/dist/budget.d.ts.map +1 -0
- package/dist/budget.js +157 -0
- package/dist/budget.js.map +1 -0
- package/dist/checkpoint.d.ts +63 -30
- package/dist/checkpoint.d.ts.map +1 -1
- package/dist/checkpoint.js +247 -160
- package/dist/checkpoint.js.map +1 -1
- package/dist/circuit-breaker/breaker.js.map +1 -1
- package/dist/config.d.ts +86 -81
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +236 -304
- package/dist/config.js.map +1 -1
- package/dist/cost.d.ts +114 -0
- package/dist/cost.d.ts.map +1 -0
- package/dist/cost.js +499 -0
- package/dist/cost.js.map +1 -0
- package/dist/diff.d.ts.map +1 -1
- package/dist/diff.js +11 -7
- package/dist/diff.js.map +1 -1
- package/dist/errors.js +3 -3
- package/dist/errors.js.map +1 -1
- package/dist/files.js.map +1 -1
- package/dist/fleet.d.ts +30 -0
- package/dist/fleet.d.ts.map +1 -0
- package/dist/fleet.js +86 -0
- package/dist/fleet.js.map +1 -0
- package/dist/fuzzy-search.d.ts.map +1 -1
- package/dist/fuzzy-search.js +2 -1
- package/dist/fuzzy-search.js.map +1 -1
- package/dist/git-status.js.map +1 -1
- package/dist/headless.d.ts +1 -2
- package/dist/headless.d.ts.map +1 -1
- package/dist/headless.js +166 -24
- package/dist/headless.js.map +1 -1
- package/dist/hud/api.d.ts +3 -18
- package/dist/hud/api.d.ts.map +1 -1
- package/dist/hud/api.js +9 -352
- package/dist/hud/api.js.map +1 -1
- package/dist/hud/palettes.d.ts.map +1 -1
- package/dist/hud/palettes.js +0 -180
- package/dist/hud/palettes.js.map +1 -1
- package/dist/hud/skins.d.ts.map +1 -1
- package/dist/hud/skins.js +0 -263
- package/dist/hud/skins.js.map +1 -1
- package/dist/hud/types.d.ts +2 -5
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -4
- package/dist/index.js.map +1 -1
- package/dist/iteration-ledger.d.ts.map +1 -1
- package/dist/iteration-ledger.js +3 -2
- package/dist/iteration-ledger.js.map +1 -1
- package/dist/local-model.d.ts +150 -0
- package/dist/local-model.d.ts.map +1 -0
- package/dist/local-model.js +408 -0
- package/dist/local-model.js.map +1 -0
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +5 -2
- package/dist/mcp.js.map +1 -1
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +6 -4
- package/dist/memory.js.map +1 -1
- package/dist/model-detection.js +2 -2
- package/dist/model-detection.js.map +1 -1
- package/dist/parallel-tools.js.map +1 -1
- package/dist/plugins.d.ts +32 -1
- package/dist/plugins.d.ts.map +1 -1
- package/dist/plugins.js +116 -5
- package/dist/plugins.js.map +1 -1
- package/dist/policy.d.ts +43 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +139 -0
- package/dist/policy.js.map +1 -0
- package/dist/project-config.d.ts +1 -2
- package/dist/project-config.d.ts.map +1 -1
- package/dist/project-config.js +0 -3
- package/dist/project-config.js.map +1 -1
- package/dist/providers/bedrock.d.ts.map +1 -1
- package/dist/providers/bedrock.js +2 -5
- package/dist/providers/bedrock.js.map +1 -1
- package/dist/providers/compat.d.ts +21 -0
- package/dist/providers/compat.d.ts.map +1 -1
- package/dist/providers/compat.js +176 -6
- package/dist/providers/compat.js.map +1 -1
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/index.d.ts +19 -4
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +61 -10
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/ollama.d.ts +2 -2
- package/dist/providers/ollama.d.ts.map +1 -1
- package/dist/providers/ollama.js +26 -6
- package/dist/providers/ollama.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +14 -10
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/types.d.ts +8 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js.map +1 -1
- package/dist/replay.d.ts +37 -0
- package/dist/replay.d.ts.map +1 -0
- package/dist/replay.js +168 -0
- package/dist/replay.js.map +1 -0
- package/dist/router.d.ts +133 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/{model-router.js → router.js} +329 -3
- package/dist/router.js.map +1 -0
- package/dist/runlog.d.ts +185 -0
- package/dist/runlog.d.ts.map +1 -0
- package/dist/runlog.js +398 -0
- package/dist/runlog.js.map +1 -0
- package/dist/{sandbox.d.ts → sandbox/docker.d.ts} +1 -1
- package/dist/sandbox/docker.d.ts.map +1 -0
- package/dist/{sandbox.js → sandbox/docker.js} +1 -1
- package/dist/sandbox/docker.js.map +1 -0
- package/dist/sandbox/index.d.ts +36 -0
- package/dist/sandbox/index.d.ts.map +1 -0
- package/dist/sandbox/index.js +62 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/{sandbox-native.d.ts → sandbox/native.d.ts} +1 -1
- package/dist/sandbox/native.d.ts.map +1 -0
- package/dist/{sandbox-native.js → sandbox/native.js} +1 -1
- package/dist/sandbox/native.js.map +1 -0
- package/dist/scope.js +1 -1
- package/dist/scope.js.map +1 -1
- package/dist/scuttlebot/config.js.map +1 -1
- package/dist/scuttlebot/irc-client.js.map +1 -1
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +22 -54
- package/dist/setup.js.map +1 -1
- package/dist/skills.d.ts +39 -0
- package/dist/skills.d.ts.map +1 -1
- package/dist/skills.js +90 -8
- package/dist/skills.js.map +1 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +6 -3
- package/dist/storage.js.map +1 -1
- package/dist/streaming.d.ts +25 -0
- package/dist/streaming.d.ts.map +1 -1
- package/dist/streaming.js +59 -0
- package/dist/streaming.js.map +1 -1
- package/dist/styles.d.ts +6 -0
- package/dist/styles.d.ts.map +1 -1
- package/dist/styles.js +11 -0
- package/dist/styles.js.map +1 -1
- package/dist/summarization.js.map +1 -1
- package/dist/terminal-image.js +1 -1
- package/dist/terminal-image.js.map +1 -1
- package/dist/themes.d.ts +5 -4
- package/dist/themes.d.ts.map +1 -1
- package/dist/themes.js +35 -90
- package/dist/themes.js.map +1 -1
- package/dist/tools.d.ts +27 -3
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +128 -179
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +4 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +21 -40
- package/dist/types.js.map +1 -1
- package/dist/ui/agent.d.ts +3 -6
- package/dist/ui/agent.d.ts.map +1 -1
- package/dist/ui/agent.js +328 -38
- package/dist/ui/agent.js.map +1 -1
- package/dist/ui/animations.d.ts +37 -0
- package/dist/ui/animations.d.ts.map +1 -0
- package/dist/ui/animations.js +227 -0
- package/dist/ui/animations.js.map +1 -0
- package/dist/ui/chat-input-keys.d.ts +42 -0
- package/dist/ui/chat-input-keys.d.ts.map +1 -0
- package/dist/ui/chat-input-keys.js +360 -0
- package/dist/ui/chat-input-keys.js.map +1 -0
- package/dist/ui/chat-input.d.ts +2 -1
- package/dist/ui/chat-input.d.ts.map +1 -1
- package/dist/ui/chat-input.js +31 -350
- package/dist/ui/chat-input.js.map +1 -1
- package/dist/ui/commands.d.ts +14 -46
- package/dist/ui/commands.d.ts.map +1 -1
- package/dist/ui/commands.js +416 -2899
- package/dist/ui/commands.js.map +1 -1
- package/dist/ui/completions.d.ts +1 -0
- package/dist/ui/completions.d.ts.map +1 -1
- package/dist/ui/completions.js +36 -107
- package/dist/ui/completions.js.map +1 -1
- package/dist/ui/components.d.ts +14 -6
- package/dist/ui/components.d.ts.map +1 -1
- package/dist/ui/components.js +17 -226
- package/dist/ui/components.js.map +1 -1
- package/dist/ui/context.js +6 -6
- package/dist/ui/context.js.map +1 -1
- package/dist/ui/debug-log.d.ts +11 -0
- package/dist/ui/debug-log.d.ts.map +1 -0
- package/dist/ui/debug-log.js +21 -0
- package/dist/ui/debug-log.js.map +1 -0
- package/dist/ui/error-boundary.d.ts.map +1 -1
- package/dist/ui/error-boundary.js.map +1 -1
- package/dist/ui/frame.d.ts.map +1 -1
- package/dist/ui/frame.js +1 -3
- package/dist/ui/frame.js.map +1 -1
- package/dist/ui/index.d.ts +11 -3
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +45 -1076
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/messages.d.ts +4 -7
- package/dist/ui/messages.d.ts.map +1 -1
- package/dist/ui/messages.js +15 -30
- package/dist/ui/messages.js.map +1 -1
- package/dist/ui/modals/index.d.ts +11 -0
- package/dist/ui/modals/index.d.ts.map +1 -0
- package/dist/ui/modals/index.js +10 -0
- package/dist/ui/modals/index.js.map +1 -0
- package/dist/ui/modals/prompts.d.ts +37 -0
- package/dist/ui/modals/prompts.d.ts.map +1 -0
- package/dist/ui/modals/prompts.js +124 -0
- package/dist/ui/modals/prompts.js.map +1 -0
- package/dist/ui/modals/selectors.d.ts +33 -0
- package/dist/ui/modals/selectors.d.ts.map +1 -0
- package/dist/ui/modals/selectors.js +111 -0
- package/dist/ui/modals/selectors.js.map +1 -0
- package/dist/ui/modals/setup.d.ts +17 -0
- package/dist/ui/modals/setup.d.ts.map +1 -0
- package/dist/ui/modals/setup.js +51 -0
- package/dist/ui/modals/setup.js.map +1 -0
- package/dist/ui/regions/input-region.d.ts +40 -0
- package/dist/ui/regions/input-region.d.ts.map +1 -0
- package/dist/ui/regions/input-region.js +116 -0
- package/dist/ui/regions/input-region.js.map +1 -0
- package/dist/ui/regions/modal-host.d.ts +41 -0
- package/dist/ui/regions/modal-host.d.ts.map +1 -0
- package/dist/ui/regions/modal-host.js +51 -0
- package/dist/ui/regions/modal-host.js.map +1 -0
- package/dist/ui/regions/render-probe.d.ts +22 -0
- package/dist/ui/regions/render-probe.d.ts.map +1 -0
- package/dist/ui/regions/render-probe.js +45 -0
- package/dist/ui/regions/render-probe.js.map +1 -0
- package/dist/ui/regions/static-scrollback.d.ts +39 -0
- package/dist/ui/regions/static-scrollback.d.ts.map +1 -0
- package/dist/ui/regions/static-scrollback.js +68 -0
- package/dist/ui/regions/static-scrollback.js.map +1 -0
- package/dist/ui/regions/status-region.d.ts +24 -0
- package/dist/ui/regions/status-region.d.ts.map +1 -0
- package/dist/ui/regions/status-region.js +17 -0
- package/dist/ui/regions/status-region.js.map +1 -0
- package/dist/ui/regions/transcript-region.d.ts +41 -0
- package/dist/ui/regions/transcript-region.d.ts.map +1 -0
- package/dist/ui/regions/transcript-region.js +52 -0
- package/dist/ui/regions/transcript-region.js.map +1 -0
- package/dist/ui/self-restart.d.ts +9 -0
- package/dist/ui/self-restart.d.ts.map +1 -0
- package/dist/ui/self-restart.js +24 -0
- package/dist/ui/self-restart.js.map +1 -0
- package/dist/ui/state/use-chat-controller.d.ts +23 -0
- package/dist/ui/state/use-chat-controller.d.ts.map +1 -0
- package/dist/ui/state/use-chat-controller.js +643 -0
- package/dist/ui/state/use-chat-controller.js.map +1 -0
- package/dist/ui/state/use-loop-state.d.ts +23 -0
- package/dist/ui/state/use-loop-state.d.ts.map +1 -0
- package/dist/ui/state/use-loop-state.js +39 -0
- package/dist/ui/state/use-loop-state.js.map +1 -0
- package/dist/ui/state/use-modal-state.d.ts +52 -0
- package/dist/ui/state/use-modal-state.d.ts.map +1 -0
- package/dist/ui/state/use-modal-state.js +44 -0
- package/dist/ui/state/use-modal-state.js.map +1 -0
- package/dist/ui/state/use-model-state.d.ts +29 -0
- package/dist/ui/state/use-model-state.d.ts.map +1 -0
- package/dist/ui/state/use-model-state.js +47 -0
- package/dist/ui/state/use-model-state.js.map +1 -0
- package/dist/ui/state/use-processing-state.d.ts +24 -0
- package/dist/ui/state/use-processing-state.d.ts.map +1 -0
- package/dist/ui/state/use-processing-state.js +46 -0
- package/dist/ui/state/use-processing-state.js.map +1 -0
- package/dist/ui/state/use-queue-state.d.ts +19 -0
- package/dist/ui/state/use-queue-state.d.ts.map +1 -0
- package/dist/ui/state/use-queue-state.js +30 -0
- package/dist/ui/state/use-queue-state.js.map +1 -0
- package/dist/ui/state/use-session-init.d.ts +22 -0
- package/dist/ui/state/use-session-init.d.ts.map +1 -0
- package/dist/ui/state/use-session-init.js +77 -0
- package/dist/ui/state/use-session-init.js.map +1 -0
- package/dist/ui/state/use-session-stats.d.ts +16 -0
- package/dist/ui/state/use-session-stats.d.ts.map +1 -0
- package/dist/ui/state/use-session-stats.js +18 -0
- package/dist/ui/state/use-session-stats.js.map +1 -0
- package/dist/ui/state/use-terminal-width.d.ts +8 -0
- package/dist/ui/state/use-terminal-width.d.ts.map +1 -0
- package/dist/ui/state/use-terminal-width.js +22 -0
- package/dist/ui/state/use-terminal-width.js.map +1 -0
- package/dist/ui/state/use-transcript-state.d.ts +21 -0
- package/dist/ui/state/use-transcript-state.d.ts.map +1 -0
- package/dist/ui/state/use-transcript-state.js +49 -0
- package/dist/ui/state/use-transcript-state.js.map +1 -0
- package/dist/ui/status-bar.d.ts.map +1 -1
- package/dist/ui/status-bar.js +2 -3
- package/dist/ui/status-bar.js.map +1 -1
- package/dist/version-check.d.ts.map +1 -1
- package/dist/version-check.js +10 -0
- package/dist/version-check.js.map +1 -1
- package/package.json +10 -3
- package/dist/agents/agent-config-loader.d.ts +0 -60
- package/dist/agents/agent-config-loader.d.ts.map +0 -1
- package/dist/agents/agent-config-loader.js +0 -402
- package/dist/agents/agent-config-loader.js.map +0 -1
- package/dist/agents/agent-config-presets.d.ts +0 -10
- package/dist/agents/agent-config-presets.d.ts.map +0 -1
- package/dist/agents/agent-config-presets.js +0 -940
- package/dist/agents/agent-config-presets.js.map +0 -1
- package/dist/agents/agent-config-types.d.ts +0 -145
- package/dist/agents/agent-config-types.d.ts.map +0 -1
- package/dist/agents/agent-config-types.js +0 -12
- package/dist/agents/agent-config-types.js.map +0 -1
- package/dist/agents/agent-detection.d.ts +0 -35
- package/dist/agents/agent-detection.d.ts.map +0 -1
- package/dist/agents/agent-detection.js +0 -110
- package/dist/agents/agent-detection.js.map +0 -1
- package/dist/agents/aggregator.d.ts +0 -19
- package/dist/agents/aggregator.d.ts.map +0 -1
- package/dist/agents/aggregator.js +0 -141
- package/dist/agents/aggregator.js.map +0 -1
- package/dist/agents/cli-backend.d.ts +0 -32
- package/dist/agents/cli-backend.d.ts.map +0 -1
- package/dist/agents/cli-backend.js +0 -271
- package/dist/agents/cli-backend.js.map +0 -1
- package/dist/agents/council-types.d.ts +0 -115
- package/dist/agents/council-types.d.ts.map +0 -1
- package/dist/agents/council-types.js +0 -81
- package/dist/agents/council-types.js.map +0 -1
- package/dist/agents/council.d.ts +0 -112
- package/dist/agents/council.d.ts.map +0 -1
- package/dist/agents/council.js +0 -722
- package/dist/agents/council.js.map +0 -1
- package/dist/agents/decomposer.d.ts +0 -33
- package/dist/agents/decomposer.d.ts.map +0 -1
- package/dist/agents/decomposer.js +0 -138
- package/dist/agents/decomposer.js.map +0 -1
- package/dist/agents/dynamic-tools.d.ts +0 -52
- package/dist/agents/dynamic-tools.d.ts.map +0 -1
- package/dist/agents/dynamic-tools.js +0 -424
- package/dist/agents/dynamic-tools.js.map +0 -1
- package/dist/agents/index.d.ts +0 -29
- package/dist/agents/index.d.ts.map +0 -1
- package/dist/agents/index.js +0 -29
- package/dist/agents/index.js.map +0 -1
- package/dist/agents/installer.d.ts +0 -39
- package/dist/agents/installer.d.ts.map +0 -1
- package/dist/agents/installer.js +0 -205
- package/dist/agents/installer.js.map +0 -1
- package/dist/agents/orchestrator.d.ts +0 -106
- package/dist/agents/orchestrator.d.ts.map +0 -1
- package/dist/agents/orchestrator.js +0 -363
- package/dist/agents/orchestrator.js.map +0 -1
- package/dist/agents/sdk-backend.d.ts +0 -63
- package/dist/agents/sdk-backend.d.ts.map +0 -1
- package/dist/agents/sdk-backend.js +0 -489
- package/dist/agents/sdk-backend.js.map +0 -1
- package/dist/agents/swarm-types.d.ts +0 -84
- package/dist/agents/swarm-types.d.ts.map +0 -1
- package/dist/agents/swarm-types.js +0 -20
- package/dist/agents/swarm-types.js.map +0 -1
- package/dist/agents/swarm.d.ts +0 -79
- package/dist/agents/swarm.d.ts.map +0 -1
- package/dist/agents/swarm.js +0 -375
- package/dist/agents/swarm.js.map +0 -1
- package/dist/agents/tools.d.ts +0 -26
- package/dist/agents/tools.d.ts.map +0 -1
- package/dist/agents/tools.js +0 -776
- package/dist/agents/tools.js.map +0 -1
- package/dist/agents/types.d.ts +0 -108
- package/dist/agents/types.d.ts.map +0 -1
- package/dist/agents/types.js +0 -43
- package/dist/agents/types.js.map +0 -1
- package/dist/api-server.d.ts +0 -45
- package/dist/api-server.d.ts.map +0 -1
- package/dist/api-server.js +0 -326
- package/dist/api-server.js.map +0 -1
- package/dist/auto-checkpoint.d.ts +0 -35
- package/dist/auto-checkpoint.d.ts.map +0 -1
- package/dist/auto-checkpoint.js +0 -176
- package/dist/auto-checkpoint.js.map +0 -1
- package/dist/background-jobs.d.ts +0 -45
- package/dist/background-jobs.d.ts.map +0 -1
- package/dist/background-jobs.js +0 -127
- package/dist/background-jobs.js.map +0 -1
- package/dist/branching.d.ts +0 -56
- package/dist/branching.d.ts.map +0 -1
- package/dist/branching.js +0 -224
- package/dist/branching.js.map +0 -1
- package/dist/cli/agent.d.ts +0 -9
- package/dist/cli/agent.d.ts.map +0 -1
- package/dist/cli/agent.js +0 -330
- package/dist/cli/agent.js.map +0 -1
- package/dist/cli/commands.d.ts +0 -12
- package/dist/cli/commands.d.ts.map +0 -1
- package/dist/cli/commands.js +0 -1042
- package/dist/cli/commands.js.map +0 -1
- package/dist/cli/index.d.ts +0 -8
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -268
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/types.d.ts +0 -33
- package/dist/cli/types.d.ts.map +0 -1
- package/dist/cli/types.js +0 -21
- package/dist/cli/types.js.map +0 -1
- package/dist/companions.d.ts +0 -54
- package/dist/companions.d.ts.map +0 -1
- package/dist/companions.js +0 -440
- package/dist/companions.js.map +0 -1
- package/dist/file-watcher.d.ts +0 -91
- package/dist/file-watcher.d.ts.map +0 -1
- package/dist/file-watcher.js +0 -269
- package/dist/file-watcher.js.map +0 -1
- package/dist/hud/theme-packs/api.d.ts +0 -51
- package/dist/hud/theme-packs/api.d.ts.map +0 -1
- package/dist/hud/theme-packs/api.js +0 -145
- package/dist/hud/theme-packs/api.js.map +0 -1
- package/dist/hud/theme-packs/index.d.ts +0 -18
- package/dist/hud/theme-packs/index.d.ts.map +0 -1
- package/dist/hud/theme-packs/index.js +0 -38
- package/dist/hud/theme-packs/index.js.map +0 -1
- package/dist/hud/theme-packs/types.d.ts +0 -29
- package/dist/hud/theme-packs/types.d.ts.map +0 -1
- package/dist/hud/theme-packs/types.js +0 -9
- package/dist/hud/theme-packs/types.js.map +0 -1
- package/dist/idle-eviction.d.ts +0 -34
- package/dist/idle-eviction.d.ts.map +0 -1
- package/dist/idle-eviction.js +0 -85
- package/dist/idle-eviction.js.map +0 -1
- package/dist/model-router.d.ts +0 -67
- package/dist/model-router.d.ts.map +0 -1
- package/dist/model-router.js.map +0 -1
- package/dist/providers/openai-compat-shims.d.ts +0 -31
- package/dist/providers/openai-compat-shims.d.ts.map +0 -1
- package/dist/providers/openai-compat-shims.js +0 -179
- package/dist/providers/openai-compat-shims.js.map +0 -1
- package/dist/sandbox-native.d.ts.map +0 -1
- package/dist/sandbox-native.js.map +0 -1
- package/dist/sandbox.d.ts.map +0 -1
- package/dist/sandbox.js.map +0 -1
- package/dist/session-timeout.d.ts +0 -31
- package/dist/session-timeout.d.ts.map +0 -1
- package/dist/session-timeout.js +0 -100
- package/dist/session-timeout.js.map +0 -1
- package/dist/smart-router.d.ts +0 -73
- package/dist/smart-router.d.ts.map +0 -1
- package/dist/smart-router.js +0 -332
- package/dist/smart-router.js.map +0 -1
- package/dist/terminal-recording.d.ts +0 -55
- package/dist/terminal-recording.d.ts.map +0 -1
- package/dist/terminal-recording.js +0 -182
- package/dist/terminal-recording.js.map +0 -1
- package/dist/tmux.d.ts +0 -35
- package/dist/tmux.d.ts.map +0 -1
- package/dist/tmux.js +0 -106
- package/dist/tmux.js.map +0 -1
- package/dist/ui/modals.d.ts +0 -72
- package/dist/ui/modals.d.ts.map +0 -1
- package/dist/ui/modals.js +0 -266
- package/dist/ui/modals.js.map +0 -1
- package/dist/ui/pack-picker.d.ts +0 -12
- package/dist/ui/pack-picker.d.ts.map +0 -1
- package/dist/ui/pack-picker.js +0 -101
- package/dist/ui/pack-picker.js.map +0 -1
- package/dist/ui/theme-picker.d.ts +0 -24
- package/dist/ui/theme-picker.d.ts.map +0 -1
- package/dist/ui/theme-picker.js +0 -190
- package/dist/ui/theme-picker.js.map +0 -1
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calliope CLI - Local Model Excellence
|
|
3
|
+
*
|
|
4
|
+
* A single home for the behaviours that make Calliope a good harness for
|
|
5
|
+
* self-hosted 7-70B models (Ollama, or an OpenAI-compatible/LiteLLM server
|
|
6
|
+
* pointed at localhost / a private box running vLLM etc.). Cloud providers are
|
|
7
|
+
* untouched — every helper here is a no-op or "cloud" answer unless the active
|
|
8
|
+
* backend is detected as local.
|
|
9
|
+
*
|
|
10
|
+
* Responsibilities:
|
|
11
|
+
* - Detect whether a provider/baseUrl pair is a local backend.
|
|
12
|
+
* - Simplify tool JSON-schemas before they are sent to a local model (lossless
|
|
13
|
+
* for execution — tools.ts still validates the real args).
|
|
14
|
+
* - Compute and verify content anchor hashes for stale-view-protected edits.
|
|
15
|
+
* - Detect malformed tool calls and describe how to repair them.
|
|
16
|
+
* - Build the JSON-schema envelope used to grammar-constrain a repair reply.
|
|
17
|
+
* - Probe a local model's capabilities (context length, native tool calls,
|
|
18
|
+
* JSON-schema `format` support) and cache the result per session.
|
|
19
|
+
* - Pick the compact vs full system prompt for a provider.
|
|
20
|
+
*/
|
|
21
|
+
import type { LLMProvider, Tool, ToolCall } from './types.js';
|
|
22
|
+
/**
|
|
23
|
+
* True when a URL points at the local machine (loopback host, `*.local`, or the
|
|
24
|
+
* docker host bridge). Used to decide whether an openai-compat / LiteLLM server
|
|
25
|
+
* is a self-hosted backend rather than a hosted proxy.
|
|
26
|
+
*/
|
|
27
|
+
export declare function isLoopbackUrl(url: string | undefined): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Whether the active backend is a locally-hosted model.
|
|
30
|
+
*
|
|
31
|
+
* - `ollama` is always local.
|
|
32
|
+
* - `openai-compat` / `litellm` are local when their base URL is loopback
|
|
33
|
+
* (LM Studio, vLLM, llama.cpp, a local LiteLLM proxy, ...).
|
|
34
|
+
* - Everything else (Anthropic, OpenAI, Bedrock, hosted OpenAI-compat, and the
|
|
35
|
+
* `auto` sentinel) is treated as cloud.
|
|
36
|
+
*
|
|
37
|
+
* `baseUrl` defaults to the configured base URL for the provider.
|
|
38
|
+
*/
|
|
39
|
+
export declare function isLocalBackend(provider: LLMProvider, baseUrl?: string): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* The `anchor_hash` property injected into `edit_file`'s SIMPLIFIED schema only
|
|
42
|
+
* (feature 4). tools.ts accepts it from any caller, but it is only advertised to
|
|
43
|
+
* local models — cloud schemas stay inert.
|
|
44
|
+
*/
|
|
45
|
+
export declare const ANCHOR_HASH_PROPERTY: {
|
|
46
|
+
readonly type: "string";
|
|
47
|
+
readonly description: "Optional 8-char hash from the last read_file of this file (stale-edit guard); echo it to confirm your view is current.";
|
|
48
|
+
};
|
|
49
|
+
/** The property key models echo back on an anchored edit. */
|
|
50
|
+
export declare const ANCHOR_HASH_KEY = "anchor_hash";
|
|
51
|
+
/**
|
|
52
|
+
* Reduce a verbose description to its first sentence, single-line and capped.
|
|
53
|
+
* Multi-paragraph tool descriptions (e.g. `configure`) collapse to their lede.
|
|
54
|
+
*/
|
|
55
|
+
export declare function firstSentence(text: string | undefined, cap: number): string;
|
|
56
|
+
/**
|
|
57
|
+
* Simplify a tool schema for a local model: first-sentence descriptions, capped
|
|
58
|
+
* enum listings, and (for `edit_file`) the optional `anchor_hash` param.
|
|
59
|
+
*
|
|
60
|
+
* LOSSLESS FOR EXECUTION: the returned schema only changes what the model is
|
|
61
|
+
* shown. tools.ts validates the real arguments independently, so trimming a
|
|
62
|
+
* description or truncating an enum listing cannot break a valid call.
|
|
63
|
+
*
|
|
64
|
+
* Calliope's tool schemas are already flat (no nested object properties), so the
|
|
65
|
+
* "flatten nested objects" goal is a structural no-op here; the real token win
|
|
66
|
+
* is in the descriptions and enums.
|
|
67
|
+
*/
|
|
68
|
+
export declare function simplifyToolForLocal(tool: Tool): Tool;
|
|
69
|
+
/** Simplify a whole tool set for a local backend. Empty in → empty out. */
|
|
70
|
+
export declare function simplifyToolsForLocal(tools: Tool[]): Tool[];
|
|
71
|
+
/** 8-char sha256 prefix of file content — the stable "view id" a model echoes. */
|
|
72
|
+
export declare function computeAnchorHash(content: string): string;
|
|
73
|
+
/** Footer appended to read_file output for local backends so the model can echo the hash. */
|
|
74
|
+
export declare function anchorHashFooter(hash: string): string;
|
|
75
|
+
/** Classic Levenshtein edit distance (iterative, two-row). */
|
|
76
|
+
export declare function levenshtein(a: string, b: string): number;
|
|
77
|
+
export interface MalformedToolCall {
|
|
78
|
+
/** Human-readable reason, embedded verbatim in the corrective message. */
|
|
79
|
+
reason: string;
|
|
80
|
+
/** Suggested correct tool name, when the fault is a close-miss name. */
|
|
81
|
+
suggestion?: string;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Detect whether a parsed tool call is malformed in a way worth one repair
|
|
85
|
+
* round-trip. Returns null for a well-formed call OR for an unknown tool with no
|
|
86
|
+
* close match (there is nothing to correct — let it surface naturally).
|
|
87
|
+
*
|
|
88
|
+
* - unknown tool name with a close Levenshtein match → suggest the neighbour
|
|
89
|
+
* - missing a required parameter (also how unparseable-args `{}` presents)
|
|
90
|
+
*/
|
|
91
|
+
export declare function detectMalformedToolCall(call: ToolCall, tools: Tool[]): MalformedToolCall | null;
|
|
92
|
+
/** The compact corrective message sent on a repair round-trip. */
|
|
93
|
+
export declare function buildRepairMessage(call: ToolCall, fault: MalformedToolCall): string;
|
|
94
|
+
/**
|
|
95
|
+
* JSON-schema envelope for a single tool call, used to grammar-constrain a
|
|
96
|
+
* repair reply via Ollama's `format` parameter. Constraining every response
|
|
97
|
+
* would break prose, so this is only ever applied on the repair round-trip.
|
|
98
|
+
*/
|
|
99
|
+
export declare function buildToolCallEnvelopeSchema(toolNames: string[]): Record<string, unknown>;
|
|
100
|
+
/**
|
|
101
|
+
* Extract a corrected tool call from a repair response. Accepts either a native
|
|
102
|
+
* tool call (Ollama returned `tool_calls`) or a grammar-constrained JSON
|
|
103
|
+
* envelope in the text content (`{"name":...,"arguments":{...}}`). Returns null
|
|
104
|
+
* when neither yields a usable call. `id` is preserved so the assistant/tool
|
|
105
|
+
* message threading stays intact.
|
|
106
|
+
*/
|
|
107
|
+
export declare function extractRepairedToolCall(content: string, nativeToolCalls: ToolCall[] | undefined, id: string): ToolCall | null;
|
|
108
|
+
export interface LocalModelProfile {
|
|
109
|
+
provider: LLMProvider;
|
|
110
|
+
model: string;
|
|
111
|
+
baseUrl?: string;
|
|
112
|
+
contextLength: number;
|
|
113
|
+
supportsNativeToolCalls: boolean;
|
|
114
|
+
supportsJsonSchemaFormat: boolean;
|
|
115
|
+
/** Raw Ollama capability list when available (e.g. ['completion','tools',...]). */
|
|
116
|
+
capabilities?: string[];
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Heuristic native-tool-call support by model family. Only consulted when the
|
|
120
|
+
* backend does not report capabilities directly (older Ollama, non-Ollama local
|
|
121
|
+
* servers). Errs toward the families known to emit reliable tool calls.
|
|
122
|
+
*/
|
|
123
|
+
export declare function familySupportsNativeTools(model: string): boolean;
|
|
124
|
+
/** Clear the per-session capability cache (tests only). */
|
|
125
|
+
export declare function clearLocalModelProfileCache(): void;
|
|
126
|
+
/**
|
|
127
|
+
* Resolve a local model's capability profile, caching per session.
|
|
128
|
+
*
|
|
129
|
+
* - contextLength: Ollama /api/show model_info, else the family default.
|
|
130
|
+
* - supportsNativeToolCalls: Ollama `capabilities` includes 'tools' when
|
|
131
|
+
* reported, else a family heuristic.
|
|
132
|
+
* - supportsJsonSchemaFormat: true only for native Ollama (the /api/chat
|
|
133
|
+
* `format` path); other local servers don't share that parameter.
|
|
134
|
+
*
|
|
135
|
+
* Never throws: a failed probe degrades to heuristics.
|
|
136
|
+
*/
|
|
137
|
+
export declare function getLocalModelProfile(provider: LLMProvider, model: string, baseUrl?: string): Promise<LocalModelProfile>;
|
|
138
|
+
/**
|
|
139
|
+
* Pick the system prompt for a provider: the compact variant for a local
|
|
140
|
+
* backend, the full prompt for cloud. The single seam every prompt-building call
|
|
141
|
+
* site routes through, so provider checks are not scattered.
|
|
142
|
+
*
|
|
143
|
+
* The `auto` sentinel resolves to the full prompt (auto only selects a local
|
|
144
|
+
* backend when no cloud provider is configured, an edge the request-time schema
|
|
145
|
+
* simplification and repair loop still cover).
|
|
146
|
+
*/
|
|
147
|
+
export declare function getSystemPromptForProvider(provider: LLMProvider, baseUrl?: string): string;
|
|
148
|
+
/** Rough token estimate for a raw string (~4 chars/token). */
|
|
149
|
+
export declare function estimateTokens(text: string): number;
|
|
150
|
+
//# sourceMappingURL=local-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-model.d.ts","sourceRoot":"","sources":["../src/local-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calliope CLI - Local Model Excellence
|
|
3
|
+
*
|
|
4
|
+
* A single home for the behaviours that make Calliope a good harness for
|
|
5
|
+
* self-hosted 7-70B models (Ollama, or an OpenAI-compatible/LiteLLM server
|
|
6
|
+
* pointed at localhost / a private box running vLLM etc.). Cloud providers are
|
|
7
|
+
* untouched — every helper here is a no-op or "cloud" answer unless the active
|
|
8
|
+
* backend is detected as local.
|
|
9
|
+
*
|
|
10
|
+
* Responsibilities:
|
|
11
|
+
* - Detect whether a provider/baseUrl pair is a local backend.
|
|
12
|
+
* - Simplify tool JSON-schemas before they are sent to a local model (lossless
|
|
13
|
+
* for execution — tools.ts still validates the real args).
|
|
14
|
+
* - Compute and verify content anchor hashes for stale-view-protected edits.
|
|
15
|
+
* - Detect malformed tool calls and describe how to repair them.
|
|
16
|
+
* - Build the JSON-schema envelope used to grammar-constrain a repair reply.
|
|
17
|
+
* - Probe a local model's capabilities (context length, native tool calls,
|
|
18
|
+
* JSON-schema `format` support) and cache the result per session.
|
|
19
|
+
* - Pick the compact vs full system prompt for a provider.
|
|
20
|
+
*/
|
|
21
|
+
import { createHash } from 'node:crypto';
|
|
22
|
+
import * as config from './config.js';
|
|
23
|
+
import { getSystemPrompt } from './types.js';
|
|
24
|
+
import { getModelContextLimit } from './model-detection.js';
|
|
25
|
+
// ============================================================================
|
|
26
|
+
// Backend detection
|
|
27
|
+
// ============================================================================
|
|
28
|
+
const LOOPBACK_HOSTS = new Set(['localhost', '127.0.0.1', '0.0.0.0', '::1', '[::1]', 'host.docker.internal']);
|
|
29
|
+
/**
|
|
30
|
+
* True when a URL points at the local machine (loopback host, `*.local`, or the
|
|
31
|
+
* docker host bridge). Used to decide whether an openai-compat / LiteLLM server
|
|
32
|
+
* is a self-hosted backend rather than a hosted proxy.
|
|
33
|
+
*/
|
|
34
|
+
export function isLoopbackUrl(url) {
|
|
35
|
+
if (!url)
|
|
36
|
+
return false;
|
|
37
|
+
let host;
|
|
38
|
+
try {
|
|
39
|
+
host = new URL(url).hostname.toLowerCase();
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// Not a parseable URL — fall back to a substring check on the raw value.
|
|
43
|
+
const lower = url.toLowerCase();
|
|
44
|
+
return [...LOOPBACK_HOSTS].some(h => lower.includes(h)) || lower.includes('.local');
|
|
45
|
+
}
|
|
46
|
+
if (LOOPBACK_HOSTS.has(host))
|
|
47
|
+
return true;
|
|
48
|
+
if (host.endsWith('.local'))
|
|
49
|
+
return true;
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Whether the active backend is a locally-hosted model.
|
|
54
|
+
*
|
|
55
|
+
* - `ollama` is always local.
|
|
56
|
+
* - `openai-compat` / `litellm` are local when their base URL is loopback
|
|
57
|
+
* (LM Studio, vLLM, llama.cpp, a local LiteLLM proxy, ...).
|
|
58
|
+
* - Everything else (Anthropic, OpenAI, Bedrock, hosted OpenAI-compat, and the
|
|
59
|
+
* `auto` sentinel) is treated as cloud.
|
|
60
|
+
*
|
|
61
|
+
* `baseUrl` defaults to the configured base URL for the provider.
|
|
62
|
+
*/
|
|
63
|
+
export function isLocalBackend(provider, baseUrl) {
|
|
64
|
+
if (provider === 'ollama')
|
|
65
|
+
return true;
|
|
66
|
+
if (provider === 'litellm' || provider === 'openai-compat') {
|
|
67
|
+
const url = baseUrl ?? config.getBaseUrl(provider);
|
|
68
|
+
return isLoopbackUrl(url);
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
// ============================================================================
|
|
73
|
+
// Schema simplification (feature 1)
|
|
74
|
+
// ============================================================================
|
|
75
|
+
/** Maximum enum values kept in a simplified schema (execution still accepts any). */
|
|
76
|
+
const ENUM_CAP = 12;
|
|
77
|
+
/** Maximum characters kept for a tool description in a simplified schema. */
|
|
78
|
+
const TOOL_DESC_CAP = 200;
|
|
79
|
+
/** Maximum characters kept for a property description in a simplified schema. */
|
|
80
|
+
const PROP_DESC_CAP = 80;
|
|
81
|
+
/**
|
|
82
|
+
* The `anchor_hash` property injected into `edit_file`'s SIMPLIFIED schema only
|
|
83
|
+
* (feature 4). tools.ts accepts it from any caller, but it is only advertised to
|
|
84
|
+
* local models — cloud schemas stay inert.
|
|
85
|
+
*/
|
|
86
|
+
export const ANCHOR_HASH_PROPERTY = {
|
|
87
|
+
type: 'string',
|
|
88
|
+
description: 'Optional 8-char hash from the last read_file of this file (stale-edit guard); echo it to confirm your view is current.',
|
|
89
|
+
};
|
|
90
|
+
/** The property key models echo back on an anchored edit. */
|
|
91
|
+
export const ANCHOR_HASH_KEY = 'anchor_hash';
|
|
92
|
+
/**
|
|
93
|
+
* Reduce a verbose description to its first sentence, single-line and capped.
|
|
94
|
+
* Multi-paragraph tool descriptions (e.g. `configure`) collapse to their lede.
|
|
95
|
+
*/
|
|
96
|
+
export function firstSentence(text, cap) {
|
|
97
|
+
if (!text)
|
|
98
|
+
return text ?? '';
|
|
99
|
+
let s = text.trim();
|
|
100
|
+
// Drop everything after the first newline — verbose schemas put reference
|
|
101
|
+
// material on subsequent lines.
|
|
102
|
+
const nl = s.search(/\r?\n/);
|
|
103
|
+
if (nl !== -1)
|
|
104
|
+
s = s.slice(0, nl).trim();
|
|
105
|
+
// Keep only the first sentence within that line.
|
|
106
|
+
const m = s.match(/^.*?[.!?](?=\s|$)/);
|
|
107
|
+
if (m)
|
|
108
|
+
s = m[0].trim();
|
|
109
|
+
if (s.length > cap)
|
|
110
|
+
s = s.slice(0, cap - 1).trimEnd() + '…';
|
|
111
|
+
return s;
|
|
112
|
+
}
|
|
113
|
+
function simplifyProperty(prop) {
|
|
114
|
+
const out = { type: prop.type };
|
|
115
|
+
if (prop.description)
|
|
116
|
+
out.description = firstSentence(prop.description, PROP_DESC_CAP);
|
|
117
|
+
if (prop.enum)
|
|
118
|
+
out.enum = prop.enum.length > ENUM_CAP ? prop.enum.slice(0, ENUM_CAP) : prop.enum;
|
|
119
|
+
if (prop.items)
|
|
120
|
+
out.items = prop.items;
|
|
121
|
+
return out;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Simplify a tool schema for a local model: first-sentence descriptions, capped
|
|
125
|
+
* enum listings, and (for `edit_file`) the optional `anchor_hash` param.
|
|
126
|
+
*
|
|
127
|
+
* LOSSLESS FOR EXECUTION: the returned schema only changes what the model is
|
|
128
|
+
* shown. tools.ts validates the real arguments independently, so trimming a
|
|
129
|
+
* description or truncating an enum listing cannot break a valid call.
|
|
130
|
+
*
|
|
131
|
+
* Calliope's tool schemas are already flat (no nested object properties), so the
|
|
132
|
+
* "flatten nested objects" goal is a structural no-op here; the real token win
|
|
133
|
+
* is in the descriptions and enums.
|
|
134
|
+
*/
|
|
135
|
+
export function simplifyToolForLocal(tool) {
|
|
136
|
+
const properties = {};
|
|
137
|
+
for (const [key, prop] of Object.entries(tool.parameters.properties)) {
|
|
138
|
+
properties[key] = simplifyProperty(prop);
|
|
139
|
+
}
|
|
140
|
+
// Advertise the stale-view guard to local models on edit_file only.
|
|
141
|
+
if (tool.name === 'edit_file') {
|
|
142
|
+
properties[ANCHOR_HASH_KEY] = { ...ANCHOR_HASH_PROPERTY };
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
name: tool.name,
|
|
146
|
+
description: firstSentence(tool.description, TOOL_DESC_CAP),
|
|
147
|
+
parameters: {
|
|
148
|
+
type: 'object',
|
|
149
|
+
properties: properties,
|
|
150
|
+
...(tool.parameters.required ? { required: tool.parameters.required } : {}),
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/** Simplify a whole tool set for a local backend. Empty in → empty out. */
|
|
155
|
+
export function simplifyToolsForLocal(tools) {
|
|
156
|
+
return tools.map(simplifyToolForLocal);
|
|
157
|
+
}
|
|
158
|
+
// ============================================================================
|
|
159
|
+
// Anchor hashes (feature 4)
|
|
160
|
+
// ============================================================================
|
|
161
|
+
/** 8-char sha256 prefix of file content — the stable "view id" a model echoes. */
|
|
162
|
+
export function computeAnchorHash(content) {
|
|
163
|
+
return createHash('sha256').update(content, 'utf8').digest('hex').slice(0, 8);
|
|
164
|
+
}
|
|
165
|
+
/** Footer appended to read_file output for local backends so the model can echo the hash. */
|
|
166
|
+
export function anchorHashFooter(hash) {
|
|
167
|
+
return `\n[anchor_hash: ${hash} — pass as anchor_hash to edit_file to confirm this view is current]`;
|
|
168
|
+
}
|
|
169
|
+
// ============================================================================
|
|
170
|
+
// Malformed tool-call detection + repair (features 2 & 3)
|
|
171
|
+
// ============================================================================
|
|
172
|
+
/** Classic Levenshtein edit distance (iterative, two-row). */
|
|
173
|
+
export function levenshtein(a, b) {
|
|
174
|
+
if (a === b)
|
|
175
|
+
return 0;
|
|
176
|
+
if (a.length === 0)
|
|
177
|
+
return b.length;
|
|
178
|
+
if (b.length === 0)
|
|
179
|
+
return a.length;
|
|
180
|
+
let prev = Array.from({ length: b.length + 1 }, (_, i) => i);
|
|
181
|
+
let curr = new Array(b.length + 1);
|
|
182
|
+
for (let i = 1; i <= a.length; i++) {
|
|
183
|
+
curr[0] = i;
|
|
184
|
+
for (let j = 1; j <= b.length; j++) {
|
|
185
|
+
const cost = a[i - 1] === b[j - 1] ? 0 : 1;
|
|
186
|
+
curr[j] = Math.min(prev[j] + 1, curr[j - 1] + 1, prev[j - 1] + cost);
|
|
187
|
+
}
|
|
188
|
+
[prev, curr] = [curr, prev];
|
|
189
|
+
}
|
|
190
|
+
return prev[b.length];
|
|
191
|
+
}
|
|
192
|
+
/** Max edit distance for an unknown tool name to count as a repairable typo. */
|
|
193
|
+
const NAME_MATCH_THRESHOLD = 2;
|
|
194
|
+
/**
|
|
195
|
+
* Detect whether a parsed tool call is malformed in a way worth one repair
|
|
196
|
+
* round-trip. Returns null for a well-formed call OR for an unknown tool with no
|
|
197
|
+
* close match (there is nothing to correct — let it surface naturally).
|
|
198
|
+
*
|
|
199
|
+
* - unknown tool name with a close Levenshtein match → suggest the neighbour
|
|
200
|
+
* - missing a required parameter (also how unparseable-args `{}` presents)
|
|
201
|
+
*/
|
|
202
|
+
export function detectMalformedToolCall(call, tools) {
|
|
203
|
+
const known = tools.find(t => t.name === call.name);
|
|
204
|
+
if (!known) {
|
|
205
|
+
let best;
|
|
206
|
+
let bestDist = Infinity;
|
|
207
|
+
for (const t of tools) {
|
|
208
|
+
const d = levenshtein(call.name.toLowerCase(), t.name.toLowerCase());
|
|
209
|
+
if (d < bestDist) {
|
|
210
|
+
bestDist = d;
|
|
211
|
+
best = t.name;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
if (best && bestDist <= NAME_MATCH_THRESHOLD && bestDist < best.length) {
|
|
215
|
+
return { reason: `unknown tool "${call.name}"; did you mean "${best}"?`, suggestion: best };
|
|
216
|
+
}
|
|
217
|
+
return null;
|
|
218
|
+
}
|
|
219
|
+
const args = (call.arguments ?? {});
|
|
220
|
+
for (const req of known.parameters.required ?? []) {
|
|
221
|
+
const value = args[req];
|
|
222
|
+
if (value === undefined || value === null) {
|
|
223
|
+
return { reason: `missing required parameter "${req}"` };
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
/** The compact corrective message sent on a repair round-trip. */
|
|
229
|
+
export function buildRepairMessage(call, fault) {
|
|
230
|
+
return `Your tool call to "${call.name}" was malformed: ${fault.reason}. Reply with ONLY the corrected tool call, nothing else.`;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* JSON-schema envelope for a single tool call, used to grammar-constrain a
|
|
234
|
+
* repair reply via Ollama's `format` parameter. Constraining every response
|
|
235
|
+
* would break prose, so this is only ever applied on the repair round-trip.
|
|
236
|
+
*/
|
|
237
|
+
export function buildToolCallEnvelopeSchema(toolNames) {
|
|
238
|
+
return {
|
|
239
|
+
type: 'object',
|
|
240
|
+
properties: {
|
|
241
|
+
name: toolNames.length > 0 ? { type: 'string', enum: toolNames } : { type: 'string' },
|
|
242
|
+
arguments: { type: 'object' },
|
|
243
|
+
},
|
|
244
|
+
required: ['name', 'arguments'],
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Extract a corrected tool call from a repair response. Accepts either a native
|
|
249
|
+
* tool call (Ollama returned `tool_calls`) or a grammar-constrained JSON
|
|
250
|
+
* envelope in the text content (`{"name":...,"arguments":{...}}`). Returns null
|
|
251
|
+
* when neither yields a usable call. `id` is preserved so the assistant/tool
|
|
252
|
+
* message threading stays intact.
|
|
253
|
+
*/
|
|
254
|
+
export function extractRepairedToolCall(content, nativeToolCalls, id) {
|
|
255
|
+
if (nativeToolCalls && nativeToolCalls.length > 0) {
|
|
256
|
+
const first = nativeToolCalls[0];
|
|
257
|
+
return { id, name: first.name, arguments: first.arguments ?? {} };
|
|
258
|
+
}
|
|
259
|
+
const text = content.trim();
|
|
260
|
+
if (!text)
|
|
261
|
+
return null;
|
|
262
|
+
// Pull the first balanced JSON object out of the reply (models often wrap it
|
|
263
|
+
// in prose or a code fence despite the "ONLY" instruction).
|
|
264
|
+
const start = text.indexOf('{');
|
|
265
|
+
if (start === -1)
|
|
266
|
+
return null;
|
|
267
|
+
let depth = 0;
|
|
268
|
+
let end = -1;
|
|
269
|
+
for (let i = start; i < text.length; i++) {
|
|
270
|
+
if (text[i] === '{')
|
|
271
|
+
depth++;
|
|
272
|
+
else if (text[i] === '}' && --depth === 0) {
|
|
273
|
+
end = i;
|
|
274
|
+
break;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
if (end === -1)
|
|
278
|
+
return null;
|
|
279
|
+
try {
|
|
280
|
+
const parsed = JSON.parse(text.slice(start, end + 1));
|
|
281
|
+
if (typeof parsed.name !== 'string' || !parsed.name)
|
|
282
|
+
return null;
|
|
283
|
+
const args = (parsed.arguments && typeof parsed.arguments === 'object')
|
|
284
|
+
? parsed.arguments
|
|
285
|
+
: {};
|
|
286
|
+
return { id, name: parsed.name, arguments: args };
|
|
287
|
+
}
|
|
288
|
+
catch {
|
|
289
|
+
return null;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Heuristic native-tool-call support by model family. Only consulted when the
|
|
294
|
+
* backend does not report capabilities directly (older Ollama, non-Ollama local
|
|
295
|
+
* servers). Errs toward the families known to emit reliable tool calls.
|
|
296
|
+
*/
|
|
297
|
+
export function familySupportsNativeTools(model) {
|
|
298
|
+
const m = model.toLowerCase();
|
|
299
|
+
const families = [
|
|
300
|
+
'llama3.1', 'llama-3.1', 'llama3.2', 'llama-3.2', 'llama3.3', 'llama-3.3', 'llama4', 'llama-4',
|
|
301
|
+
'qwen2.5', 'qwen3', 'mistral', 'mixtral', 'devstral', 'command-r',
|
|
302
|
+
'hermes', 'firefunction', 'functionary', 'gemma4', 'gpt-oss',
|
|
303
|
+
];
|
|
304
|
+
return families.some(f => m.includes(f));
|
|
305
|
+
}
|
|
306
|
+
function normalizeOllamaBase(url) {
|
|
307
|
+
let base = url || 'http://localhost:11434';
|
|
308
|
+
if (base.endsWith('/v1'))
|
|
309
|
+
base = base.slice(0, -3);
|
|
310
|
+
return base;
|
|
311
|
+
}
|
|
312
|
+
async function probeOllama(baseUrl, model) {
|
|
313
|
+
const response = await fetch(`${baseUrl}/api/show`, {
|
|
314
|
+
method: 'POST',
|
|
315
|
+
headers: { 'Content-Type': 'application/json' },
|
|
316
|
+
body: JSON.stringify({ name: model }),
|
|
317
|
+
});
|
|
318
|
+
if (!response.ok)
|
|
319
|
+
throw new Error(`Ollama /api/show returned ${response.status}`);
|
|
320
|
+
const data = await response.json();
|
|
321
|
+
let contextLength;
|
|
322
|
+
if (data.model_info) {
|
|
323
|
+
const ctxKey = Object.keys(data.model_info).find(k => k.includes('context_length') || k.includes('context_window'));
|
|
324
|
+
if (ctxKey && typeof data.model_info[ctxKey] === 'number') {
|
|
325
|
+
contextLength = data.model_info[ctxKey];
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
if (data.parameters) {
|
|
329
|
+
const numCtx = data.parameters.match(/num_ctx\s+(\d+)/);
|
|
330
|
+
if (numCtx)
|
|
331
|
+
contextLength = parseInt(numCtx[1], 10);
|
|
332
|
+
}
|
|
333
|
+
return { capabilities: data.capabilities, contextLength };
|
|
334
|
+
}
|
|
335
|
+
// Per-session cache: a CLI process is one session, so a module-level map is the
|
|
336
|
+
// right lifetime. Keyed by provider|model|baseUrl.
|
|
337
|
+
const profileCache = new Map();
|
|
338
|
+
/** Clear the per-session capability cache (tests only). */
|
|
339
|
+
export function clearLocalModelProfileCache() {
|
|
340
|
+
profileCache.clear();
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Resolve a local model's capability profile, caching per session.
|
|
344
|
+
*
|
|
345
|
+
* - contextLength: Ollama /api/show model_info, else the family default.
|
|
346
|
+
* - supportsNativeToolCalls: Ollama `capabilities` includes 'tools' when
|
|
347
|
+
* reported, else a family heuristic.
|
|
348
|
+
* - supportsJsonSchemaFormat: true only for native Ollama (the /api/chat
|
|
349
|
+
* `format` path); other local servers don't share that parameter.
|
|
350
|
+
*
|
|
351
|
+
* Never throws: a failed probe degrades to heuristics.
|
|
352
|
+
*/
|
|
353
|
+
export async function getLocalModelProfile(provider, model, baseUrl) {
|
|
354
|
+
const url = baseUrl ?? config.getBaseUrl(provider);
|
|
355
|
+
const key = `${provider}|${model}|${url ?? ''}`;
|
|
356
|
+
const cached = profileCache.get(key);
|
|
357
|
+
if (cached)
|
|
358
|
+
return cached;
|
|
359
|
+
let capabilities;
|
|
360
|
+
let contextLength = getModelContextLimit(provider, model);
|
|
361
|
+
let supportsNativeToolCalls = familySupportsNativeTools(model);
|
|
362
|
+
const supportsJsonSchemaFormat = provider === 'ollama';
|
|
363
|
+
if (provider === 'ollama') {
|
|
364
|
+
try {
|
|
365
|
+
const probe = await probeOllama(normalizeOllamaBase(url), model);
|
|
366
|
+
if (probe.capabilities) {
|
|
367
|
+
capabilities = probe.capabilities;
|
|
368
|
+
supportsNativeToolCalls = probe.capabilities.includes('tools');
|
|
369
|
+
}
|
|
370
|
+
if (probe.contextLength && probe.contextLength > 0)
|
|
371
|
+
contextLength = probe.contextLength;
|
|
372
|
+
}
|
|
373
|
+
catch {
|
|
374
|
+
// Keep heuristic values.
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
const profile = {
|
|
378
|
+
provider,
|
|
379
|
+
model,
|
|
380
|
+
baseUrl: url,
|
|
381
|
+
contextLength,
|
|
382
|
+
supportsNativeToolCalls,
|
|
383
|
+
supportsJsonSchemaFormat,
|
|
384
|
+
capabilities,
|
|
385
|
+
};
|
|
386
|
+
profileCache.set(key, profile);
|
|
387
|
+
return profile;
|
|
388
|
+
}
|
|
389
|
+
// ============================================================================
|
|
390
|
+
// System prompt selection (feature 5)
|
|
391
|
+
// ============================================================================
|
|
392
|
+
/**
|
|
393
|
+
* Pick the system prompt for a provider: the compact variant for a local
|
|
394
|
+
* backend, the full prompt for cloud. The single seam every prompt-building call
|
|
395
|
+
* site routes through, so provider checks are not scattered.
|
|
396
|
+
*
|
|
397
|
+
* The `auto` sentinel resolves to the full prompt (auto only selects a local
|
|
398
|
+
* backend when no cloud provider is configured, an edge the request-time schema
|
|
399
|
+
* simplification and repair loop still cover).
|
|
400
|
+
*/
|
|
401
|
+
export function getSystemPromptForProvider(provider, baseUrl) {
|
|
402
|
+
return getSystemPrompt({ compact: isLocalBackend(provider, baseUrl) });
|
|
403
|
+
}
|
|
404
|
+
/** Rough token estimate for a raw string (~4 chars/token). */
|
|
405
|
+
export function estimateTokens(text) {
|
|
406
|
+
return Math.ceil(text.length / 4);
|
|
407
|
+
}
|
|
408
|
+
//# sourceMappingURL=local-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-model.js","sourceRoot":"","sources":["../src/local-model.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAcvC,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,MAAM,EAAE,WAAW,GAAG,cAAc,GAAG,OAAO,CAAC;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;YACzB,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;SACjB,CAAC,CAAC;QACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;CACJ;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;QAAC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;KAAE,CAAC,CAAC;IACpF,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAkBD;;GAEG;AACH,wBAAgB,WAAW,IAAI,SAAS,EAAE,CAWzC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAGtD;
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.js
CHANGED
|
@@ -106,7 +106,9 @@ function isBlockedAddress(ip) {
|
|
|
106
106
|
const type = net.isIP(ip);
|
|
107
107
|
if (type === 4) {
|
|
108
108
|
const parts = ip.split('.').map((n) => parseInt(n, 10));
|
|
109
|
-
|
|
109
|
+
// net.isIP(ip) === 4 guarantees exactly four numeric octets.
|
|
110
|
+
const a = parts[0];
|
|
111
|
+
const b = parts[1];
|
|
110
112
|
// Loopback (127/8) is allowed by default — see assertUrlAllowed.
|
|
111
113
|
if (a === 10)
|
|
112
114
|
return true; // private 10.0.0.0/8
|
|
@@ -373,7 +375,8 @@ export async function executeMCPTool(toolName, args) {
|
|
|
373
375
|
if (!match) {
|
|
374
376
|
return `Error: Invalid MCP tool name: ${toolName}`;
|
|
375
377
|
}
|
|
376
|
-
const
|
|
378
|
+
const serverId = match[1];
|
|
379
|
+
const mcpToolName = match[2];
|
|
377
380
|
const servers = loadServers();
|
|
378
381
|
const server = servers.find(s => s.id.endsWith(serverId));
|
|
379
382
|
if (!server) {
|