openai-code-assistant 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -37
- package/dist/agents/supervisor-agent.d.ts.map +1 -1
- package/dist/agents/supervisor-agent.js +6 -4
- package/dist/agents/supervisor-agent.js.map +1 -1
- package/dist/generate-output.d.ts +1 -1
- package/dist/generate-output.d.ts.map +1 -1
- package/dist/generate-output.js +15 -7
- package/dist/generate-output.js.map +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/package.json +17 -2
package/README.md
CHANGED
|
@@ -1,44 +1,69 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
##
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
1
|
+
# openai-code-assistant
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
openai-code-assistant is a private command-line interface (CLI) tool that leverages OpenAI models by orchestrating AI agents to accomplish complex tasks such as code reviewing, generating documentation, refactoring, and providing intelligent assistance through AI models.
|
|
6
|
+
|
|
7
|
+
A key component of this orchestration is the use of a `supervisorAgent`, which significantly improves task efficiency and accuracy. Unlike a simple chatbot AI that typically focuses on generating responses or implementations directly, the `supervisorAgent` validates the solutions it produces. This validation process ensures that tasks are not only implemented but also carefully checked for correctness and completeness before completion. This layered approach of implementation plus validation helps avoid common errors and improves overall task quality.
|
|
8
|
+
|
|
9
|
+
The tool enables developers to interactively harness the power of OpenAI in their terminal workflows.
|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
You can install openai-code-assistant either globally or as a dependency in your project.
|
|
14
|
+
|
|
15
|
+
### Global Installation
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install -g openai-code-assistant
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
This allows you to run the CLI tool anywhere on your system using the command:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
openai-code-assistant
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Local Installation
|
|
28
|
+
|
|
29
|
+
Install openai-code-assistant as a dependency in your project's directory:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npm install openai-code-assistant
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Usage
|
|
36
|
+
|
|
37
|
+
1. Navigate to your project directory:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
cd ./my-project
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
2. Run the CLI tool:
|
|
44
|
+
|
|
45
|
+
- If installed globally:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
openai-code-assistant
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
- If installed locally:
|
|
52
|
+
|
|
20
53
|
```bash
|
|
21
|
-
|
|
54
|
+
npx openai-code-assistant
|
|
22
55
|
```
|
|
23
56
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
-
|
|
57
|
+
## Prerequisites
|
|
58
|
+
|
|
59
|
+
- Node.js installed (recommended version 16 or later).
|
|
60
|
+
- OpenAI API key set in your environment variables as `OPENAI_API_KEY`.
|
|
61
|
+
- Optionally, specify the OpenAI model name using the environment variable `OPENAI_MODEL_NAME`. Defaults to `gpt-4.1-mini` if not set.
|
|
27
62
|
|
|
28
|
-
##
|
|
29
|
-
- Customer Triage Agent receives and categorizes incoming customer requests.
|
|
30
|
-
- Manager Agent allocates tasks and resources based on triage results.
|
|
31
|
-
- Reviewer Agent audits completed tasks for quality assurance.
|
|
32
|
-
- Supervisor Agent oversees overall system health and performance.
|
|
63
|
+
## Privacy
|
|
33
64
|
|
|
34
|
-
|
|
35
|
-
- `OPENAI_MODEL_NAME`: Specifies the AI model name, defaults to "gpt-3.5-turbo" if not set.
|
|
36
|
-
- `WORKSPACE_ROOT`: Absolute path to the project workspace root, defaulting to the current working directory, configurable via `AGENT_WORKSPACE_ROOT`.
|
|
65
|
+
The source code of this project is private and not for public distribution. However, the use of openai-code-assistant in any projects, whether internal or external, is welcomed and encouraged.
|
|
37
66
|
|
|
38
|
-
##
|
|
39
|
-
Spey uses key dependencies including:
|
|
40
|
-
- `dotenv`: To load environment variables.
|
|
41
|
-
- `OpenAI API Client` (assumed, based on usage): For interacting with OpenAI models.
|
|
42
|
-
- Various utilities for file handling and workspace management.
|
|
67
|
+
## License
|
|
43
68
|
|
|
44
|
-
|
|
69
|
+
The source code is private and not licensed for public distribution or modification. Usage of the tool itself in projects is permitted as described in the Privacy section.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supervisor-agent.d.ts","sourceRoot":"","sources":["../../src/agents/supervisor-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"supervisor-agent.d.ts","sourceRoot":"","sources":["../../src/agents/supervisor-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAyCvC,eAAO,MAAM,eAAe,wBAa1B,CAAC"}
|
|
@@ -23,10 +23,12 @@ const supervisorInstructions = `You are the supervisor responsible for deliverin
|
|
|
23
23
|
|
|
24
24
|
Workflow:
|
|
25
25
|
1. Call triage_specialist with the raw user request to obtain the structured plan JSON.
|
|
26
|
-
2.
|
|
27
|
-
3.
|
|
28
|
-
4.
|
|
29
|
-
5.
|
|
26
|
+
2. If the plan contains actionable items, feed it to implementation_manager so it performs the necessary workspace edits (it will call coding and file tools). If the plan declares "no changes required", skip implementation and go to the final summary.
|
|
27
|
+
3. Feed that plan to implementation_manager so it performs the necessary workspace edits (it will call coding and file tools).
|
|
28
|
+
4. Only call qa_reviewer when implementation_manager actually made changes or when triage raises risk. Provide it with the original request plus the manager summary to confirm compliance.
|
|
29
|
+
5. Once implementation is done, call qa_reviewer with the original request plus the manager summary to confirm compliance.
|
|
30
|
+
6. If qa_reviewer returns "No", summarize the findings and either re-run implementation_manager or escalate.
|
|
31
|
+
7. Keep responses concise (under 400 words) and include a final section detailing files touched and outstanding questions.
|
|
30
32
|
|
|
31
33
|
You may directly use workspace tools for quick spot checks, but prefer the specialized agents whenever possible.`;
|
|
32
34
|
export const supervisorAgent = new Agent({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supervisor-agent.js","sourceRoot":"","sources":["../../src/agents/supervisor-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,CAAC;IAClD,QAAQ,EAAE,mBAAmB;IAC7B,eAAe,EACb,+HAA+H;CAClI,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;IACtC,QAAQ,EAAE,wBAAwB;IAClC,eAAe,EACb,0GAA0G;CAC7G,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC;IACxC,QAAQ,EAAE,aAAa;IACvB,eAAe,EACb,mGAAmG;CACtG,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG
|
|
1
|
+
{"version":3,"file":"supervisor-agent.js","sourceRoot":"","sources":["../../src/agents/supervisor-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,CAAC;IAClD,QAAQ,EAAE,mBAAmB;IAC7B,eAAe,EACb,+HAA+H;CAClI,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;IACtC,QAAQ,EAAE,wBAAwB;IAClC,eAAe,EACb,0GAA0G;CAC7G,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC;IACxC,QAAQ,EAAE,aAAa;IACvB,eAAe,EACb,mGAAmG;CACtG,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG;;;;;;;;;;;iHAWkF,CAAC;AAElH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,KAAK,CAAC;IACvC,IAAI,EAAE,kBAAkB;IACxB,YAAY,EAAE,sBAAsB;IACpC,KAAK,EAAE;QACL,UAAU;QACV,WAAW;QACX,YAAY;QACZ,iBAAiB;QACjB,qBAAqB;QACrB,sBAAsB;QACtB,uBAAuB;KACxB;IACD,KAAK,EAAE,iBAAiB;CACzB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-output.d.ts","sourceRoot":"","sources":["../src/generate-output.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-output.d.ts","sourceRoot":"","sources":["../src/generate-output.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAKvB,eAAO,MAAM,cAAc,GAAU,oCAIlC;IACD,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;CACpC,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAgB7B,CAAC"}
|
package/dist/generate-output.js
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
import "dotenv/config";
|
|
2
2
|
import { run } from "@openai/agents";
|
|
3
3
|
import { supervisorAgent } from "./agents/supervisor-agent.js";
|
|
4
|
-
import { marked } from "marked";
|
|
5
4
|
import { logOutputIteratively } from "./utils/cmd-operations.js";
|
|
6
5
|
export const generateOutput = async ({ input, conversationId, signal, }) => {
|
|
7
6
|
const logIntervalId = logOutputIteratively("thinking");
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
let result;
|
|
8
|
+
try {
|
|
9
|
+
result = await run(supervisorAgent, input, {
|
|
10
|
+
conversationId,
|
|
11
|
+
...(signal ? { signal } : undefined),
|
|
12
|
+
});
|
|
13
|
+
// console.log(result.runContext.usage);
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
console.error(error?.message);
|
|
17
|
+
}
|
|
18
|
+
finally {
|
|
19
|
+
clearInterval(logIntervalId);
|
|
20
|
+
}
|
|
21
|
+
return result?.finalOutput;
|
|
14
22
|
};
|
|
15
23
|
//# sourceMappingURL=generate-output.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-output.js","sourceRoot":"","sources":["../src/generate-output.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"generate-output.js","sourceRoot":"","sources":["../src/generate-output.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,EACnC,KAAK,EACL,cAAc,EACd,MAAM,GAKP,EAA+B,EAAE;IAChC,MAAM,aAAa,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACvD,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE;YACzC,cAAc;YACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SACrC,CAAC,CAAC;QACH,wCAAwC;IAC1C,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;YAAS,CAAC;QACT,aAAa,CAAC,aAAa,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,MAAM,EAAE,WAAW,CAAC;AAC7B,CAAC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import "dotenv/config";
|
|
3
3
|
import OpenAI from "openai";
|
|
4
|
+
import chalk from "chalk";
|
|
4
5
|
import { marked } from "marked";
|
|
5
6
|
import { markedTerminal } from "marked-terminal";
|
|
6
7
|
import { generateOutput } from "./generate-output.js";
|
|
@@ -8,6 +9,10 @@ marked.use(markedTerminal({}));
|
|
|
8
9
|
const client = new OpenAI();
|
|
9
10
|
const { id: conversationId } = await client.conversations.create({});
|
|
10
11
|
// conversation history
|
|
12
|
+
// guardrails
|
|
13
|
+
// documentation
|
|
14
|
+
// interface
|
|
15
|
+
// commands
|
|
11
16
|
const abortController = new AbortController();
|
|
12
17
|
let isProcessingRequest = false;
|
|
13
18
|
console.log("Hello! How I can assist you today? Is there something specific you need help with?");
|
|
@@ -19,14 +24,16 @@ process.stdin.on("data", (chunk) => {
|
|
|
19
24
|
abortController.abort();
|
|
20
25
|
}
|
|
21
26
|
if (input.trim()) {
|
|
22
|
-
console.log(
|
|
27
|
+
console.log(chalk.cyan("received:") + " " + chunk.toString());
|
|
23
28
|
generateOutput({
|
|
24
29
|
input,
|
|
25
30
|
conversationId,
|
|
26
31
|
signal: abortController.signal,
|
|
27
32
|
})
|
|
28
33
|
.then((result) => {
|
|
29
|
-
|
|
34
|
+
if (result) {
|
|
35
|
+
console.log(`\r${marked(result)}`);
|
|
36
|
+
}
|
|
30
37
|
})
|
|
31
38
|
.finally(() => {
|
|
32
39
|
isProcessingRequest = false;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,eAAe,CAAC;AACvB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAQ,CAAC,CAAC;AAEtC,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;AAC5B,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAErE,uBAAuB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,eAAe,CAAC;AACvB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAQ,CAAC,CAAC;AAEtC,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;AAC5B,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAErE,uBAAuB;AACvB,aAAa;AACb,gBAAgB;AAChB,YAAY;AACZ,WAAW;AAEX,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;AAC9C,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAEhC,OAAO,CAAC,GAAG,CACT,oFAAoF,CACrF,CAAC;AACF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAEzC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IAE/B,IAAI,mBAAmB,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QACnC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE9D,cAAc,CAAC;YACb,KAAK;YACL,cAAc;YACd,MAAM,EAAE,eAAe,CAAC,MAAM;SAC/B,CAAC;aACC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,mBAAmB,GAAG,KAAK,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openai-code-assistant",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
6
6
|
"start": "node dist/index.js",
|
|
@@ -11,9 +11,23 @@
|
|
|
11
11
|
"bin": {
|
|
12
12
|
"openai-code-assistant": "dist/index.js"
|
|
13
13
|
},
|
|
14
|
-
"author": "",
|
|
14
|
+
"author": "https://github.com/shamshodisaev",
|
|
15
15
|
"license": "ISC",
|
|
16
16
|
"description": "",
|
|
17
|
+
"keywords": [
|
|
18
|
+
"OpenAI",
|
|
19
|
+
"AI agents",
|
|
20
|
+
"CLI tool",
|
|
21
|
+
"code assistant",
|
|
22
|
+
"code review",
|
|
23
|
+
"documentation generator",
|
|
24
|
+
"refactoring",
|
|
25
|
+
"supervisor agent",
|
|
26
|
+
"AI task orchestration",
|
|
27
|
+
"chatbot",
|
|
28
|
+
"OpenAI CLI",
|
|
29
|
+
"interactive assistant"
|
|
30
|
+
],
|
|
17
31
|
"type": "module",
|
|
18
32
|
"devDependencies": {
|
|
19
33
|
"@types/node": "^25.3.3",
|
|
@@ -26,6 +40,7 @@
|
|
|
26
40
|
"@openai/agents": "^0.5.3",
|
|
27
41
|
"@types/inquirer": "^9.0.9",
|
|
28
42
|
"@types/marked-terminal": "^6.1.1",
|
|
43
|
+
"chalk": "^5.6.2",
|
|
29
44
|
"dotenv": "^17.3.1",
|
|
30
45
|
"inquirer": "^13.3.0",
|
|
31
46
|
"marked": "^15.0.12",
|