drift-it 0.1.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.
Files changed (138) hide show
  1. package/README.md +90 -0
  2. package/dist/commands/agent/create.d.ts +3 -0
  3. package/dist/commands/agent/create.d.ts.map +1 -0
  4. package/dist/commands/agent/create.js +30 -0
  5. package/dist/commands/agent/create.js.map +1 -0
  6. package/dist/commands/agent/delete.d.ts +3 -0
  7. package/dist/commands/agent/delete.d.ts.map +1 -0
  8. package/dist/commands/agent/delete.js +34 -0
  9. package/dist/commands/agent/delete.js.map +1 -0
  10. package/dist/commands/agent/index.d.ts +3 -0
  11. package/dist/commands/agent/index.d.ts.map +1 -0
  12. package/dist/commands/agent/index.js +20 -0
  13. package/dist/commands/agent/index.js.map +1 -0
  14. package/dist/commands/agent/list.d.ts +3 -0
  15. package/dist/commands/agent/list.d.ts.map +1 -0
  16. package/dist/commands/agent/list.js +31 -0
  17. package/dist/commands/agent/list.js.map +1 -0
  18. package/dist/commands/agent/rename.d.ts +3 -0
  19. package/dist/commands/agent/rename.d.ts.map +1 -0
  20. package/dist/commands/agent/rename.js +19 -0
  21. package/dist/commands/agent/rename.js.map +1 -0
  22. package/dist/commands/agent/run.d.ts +3 -0
  23. package/dist/commands/agent/run.d.ts.map +1 -0
  24. package/dist/commands/agent/run.js +28 -0
  25. package/dist/commands/agent/run.js.map +1 -0
  26. package/dist/commands/agent/update.d.ts +3 -0
  27. package/dist/commands/agent/update.d.ts.map +1 -0
  28. package/dist/commands/agent/update.js +32 -0
  29. package/dist/commands/agent/update.js.map +1 -0
  30. package/dist/commands/agent/view.d.ts +3 -0
  31. package/dist/commands/agent/view.d.ts.map +1 -0
  32. package/dist/commands/agent/view.js +24 -0
  33. package/dist/commands/agent/view.js.map +1 -0
  34. package/dist/commands/config/index.d.ts +3 -0
  35. package/dist/commands/config/index.d.ts.map +1 -0
  36. package/dist/commands/config/index.js +12 -0
  37. package/dist/commands/config/index.js.map +1 -0
  38. package/dist/commands/config/reset.d.ts +3 -0
  39. package/dist/commands/config/reset.d.ts.map +1 -0
  40. package/dist/commands/config/reset.js +31 -0
  41. package/dist/commands/config/reset.js.map +1 -0
  42. package/dist/commands/config/setProvider.d.ts +3 -0
  43. package/dist/commands/config/setProvider.d.ts.map +1 -0
  44. package/dist/commands/config/setProvider.js +25 -0
  45. package/dist/commands/config/setProvider.js.map +1 -0
  46. package/dist/commands/config/view.d.ts +3 -0
  47. package/dist/commands/config/view.d.ts.map +1 -0
  48. package/dist/commands/config/view.js +24 -0
  49. package/dist/commands/config/view.js.map +1 -0
  50. package/dist/commands/doctor.d.ts +3 -0
  51. package/dist/commands/doctor.d.ts.map +1 -0
  52. package/dist/commands/doctor.js +68 -0
  53. package/dist/commands/doctor.js.map +1 -0
  54. package/dist/commands/init.d.ts +3 -0
  55. package/dist/commands/init.d.ts.map +1 -0
  56. package/dist/commands/init.js +83 -0
  57. package/dist/commands/init.js.map +1 -0
  58. package/dist/commands/pipeline/create.d.ts +3 -0
  59. package/dist/commands/pipeline/create.d.ts.map +1 -0
  60. package/dist/commands/pipeline/create.js +34 -0
  61. package/dist/commands/pipeline/create.js.map +1 -0
  62. package/dist/commands/pipeline/delete.d.ts +3 -0
  63. package/dist/commands/pipeline/delete.d.ts.map +1 -0
  64. package/dist/commands/pipeline/delete.js +31 -0
  65. package/dist/commands/pipeline/delete.js.map +1 -0
  66. package/dist/commands/pipeline/index.d.ts +3 -0
  67. package/dist/commands/pipeline/index.d.ts.map +1 -0
  68. package/dist/commands/pipeline/index.js +20 -0
  69. package/dist/commands/pipeline/index.js.map +1 -0
  70. package/dist/commands/pipeline/list.d.ts +3 -0
  71. package/dist/commands/pipeline/list.d.ts.map +1 -0
  72. package/dist/commands/pipeline/list.js +30 -0
  73. package/dist/commands/pipeline/list.js.map +1 -0
  74. package/dist/commands/pipeline/rename.d.ts +3 -0
  75. package/dist/commands/pipeline/rename.d.ts.map +1 -0
  76. package/dist/commands/pipeline/rename.js +18 -0
  77. package/dist/commands/pipeline/rename.js.map +1 -0
  78. package/dist/commands/pipeline/run.d.ts +3 -0
  79. package/dist/commands/pipeline/run.d.ts.map +1 -0
  80. package/dist/commands/pipeline/run.js +42 -0
  81. package/dist/commands/pipeline/run.js.map +1 -0
  82. package/dist/commands/pipeline/update.d.ts +3 -0
  83. package/dist/commands/pipeline/update.d.ts.map +1 -0
  84. package/dist/commands/pipeline/update.js +39 -0
  85. package/dist/commands/pipeline/update.js.map +1 -0
  86. package/dist/commands/pipeline/view.d.ts +3 -0
  87. package/dist/commands/pipeline/view.d.ts.map +1 -0
  88. package/dist/commands/pipeline/view.js +26 -0
  89. package/dist/commands/pipeline/view.js.map +1 -0
  90. package/dist/core/agentManager.d.ts +13 -0
  91. package/dist/core/agentManager.d.ts.map +1 -0
  92. package/dist/core/agentManager.js +118 -0
  93. package/dist/core/agentManager.js.map +1 -0
  94. package/dist/core/executor.d.ts +6 -0
  95. package/dist/core/executor.d.ts.map +1 -0
  96. package/dist/core/executor.js +31 -0
  97. package/dist/core/executor.js.map +1 -0
  98. package/dist/core/pipelineManager.d.ts +11 -0
  99. package/dist/core/pipelineManager.d.ts.map +1 -0
  100. package/dist/core/pipelineManager.js +99 -0
  101. package/dist/core/pipelineManager.js.map +1 -0
  102. package/dist/core/providers/AIProvider.d.ts +5 -0
  103. package/dist/core/providers/AIProvider.d.ts.map +1 -0
  104. package/dist/core/providers/AIProvider.js +2 -0
  105. package/dist/core/providers/AIProvider.js.map +1 -0
  106. package/dist/core/providers/clipboardProvider.d.ts +6 -0
  107. package/dist/core/providers/clipboardProvider.d.ts.map +1 -0
  108. package/dist/core/providers/clipboardProvider.js +24 -0
  109. package/dist/core/providers/clipboardProvider.js.map +1 -0
  110. package/dist/core/providers/ollamaProvider.d.ts +9 -0
  111. package/dist/core/providers/ollamaProvider.d.ts.map +1 -0
  112. package/dist/core/providers/ollamaProvider.js +35 -0
  113. package/dist/core/providers/ollamaProvider.js.map +1 -0
  114. package/dist/index.d.ts +3 -0
  115. package/dist/index.d.ts.map +1 -0
  116. package/dist/index.js +19 -0
  117. package/dist/index.js.map +1 -0
  118. package/dist/utils/fileLoader.d.ts +22 -0
  119. package/dist/utils/fileLoader.d.ts.map +1 -0
  120. package/dist/utils/fileLoader.js +85 -0
  121. package/dist/utils/fileLoader.js.map +1 -0
  122. package/dist/utils/logger.d.ts +10 -0
  123. package/dist/utils/logger.d.ts.map +1 -0
  124. package/dist/utils/logger.js +25 -0
  125. package/dist/utils/logger.js.map +1 -0
  126. package/dist/utils/promptBuilder.d.ts +2 -0
  127. package/dist/utils/promptBuilder.d.ts.map +1 -0
  128. package/dist/utils/promptBuilder.js +4 -0
  129. package/dist/utils/promptBuilder.js.map +1 -0
  130. package/dist/utils/suggestions.d.ts +6 -0
  131. package/dist/utils/suggestions.d.ts.map +1 -0
  132. package/dist/utils/suggestions.js +40 -0
  133. package/dist/utils/suggestions.js.map +1 -0
  134. package/dist/utils/validator.d.ts +3 -0
  135. package/dist/utils/validator.d.ts.map +1 -0
  136. package/dist/utils/validator.js +20 -0
  137. package/dist/utils/validator.js.map +1 -0
  138. package/package.json +43 -0
