cloving 0.3.20 → 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/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 -136
- 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 -78
- 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
|
@@ -1,163 +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 copy_paste_1 = __importDefault(require("copy-paste"));
|
|
8
|
-
const child_process_1 = require("child_process");
|
|
9
|
-
const prompts_1 = require("@inquirer/prompts");
|
|
10
|
-
const cloving_gpt_1 = __importDefault(require("../cloving_gpt"));
|
|
11
|
-
const prompt_utils_1 = require("../utils/prompt_utils");
|
|
12
|
-
const string_utils_1 = require("../utils/string_utils");
|
|
13
|
-
const config_utils_1 = require("../utils/config_utils");
|
|
14
|
-
/**
|
|
15
|
-
* ShellManager class for handling shell script generation and execution.
|
|
16
|
-
*/
|
|
17
|
-
class ShellManager {
|
|
18
|
-
/**
|
|
19
|
-
* Creates an instance of ShellManager.
|
|
20
|
-
* @param {ClovingGPTOptions} options - The options for ClovingGPT.
|
|
21
|
-
*/
|
|
22
|
-
constructor(options) {
|
|
23
|
-
this.options = options;
|
|
24
|
-
this.chatHistory = [];
|
|
25
|
-
options.silent = (0, config_utils_1.getConfig)(options).globalSilent || false;
|
|
26
|
-
this.gpt = new cloving_gpt_1.default(options);
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Generates a prompt to explain a shell script.
|
|
30
|
-
* @param {string} prompt - The original shell script prompt.
|
|
31
|
-
* @returns {string} The prompt for explaining the shell script.
|
|
32
|
-
* @private
|
|
33
|
-
*/
|
|
34
|
-
generateExplainShellPrompt(prompt) {
|
|
35
|
-
return `${prompt}
|
|
36
|
-
|
|
37
|
-
# Task
|
|
38
|
-
|
|
39
|
-
Please briefly explain how this shell script works.`;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Generates a shell script based on the given prompt.
|
|
43
|
-
* @param {string} prompt - The user's prompt for generating a shell script.
|
|
44
|
-
* @returns {Promise<string>} A promise that resolves to the generated shell script.
|
|
45
|
-
* @private
|
|
46
|
-
*/
|
|
47
|
-
async generateShell(prompt) {
|
|
48
|
-
if (this.chatHistory.length === 0) {
|
|
49
|
-
const systemPrompt = (0, prompt_utils_1.generateShellPrompt)();
|
|
50
|
-
this.chatHistory.push({ role: 'user', content: systemPrompt });
|
|
51
|
-
this.chatHistory.push({ role: 'assistant', content: 'What would you like to do?' });
|
|
52
|
-
}
|
|
53
|
-
this.chatHistory.push({ role: 'user', content: prompt });
|
|
54
|
-
return await this.gpt.generateText({ prompt, messages: this.chatHistory });
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Displays the generated shell script with syntax highlighting.
|
|
58
|
-
* @param {string} rawShellCommand - The raw shell command to display.
|
|
59
|
-
* @private
|
|
60
|
-
*/
|
|
61
|
-
displayGeneratedShell(rawShellCommand) {
|
|
62
|
-
const generatedShell = (0, string_utils_1.extractMarkdown)(rawShellCommand);
|
|
63
|
-
const generatedShellWithoutShebang = generatedShell.replace(/^#!.*?\s/, '');
|
|
64
|
-
console.log((0, cli_highlight_1.default)(generatedShellWithoutShebang));
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Handles user actions after generating a shell script.
|
|
68
|
-
* @param {string} response - The generated shell script.
|
|
69
|
-
* @param {string} prompt - The original user prompt.
|
|
70
|
-
* @returns {Promise<void>}
|
|
71
|
-
* @private
|
|
72
|
-
*/
|
|
73
|
-
async handleUserAction(response, prompt) {
|
|
74
|
-
let { exec } = this.options;
|
|
75
|
-
this.chatHistory.push({ role: 'assistant', content: response });
|
|
76
|
-
const generatedShell = (0, string_utils_1.extractMarkdown)(response);
|
|
77
|
-
const generatedShellWithoutShebang = generatedShell.replace(/^#!.*?\s/, '');
|
|
78
|
-
if (exec) {
|
|
79
|
-
(0, child_process_1.execSync)(generatedShellWithoutShebang, { stdio: 'inherit' });
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
const action = await (0, prompts_1.select)({
|
|
83
|
-
message: 'What would you like to do?',
|
|
84
|
-
choices: [
|
|
85
|
-
{ name: 'Execute', value: 'execute' },
|
|
86
|
-
{ name: 'Revise', value: 'revise' },
|
|
87
|
-
{ name: 'Explain', value: 'explain' },
|
|
88
|
-
{ name: 'Copy to Clipboard', value: 'copy' },
|
|
89
|
-
{ name: 'Cancel', value: 'cancel' },
|
|
90
|
-
],
|
|
91
|
-
});
|
|
92
|
-
switch (action) {
|
|
93
|
-
case 'execute':
|
|
94
|
-
(0, child_process_1.execSync)(generatedShellWithoutShebang, { stdio: 'inherit' });
|
|
95
|
-
break;
|
|
96
|
-
case 'revise':
|
|
97
|
-
const newPrompt = await (0, prompts_1.input)({
|
|
98
|
-
message: 'How would you like to modify the output:',
|
|
99
|
-
});
|
|
100
|
-
const newRawShellCommand = await this.generateShell(newPrompt);
|
|
101
|
-
this.displayGeneratedShell(newRawShellCommand);
|
|
102
|
-
await this.handleUserAction(newRawShellCommand, newPrompt);
|
|
103
|
-
break;
|
|
104
|
-
case 'explain':
|
|
105
|
-
const explainPrompt = this.generateExplainShellPrompt(generatedShellWithoutShebang);
|
|
106
|
-
this.chatHistory.push({ role: 'user', content: explainPrompt });
|
|
107
|
-
const explainShellCommand = await this.gpt.generateText({
|
|
108
|
-
prompt: explainPrompt,
|
|
109
|
-
messages: this.chatHistory,
|
|
110
|
-
});
|
|
111
|
-
console.log((0, cli_highlight_1.default)(explainShellCommand, { language: 'markdown' }));
|
|
112
|
-
break;
|
|
113
|
-
case 'copy':
|
|
114
|
-
copy_paste_1.default.copy(generatedShellWithoutShebang, (err) => {
|
|
115
|
-
if (err) {
|
|
116
|
-
console.error('Error: Unable to copy to clipboard.', err);
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
console.log('Script copied to clipboard.');
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
break;
|
|
123
|
-
case 'cancel':
|
|
124
|
-
console.log('Operation cancelled.');
|
|
125
|
-
break;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Generates a shell script based on user input and handles subsequent user actions.
|
|
130
|
-
*
|
|
131
|
-
* This method is the main entry point for generating and interacting with shell scripts.
|
|
132
|
-
* It performs the following steps:
|
|
133
|
-
* 1. Obtains a user prompt (either from options or by asking the user).
|
|
134
|
-
* 2. Generates a shell script based on the prompt.
|
|
135
|
-
* 3. Displays the generated script with syntax highlighting.
|
|
136
|
-
* 4. Handles user actions (execute, revise, explain, copy, or cancel) for the generated script.
|
|
137
|
-
*
|
|
138
|
-
* @returns {Promise<void>} A promise that resolves when the generation and handling process is complete.
|
|
139
|
-
* @throws {Error} If there's an issue during the shell script generation process.
|
|
140
|
-
* @public
|
|
141
|
-
*
|
|
142
|
-
* @example
|
|
143
|
-
* const shellManager = new ShellManager(options);
|
|
144
|
-
* await shellManager.generateAndHandleShell();
|
|
145
|
-
*/
|
|
146
|
-
async generateAndHandleShell() {
|
|
147
|
-
let { prompt: userPrompt } = this.options;
|
|
148
|
-
try {
|
|
149
|
-
if (!userPrompt) {
|
|
150
|
-
userPrompt = await (0, prompts_1.input)({
|
|
151
|
-
message: 'What would you like to do: ',
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
const rawShellCommand = await this.generateShell(userPrompt);
|
|
155
|
-
this.displayGeneratedShell(rawShellCommand);
|
|
156
|
-
await this.handleUserAction(rawShellCommand, userPrompt);
|
|
157
|
-
}
|
|
158
|
-
catch (error) {
|
|
159
|
-
console.error('Could not generate shell script', error);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
exports.default = ShellManager;
|
|
@@ -1,308 +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 axios_1 = __importDefault(require("axios"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const events_1 = require("events");
|
|
10
|
-
const colors_1 = __importDefault(require("colors"));
|
|
11
|
-
const cli_highlight_1 = __importDefault(require("cli-highlight"));
|
|
12
|
-
const cloving_gpt_1 = __importDefault(require("../cloving_gpt"));
|
|
13
|
-
const ChunkManager_1 = __importDefault(require("./ChunkManager"));
|
|
14
|
-
const BlockManager_1 = __importDefault(require("./BlockManager"));
|
|
15
|
-
const prompt_utils_1 = require("../utils/prompt_utils");
|
|
16
|
-
const config_utils_1 = require("../utils/config_utils");
|
|
17
|
-
const prompt_utils_2 = require("../utils/prompt_utils");
|
|
18
|
-
/**
|
|
19
|
-
* StreamManager class
|
|
20
|
-
*
|
|
21
|
-
* This class extends EventEmitter and manages the streaming of responses from an AI model.
|
|
22
|
-
* It handles the processing of chunks, manages code blocks, and provides animation for code generation.
|
|
23
|
-
*/
|
|
24
|
-
class StreamManager extends events_1.EventEmitter {
|
|
25
|
-
/**
|
|
26
|
-
* Creates an instance of StreamManager.
|
|
27
|
-
* @param {any} options - Configuration options for the StreamManager.
|
|
28
|
-
*/
|
|
29
|
-
constructor(options) {
|
|
30
|
-
super();
|
|
31
|
-
this.options = options;
|
|
32
|
-
this.prompt = '';
|
|
33
|
-
this.responseString = '';
|
|
34
|
-
this.contextFiles = {};
|
|
35
|
-
this.chatHistory = [];
|
|
36
|
-
this.isProcessing = false;
|
|
37
|
-
this.animationInterval = null;
|
|
38
|
-
this.retryCount = 0;
|
|
39
|
-
this.maxRetries = 3;
|
|
40
|
-
this.gpt = new cloving_gpt_1.default(options);
|
|
41
|
-
this.chunkManager = new ChunkManager_1.default();
|
|
42
|
-
this.blockManager = new BlockManager_1.default();
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Checks for the latest version of the app from GitHub and compares it with the current version.
|
|
46
|
-
* If a new version is available, it notifies the user.
|
|
47
|
-
* @private
|
|
48
|
-
* @returns {Promise<void>}
|
|
49
|
-
*/
|
|
50
|
-
async checkForLatestVersion() {
|
|
51
|
-
try {
|
|
52
|
-
const response = await axios_1.default.get('https://api.github.com/repos/cloving-ai/cloving-cli/releases/latest');
|
|
53
|
-
const latestVersion = response.data.tag_name;
|
|
54
|
-
const currentVersion = `v${(0, prompt_utils_1.getPackageVersion)()}`;
|
|
55
|
-
if (latestVersion !== currentVersion) {
|
|
56
|
-
console.log(colors_1.default.bgWhite.black(`\n 🚀 A new version of Cloving is available: ${latestVersion} `));
|
|
57
|
-
console.log(colors_1.default.bgWhite.black(` You are currently using version: ${currentVersion} `));
|
|
58
|
-
console.log(colors_1.default.bgWhite.black(` To upgrade, run: ${colors_1.default.bgWhite.black.bold('npm install -g cloving@latest')} `));
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
// ignore errors
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Handles the response stream from the AI model.
|
|
67
|
-
* @param {any} responseStream - The stream of responses from the AI model.
|
|
68
|
-
*/
|
|
69
|
-
handleResponseStream(responseStream) {
|
|
70
|
-
this.responseString = '';
|
|
71
|
-
this.setupChunkManagerEvents();
|
|
72
|
-
this.setupBlockManagerEvents();
|
|
73
|
-
this.setupResponseStreamEvents(responseStream);
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Sets up event listeners for the BlockManager.
|
|
77
|
-
* @private
|
|
78
|
-
*/
|
|
79
|
-
setupBlockManagerEvents() {
|
|
80
|
-
this.blockManager = new BlockManager_1.default();
|
|
81
|
-
this.blockManager.on('startGeneratingCode', () => {
|
|
82
|
-
this.setupAnimationInterval();
|
|
83
|
-
});
|
|
84
|
-
this.blockManager.on('endGeneratingCode', () => {
|
|
85
|
-
this.clearAnimation();
|
|
86
|
-
});
|
|
87
|
-
this.blockManager.on('content', (content) => {
|
|
88
|
-
process.stdout.write(content);
|
|
89
|
-
this.responseString += content;
|
|
90
|
-
});
|
|
91
|
-
this.blockManager.on('codeBlock', (codeBlock) => {
|
|
92
|
-
this.handleCodeBlock(codeBlock);
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Sets up an animation interval for code generation visualization.
|
|
97
|
-
* @private
|
|
98
|
-
*/
|
|
99
|
-
setupAnimationInterval() {
|
|
100
|
-
process.stdout.write(colors_1.default.gray.bold('\nGenerating code... '));
|
|
101
|
-
let animationIndex = 0;
|
|
102
|
-
const animationChars = ['/', '|', '\\', '-'];
|
|
103
|
-
this.animationInterval = setInterval(() => {
|
|
104
|
-
process.stdout.write('\b'.repeat(1));
|
|
105
|
-
process.stdout.write(colors_1.default.gray.bold(animationChars[animationIndex]));
|
|
106
|
-
animationIndex = (animationIndex + 1) % animationChars.length;
|
|
107
|
-
}, 100);
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Clears the animation interval.
|
|
111
|
-
* @private
|
|
112
|
-
*/
|
|
113
|
-
clearAnimation() {
|
|
114
|
-
if (!this.animationInterval)
|
|
115
|
-
return;
|
|
116
|
-
clearInterval(this.animationInterval);
|
|
117
|
-
process.stdout.write('\b'.repeat(100));
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Handles the processing of a code block.
|
|
121
|
-
* @private
|
|
122
|
-
* @param {Object} codeBlock - The code block to process.
|
|
123
|
-
* @param {CurrentNewBlock} [codeBlock.currentNewBlock] - The current and new content of the code block.
|
|
124
|
-
* @param {string} [codeBlock.raw] - The raw content of the code block.
|
|
125
|
-
*/
|
|
126
|
-
handleCodeBlock(codeBlock) {
|
|
127
|
-
const { currentNewBlock, raw } = codeBlock;
|
|
128
|
-
if (currentNewBlock?.currentContent && currentNewBlock?.newContent) {
|
|
129
|
-
this.displayCurrentNewBlock(currentNewBlock);
|
|
130
|
-
}
|
|
131
|
-
else if (raw) {
|
|
132
|
-
this.displayRawCodeBlock(raw);
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
process.stdout.write(` \n`);
|
|
136
|
-
}
|
|
137
|
-
this.responseString += raw || currentNewBlock;
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Displays the current and new content of a code block.
|
|
141
|
-
* @private
|
|
142
|
-
* @param {CurrentNewBlock} currentNewBlock - The current and new content of the code block.
|
|
143
|
-
*/
|
|
144
|
-
displayCurrentNewBlock(currentNewBlock) {
|
|
145
|
-
const language = currentNewBlock.language.split('\n')[0];
|
|
146
|
-
process.stdout.write(colors_1.default.gray.bold(`\`\`\`${language} \n`));
|
|
147
|
-
process.stdout.write(colors_1.default.gray.bold(`<<<<<<< CURRENT ${currentNewBlock.filePath}\n`));
|
|
148
|
-
try {
|
|
149
|
-
process.stdout.write((0, cli_highlight_1.default)(currentNewBlock.currentContent));
|
|
150
|
-
}
|
|
151
|
-
catch (error) {
|
|
152
|
-
process.stdout.write(currentNewBlock.currentContent);
|
|
153
|
-
}
|
|
154
|
-
process.stdout.write(colors_1.default.gray.bold('\n=======\n'));
|
|
155
|
-
try {
|
|
156
|
-
process.stdout.write((0, cli_highlight_1.default)(currentNewBlock.newContent));
|
|
157
|
-
}
|
|
158
|
-
catch (error) {
|
|
159
|
-
process.stdout.write(currentNewBlock.newContent);
|
|
160
|
-
}
|
|
161
|
-
process.stdout.write(colors_1.default.gray.bold('\n>>>>>>> NEW\n```'));
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Displays a raw code block.
|
|
165
|
-
* @private
|
|
166
|
-
* @param {string} raw - The raw content of the code block.
|
|
167
|
-
*/
|
|
168
|
-
displayRawCodeBlock(raw) {
|
|
169
|
-
process.stdout.write(` \n`);
|
|
170
|
-
process.stdout.write((0, cli_highlight_1.default)(raw));
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Sets up event listeners for the ChunkManager.
|
|
174
|
-
* @private
|
|
175
|
-
*/
|
|
176
|
-
setupChunkManagerEvents() {
|
|
177
|
-
this.chunkManager = new ChunkManager_1.default();
|
|
178
|
-
this.chunkManager.on('content', (buffer) => {
|
|
179
|
-
this.processChunkManagerContent(buffer);
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Processes the content received from the ChunkManager.
|
|
184
|
-
* @private
|
|
185
|
-
* @param {string} buffer - The buffer containing the chunk content.
|
|
186
|
-
*/
|
|
187
|
-
processChunkManagerContent(buffer) {
|
|
188
|
-
let convertedStream = this.gpt.convertStream(buffer);
|
|
189
|
-
while (convertedStream !== null) {
|
|
190
|
-
const { output, lastChar } = convertedStream;
|
|
191
|
-
this.blockManager.addContent(output);
|
|
192
|
-
this.chunkManager.clearBuffer(lastChar);
|
|
193
|
-
buffer = buffer.slice(lastChar);
|
|
194
|
-
convertedStream = this.gpt.convertStream(buffer);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Sets up event listeners for the response stream.
|
|
199
|
-
* @private
|
|
200
|
-
* @param {any} responseStream - The stream of responses from the AI model.
|
|
201
|
-
*/
|
|
202
|
-
setupResponseStreamEvents(responseStream) {
|
|
203
|
-
responseStream.data.on('data', this.handleResponseStreamData.bind(this));
|
|
204
|
-
responseStream.data.on('end', () => this.finalizeResponse());
|
|
205
|
-
responseStream.data.on('error', this.handleResponseStreamError.bind(this));
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Handles the data received from the response stream.
|
|
209
|
-
* @private
|
|
210
|
-
* @param {Buffer | undefined} chunk - The chunk of data received from the stream.
|
|
211
|
-
*/
|
|
212
|
-
handleResponseStreamData(chunk) {
|
|
213
|
-
if (!chunk)
|
|
214
|
-
return;
|
|
215
|
-
const chunkString = chunk.toString();
|
|
216
|
-
this.chunkManager.addChunk(chunkString);
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Handles errors that occur during the response stream.
|
|
220
|
-
* @private
|
|
221
|
-
* @param {Error} error - The error that occurred.
|
|
222
|
-
*/
|
|
223
|
-
handleResponseStreamError(error) {
|
|
224
|
-
console.error('Error streaming response:', error);
|
|
225
|
-
this.isProcessing = false;
|
|
226
|
-
process.stdout.write('\n');
|
|
227
|
-
this.emit('prompt');
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
* Finalizes the response processing.
|
|
231
|
-
* This method should be overridden in subclasses to provide specific finalization behavior.
|
|
232
|
-
* @protected
|
|
233
|
-
*/
|
|
234
|
-
finalizeResponse() {
|
|
235
|
-
this.isProcessing = false;
|
|
236
|
-
this.emit('responseFinalized', this.responseString);
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Loads context files specified in the options or defaults to the primary language's directory.
|
|
240
|
-
* @private
|
|
241
|
-
* @returns {Promise<void>}
|
|
242
|
-
*/
|
|
243
|
-
async loadContextFiles() {
|
|
244
|
-
try {
|
|
245
|
-
const config = (0, config_utils_1.getNearestClovingConfig)().config;
|
|
246
|
-
const primaryLanguage = config.languages.find((lang) => lang.primary);
|
|
247
|
-
const defaultDirectory = primaryLanguage ? primaryLanguage.directory : '.';
|
|
248
|
-
const testingDirectories = config.testingFrameworks?.map((framework) => framework.directory) || [];
|
|
249
|
-
const testingDirectory = testingDirectories[0];
|
|
250
|
-
let files = this.options.files || [defaultDirectory, testingDirectory].filter(Boolean);
|
|
251
|
-
if (files.length > 0) {
|
|
252
|
-
console.log(`\nBuilding AI prompt context...\n`);
|
|
253
|
-
}
|
|
254
|
-
for (const file of files) {
|
|
255
|
-
// Skip if the file is not a string
|
|
256
|
-
if (!file)
|
|
257
|
-
continue;
|
|
258
|
-
try {
|
|
259
|
-
const previousCount = Object.keys(this.contextFiles).length;
|
|
260
|
-
this.contextFiles = await (0, prompt_utils_2.addFileOrDirectoryToContext)(file, this.contextFiles, this.options);
|
|
261
|
-
const newCount = Object.keys(this.contextFiles).length;
|
|
262
|
-
const addedCount = newCount - previousCount;
|
|
263
|
-
const totalTokens = this.calculateTotalTokens();
|
|
264
|
-
console.log(colors_1.default.cyan(`📁 Loaded context from: ${colors_1.default.bold(file)}`));
|
|
265
|
-
console.log(colors_1.default.green(` ✅ Added ${addedCount} file(s) to context`));
|
|
266
|
-
console.log(colors_1.default.yellow(` 📊 Total tokens in context: ${totalTokens.toLocaleString()}\n`));
|
|
267
|
-
}
|
|
268
|
-
catch (fileError) {
|
|
269
|
-
console.error(colors_1.default.red(`Error loading context from ${file}:`), fileError);
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
catch (error) {
|
|
274
|
-
console.error(colors_1.default.red('Error loading context files:'), error);
|
|
275
|
-
throw new Error('Failed to load context files');
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
calculateTotalTokens() {
|
|
279
|
-
return Object.values(this.contextFiles).reduce((total, content) => {
|
|
280
|
-
return total + Math.ceil(content.length / 4);
|
|
281
|
-
}, 0);
|
|
282
|
-
}
|
|
283
|
-
async refreshContext() {
|
|
284
|
-
await this.reloadContextFiles();
|
|
285
|
-
const updatedSystemPrompt = (0, prompt_utils_2.generateCodegenPrompt)(this.contextFiles);
|
|
286
|
-
this.chatHistory[0] = { role: 'user', content: updatedSystemPrompt };
|
|
287
|
-
this.chatHistory[1] = { role: 'assistant', content: 'What would you like to do?' };
|
|
288
|
-
}
|
|
289
|
-
async reloadContextFiles() {
|
|
290
|
-
for (const filePath in this.contextFiles) {
|
|
291
|
-
try {
|
|
292
|
-
const content = await fs_1.default.promises.readFile(path_1.default.resolve(filePath), 'utf8');
|
|
293
|
-
this.contextFiles[filePath] = content;
|
|
294
|
-
}
|
|
295
|
-
catch (error) {
|
|
296
|
-
console.error(`Error reading file ${filePath}:`, error);
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
addUserPrompt(content) {
|
|
301
|
-
this.prompt = content;
|
|
302
|
-
this.chatHistory.push({ role: 'user', content });
|
|
303
|
-
}
|
|
304
|
-
addAssistantResponse(content) {
|
|
305
|
-
this.chatHistory.push({ role: 'assistant', content });
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
exports.default = StreamManager;
|