cloving 0.3.19 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{LICENSE.md → LICENSE} +1 -1
- package/README.md +475 -182
- package/dist/src/authority/budgets.d.ts +12 -0
- package/dist/src/authority/budgets.js +42 -0
- package/dist/src/authority/commands.d.ts +7 -0
- package/dist/src/authority/commands.js +263 -0
- package/dist/src/authority/details.d.ts +28 -0
- package/dist/src/authority/details.js +33 -0
- package/dist/src/authority/dispatch-decision.d.ts +40 -0
- package/dist/src/authority/dispatch-decision.js +47 -0
- package/dist/src/authority/effect-requests.d.ts +2 -0
- package/dist/src/authority/effect-requests.js +139 -0
- package/dist/src/authority/effect-results.d.ts +4 -0
- package/dist/src/authority/effect-results.js +236 -0
- package/dist/src/authority/events.d.ts +2 -0
- package/dist/src/authority/events.js +45 -0
- package/dist/src/authority/gate-reduction.d.ts +8 -0
- package/dist/src/authority/gate-reduction.js +109 -0
- package/dist/src/authority/gates.d.ts +48 -0
- package/dist/src/authority/gates.js +77 -0
- package/dist/src/authority/history-state.d.ts +15 -0
- package/dist/src/authority/history-state.js +61 -0
- package/dist/src/authority/history.d.ts +13 -0
- package/dist/src/authority/history.js +37 -0
- package/dist/src/authority/instants.d.ts +3 -0
- package/dist/src/authority/instants.js +38 -0
- package/dist/src/authority/leases.d.ts +15 -0
- package/dist/src/authority/leases.js +113 -0
- package/dist/src/authority/operations.d.ts +101 -0
- package/dist/src/authority/operations.js +75 -0
- package/dist/src/authority/reconciliation.d.ts +27 -0
- package/dist/src/authority/reconciliation.js +147 -0
- package/dist/src/authority/reducer.d.ts +41 -0
- package/dist/src/authority/reducer.js +139 -0
- package/dist/src/authority/reduction-state.d.ts +36 -0
- package/dist/src/authority/reduction-state.js +68 -0
- package/dist/src/authority/reduction.d.ts +6 -0
- package/dist/src/authority/reduction.js +160 -0
- package/dist/src/authority/status-closure.d.ts +4 -0
- package/dist/src/authority/status-closure.js +57 -0
- package/dist/src/authority/status-effects.d.ts +17 -0
- package/dist/src/authority/status-effects.js +43 -0
- package/dist/src/authority/status-input.d.ts +45 -0
- package/dist/src/authority/status-input.js +9 -0
- package/dist/src/authority/status.d.ts +32 -0
- package/dist/src/authority/status.js +256 -0
- package/dist/src/authority/stop-sequence.d.ts +37 -0
- package/dist/src/authority/stop-sequence.js +91 -0
- package/dist/src/authority/transitions.d.ts +63 -0
- package/dist/src/authority/transitions.js +122 -0
- package/dist/src/broker/actor/adapter-calls.d.ts +13 -0
- package/dist/src/broker/actor/adapter-calls.js +34 -0
- package/dist/src/broker/actor/adapter-outcomes.d.ts +28 -0
- package/dist/src/broker/actor/adapter-outcomes.js +80 -0
- package/dist/src/broker/actor/authority-actor.d.ts +25 -0
- package/dist/src/broker/actor/authority-actor.js +169 -0
- package/dist/src/broker/actor/authority-changes.d.ts +31 -0
- package/dist/src/broker/actor/authority-changes.js +46 -0
- package/dist/src/broker/actor/authority-connection.d.ts +15 -0
- package/dist/src/broker/actor/authority-connection.js +44 -0
- package/dist/src/broker/actor/authority-conversion.d.ts +10 -0
- package/dist/src/broker/actor/authority-conversion.js +72 -0
- package/dist/src/broker/actor/authority-delivery.d.ts +13 -0
- package/dist/src/broker/actor/authority-delivery.js +162 -0
- package/dist/src/broker/actor/authority-logger.d.ts +2 -0
- package/dist/src/broker/actor/authority-logger.js +19 -0
- package/dist/src/broker/actor/authority-policy.d.ts +9 -0
- package/dist/src/broker/actor/authority-policy.js +11 -0
- package/dist/src/broker/actor/authority-queries.d.ts +45 -0
- package/dist/src/broker/actor/authority-queries.js +85 -0
- package/dist/src/broker/actor/authority-receipts.d.ts +28 -0
- package/dist/src/broker/actor/authority-receipts.js +84 -0
- package/dist/src/broker/actor/authority-release.d.ts +13 -0
- package/dist/src/broker/actor/authority-release.js +69 -0
- package/dist/src/broker/actor/authority-runtime.d.ts +60 -0
- package/dist/src/broker/actor/authority-runtime.js +204 -0
- package/dist/src/broker/actor/authority-session.d.ts +65 -0
- package/dist/src/broker/actor/authority-session.js +252 -0
- package/dist/src/broker/actor/authority-settings.d.ts +33 -0
- package/dist/src/broker/actor/authority-settings.js +63 -0
- package/dist/src/broker/actor/authority-upgrades.d.ts +16 -0
- package/dist/src/broker/actor/authority-upgrades.js +12 -0
- package/dist/src/broker/actor/authority-watchdog.d.ts +14 -0
- package/dist/src/broker/actor/authority-watchdog.js +41 -0
- package/dist/src/broker/actor/authority.d.ts +14 -0
- package/dist/src/broker/actor/authority.js +115 -0
- package/dist/src/broker/actor/delivery-intents.d.ts +68 -0
- package/dist/src/broker/actor/delivery-intents.js +77 -0
- package/dist/src/broker/actor/delivery-plan.d.ts +2 -0
- package/dist/src/broker/actor/delivery-plan.js +109 -0
- package/dist/src/broker/actor/delivery-results.d.ts +11 -0
- package/dist/src/broker/actor/delivery-results.js +63 -0
- package/dist/src/broker/actor/effect-delivery.d.ts +19 -0
- package/dist/src/broker/actor/effect-delivery.js +118 -0
- package/dist/src/broker/actor/effect-plan.d.ts +41 -0
- package/dist/src/broker/actor/effect-plan.js +173 -0
- package/dist/src/broker/actor/effect-queries.d.ts +27 -0
- package/dist/src/broker/actor/effect-queries.js +80 -0
- package/dist/src/broker/actor/effect-turn.d.ts +25 -0
- package/dist/src/broker/actor/effect-turn.js +84 -0
- package/dist/src/broker/actor/pin-check.d.ts +6 -0
- package/dist/src/broker/actor/pin-check.js +12 -0
- package/dist/src/broker/actor/runtime-parts.d.ts +23 -0
- package/dist/src/broker/actor/runtime-parts.js +34 -0
- package/dist/src/broker/actor/stop-plan.d.ts +20 -0
- package/dist/src/broker/actor/stop-plan.js +46 -0
- package/dist/src/broker/actor/stop-turn.d.ts +17 -0
- package/dist/src/broker/actor/stop-turn.js +42 -0
- package/dist/src/broker/actor/turn-draft.d.ts +31 -0
- package/dist/src/broker/actor/turn-draft.js +138 -0
- package/dist/src/broker/actor/turn-plan.d.ts +17 -0
- package/dist/src/broker/actor/turn-plan.js +136 -0
- package/dist/src/broker/actor/turn-refusals.d.ts +8 -0
- package/dist/src/broker/actor/turn-refusals.js +35 -0
- package/dist/src/broker/actor/turn-staging.d.ts +78 -0
- package/dist/src/broker/actor/turn-staging.js +34 -0
- package/dist/src/broker/actor/turn-state.d.ts +34 -0
- package/dist/src/broker/actor/turn-state.js +208 -0
- package/dist/src/broker/authority-admission.d.ts +21 -0
- package/dist/src/broker/authority-admission.js +70 -0
- package/dist/src/broker/authority-restore.d.ts +30 -0
- package/dist/src/broker/authority-restore.js +165 -0
- package/dist/src/broker/decision-restore.d.ts +16 -0
- package/dist/src/broker/decision-restore.js +158 -0
- package/dist/src/broker/decision-upgrade.d.ts +3 -0
- package/dist/src/broker/decision-upgrade.js +12 -0
- package/dist/src/broker/effect-restore.d.ts +20 -0
- package/dist/src/broker/effect-restore.js +111 -0
- package/dist/src/broker/effect-upgrade.d.ts +3 -0
- package/dist/src/broker/effect-upgrade.js +9 -0
- package/dist/src/broker/operation-digest.d.ts +1 -0
- package/dist/src/broker/operation-digest.js +4 -0
- package/dist/src/broker/socket-address.d.ts +9 -0
- package/dist/src/broker/socket-address.js +14 -0
- package/dist/src/broker/workflow-pin.d.ts +2 -0
- package/dist/src/broker/workflow-pin.js +5 -0
- package/dist/src/chats/destination.d.ts +4 -0
- package/dist/src/chats/destination.js +94 -0
- package/dist/src/chats/import.d.ts +13 -0
- package/dist/src/chats/import.js +71 -0
- package/dist/src/chats/normalize.d.ts +20 -0
- package/dist/src/chats/normalize.js +139 -0
- package/dist/src/chats/reader.d.ts +15 -0
- package/dist/src/chats/reader.js +87 -0
- package/dist/src/cli/arguments.d.ts +23 -0
- package/dist/src/cli/arguments.js +154 -0
- package/dist/src/cli/client.d.ts +15 -0
- package/dist/src/cli/client.js +122 -0
- package/dist/src/cli/commands.d.ts +14 -0
- package/dist/src/cli/commands.js +253 -0
- package/dist/src/cli/main.d.ts +1 -0
- package/dist/src/cli/main.js +80 -0
- package/dist/src/cli/render.d.ts +8 -0
- package/dist/src/cli/render.js +186 -0
- package/dist/src/cli/runtime-arguments.d.ts +73 -0
- package/dist/src/cli/runtime-arguments.js +248 -0
- package/dist/src/cli/runtime-directory.d.ts +4 -0
- package/dist/src/cli/runtime-directory.js +25 -0
- package/dist/src/cli/toolchain.d.ts +3 -0
- package/dist/src/cli/toolchain.js +74 -0
- package/dist/src/cli/usage.d.ts +4 -0
- package/dist/src/cli/usage.js +124 -0
- package/dist/src/cli/validate.d.ts +38 -0
- package/dist/src/cli/validate.js +116 -0
- package/dist/src/cli/watch-board-view.d.ts +22 -0
- package/dist/src/cli/watch-board-view.js +128 -0
- package/dist/src/cli/watch-board.d.ts +15 -0
- package/dist/src/cli/watch-board.js +174 -0
- package/dist/src/cli/watch-element.d.ts +11 -0
- package/dist/src/cli/watch-element.js +6 -0
- package/dist/src/cli/watch-model.d.ts +29 -0
- package/dist/src/cli/watch-model.js +261 -0
- package/dist/src/cli/watch-navigation.d.ts +9 -0
- package/dist/src/cli/watch-navigation.js +40 -0
- package/dist/src/cli/watch-page.d.ts +1 -0
- package/dist/src/cli/watch-page.js +272 -0
- package/dist/src/cli/watch-paths.d.ts +2 -0
- package/dist/src/cli/watch-paths.js +52 -0
- package/dist/src/cli/watch-phases.d.ts +7 -0
- package/dist/src/cli/watch-phases.js +148 -0
- package/dist/src/cli/watch-reads.d.ts +28 -0
- package/dist/src/cli/watch-reads.js +244 -0
- package/dist/src/cli/watch-render.d.ts +139 -0
- package/dist/src/cli/watch-render.js +95 -0
- package/dist/src/cli/watch-server.d.ts +10 -0
- package/dist/src/cli/watch-server.js +176 -0
- package/dist/src/cli/watch-stream.d.ts +11 -0
- package/dist/src/cli/watch-stream.js +128 -0
- package/dist/src/cli/watch-turn.d.ts +29 -0
- package/dist/src/cli/watch-turn.js +130 -0
- package/dist/src/cli/watch-view.d.ts +39 -0
- package/dist/src/cli/watch-view.js +223 -0
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.js +62 -0
- package/dist/src/daemon/claude-turn.d.ts +28 -0
- package/dist/src/daemon/claude-turn.js +135 -0
- package/dist/src/daemon/claude-worker.d.ts +26 -0
- package/dist/src/daemon/claude-worker.js +224 -0
- package/dist/src/daemon/codex-stream.d.ts +4 -0
- package/dist/src/daemon/codex-stream.js +113 -0
- package/dist/src/daemon/daemon.d.ts +46 -0
- package/dist/src/daemon/daemon.js +186 -0
- package/dist/src/daemon/delivery-router.d.ts +10 -0
- package/dist/src/daemon/delivery-router.js +34 -0
- package/dist/src/daemon/github-calls.d.ts +29 -0
- package/dist/src/daemon/github-calls.js +127 -0
- package/dist/src/daemon/github-issue-methods.d.ts +3 -0
- package/dist/src/daemon/github-issue-methods.js +99 -0
- package/dist/src/daemon/github-issue-privacy.d.ts +6 -0
- package/dist/src/daemon/github-issue-privacy.js +131 -0
- package/dist/src/daemon/github-merge.d.ts +18 -0
- package/dist/src/daemon/github-merge.js +259 -0
- package/dist/src/daemon/github-methods.d.ts +5 -0
- package/dist/src/daemon/github-methods.js +198 -0
- package/dist/src/daemon/github-operation.d.ts +38 -0
- package/dist/src/daemon/github-operation.js +57 -0
- package/dist/src/daemon/github-worker.d.ts +17 -0
- package/dist/src/daemon/github-worker.js +281 -0
- package/dist/src/daemon/host-environment.d.ts +8 -0
- package/dist/src/daemon/host-environment.js +14 -0
- package/dist/src/daemon/issue-queue.d.ts +9 -0
- package/dist/src/daemon/issue-queue.js +163 -0
- package/dist/src/daemon/notify-message.d.ts +14 -0
- package/dist/src/daemon/notify-message.js +48 -0
- package/dist/src/daemon/notify.d.ts +12 -0
- package/dist/src/daemon/notify.js +161 -0
- package/dist/src/daemon/operation-journal.d.ts +42 -0
- package/dist/src/daemon/operation-journal.js +53 -0
- package/dist/src/daemon/ticket-registration.d.ts +33 -0
- package/dist/src/daemon/ticket-registration.js +177 -0
- package/dist/src/daemon/ticket-source.d.ts +17 -0
- package/dist/src/daemon/ticket-source.js +36 -0
- package/dist/src/daemon/work-tree.d.ts +26 -0
- package/dist/src/daemon/work-tree.js +206 -0
- package/dist/src/effect-authorization.d.ts +21 -0
- package/dist/src/effect-authorization.js +14 -0
- package/dist/src/execution-pin.d.ts +4 -0
- package/dist/src/execution-pin.js +68 -0
- package/dist/src/host/start-delivery.d.ts +41 -0
- package/dist/src/host/start-delivery.js +68 -0
- package/dist/src/host/step-bridge-host.d.ts +79 -0
- package/dist/src/host/step-bridge-host.js +205 -0
- package/dist/src/host/step-claims.d.ts +31 -0
- package/dist/src/host/step-claims.js +85 -0
- package/dist/src/host/world-host.d.ts +21 -0
- package/dist/src/host/world-host.js +51 -0
- package/dist/src/host/world-reconciliation.d.ts +37 -0
- package/dist/src/host/world-reconciliation.js +75 -0
- package/dist/src/host/world-runs.d.ts +14 -0
- package/dist/src/host/world-runs.js +61 -0
- package/dist/src/operation-identity.d.ts +7 -0
- package/dist/src/operation-identity.js +59 -0
- package/dist/src/protocol.d.ts +35 -0
- package/dist/src/protocol.js +64 -0
- package/dist/src/resource-files.d.ts +1 -0
- package/dist/src/resource-files.js +29 -0
- package/dist/src/service/changes.d.ts +11 -0
- package/dist/src/service/changes.js +32 -0
- package/dist/src/service/decision-handler.d.ts +9 -0
- package/dist/src/service/decision-handler.js +233 -0
- package/dist/src/service/event-handler.d.ts +10 -0
- package/dist/src/service/event-handler.js +70 -0
- package/dist/src/service/expiry.d.ts +13 -0
- package/dist/src/service/expiry.js +53 -0
- package/dist/src/service/gateway.d.ts +21 -0
- package/dist/src/service/gateway.js +120 -0
- package/dist/src/service/registry.d.ts +40 -0
- package/dist/src/service/registry.js +13 -0
- package/dist/src/service/replies.d.ts +26 -0
- package/dist/src/service/replies.js +56 -0
- package/dist/src/service/run-handlers.d.ts +4 -0
- package/dist/src/service/run-handlers.js +271 -0
- package/dist/src/service/service.d.ts +58 -0
- package/dist/src/service/service.js +212 -0
- package/dist/src/service/submission-handler.d.ts +4 -0
- package/dist/src/service/submission-handler.js +206 -0
- package/dist/src/service/transport.d.ts +16 -0
- package/dist/src/service/transport.js +141 -0
- package/dist/src/service/worker-port.d.ts +85 -0
- package/dist/src/service/worker-port.js +126 -0
- package/dist/src/step-bridge.d.ts +57 -0
- package/dist/src/step-bridge.js +4 -0
- package/dist/src/steps/decision-gate.d.ts +2 -0
- package/dist/src/steps/decision-gate.js +8 -0
- package/dist/src/steps/load-cycle.d.ts +10 -0
- package/dist/src/steps/load-cycle.js +11 -0
- package/dist/src/steps/protected-effect.d.ts +2 -0
- package/dist/src/steps/protected-effect.js +8 -0
- package/dist/src/storage/decision-rows.d.ts +54 -0
- package/dist/src/storage/decision-rows.js +72 -0
- package/dist/src/storage/decision-snapshots.d.ts +17 -0
- package/dist/src/storage/decision-snapshots.js +25 -0
- package/dist/src/storage/domain-changes.d.ts +48 -0
- package/dist/src/storage/domain-changes.js +213 -0
- package/dist/src/storage/domain-rows.d.ts +85 -0
- package/dist/src/storage/domain-rows.js +129 -0
- package/dist/src/storage/domain-schema.d.ts +32 -0
- package/dist/src/storage/domain-schema.js +193 -0
- package/dist/src/storage/effect-changes.d.ts +5 -0
- package/dist/src/storage/effect-changes.js +105 -0
- package/dist/src/storage/effect-rows.d.ts +67 -0
- package/dist/src/storage/effect-rows.js +74 -0
- package/dist/src/storage/effect-schema.d.ts +1 -0
- package/dist/src/storage/effect-schema.js +59 -0
- package/dist/src/storage/statements.d.ts +9 -0
- package/dist/src/storage/statements.js +8 -0
- package/dist/src/submission.d.ts +42 -0
- package/dist/src/submission.js +71 -0
- package/dist/src/turn-profile.d.ts +13 -0
- package/dist/src/turn-profile.js +100 -0
- package/dist/src/workflow-admission.d.ts +45 -0
- package/dist/src/workflow-admission.js +151 -0
- package/dist/src/workflow-contracts.d.ts +27 -0
- package/dist/src/workflow-contracts.js +88 -0
- package/dist/src/workflow-declaration.d.ts +11 -0
- package/dist/src/workflow-declaration.js +57 -0
- package/dist/src/workflow-resources.d.ts +8 -0
- package/dist/src/workflow-resources.js +14 -0
- package/dist/src/workflows.d.ts +5 -0
- package/dist/src/workflows.js +3 -0
- package/dist/tools/compile-workflows.d.ts +1 -0
- package/dist/tools/compile-workflows.js +33 -0
- package/dist/tools/self-host-processes.d.ts +10 -0
- package/dist/tools/self-host-processes.js +151 -0
- package/dist/tools/self-host-workflows.d.ts +15 -0
- package/dist/tools/self-host-workflows.js +78 -0
- package/dist/tools/self-host.d.ts +1 -0
- package/dist/tools/self-host.js +261 -0
- package/dist/tools/self-update-host.d.ts +6 -0
- package/dist/tools/self-update-host.js +41 -0
- package/dist/tools/self-update.d.ts +10 -0
- package/dist/tools/self-update.js +105 -0
- package/dist/tools/workflow-manifest.d.ts +3 -0
- package/dist/tools/workflow-manifest.js +34 -0
- package/dist/workflows/develop-prd.d.ts +7 -0
- package/dist/workflows/develop-prd.js +97 -0
- package/dist/workflows/develop-ticket.d.ts +15 -0
- package/dist/workflows/develop-ticket.js +301 -0
- package/dist/workflows/issue-labels.d.ts +14 -0
- package/dist/workflows/issue-labels.js +36 -0
- package/package.json +82 -75
- package/.DS_Store +0 -0
- package/.aider.chat.history.md +0 -16978
- package/.aider.input.history +0 -15
- package/.aider.tags.cache.v3/cache.db +0 -0
- package/.aider.tags.cache.v3/cache.db-shm +0 -0
- package/.aider.tags.cache.v3/cache.db-wal +0 -0
- package/.cursorrules +0 -77
- package/.github/workflows/auto-release.yml +0 -83
- package/.github/workflows/ci.yml +0 -32
- package/.github/workflows/npm-publish.yml +0 -34
- package/.gitignore +0 -67
- package/.husky/_/.gitignore +0 -1
- package/.husky/_/applypatch-msg +0 -2
- package/.husky/_/commit-msg +0 -2
- package/.husky/_/h +0 -22
- package/.husky/_/husky.sh +0 -9
- package/.husky/_/post-applypatch +0 -2
- package/.husky/_/post-checkout +0 -2
- package/.husky/_/post-commit +0 -2
- package/.husky/_/post-merge +0 -2
- package/.husky/_/post-rewrite +0 -2
- package/.husky/_/pre-applypatch +0 -2
- package/.husky/_/pre-auto-gc +0 -2
- package/.husky/_/pre-commit +0 -2
- package/.husky/_/pre-merge-commit +0 -2
- package/.husky/_/pre-push +0 -2
- package/.husky/_/pre-rebase +0 -2
- package/.husky/_/prepare-commit-msg +0 -2
- package/.husky/pre-commit +0 -1
- package/.husky/pre-push +0 -1
- package/.prettierrc.json +0 -7
- package/.tool-versions +0 -2
- package/SECURITY.md +0 -15
- package/cloving.json +0 -67
- package/dist/abstract_gpt/index.js +0 -55
- package/dist/cloving_gpt/adapters/Adapter.js +0 -2
- package/dist/cloving_gpt/adapters/azureopenai.js +0 -69
- package/dist/cloving_gpt/adapters/claude.js +0 -128
- package/dist/cloving_gpt/adapters/gemini.js +0 -135
- package/dist/cloving_gpt/adapters/gpt4all.js +0 -29
- package/dist/cloving_gpt/adapters/index.js +0 -2
- package/dist/cloving_gpt/adapters/mistral.js +0 -128
- package/dist/cloving_gpt/adapters/ollama.js +0 -128
- package/dist/cloving_gpt/adapters/openai.js +0 -100
- package/dist/cloving_gpt/index.js +0 -192
- package/dist/commands/analyze.js +0 -47
- package/dist/commands/chat.js +0 -14
- package/dist/commands/check.js +0 -7
- package/dist/commands/commit.js +0 -44
- package/dist/commands/config.js +0 -167
- package/dist/commands/describe.js +0 -235
- package/dist/commands/generate/code.js +0 -21
- package/dist/commands/generate/commit.js +0 -11
- package/dist/commands/generate/context.js +0 -82
- package/dist/commands/generate/docs.js +0 -11
- package/dist/commands/generate/documentation.js +0 -11
- package/dist/commands/generate/fizzbuzz.js +0 -35
- package/dist/commands/generate/init.js +0 -15
- package/dist/commands/generate/review.js +0 -11
- package/dist/commands/generate/sh.js +0 -95
- package/dist/commands/generate/shell.js +0 -11
- package/dist/commands/generate/unit_tests.js +0 -11
- package/dist/commands/init.js +0 -13
- package/dist/commands/models.js +0 -22
- package/dist/commands/project/build.js +0 -88
- package/dist/commands/project/complete.js +0 -12
- package/dist/commands/project/init.js +0 -82
- package/dist/commands/project/plan.js +0 -108
- package/dist/commands/proxy.js +0 -11
- package/dist/commands/review.js +0 -50
- package/dist/commands/tokens.js +0 -75
- package/dist/commands/unit_tests.js +0 -150
- package/dist/commands/update.js +0 -7
- package/dist/file2.js +0 -4
- package/dist/index.js +0 -134
- package/dist/managers/BlockManager.js +0 -120
- package/dist/managers/ChatManager.js +0 -653
- package/dist/managers/ChunkManager.js +0 -32
- package/dist/managers/CodeManager.js +0 -185
- package/dist/managers/CommitManager.js +0 -64
- package/dist/managers/DocsManager.js +0 -88
- package/dist/managers/DocumentationManager.js +0 -114
- package/dist/managers/InitManager.js +0 -230
- package/dist/managers/ProxyManager.js +0 -210
- package/dist/managers/ReviewManager.js +0 -131
- package/dist/managers/ShellManager.js +0 -163
- package/dist/managers/StreamManager.js +0 -308
- package/dist/managers/UnitTestManager.js +0 -243
- package/dist/managers/src/managers/ProxyManager.js +0 -1
- package/dist/newfile.js +0 -2
- package/dist/package.json +0 -86
- package/dist/utils/command_utils.js +0 -384
- package/dist/utils/config_utils.js +0 -249
- package/dist/utils/gitUtils.js +0 -42
- package/dist/utils/git_utils.js +0 -217
- package/dist/utils/modelUtils.js +0 -7
- package/dist/utils/model_utils.js +0 -7
- package/dist/utils/prompt_utils.js +0 -333
- package/dist/utils/prompts/CODEGEN_COULDNT_APPLY.md +0 -5
- package/dist/utils/prompts/CODEGEN_EXAMPLES.md +0 -82
- package/dist/utils/prompts/CODEGEN_INSTRUCTIONS.md +0 -43
- package/dist/utils/prompts/DOCS_INSTRUCTIONS.md +0 -9
- package/dist/utils/prompts/INIT_INSTRUCTIONS.md +0 -132
- package/dist/utils/prompts/REVIEW_INSTRUCTIONS.md +0 -49
- package/dist/utils/prompts/SHELL_INSTRUCTIONS.md +0 -15
- package/dist/utils/prompts/SPECIAL_FILES.md +0 -66
- package/dist/utils/prompts/index.js +0 -27
- package/dist/utils/string_utils.js +0 -505
- package/dist/utils/types.js +0 -2
- package/jest.config.js +0 -11
- package/src/cloving_gpt/adapters/azureopenai.ts +0 -83
- package/src/cloving_gpt/adapters/claude.ts +0 -140
- package/src/cloving_gpt/adapters/gemini.ts +0 -146
- package/src/cloving_gpt/adapters/index.ts +0 -43
- package/src/cloving_gpt/adapters/mistral.ts +0 -142
- package/src/cloving_gpt/adapters/ollama.ts +0 -136
- package/src/cloving_gpt/adapters/openai.ts +0 -113
- package/src/cloving_gpt/index.ts +0 -229
- package/src/commands/chat.ts +0 -12
- package/src/commands/config.ts +0 -192
- package/src/commands/generate/code.ts +0 -18
- package/src/commands/generate/commit.ts +0 -9
- package/src/commands/generate/context.ts +0 -93
- package/src/commands/generate/docs.ts +0 -9
- package/src/commands/generate/review.ts +0 -9
- package/src/commands/generate/shell.ts +0 -9
- package/src/commands/generate/unit_tests.ts +0 -9
- package/src/commands/init.ts +0 -9
- package/src/commands/models.ts +0 -21
- package/src/commands/proxy.ts +0 -9
- package/src/commands/tokens.ts +0 -82
- package/src/index.ts +0 -197
- package/src/managers/BlockManager.ts +0 -126
- package/src/managers/ChatManager.ts +0 -755
- package/src/managers/ChunkManager.ts +0 -31
- package/src/managers/CodeManager.ts +0 -226
- package/src/managers/CommitManager.ts +0 -71
- package/src/managers/DocsManager.ts +0 -101
- package/src/managers/InitManager.ts +0 -263
- package/src/managers/ProxyManager.ts +0 -240
- package/src/managers/ReviewManager.ts +0 -154
- package/src/managers/ShellManager.ts +0 -172
- package/src/managers/StreamManager.ts +0 -353
- package/src/managers/UnitTestManager.ts +0 -293
- package/src/utils/config_utils.ts +0 -271
- package/src/utils/git_utils.ts +0 -230
- package/src/utils/model_utils.ts +0 -3
- package/src/utils/prompt_utils.ts +0 -375
- package/src/utils/prompts/CODEGEN_COULDNT_APPLY.md +0 -5
- package/src/utils/prompts/CODEGEN_EXAMPLES.md +0 -82
- package/src/utils/prompts/CODEGEN_INSTRUCTIONS.md +0 -43
- package/src/utils/prompts/DOCS_INSTRUCTIONS.md +0 -9
- package/src/utils/prompts/INIT_INSTRUCTIONS.md +0 -132
- package/src/utils/prompts/REVIEW_INSTRUCTIONS.md +0 -49
- package/src/utils/prompts/SHELL_INSTRUCTIONS.md +0 -15
- package/src/utils/prompts/SPECIAL_FILES.md +0 -66
- package/src/utils/prompts/index.ts +0 -37
- package/src/utils/string_utils.ts +0 -552
- package/src/utils/types.ts +0 -127
- package/tests/commands/generate/unit_tests.test.ts +0 -27
- package/tests/utils/git_utils.test.ts +0 -116
- package/tests/utils/model_utils.test.ts +0 -27
- package/tests/utils/prompt_utils.test.ts +0 -33
- package/tests/utils/string_utils.test.ts +0 -560
- package/tsconfig.json +0 -14
- package/yarn.lock +0 -5823
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const cli_highlight_1 = __importDefault(require("cli-highlight"));
|
|
7
|
-
const process_1 = __importDefault(require("process"));
|
|
8
|
-
const colors_1 = __importDefault(require("colors"));
|
|
9
|
-
const prompts_1 = require("@inquirer/prompts");
|
|
10
|
-
const axios_1 = __importDefault(require("axios"));
|
|
11
|
-
const claude_1 = require("./adapters/claude");
|
|
12
|
-
const openai_1 = require("./adapters/openai");
|
|
13
|
-
const mistral_1 = require("./adapters/mistral");
|
|
14
|
-
const ollama_1 = require("./adapters/ollama");
|
|
15
|
-
const gemini_1 = require("./adapters/gemini");
|
|
16
|
-
const azureopenai_1 = require("./adapters/azureopenai");
|
|
17
|
-
const string_utils_1 = require("../utils/string_utils");
|
|
18
|
-
const config_utils_1 = require("../utils/config_utils");
|
|
19
|
-
class ClovingGPT {
|
|
20
|
-
constructor(options) {
|
|
21
|
-
const { model: partialModel } = options;
|
|
22
|
-
const config = (0, config_utils_1.getConfig)(options);
|
|
23
|
-
if (!config || !config.models) {
|
|
24
|
-
console.log('No cloving configuration found. Please run: cloving config');
|
|
25
|
-
process_1.default.exit(1);
|
|
26
|
-
}
|
|
27
|
-
const primaryModel = (0, config_utils_1.getPrimaryModel)(partialModel);
|
|
28
|
-
if (!primaryModel) {
|
|
29
|
-
console.log('No AI API models found in the cloving configuration. Please run: cloving config');
|
|
30
|
-
process_1.default.exit(1);
|
|
31
|
-
}
|
|
32
|
-
const { provider, model, config: modelConfig } = primaryModel;
|
|
33
|
-
this.apiKey = modelConfig.apiKey;
|
|
34
|
-
this.temperature = options.temperature || modelConfig.temperature || 0.2;
|
|
35
|
-
this.silent = options.silent || modelConfig.silent || false;
|
|
36
|
-
this.stream = options.stream || false;
|
|
37
|
-
this.timeout = options.timeout || 60000; // Default timeout of 60 seconds
|
|
38
|
-
switch (provider) {
|
|
39
|
-
case 'claude':
|
|
40
|
-
this.adapter = new claude_1.ClaudeAdapter(model);
|
|
41
|
-
break;
|
|
42
|
-
case 'openai':
|
|
43
|
-
this.adapter = new openai_1.OpenAIAdapter(model);
|
|
44
|
-
break;
|
|
45
|
-
case 'mistral':
|
|
46
|
-
this.adapter = new mistral_1.MistralAdapter(model);
|
|
47
|
-
break;
|
|
48
|
-
case 'ollama':
|
|
49
|
-
this.adapter = new ollama_1.OllamaAdapter(model);
|
|
50
|
-
break;
|
|
51
|
-
case 'gemini':
|
|
52
|
-
this.adapter = new gemini_1.GeminiAdapter(model);
|
|
53
|
-
break;
|
|
54
|
-
case 'azureopenai':
|
|
55
|
-
if (!modelConfig.endpoint) {
|
|
56
|
-
throw new Error('Azure OpenAI endpoint not configured');
|
|
57
|
-
}
|
|
58
|
-
this.adapter = new azureopenai_1.AzureOpenAIAdapter(model, modelConfig.endpoint);
|
|
59
|
-
break;
|
|
60
|
-
default:
|
|
61
|
-
throw new Error(`Unsupported provider: ${provider}`);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
async reviewPrompt(prompt, messages, endpoint) {
|
|
65
|
-
if (this.silent)
|
|
66
|
-
return prompt;
|
|
67
|
-
const fullPrompt = messages
|
|
68
|
-
.map((m) => (m.role === 'user' ? `# Task\n\n${m.content}` : m.content))
|
|
69
|
-
.join('\n\n');
|
|
70
|
-
const tokenCount = Math.ceil(fullPrompt.length / 4).toLocaleString();
|
|
71
|
-
const reviewPrompt = await (0, prompts_1.confirm)({
|
|
72
|
-
message: `Do you want to review the ~${tokenCount} token prompt before sending it to ${endpoint}?`,
|
|
73
|
-
default: true,
|
|
74
|
-
});
|
|
75
|
-
if (reviewPrompt) {
|
|
76
|
-
(0, string_utils_1.parseMarkdownInstructions)(fullPrompt).map((code) => {
|
|
77
|
-
if (code.trim().startsWith('```')) {
|
|
78
|
-
const lines = code.split('\n');
|
|
79
|
-
const language = code.match(/```(\w+)/)?.[1] || 'default';
|
|
80
|
-
console.log(lines[0]);
|
|
81
|
-
try {
|
|
82
|
-
if (language === 'default') {
|
|
83
|
-
console.log((0, cli_highlight_1.default)(lines.slice(1, -1).join('\n')));
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
console.log((0, cli_highlight_1.default)(lines.slice(1, -1).join('\n'), { language }));
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
// don't highlight if it fails
|
|
91
|
-
console.log(lines.slice(1, -1).join('\n'));
|
|
92
|
-
}
|
|
93
|
-
console.log(lines.slice(-1)[0]);
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
console.log((0, cli_highlight_1.default)(code, { language: 'markdown' }));
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
const confirmPrompt = await (0, prompts_1.confirm)({
|
|
100
|
-
message: `Are you sure you want to continue?`,
|
|
101
|
-
default: true,
|
|
102
|
-
});
|
|
103
|
-
if (!confirmPrompt) {
|
|
104
|
-
process_1.default.exit(1);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
return prompt;
|
|
108
|
-
}
|
|
109
|
-
async streamText(request) {
|
|
110
|
-
request.stream = true;
|
|
111
|
-
request.temperature || (request.temperature = this.temperature);
|
|
112
|
-
const endpoint = this.adapter.getEndpoint(this.stream);
|
|
113
|
-
const payload = this.adapter.getPayload(request, this.stream);
|
|
114
|
-
const headers = this.adapter.getHeaders(this.apiKey);
|
|
115
|
-
const reviewedPrompt = await this.reviewPrompt(request.prompt, request.messages || [], endpoint);
|
|
116
|
-
if (reviewedPrompt === null) {
|
|
117
|
-
throw new Error('Operation cancelled by user');
|
|
118
|
-
}
|
|
119
|
-
request.prompt = reviewedPrompt;
|
|
120
|
-
const maxRetries = 5;
|
|
121
|
-
let attempt = 0;
|
|
122
|
-
let delay = 1000; // Initial delay of 1 second
|
|
123
|
-
while (attempt < maxRetries) {
|
|
124
|
-
try {
|
|
125
|
-
return await (0, axios_1.default)({
|
|
126
|
-
method: 'post',
|
|
127
|
-
url: endpoint,
|
|
128
|
-
data: payload,
|
|
129
|
-
headers: headers,
|
|
130
|
-
responseType: 'stream',
|
|
131
|
-
timeout: this.timeout,
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
catch (err) {
|
|
135
|
-
const error = err;
|
|
136
|
-
if (error.response && error.response.status === 429) {
|
|
137
|
-
attempt++;
|
|
138
|
-
const tokenCount = payload.messages
|
|
139
|
-
.reduce((acc, message) => acc + Math.ceil(message.content.length / 4), 0)
|
|
140
|
-
.toLocaleString();
|
|
141
|
-
console.warn(`${colors_1.default.red.bold('ERROR')} Rate limit error for this ${tokenCount} token prompt. Possibly past the token limit for this AI API. Try including fewer code files. Retrying in ${delay / 1000} seconds... (Attempt ${attempt} of ${maxRetries})`);
|
|
142
|
-
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
143
|
-
delay *= 2; // Exponential backoff
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
throw error;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
throw new Error('Max retries exceeded');
|
|
151
|
-
}
|
|
152
|
-
async generateText(request) {
|
|
153
|
-
request.temperature || (request.temperature = this.temperature);
|
|
154
|
-
const endpoint = this.adapter.getEndpoint(this.stream);
|
|
155
|
-
const payload = this.adapter.getPayload(request, this.stream);
|
|
156
|
-
const headers = this.adapter.getHeaders(this.apiKey);
|
|
157
|
-
const reviewedPrompt = await this.reviewPrompt(request.prompt, request.messages || [], endpoint);
|
|
158
|
-
if (reviewedPrompt === null) {
|
|
159
|
-
throw new Error('Operation cancelled by user');
|
|
160
|
-
}
|
|
161
|
-
request.prompt = reviewedPrompt;
|
|
162
|
-
try {
|
|
163
|
-
const response = await axios_1.default.post(endpoint, payload, { headers });
|
|
164
|
-
return this.adapter.extractResponse(response.data);
|
|
165
|
-
}
|
|
166
|
-
catch (err) {
|
|
167
|
-
const error = err;
|
|
168
|
-
let errorMessage = 'An error occurred while communicating with the AI server';
|
|
169
|
-
if (error.response) {
|
|
170
|
-
// The request was made and the server responded with a status code
|
|
171
|
-
// that falls out of the range of 2xx
|
|
172
|
-
errorMessage = `Server responded with status ${error.response.status}: ${error.response.statusText}`;
|
|
173
|
-
}
|
|
174
|
-
else if (error.request) {
|
|
175
|
-
// The request was made but no response was received
|
|
176
|
-
errorMessage = 'No response received from the server';
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
// Something happened in setting up the request that triggered an Error
|
|
180
|
-
errorMessage = error.message || 'Unknown error occurred';
|
|
181
|
-
}
|
|
182
|
-
console.error(`${colors_1.default.red.bold('ERROR')} ${errorMessage}\n` +
|
|
183
|
-
`Endpoint: ${this.adapter.getEndpoint(this.stream)}\n` +
|
|
184
|
-
`Details: ${colors_1.default.yellow(JSON.stringify(error.response?.data || {}, null, 2))}\n`);
|
|
185
|
-
throw new Error(errorMessage);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
convertStream(data) {
|
|
189
|
-
return this.adapter.convertStream(data);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
exports.default = ClovingGPT;
|
package/dist/commands/analyze.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const readline_1 = __importDefault(require("readline"));
|
|
7
|
-
const child_process_1 = require("child_process");
|
|
8
|
-
const git_utils_1 = require("../utils/git_utils");
|
|
9
|
-
const model_utils_1 = require("../utils/model_utils");
|
|
10
|
-
const cloving_gpt_1 = __importDefault(require("../cloving_gpt"));
|
|
11
|
-
const analyze = async () => {
|
|
12
|
-
try {
|
|
13
|
-
// Define the prompt for analysis
|
|
14
|
-
const gitDiff = await (0, git_utils_1.getGitDiff)();
|
|
15
|
-
const model = (0, model_utils_1.getModel)();
|
|
16
|
-
const prompt = `Explain why the change is being made and document a description of these changes.
|
|
17
|
-
Also list any bugs in the new code as well as recommended fixes for those bugs with code examples.
|
|
18
|
-
|
|
19
|
-
${gitDiff}`;
|
|
20
|
-
// Instantiate ClovingGPT and get the analysis
|
|
21
|
-
const gpt = new cloving_gpt_1.default();
|
|
22
|
-
const analysis = await gpt.generateText({ prompt });
|
|
23
|
-
// Print the analysis to the console
|
|
24
|
-
console.log(analysis);
|
|
25
|
-
// Prompt the user to copy the analysis to the clipboard
|
|
26
|
-
const rl = readline_1.default.createInterface({
|
|
27
|
-
input: process.stdin,
|
|
28
|
-
output: process.stdout
|
|
29
|
-
});
|
|
30
|
-
rl.question('Do you want to copy the analysis to the clipboard? [Y/n] ', (answer) => {
|
|
31
|
-
if (answer.toLowerCase() === 'y' || answer === '') {
|
|
32
|
-
try {
|
|
33
|
-
(0, child_process_1.execFileSync)('pbcopy', { input: analysis });
|
|
34
|
-
console.log('Analysis copied to clipboard');
|
|
35
|
-
}
|
|
36
|
-
catch (error) {
|
|
37
|
-
console.error('Error: pbcopy command not found. Unable to copy to clipboard.');
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
rl.close();
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
console.error('Error during analysis:', error.message);
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
exports.default = analyze;
|
package/dist/commands/chat.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const ChatManager_1 = __importDefault(require("../managers/ChatManager"));
|
|
7
|
-
const config_utils_1 = require("../utils/config_utils");
|
|
8
|
-
const chat = async (options) => {
|
|
9
|
-
options.silent = (0, config_utils_1.getConfig)(options).globalSilent || false;
|
|
10
|
-
options.stream = true;
|
|
11
|
-
const chatManager = new ChatManager_1.default(options);
|
|
12
|
-
await chatManager.initialize();
|
|
13
|
-
};
|
|
14
|
-
exports.default = chat;
|
package/dist/commands/check.js
DELETED
package/dist/commands/commit.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const fs_1 = __importDefault(require("fs"));
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const child_process_1 = require("child_process");
|
|
9
|
-
const git_utils_1 = require("../utils/git_utils");
|
|
10
|
-
const string_utils_1 = require("../utils/string_utils");
|
|
11
|
-
const config_utils_1 = require("../utils/config_utils");
|
|
12
|
-
const cloving_gpt_1 = __importDefault(require("../cloving_gpt"));
|
|
13
|
-
const generateAndCommitMessage = async (options) => {
|
|
14
|
-
options.silent = (0, config_utils_1.getConfig)(options).globalSilent || false;
|
|
15
|
-
const gpt = new cloving_gpt_1.default(options);
|
|
16
|
-
try {
|
|
17
|
-
// Generate the prompt for commit message
|
|
18
|
-
const prompt = (0, git_utils_1.generateCommitMessagePrompt)();
|
|
19
|
-
// Instantiate ClovingGPT and get the commit message
|
|
20
|
-
const rawCommitMessage = await gpt.generateText({ prompt });
|
|
21
|
-
// Clean the commit message using extractMarkdown
|
|
22
|
-
const commitMessage = (0, string_utils_1.extractMarkdown)(rawCommitMessage);
|
|
23
|
-
// Write the commit message to a temporary file
|
|
24
|
-
const tempCommitFilePath = path_1.default.join('.git', 'SUGGESTED_COMMIT_EDITMSG');
|
|
25
|
-
fs_1.default.writeFileSync(tempCommitFilePath, commitMessage);
|
|
26
|
-
// Commit the changes using the generated commit message
|
|
27
|
-
try {
|
|
28
|
-
(0, child_process_1.execFileSync)('git', ['commit', '-a', '--edit', '--file', tempCommitFilePath], { stdio: 'inherit' });
|
|
29
|
-
}
|
|
30
|
-
catch (commitError) {
|
|
31
|
-
// If commit is canceled (non-zero exit), handle it here
|
|
32
|
-
console.log('Commit was canceled or failed.');
|
|
33
|
-
}
|
|
34
|
-
// Remove the temporary file using fs
|
|
35
|
-
fs_1.default.unlink(tempCommitFilePath, (err) => {
|
|
36
|
-
if (err)
|
|
37
|
-
throw err;
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
catch (error) {
|
|
41
|
-
console.error('Could not generate commit message');
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
exports.default = generateAndCommitMessage;
|
package/dist/commands/config.js
DELETED
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.config = void 0;
|
|
4
|
-
const config_utils_1 = require("../utils/config_utils");
|
|
5
|
-
const prompt_utils_1 = require("../utils/prompt_utils");
|
|
6
|
-
// Add this type definition at the top of the file
|
|
7
|
-
const prompts_1 = require("@inquirer/prompts");
|
|
8
|
-
/**
|
|
9
|
-
* Configures the AI models by prompting the user for various settings.
|
|
10
|
-
*
|
|
11
|
-
* @returns {Promise<void>} A promise that resolves when the configuration is complete.
|
|
12
|
-
*/
|
|
13
|
-
const config = async () => {
|
|
14
|
-
let currentConfig = (0, config_utils_1.getConfig)({});
|
|
15
|
-
// Ensure models are initialized properly
|
|
16
|
-
if (!currentConfig.models) {
|
|
17
|
-
currentConfig.models = {};
|
|
18
|
-
}
|
|
19
|
-
const models = await (0, prompt_utils_1.fetchModels)();
|
|
20
|
-
if (models.length === 0) {
|
|
21
|
-
console.error('No models available.');
|
|
22
|
-
throw new Error('No models available');
|
|
23
|
-
}
|
|
24
|
-
let continueConfig = true;
|
|
25
|
-
while (continueConfig) {
|
|
26
|
-
const providers = [...new Set(models.map((model) => model.split(':')[0]))];
|
|
27
|
-
/**
|
|
28
|
-
* Prompts the user to select a provider from the available models.
|
|
29
|
-
*/
|
|
30
|
-
const selectedProvider = await (0, prompts_1.select)({
|
|
31
|
-
message: 'Select a provider:',
|
|
32
|
-
choices: providers.map((provider) => ({ name: provider, value: provider })),
|
|
33
|
-
});
|
|
34
|
-
const providerModels = models.filter((model) => model.startsWith(selectedProvider));
|
|
35
|
-
const modelCategories = [...new Set(providerModels.map((model) => model.split(':')[1]))];
|
|
36
|
-
/**
|
|
37
|
-
* Prompts the user to select a category from the selected provider's models.
|
|
38
|
-
*/
|
|
39
|
-
const selectedCategory = await (0, prompts_1.select)({
|
|
40
|
-
message: 'Select a category:',
|
|
41
|
-
choices: modelCategories.map((category) => ({ name: category, value: category })),
|
|
42
|
-
});
|
|
43
|
-
const specificModels = providerModels.filter((model) => model.split(':')[1] === selectedCategory);
|
|
44
|
-
/**
|
|
45
|
-
* Prompts the user to select a specific model from the selected category.
|
|
46
|
-
*/
|
|
47
|
-
const modelIndex = await (0, prompts_1.select)({
|
|
48
|
-
message: "Select an AI model you'd like to use:",
|
|
49
|
-
choices: specificModels.map((model, index) => ({ name: model, value: index })),
|
|
50
|
-
pageSize: specificModels.length,
|
|
51
|
-
});
|
|
52
|
-
const selectedModel = specificModels[modelIndex];
|
|
53
|
-
/**
|
|
54
|
-
* Prompts the user to enter the API key for the selected model.
|
|
55
|
-
*/
|
|
56
|
-
const apiKey = await (0, prompts_1.input)({
|
|
57
|
-
message: `Enter your API key for ${selectedModel}: `,
|
|
58
|
-
});
|
|
59
|
-
const [provider, ...modelParts] = selectedModel?.split(':') || [];
|
|
60
|
-
const model = modelParts.join(':');
|
|
61
|
-
if (!currentConfig.models[provider]) {
|
|
62
|
-
currentConfig.models[provider] = {};
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Prompts the user to set the selected model as the primary model.
|
|
66
|
-
*/
|
|
67
|
-
const primary = await (0, prompts_1.confirm)({
|
|
68
|
-
message: 'Set this model as the primary? Primary models are used by default if your prompt fits within its context window. You can configure backup models for larger prompts.',
|
|
69
|
-
default: true,
|
|
70
|
-
});
|
|
71
|
-
/**
|
|
72
|
-
* Prompts the user to enter the priority for the selected model.
|
|
73
|
-
*
|
|
74
|
-
* @returns {string} The priority value as a string.
|
|
75
|
-
*/
|
|
76
|
-
const priority = await (0, prompts_1.input)({
|
|
77
|
-
message: 'Enter the priority for this model (0-100). Higher priority AI APIs are chosen as long as the prompt fits its context window:',
|
|
78
|
-
default: primary ? '100' : '0',
|
|
79
|
-
validate: (input) => {
|
|
80
|
-
const num = parseInt(input, 10);
|
|
81
|
-
if (isNaN(num) || num < 0 || num > 100) {
|
|
82
|
-
return 'Please enter a valid number between 0 and 100.';
|
|
83
|
-
}
|
|
84
|
-
return true;
|
|
85
|
-
},
|
|
86
|
-
});
|
|
87
|
-
/**
|
|
88
|
-
* Prompts the user to decide if they want to review all prompts before they are sent to the selected model.
|
|
89
|
-
*/
|
|
90
|
-
const review = await (0, prompts_1.confirm)({
|
|
91
|
-
message: `Do you want to review all prompts before they are sent to ${selectedModel}?`,
|
|
92
|
-
default: false,
|
|
93
|
-
});
|
|
94
|
-
/**
|
|
95
|
-
* Prompts the user to decide if they trust the selected model with sensitive information.
|
|
96
|
-
*/
|
|
97
|
-
const trust = await (0, prompts_1.confirm)({
|
|
98
|
-
message: `Do you trust ${selectedModel} with sensitive information?`,
|
|
99
|
-
default: true,
|
|
100
|
-
});
|
|
101
|
-
/**
|
|
102
|
-
* Prompts the user to enter the temperature setting for the selected model.
|
|
103
|
-
*
|
|
104
|
-
* @returns {string} The temperature value as a string.
|
|
105
|
-
*/
|
|
106
|
-
const temperature = await (0, prompts_1.input)({
|
|
107
|
-
message: `Enter the temperature for ${selectedModel} (0.0 - 1.0): [0.2]`,
|
|
108
|
-
default: '0.2',
|
|
109
|
-
validate: (value) => {
|
|
110
|
-
const num = parseFloat(value);
|
|
111
|
-
if (isNaN(num) || num < 0 || num > 1) {
|
|
112
|
-
return 'Please enter a valid number between 0.0 and 1.0.';
|
|
113
|
-
}
|
|
114
|
-
return true;
|
|
115
|
-
},
|
|
116
|
-
});
|
|
117
|
-
const parsedTemperature = parseFloat(temperature);
|
|
118
|
-
/**
|
|
119
|
-
* Constructs the model configuration object.
|
|
120
|
-
*/
|
|
121
|
-
let modelConfig = {
|
|
122
|
-
apiKey,
|
|
123
|
-
primary,
|
|
124
|
-
priority: parseInt(priority, 10),
|
|
125
|
-
silent: !review,
|
|
126
|
-
trust,
|
|
127
|
-
temperature: parsedTemperature,
|
|
128
|
-
};
|
|
129
|
-
if (provider === 'azureopenai') {
|
|
130
|
-
/**
|
|
131
|
-
* Prompts the user to enter the Azure OpenAI endpoint URL.
|
|
132
|
-
*/
|
|
133
|
-
const endpoint = await (0, prompts_1.input)({
|
|
134
|
-
message: 'Enter the Azure OpenAI endpoint URL:',
|
|
135
|
-
validate: (value) => {
|
|
136
|
-
if (!value.startsWith('https://')) {
|
|
137
|
-
return 'Please enter a valid HTTPS URL';
|
|
138
|
-
}
|
|
139
|
-
return true;
|
|
140
|
-
},
|
|
141
|
-
});
|
|
142
|
-
modelConfig.endpoint = endpoint;
|
|
143
|
-
}
|
|
144
|
-
currentConfig.models[provider][model] = modelConfig;
|
|
145
|
-
if (primary) {
|
|
146
|
-
// Ensure only one primary model
|
|
147
|
-
for (const p in currentConfig.models) {
|
|
148
|
-
for (const m in currentConfig.models[p]) {
|
|
149
|
-
if (p !== provider || m !== model) {
|
|
150
|
-
currentConfig.models[p][m].primary = false;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Prompts the user to decide if they want to configure another model.
|
|
157
|
-
*/
|
|
158
|
-
const anotherModel = await (0, prompts_1.confirm)({
|
|
159
|
-
message: 'Do you want to configure another model?',
|
|
160
|
-
default: true,
|
|
161
|
-
});
|
|
162
|
-
continueConfig = anotherModel;
|
|
163
|
-
}
|
|
164
|
-
(0, config_utils_1.saveConfig)(currentConfig);
|
|
165
|
-
};
|
|
166
|
-
exports.config = config;
|
|
167
|
-
exports.default = exports.config;
|