package/README.md ADDED
@@ -0,0 +1,90 @@
1
+ # Drift CLI
2
+
3
+ A developer-first CLI tool for creating custom AI agents, composing multi-agent pipelines, and running them locally.
4
+
5
+ **BYO AI** — Bring Your Own AI. Drift is an orchestration layer, not an AI provider.
6
+
7
+ ## Features
8
+
9
+ - **Custom AI Agents** — Create prompt-based agents for code review, testing, docs, and more
10
+ - **Multi-Agent Pipelines** — Chain agents with sequential output passing
11
+ - **Ollama Integration** — Run models locally with zero cloud dependency
12
+ - **Clipboard Mode** — Use GitHub Copilot or any AI tool via clipboard
13
+ - **Privacy-First** — No API keys, no cloud, no telemetry
14
+ - **Smart UX** — Interactive prompts, colored output, fuzzy "did you mean?" suggestions
15
+
16
+ ## Install
17
+
18
+ ```bash
19
+ npm install -g drift-it
20
+ ```
21
+
22
+ ## Quick Start
23
+
24
+ ```bash
25
+ # Initialize Drift
26
+ drift init
27
+
28
+ # Create an agent
29
+ drift agent create reviewer
30
+
31
+ # Run the agent on a file
32
+ drift agent run reviewer src/app.ts
33
+
34
+ # Create a pipeline
35
+ drift pipeline create code-quality
36
+
37
+ # Run the pipeline
38
+ drift pipeline run code-quality src/app.ts
39
+ ```
40
+
41
+ ## Commands
42
+
43
+ ### Agents
44
+ | Command | Description |
45
+ |---|---|
46
+ | `drift agent create <name>` | Create a new agent |
47
+ | `drift agent list` | List all agents |
48
+ | `drift agent view <name>` | View agent details |
49
+ | `drift agent update <name>` | Update agent prompt |
50
+ | `drift agent rename <old> <new>` | Rename an agent |
51
+ | `drift agent delete <name>` | Delete an agent |
52
+ | `drift agent run <name> <file>` | Run an agent on a file |
53
+
54
+ ### Pipelines
55
+ | Command | Description |
56
+ |---|---|
57
+ | `drift pipeline create <name>` | Create a pipeline |
58
+ | `drift pipeline list` | List all pipelines |
59
+ | `drift pipeline view <name>` | View pipeline details |
60
+ | `drift pipeline update <name>` | Update pipeline steps |
61
+ | `drift pipeline rename <old> <new>` | Rename a pipeline |
62
+ | `drift pipeline delete <name>` | Delete a pipeline |
63
+ | `drift pipeline run <name> <file>` | Run a pipeline on a file |
64
+
65
+ ### Config
66
+ | Command | Description |
67
+ |---|---|
68
+ | `drift config view` | View current config |
69
+ | `drift config set-provider <p>` | Set provider (ollama/clipboard) |
70
+ | `drift config reset` | Reset to defaults |
71
+
72
+ ### System
73
+ | Command | Description |
74
+ |---|---|
75
+ | `drift init` | Initialize Drift |
76
+ | `drift doctor` | Check setup |
77
+
78
+ ## Providers
79
+
80
+ - **Ollama** (default) — Local LLM via `http://localhost:11434`
81
+ - **Clipboard** — Copy prompt to clipboard, paste into any AI tool
82
+
83
+ ## Requirements
84
+
85
+ - Node.js 20+
86
+ - Ollama (optional, for ollama provider)
87
+
88
+ ## License
89
+
90
+ MIT
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerAgentCreateCommand(agent: Command): void;
3
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,QA0BxD"}
@@ -0,0 +1,30 @@
1
+ import inquirer from "inquirer";
2
+ import { logger } from "../../utils/logger.js";
3
+ import { createAgent } from "../../core/agentManager.js";
4
+ export function registerAgentCreateCommand(agent) {
5
+ agent
6
+ .command("create <name>")
7
+ .description("Create a new AI agent with a custom prompt")
8
+ .action(async (name) => {
9
+ try {
10
+ const { prompt } = await inquirer.prompt([
11
+ {
12
+ type: "editor",
13
+ name: "prompt",
14
+ message: "Enter the system prompt for this agent (opens your editor):",
15
+ },
16
+ ]);
17
+ if (!prompt || prompt.trim().length === 0) {
18
+ logger.error("Prompt cannot be empty.");
19
+ process.exit(1);
20
+ }
21
+ await createAgent(name, prompt.trim());
22
+ logger.success(`Agent '${name}' created successfully.`);
23
+ }
24
+ catch (err) {
25
+ logger.error(err.message);
26
+ process.exit(1);
27
+ }
28
+ });
29
+ }
30
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/agent/create.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,KAAK;SACF,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAqB;gBAC3D;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,6DAA6D;iBACvE;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1C,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACvC,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,yBAAyB,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerAgentDeleteCommand(agent: Command): void;
3
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,QAiCxD"}
@@ -0,0 +1,34 @@
1
+ import inquirer from "inquirer";
2
+ import { logger } from "../../utils/logger.js";
3
+ import { deleteAgent } from "../../core/agentManager.js";
4
+ export function registerAgentDeleteCommand(agent) {
5
+ agent
6
+ .command("delete <name>")
7
+ .description("Delete an agent")
8
+ .action(async (name) => {
9
+ try {
10
+ const { confirm } = await inquirer.prompt([
11
+ {
12
+ type: "confirm",
13
+ name: "confirm",
14
+ message: `Are you sure you want to delete agent '${name}'?`,
15
+ default: false,
16
+ },
17
+ ]);
18
+ if (!confirm) {
19
+ logger.info("Deletion cancelled.");
20
+ return;
21
+ }
22
+ const affectedPipelines = await deleteAgent(name);
23
+ logger.success(`Agent '${name}' deleted.`);
24
+ if (affectedPipelines.length > 0) {
25
+ logger.warn(`The following pipelines referenced this agent and may need updating: ${affectedPipelines.join(", ")}`);
26
+ }
27
+ }
28
+ catch (err) {
29
+ logger.error(err.message);
30
+ process.exit(1);
31
+ }
32
+ });
33
+ }
34
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/agent/delete.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,KAAK;SACF,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,iBAAiB,CAAC;SAC9B,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAuB;gBAC9D;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,0CAA0C,IAAI,IAAI;oBAC3D,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,MAAM,iBAAiB,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,YAAY,CAAC,CAAC;YAE3C,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,IAAI,CACT,wEAAwE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvG,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerAgentCommands(program: Command): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAYrD"}
@@ -0,0 +1,20 @@
1
+ import { registerAgentCreateCommand } from "./create.js";
2
+ import { registerAgentListCommand } from "./list.js";
3
+ import { registerAgentViewCommand } from "./view.js";
4
+ import { registerAgentUpdateCommand } from "./update.js";
5
+ import { registerAgentRenameCommand } from "./rename.js";
6
+ import { registerAgentDeleteCommand } from "./delete.js";
7
+ import { registerAgentRunCommand } from "./run.js";
8
+ export function registerAgentCommands(program) {
9
+ const agent = program
10
+ .command("agent")
11
+ .description("Manage AI agents — create, list, view, update, rename, delete, run");
12
+ registerAgentCreateCommand(agent);
13
+ registerAgentListCommand(agent);
14
+ registerAgentViewCommand(agent);
15
+ registerAgentUpdateCommand(agent);
16
+ registerAgentRenameCommand(agent);
17
+ registerAgentDeleteCommand(agent);
18
+ registerAgentRunCommand(agent);
19
+ }
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,KAAK,GAAG,OAAO;SAClB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,oEAAoE,CAAC,CAAC;IAErF,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAClC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAChC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAChC,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAClC,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAClC,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAClC,uBAAuB,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerAgentListCommand(agent: Command): void;
3
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,QA2BtD"}
@@ -0,0 +1,31 @@
1
+ import chalk from "chalk";
2
+ import { logger } from "../../utils/logger.js";
3
+ import { listAgents } from "../../core/agentManager.js";
4
+ export function registerAgentListCommand(agent) {
5
+ agent
6
+ .command("list")
7
+ .description("List all available agents")
8
+ .action(async () => {
9
+ try {
10
+ const agents = await listAgents();
11
+ if (agents.length === 0) {
12
+ logger.info("No agents found. Create one with: drift agent create <name>");
13
+ return;
14
+ }
15
+ logger.heading("Agents");
16
+ console.log();
17
+ for (const a of agents) {
18
+ const preview = a.prompt.length > 60 ? a.prompt.substring(0, 60) + "..." : a.prompt;
19
+ console.log(` ${chalk.bold.cyan(a.name)}`);
20
+ console.log(` ${chalk.dim(preview)}`);
21
+ console.log();
22
+ }
23
+ logger.dim(`${agents.length} agent(s) total`);
24
+ }
25
+ catch (err) {
26
+ logger.error(err.message);
27
+ process.exit(1);
28
+ }
29
+ });
30
+ }
31
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/agent/list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;gBAC3E,OAAO;YACT,CAAC;YAED,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACzB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,MAAM,OAAO,GACX,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACtE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,iBAAiB,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerAgentRenameCommand(agent: Command): void;
3
+ //# sourceMappingURL=rename.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/rename.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,QAcxD"}
@@ -0,0 +1,19 @@
1
+ import { logger } from "../../utils/logger.js";
2
+ import { renameAgent } from "../../core/agentManager.js";
3
+ export function registerAgentRenameCommand(agent) {
4
+ agent
5
+ .command("rename <old> <new>")
6
+ .description("Rename an agent (also updates pipelines referencing it)")
7
+ .action(async (oldName, newName) => {
8
+ try {
9
+ await renameAgent(oldName, newName);
10
+ logger.success(`Agent '${oldName}' renamed to '${newName}'.`);
11
+ logger.info("Any pipelines referencing this agent have been updated.");
12
+ }
13
+ catch (err) {
14
+ logger.error(err.message);
15
+ process.exit(1);
16
+ }
17
+ });
18
+ }
19
+ //# sourceMappingURL=rename.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename.js","sourceRoot":"","sources":["../../../src/commands/agent/rename.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,KAAK;SACF,OAAO,CAAC,oBAAoB,CAAC;SAC7B,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAAe,EAAE,EAAE;QACjD,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACpC,MAAM,CAAC,OAAO,CAAC,UAAU,OAAO,iBAAiB,OAAO,IAAI,CAAC,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerAgentRunCommand(agent: Command): void;
3
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,QAwBrD"}
@@ -0,0 +1,28 @@
1
+ import chalk from "chalk";
2
+ import { logger } from "../../utils/logger.js";
3
+ import { readFileContent } from "../../utils/fileLoader.js";
4
+ import { resolveProvider, runAgent } from "../../core/executor.js";
5
+ export function registerAgentRunCommand(agent) {
6
+ agent
7
+ .command("run <name> <file>")
8
+ .description("Run an agent on a file")
9
+ .option("-p, --provider <provider>", "Override the configured provider (ollama | clipboard)")
10
+ .action(async (name, file, opts) => {
11
+ try {
12
+ const content = await readFileContent(file);
13
+ const provider = await resolveProvider(opts.provider);
14
+ logger.step(`Running agent '${name}' with ${provider.name} provider...`);
15
+ console.log();
16
+ const result = await runAgent(name, content, provider);
17
+ console.log(chalk.bold(`===== ${name.toUpperCase()} =====`));
18
+ console.log(result);
19
+ console.log();
20
+ logger.success("Done.");
21
+ }
22
+ catch (err) {
23
+ logger.error(err.message);
24
+ process.exit(1);
25
+ }
26
+ });
27
+ }
28
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/agent/run.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,KAAK;SACF,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,2BAA2B,EAAE,uDAAuD,CAAC;SAC5F,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAAY,EAAE,IAA2B,EAAE,EAAE;QACxE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEtD,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,UAAU,QAAQ,CAAC,IAAI,cAAc,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAEvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerAgentUpdateCommand(agent: Command): void;
3
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,QA6BxD"}
@@ -0,0 +1,32 @@
1
+ import inquirer from "inquirer";
2
+ import { logger } from "../../utils/logger.js";
3
+ import { getAgent, updateAgent } from "../../core/agentManager.js";
4
+ export function registerAgentUpdateCommand(agent) {
5
+ agent
6
+ .command("update <name>")
7
+ .description("Update an agent's prompt")
8
+ .action(async (name) => {
9
+ try {
10
+ const existing = await getAgent(name);
11
+ const { prompt } = await inquirer.prompt([
12
+ {
13
+ type: "editor",
14
+ name: "prompt",
15
+ message: "Edit the agent prompt (opens your editor):",
16
+ default: existing.prompt,
17
+ },
18
+ ]);
19
+ if (!prompt || prompt.trim().length === 0) {
20
+ logger.error("Prompt cannot be empty.");
21
+ process.exit(1);
22
+ }
23
+ await updateAgent(name, prompt.trim());
24
+ logger.success(`Agent '${name}' updated successfully.`);
25
+ }
26
+ catch (err) {
27
+ logger.error(err.message);
28
+ process.exit(1);
29
+ }
30
+ });
31
+ }
32
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/agent/update.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,KAAK;SACF,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEtC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAqB;gBAC3D;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,4CAA4C;oBACrD,OAAO,EAAE,QAAQ,CAAC,MAAM;iBACzB;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1C,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACvC,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,yBAAyB,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerAgentViewCommand(agent: Command): void;
3
+ //# sourceMappingURL=view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,QAkBtD"}
@@ -0,0 +1,24 @@
1
+ import chalk from "chalk";
2
+ import { logger } from "../../utils/logger.js";
3
+ import { getAgent } from "../../core/agentManager.js";
4
+ export function registerAgentViewCommand(agent) {
5
+ agent
6
+ .command("view <name>")
7
+ .description("View an agent's details")
8
+ .action(async (name) => {
9
+ try {
10
+ const a = await getAgent(name);
11
+ console.log();
12
+ logger.heading(`Agent: ${a.name}`);
13
+ console.log();
14
+ console.log(chalk.bold("Prompt:"));
15
+ console.log(a.prompt);
16
+ console.log();
17
+ }
18
+ catch (err) {
19
+ logger.error(err.message);
20
+ process.exit(1);
21
+ }
22
+ });
23
+ }
24
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/commands/agent/view.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,KAAK;SACF,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,yBAAyB,CAAC;SACtC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACtB,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerConfigCommands(program: Command): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,QAQtD"}
@@ -0,0 +1,12 @@
1
+ import { registerSetProviderCommand } from "./setProvider.js";
2
+ import { registerConfigViewCommand } from "./view.js";
3
+ import { registerConfigResetCommand } from "./reset.js";
4
+ export function registerConfigCommands(program) {
5
+ const config = program
6
+ .command("config")
7
+ .description("Manage Drift configuration — set-provider, view, reset");
8
+ registerSetProviderCommand(config);
9
+ registerConfigViewCommand(config);
10
+ registerConfigResetCommand(config);
11
+ }
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,MAAM,GAAG,OAAO;SACnB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,wDAAwD,CAAC,CAAC;IAEzE,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerConfigResetCommand(config: Command): void;
3
+ //# sourceMappingURL=reset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../../src/commands/config/reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,QA2BzD"}
@@ -0,0 +1,31 @@
1
+ import inquirer from "inquirer";
2
+ import { logger } from "../../utils/logger.js";
3
+ import { writeConfig, DEFAULT_CONFIG } from "../../utils/fileLoader.js";
4
+ export function registerConfigResetCommand(config) {
5
+ config
6
+ .command("reset")
7
+ .description("Reset Drift configuration to defaults")
8
+ .action(async () => {
9
+ try {
10
+ const { confirm } = await inquirer.prompt([
11
+ {
12
+ type: "confirm",
13
+ name: "confirm",
14
+ message: "Reset configuration to defaults? (provider: ollama, model: llama3)",
15
+ default: false,
16
+ },
17
+ ]);
18
+ if (!confirm) {
19
+ logger.info("Reset cancelled.");
20
+ return;
21
+ }
22
+ await writeConfig({ ...DEFAULT_CONFIG });
23
+ logger.success("Configuration reset to defaults.");
24
+ }
25
+ catch (err) {
26
+ logger.error(err.message);
27
+ process.exit(1);
28
+ }
29
+ });
30
+ }
31
+ //# sourceMappingURL=reset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/commands/config/reset.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAExE,MAAM,UAAU,0BAA0B,CAAC,MAAe;IACxD,MAAM;SACH,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAuB;gBAC9D;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,oEAAoE;oBAC7E,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YAED,MAAM,WAAW,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC,CAAC;YACzC,MAAM,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerSetProviderCommand(config: Command): void;
3
+ //# sourceMappingURL=setProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setProvider.d.ts","sourceRoot":"","sources":["../../../src/commands/config/setProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,QAoBzD"}
@@ -0,0 +1,25 @@
1
+ import { logger } from "../../utils/logger.js";
2
+ import { getConfig, writeConfig } from "../../utils/fileLoader.js";
3
+ const VALID_PROVIDERS = ["ollama", "clipboard"];
4
+ export function registerSetProviderCommand(config) {
5
+ config
6
+ .command("set-provider <provider>")
7
+ .description("Set the default AI provider (ollama | clipboard)")
8
+ .action(async (provider) => {
9
+ try {
10
+ if (!VALID_PROVIDERS.includes(provider)) {
11
+ logger.error(`Invalid provider '${provider}'. Available: ${VALID_PROVIDERS.join(", ")}`);
12
+ process.exit(1);
13
+ }
14
+ const current = await getConfig();
15
+ current.provider = provider;
16
+ await writeConfig(current);
17
+ logger.success(`Provider set to '${provider}'.`);
18
+ }
19
+ catch (err) {
20
+ logger.error(err.message);
21
+ process.exit(1);
22
+ }
23
+ });
24
+ }
25
+ //# sourceMappingURL=setProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setProvider.js","sourceRoot":"","sources":["../../../src/commands/config/setProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAU,CAAC;AAEzD,MAAM,UAAU,0BAA0B,CAAC,MAAe;IACxD,MAAM;SACH,OAAO,CAAC,yBAAyB,CAAC;SAClC,WAAW,CAAC,kDAAkD,CAAC;SAC/D,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE;QACjC,IAAI,CAAC;YACH,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAA0C,CAAC,EAAE,CAAC;gBAC1E,MAAM,CAAC,KAAK,CAAC,qBAAqB,QAAQ,iBAAiB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,SAAS,EAAE,CAAC;YAClC,OAAO,CAAC,QAAQ,GAAG,QAAkC,CAAC;YACtD,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM,CAAC,OAAO,CAAC,oBAAoB,QAAQ,IAAI,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerConfigViewCommand(config: Command): void;
3
+ //# sourceMappingURL=view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/commands/config/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,OAAO,QAkBxD"}
@@ -0,0 +1,24 @@
1
+ import chalk from "chalk";
2
+ import { logger } from "../../utils/logger.js";
3
+ import { getConfig } from "../../utils/fileLoader.js";
4
+ export function registerConfigViewCommand(config) {
5
+ config
6
+ .command("view")
7
+ .description("View the current Drift configuration")
8
+ .action(async () => {
9
+ try {
10
+ const cfg = await getConfig();
11
+ console.log();
12
+ logger.heading("Drift Configuration");
13
+ console.log();
14
+ console.log(` ${chalk.bold("Provider:")} ${chalk.cyan(cfg.provider)}`);
15
+ console.log(` ${chalk.bold("Model:")} ${chalk.cyan(cfg.model)}`);
16
+ console.log();
17
+ }
18
+ catch (err) {
19
+ logger.error(err.message);
20
+ process.exit(1);
21
+ }
22
+ });
23
+ }
24
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/commands/config/view.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,MAAM,UAAU,yBAAyB,CAAC,MAAe;IACvD,MAAM;SACH,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtE,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerDoctorCommand(program: Command): void;
3
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QA8DrD"}