@output.ai/cli 0.0.4 → 0.0.5
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/dist/commands/agents/init.d.ts +0 -7
- package/dist/commands/agents/init.js +8 -145
- package/dist/commands/agents/init.spec.js +29 -24
- package/dist/commands/workflow/plan.d.ts +12 -0
- package/dist/commands/workflow/plan.js +65 -0
- package/dist/commands/workflow/plan.spec.d.ts +1 -0
- package/dist/commands/workflow/plan.spec.js +339 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.js +4 -0
- package/dist/services/claude_client.d.ts +13 -0
- package/dist/services/claude_client.integration.test.d.ts +1 -0
- package/dist/services/claude_client.integration.test.js +43 -0
- package/dist/services/claude_client.js +124 -0
- package/dist/services/claude_client.spec.d.ts +1 -0
- package/dist/services/claude_client.spec.js +141 -0
- package/dist/services/coding_agents.d.ts +43 -0
- package/dist/services/coding_agents.js +230 -0
- package/dist/services/coding_agents.spec.d.ts +1 -0
- package/dist/services/coding_agents.spec.js +254 -0
- package/dist/services/generate_plan_name@v1.prompt +24 -0
- package/dist/services/workflow_planner.d.ts +20 -0
- package/dist/services/workflow_planner.js +83 -0
- package/dist/services/workflow_planner.spec.d.ts +1 -0
- package/dist/services/workflow_planner.spec.js +208 -0
- package/dist/templates/agent_instructions/commands/plan_workflow.md.template +180 -386
- package/dist/test_helpers/mocks.d.ts +37 -0
- package/dist/test_helpers/mocks.js +67 -0
- package/package.json +9 -3
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared test mocks for workflow plan command
|
|
3
|
+
*/
|
|
4
|
+
import { vi } from 'vitest';
|
|
5
|
+
/**
|
|
6
|
+
* Mock for @anthropic-ai/claude-agent-sdk
|
|
7
|
+
*/
|
|
8
|
+
export const mockClaudeAgentSDK = {
|
|
9
|
+
Agent: vi.fn().mockImplementation(() => ({
|
|
10
|
+
execute: vi.fn().mockResolvedValue({
|
|
11
|
+
output: 'Mock plan output from claude-code'
|
|
12
|
+
})
|
|
13
|
+
}))
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Mock for @output.ai/llm
|
|
17
|
+
*/
|
|
18
|
+
export const mockLLM = {
|
|
19
|
+
generateText: vi.fn().mockResolvedValue('workflow_plan_name')
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Mock for child_process spawn (for agents init)
|
|
23
|
+
*/
|
|
24
|
+
export const mockSpawn = vi.fn().mockImplementation(() => {
|
|
25
|
+
const mockChild = {
|
|
26
|
+
on: vi.fn((event, callback) => {
|
|
27
|
+
if (event === 'close') {
|
|
28
|
+
// Simulate successful process exit
|
|
29
|
+
setTimeout(() => callback(0), 0);
|
|
30
|
+
}
|
|
31
|
+
return mockChild;
|
|
32
|
+
})
|
|
33
|
+
};
|
|
34
|
+
return mockChild;
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* Mock for fs/promises
|
|
38
|
+
*/
|
|
39
|
+
export const mockFS = {
|
|
40
|
+
access: vi.fn().mockRejectedValue({ code: 'ENOENT' }), // Default: file doesn't exist
|
|
41
|
+
mkdir: vi.fn().mockResolvedValue(undefined),
|
|
42
|
+
writeFile: vi.fn().mockResolvedValue(undefined),
|
|
43
|
+
readFile: vi.fn().mockResolvedValue('template content'),
|
|
44
|
+
stat: vi.fn().mockRejectedValue({ code: 'ENOENT' })
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Mock for @inquirer/prompts
|
|
48
|
+
*/
|
|
49
|
+
export const mockInquirer = {
|
|
50
|
+
input: vi.fn().mockResolvedValue('Mock workflow description'),
|
|
51
|
+
confirm: vi.fn().mockResolvedValue(true)
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Reset all mocks
|
|
55
|
+
*/
|
|
56
|
+
export function resetAllMocks() {
|
|
57
|
+
vi.clearAllMocks();
|
|
58
|
+
// Reset mock implementations to defaults
|
|
59
|
+
mockFS.access.mockRejectedValue({ code: 'ENOENT' });
|
|
60
|
+
mockFS.mkdir.mockResolvedValue(undefined);
|
|
61
|
+
mockFS.writeFile.mockResolvedValue(undefined);
|
|
62
|
+
mockFS.readFile.mockResolvedValue('template content');
|
|
63
|
+
mockFS.stat.mockRejectedValue({ code: 'ENOENT' });
|
|
64
|
+
mockLLM.generateText.mockResolvedValue('workflow_plan_name');
|
|
65
|
+
mockInquirer.input.mockResolvedValue('Mock workflow description');
|
|
66
|
+
mockInquirer.confirm.mockResolvedValue(true);
|
|
67
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@output.ai/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"description": "CLI for Output.ai workflow generation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -14,20 +14,26 @@
|
|
|
14
14
|
"output": "./bin/run.js"
|
|
15
15
|
},
|
|
16
16
|
"scripts": {
|
|
17
|
-
"build": "rm -rf ./dist && tsc && copyfiles -u 1 './src/templates/**/*.template' './src/templates/**/.env.template' './src/templates/**/*.prompt.template' dist",
|
|
17
|
+
"build": "rm -rf ./dist && tsc && copyfiles -u 1 './src/templates/**/*.template' './src/templates/**/.env.template' './src/templates/**/*.prompt.template' './src/**/*.prompt' dist",
|
|
18
18
|
"test": "vitest run",
|
|
19
19
|
"generate:api": "orval --config ./orval.config.ts",
|
|
20
20
|
"prebuild": "npm run generate:api"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
+
"@anthropic-ai/claude-agent-sdk": "^0.1.10",
|
|
24
|
+
"@inquirer/prompts": "^7.8.6",
|
|
23
25
|
"@oclif/core": "^4",
|
|
24
26
|
"@oclif/plugin-help": "^6",
|
|
25
27
|
"@oclif/plugin-plugins": "^5",
|
|
26
28
|
"change-case": "^5.4.4",
|
|
27
29
|
"cli-table3": "^0.6.5",
|
|
30
|
+
"date-fns": "^4.1.0",
|
|
28
31
|
"handlebars": "^4.7.8",
|
|
29
32
|
"json-schema-library": "^10.2.1",
|
|
30
|
-
"ky": "^1.11.0"
|
|
33
|
+
"ky": "^1.11.0",
|
|
34
|
+
"local_llm": "file:../llm",
|
|
35
|
+
"local_prompt": "file:../prompt",
|
|
36
|
+
"ora": "^9.0.0"
|
|
31
37
|
},
|
|
32
38
|
"devDependencies": {
|
|
33
39
|
"@oclif/test": "^4",
|