@codemieai/code 0.0.3 ā 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/README.md +375 -325
- package/bin/codemie-claude.js +23 -0
- package/bin/codemie-code.js +49 -11
- package/bin/codemie-codex.js +12 -13
- package/dist/agents/adapters/claude-code.d.ts +5 -0
- package/dist/agents/adapters/claude-code.d.ts.map +1 -1
- package/dist/agents/adapters/claude-code.js +76 -18
- package/dist/agents/adapters/claude-code.js.map +1 -1
- package/dist/agents/adapters/codex.d.ts +5 -0
- package/dist/agents/adapters/codex.d.ts.map +1 -1
- package/dist/agents/adapters/codex.js +75 -17
- package/dist/agents/adapters/codex.js.map +1 -1
- package/dist/agents/codemie-code/agent.d.ts.map +1 -1
- package/dist/agents/codemie-code/agent.js +187 -21
- package/dist/agents/codemie-code/agent.js.map +1 -1
- package/dist/agents/codemie-code/config.d.ts.map +1 -1
- package/dist/agents/codemie-code/config.js +29 -27
- package/dist/agents/codemie-code/config.js.map +1 -1
- package/dist/agents/codemie-code/index.d.ts +16 -2
- package/dist/agents/codemie-code/index.d.ts.map +1 -1
- package/dist/agents/codemie-code/index.js +74 -6
- package/dist/agents/codemie-code/index.js.map +1 -1
- package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts +87 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts.map +1 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.js +957 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.js.map +1 -0
- package/dist/agents/codemie-code/modes/planMode.d.ts +116 -0
- package/dist/agents/codemie-code/modes/planMode.d.ts.map +1 -0
- package/dist/agents/codemie-code/modes/planMode.js +537 -0
- package/dist/agents/codemie-code/modes/planMode.js.map +1 -0
- package/dist/agents/codemie-code/prompts.d.ts +29 -0
- package/dist/agents/codemie-code/prompts.d.ts.map +1 -1
- package/dist/agents/codemie-code/prompts.js +129 -0
- package/dist/agents/codemie-code/prompts.js.map +1 -1
- package/dist/agents/codemie-code/storage/todoStorage.d.ts +78 -0
- package/dist/agents/codemie-code/storage/todoStorage.d.ts.map +1 -0
- package/dist/agents/codemie-code/storage/todoStorage.js +225 -0
- package/dist/agents/codemie-code/storage/todoStorage.js.map +1 -0
- package/dist/agents/codemie-code/tokenUtils.js +1 -1
- package/dist/agents/codemie-code/tokenUtils.js.map +1 -1
- package/dist/agents/codemie-code/tools/index.d.ts +26 -0
- package/dist/agents/codemie-code/tools/index.d.ts.map +1 -1
- package/dist/agents/codemie-code/tools/index.js +182 -14
- package/dist/agents/codemie-code/tools/index.js.map +1 -1
- package/dist/agents/codemie-code/tools/planning.d.ts +53 -0
- package/dist/agents/codemie-code/tools/planning.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/planning.js +224 -0
- package/dist/agents/codemie-code/tools/planning.js.map +1 -0
- package/dist/agents/codemie-code/types.d.ts +170 -6
- package/dist/agents/codemie-code/types.d.ts.map +1 -1
- package/dist/agents/codemie-code/types.js.map +1 -1
- package/dist/agents/codemie-code/ui/progressTracker.d.ts +125 -0
- package/dist/agents/codemie-code/ui/progressTracker.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/progressTracker.js +343 -0
- package/dist/agents/codemie-code/ui/progressTracker.js.map +1 -0
- package/dist/agents/codemie-code/ui/todoPanel.d.ts +112 -0
- package/dist/agents/codemie-code/ui/todoPanel.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/todoPanel.js +318 -0
- package/dist/agents/codemie-code/ui/todoPanel.js.map +1 -0
- package/dist/agents/codemie-code/ui.d.ts +106 -10
- package/dist/agents/codemie-code/ui.d.ts.map +1 -1
- package/dist/agents/codemie-code/ui.js +913 -129
- package/dist/agents/codemie-code/ui.js.map +1 -1
- package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts +87 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.js +293 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.js.map +1 -0
- package/dist/agents/codemie-code/utils/todoParser.d.ts +41 -0
- package/dist/agents/codemie-code/utils/todoParser.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/todoParser.js +305 -0
- package/dist/agents/codemie-code/utils/todoParser.js.map +1 -0
- package/dist/agents/codemie-code/utils/todoValidator.d.ts +65 -0
- package/dist/agents/codemie-code/utils/todoValidator.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/todoValidator.js +249 -0
- package/dist/agents/codemie-code/utils/todoValidator.js.map +1 -0
- package/dist/agents/codemie-code/validators/planValidator.d.ts +94 -0
- package/dist/agents/codemie-code/validators/planValidator.d.ts.map +1 -0
- package/dist/agents/codemie-code/validators/planValidator.js +281 -0
- package/dist/agents/codemie-code/validators/planValidator.js.map +1 -0
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +7 -5
- package/dist/agents/registry.js.map +1 -1
- package/dist/cli/commands/auth.d.ts +3 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +170 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +40 -13
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +209 -16
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/env.js +3 -3
- package/dist/cli/commands/env.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +2 -1
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +15 -9
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +177 -11
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/tools.d.ts +6 -0
- package/dist/cli/commands/tools.d.ts.map +1 -0
- package/dist/cli/commands/tools.js +244 -0
- package/dist/cli/commands/tools.js.map +1 -0
- package/dist/cli/commands/version.js +1 -1
- package/dist/cli/commands/version.js.map +1 -1
- package/dist/cli/commands/workflow.d.ts +6 -0
- package/dist/cli/commands/workflow.d.ts.map +1 -0
- package/dist/cli/commands/workflow.js +424 -0
- package/dist/cli/commands/workflow.js.map +1 -0
- package/dist/cli/index.js +39 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/clients/adapters/github.d.ts +17 -0
- package/dist/clients/adapters/github.d.ts.map +1 -0
- package/dist/clients/adapters/github.js +150 -0
- package/dist/clients/adapters/github.js.map +1 -0
- package/dist/clients/adapters/gitlab.d.ts +17 -0
- package/dist/clients/adapters/gitlab.d.ts.map +1 -0
- package/dist/clients/adapters/gitlab.js +147 -0
- package/dist/clients/adapters/gitlab.js.map +1 -0
- package/dist/clients/registry.d.ts +20 -0
- package/dist/clients/registry.d.ts.map +1 -0
- package/dist/clients/registry.js +27 -0
- package/dist/clients/registry.js.map +1 -0
- package/dist/tools/detector.d.ts +33 -0
- package/dist/tools/detector.d.ts.map +1 -0
- package/dist/tools/detector.js +145 -0
- package/dist/tools/detector.js.map +1 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/manager.d.ts +21 -0
- package/dist/tools/manager.d.ts.map +1 -0
- package/dist/tools/manager.js +104 -0
- package/dist/tools/manager.js.map +1 -0
- package/dist/tools/registry.d.ts +8 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +36 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/types.d.ts +41 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +5 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/types/sso.d.ts +42 -0
- package/dist/types/sso.d.ts.map +1 -0
- package/dist/types/sso.js +2 -0
- package/dist/types/sso.js.map +1 -0
- package/dist/utils/agent-compatibility.d.ts +32 -0
- package/dist/utils/agent-compatibility.d.ts.map +1 -0
- package/dist/utils/agent-compatibility.js +140 -0
- package/dist/utils/agent-compatibility.js.map +1 -0
- package/dist/utils/codemie-integration-validator.d.ts +17 -0
- package/dist/utils/codemie-integration-validator.d.ts.map +1 -0
- package/dist/utils/codemie-integration-validator.js +105 -0
- package/dist/utils/codemie-integration-validator.js.map +1 -0
- package/dist/utils/codemie-model-fetcher.d.ts +11 -0
- package/dist/utils/codemie-model-fetcher.d.ts.map +1 -0
- package/dist/utils/codemie-model-fetcher.js +242 -0
- package/dist/utils/codemie-model-fetcher.js.map +1 -0
- package/dist/utils/config-loader.d.ts +23 -1
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +73 -27
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/credential-store.d.ts +16 -0
- package/dist/utils/credential-store.d.ts.map +1 -0
- package/dist/utils/credential-store.js +109 -0
- package/dist/utils/credential-store.js.map +1 -0
- package/dist/utils/first-time.d.ts +1 -1
- package/dist/utils/first-time.d.ts.map +1 -1
- package/dist/utils/first-time.js +52 -71
- package/dist/utils/first-time.js.map +1 -1
- package/dist/utils/health-checker.d.ts.map +1 -1
- package/dist/utils/health-checker.js +5 -1
- package/dist/utils/health-checker.js.map +1 -1
- package/dist/utils/model-fetcher.d.ts.map +1 -1
- package/dist/utils/model-fetcher.js +15 -2
- package/dist/utils/model-fetcher.js.map +1 -1
- package/dist/utils/sso-auth.d.ts +15 -0
- package/dist/utils/sso-auth.d.ts.map +1 -0
- package/dist/utils/sso-auth.js +207 -0
- package/dist/utils/sso-auth.js.map +1 -0
- package/dist/utils/sso-gateway.d.ts +47 -0
- package/dist/utils/sso-gateway.d.ts.map +1 -0
- package/dist/utils/sso-gateway.js +298 -0
- package/dist/utils/sso-gateway.js.map +1 -0
- package/dist/workflows/detector.d.ts +37 -0
- package/dist/workflows/detector.d.ts.map +1 -0
- package/dist/workflows/detector.js +160 -0
- package/dist/workflows/detector.js.map +1 -0
- package/dist/workflows/index.d.ts +8 -0
- package/dist/workflows/index.d.ts.map +1 -0
- package/dist/workflows/index.js +8 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/installer.d.ts +24 -0
- package/dist/workflows/installer.d.ts.map +1 -0
- package/dist/workflows/installer.js +105 -0
- package/dist/workflows/installer.js.map +1 -0
- package/dist/workflows/registry.d.ts +29 -0
- package/dist/workflows/registry.d.ts.map +1 -0
- package/dist/workflows/registry.js +54 -0
- package/dist/workflows/registry.js.map +1 -0
- package/dist/workflows/templates/github/metadata.d.ts +6 -0
- package/dist/workflows/templates/github/metadata.d.ts.map +1 -0
- package/dist/workflows/templates/github/metadata.js +111 -0
- package/dist/workflows/templates/github/metadata.js.map +1 -0
- package/dist/workflows/templates/gitlab/metadata.d.ts +6 -0
- package/dist/workflows/templates/gitlab/metadata.d.ts.map +1 -0
- package/dist/workflows/templates/gitlab/metadata.js +14 -0
- package/dist/workflows/templates/gitlab/metadata.js.map +1 -0
- package/dist/workflows/types.d.ts +71 -0
- package/dist/workflows/types.d.ts.map +1 -0
- package/dist/workflows/types.js +5 -0
- package/dist/workflows/types.js.map +1 -0
- package/package.json +19 -6
- package/src/workflows/templates/github/code-ci.yml +529 -0
- package/src/workflows/templates/github/inline-fix.yml +665 -0
- package/src/workflows/templates/github/pr-review.yml +677 -0
- package/.claude/agents/README.md +0 -298
- package/.claude/agents/release-manager.md +0 -857
- package/.codemie/guides/git-workflow.md +0 -493
- package/CLAUDE.md +0 -225
- package/config.example.json +0 -10
- package/dist/agents/codemie-code/streaming/events.d.ts +0 -7
- package/dist/agents/codemie-code/streaming/events.d.ts.map +0 -1
- package/dist/agents/codemie-code/streaming/events.js +0 -7
- package/dist/agents/codemie-code/streaming/events.js.map +0 -1
- package/dist/agents/codemie-code/streaming/formatter.d.ts +0 -2
- package/dist/agents/codemie-code/streaming/formatter.d.ts.map +0 -1
- package/dist/agents/codemie-code/streaming/formatter.js +0 -2
- package/dist/agents/codemie-code/streaming/formatter.js.map +0 -1
- package/dist/agents/codemie-code/streaming/ui.d.ts +0 -2
- package/dist/agents/codemie-code/streaming/ui.d.ts.map +0 -1
- package/dist/agents/codemie-code/streaming/ui.js +0 -2
- package/dist/agents/codemie-code/streaming/ui.js.map +0 -1
- package/dist/agents/codemie-code/tools/command.d.ts +0 -2
- package/dist/agents/codemie-code/tools/command.d.ts.map +0 -1
- package/dist/agents/codemie-code/tools/command.js +0 -2
- package/dist/agents/codemie-code/tools/command.js.map +0 -1
- package/dist/agents/codemie-code/tools/filesystem.d.ts +0 -2
- package/dist/agents/codemie-code/tools/filesystem.d.ts.map +0 -1
- package/dist/agents/codemie-code/tools/filesystem.js +0 -2
- package/dist/agents/codemie-code/tools/filesystem.js.map +0 -1
- package/dist/agents/codemie-code/tools/git.d.ts +0 -2
- package/dist/agents/codemie-code/tools/git.d.ts.map +0 -1
- package/dist/agents/codemie-code/tools/git.js +0 -2
- package/dist/agents/codemie-code/tools/git.js.map +0 -1
- package/dist/agents/codemie-code/tools/security.d.ts +0 -2
- package/dist/agents/codemie-code/tools/security.d.ts.map +0 -1
- package/dist/agents/codemie-code/tools/security.js +0 -2
- package/dist/agents/codemie-code/tools/security.js.map +0 -1
- package/eslint.config.mjs +0 -43
- package/scripts/README.md +0 -80
- package/scripts/release.sh +0 -156
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plan Validator
|
|
3
|
+
*
|
|
4
|
+
* Validates the quality and completeness of generated plans
|
|
5
|
+
* Ensures plans follow best practices for structured execution
|
|
6
|
+
*/
|
|
7
|
+
import type { Todo } from '../types.js';
|
|
8
|
+
import { type TodoListValidationResult } from '../utils/todoValidator.js';
|
|
9
|
+
/**
|
|
10
|
+
* Plan validation criteria
|
|
11
|
+
*/
|
|
12
|
+
export interface PlanValidationCriteria {
|
|
13
|
+
/** Minimum number of steps required */
|
|
14
|
+
minSteps: number;
|
|
15
|
+
/** Maximum number of steps allowed */
|
|
16
|
+
maxSteps: number;
|
|
17
|
+
/** Minimum quality score (0-100) */
|
|
18
|
+
minQualityScore: number;
|
|
19
|
+
/** Required step patterns */
|
|
20
|
+
requiredPatterns: {
|
|
21
|
+
/** Must include discovery/analysis steps */
|
|
22
|
+
discovery: boolean;
|
|
23
|
+
/** Must include implementation steps */
|
|
24
|
+
implementation: boolean;
|
|
25
|
+
/** Must include testing/verification steps */
|
|
26
|
+
testing: boolean;
|
|
27
|
+
/** Must include completion/documentation steps */
|
|
28
|
+
completion: boolean;
|
|
29
|
+
};
|
|
30
|
+
/** Task-specific requirements */
|
|
31
|
+
taskSpecific: {
|
|
32
|
+
/** Must reference specific files or components */
|
|
33
|
+
specificReferences: boolean;
|
|
34
|
+
/** Must use action verbs */
|
|
35
|
+
actionVerbs: boolean;
|
|
36
|
+
/** Must have clear completion criteria */
|
|
37
|
+
completionCriteria: boolean;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Comprehensive plan validation result
|
|
42
|
+
*/
|
|
43
|
+
export interface PlanValidationResult extends TodoListValidationResult {
|
|
44
|
+
/** Whether plan meets all criteria */
|
|
45
|
+
meetsCriteria: boolean;
|
|
46
|
+
/** Detailed criteria assessment */
|
|
47
|
+
criteriaAssessment: {
|
|
48
|
+
stepCount: {
|
|
49
|
+
valid: boolean;
|
|
50
|
+
actual: number;
|
|
51
|
+
required: string;
|
|
52
|
+
};
|
|
53
|
+
qualityScore: {
|
|
54
|
+
valid: boolean;
|
|
55
|
+
actual: number;
|
|
56
|
+
required: number;
|
|
57
|
+
};
|
|
58
|
+
patterns: {
|
|
59
|
+
[key: string]: {
|
|
60
|
+
found: boolean;
|
|
61
|
+
description: string;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
taskSpecific: {
|
|
65
|
+
[key: string]: {
|
|
66
|
+
valid: boolean;
|
|
67
|
+
description: string;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
/** Plan type detected */
|
|
72
|
+
detectedType: 'feature' | 'bugfix' | 'analysis' | 'mixed';
|
|
73
|
+
/** Confidence in plan quality (0-100) */
|
|
74
|
+
confidence: number;
|
|
75
|
+
/** Recommended improvements */
|
|
76
|
+
improvements: string[];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Validate a plan against comprehensive criteria
|
|
80
|
+
*/
|
|
81
|
+
export declare function validatePlan(todos: Todo[], planType?: 'feature' | 'bugfix' | 'analysis', customCriteria?: Partial<PlanValidationCriteria>): PlanValidationResult;
|
|
82
|
+
/**
|
|
83
|
+
* Quick plan quality check
|
|
84
|
+
*/
|
|
85
|
+
export declare function quickPlanCheck(todos: Todo[]): {
|
|
86
|
+
isGood: boolean;
|
|
87
|
+
score: number;
|
|
88
|
+
topIssue?: string;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Get recommended criteria for task type
|
|
92
|
+
*/
|
|
93
|
+
export declare function getRecommendedCriteria(planType: 'feature' | 'bugfix' | 'analysis'): PlanValidationCriteria;
|
|
94
|
+
//# sourceMappingURL=planValidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planValidator.d.ts","sourceRoot":"","sources":["../../../../src/agents/codemie-code/validators/planValidator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAoB,KAAK,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAE5F;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IAEjB,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IAEjB,oCAAoC;IACpC,eAAe,EAAE,MAAM,CAAC;IAExB,6BAA6B;IAC7B,gBAAgB,EAAE;QAChB,4CAA4C;QAC5C,SAAS,EAAE,OAAO,CAAC;QAEnB,wCAAwC;QACxC,cAAc,EAAE,OAAO,CAAC;QAExB,8CAA8C;QAC9C,OAAO,EAAE,OAAO,CAAC;QAEjB,kDAAkD;QAClD,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IAEF,iCAAiC;IACjC,YAAY,EAAE;QACZ,kDAAkD;QAClD,kBAAkB,EAAE,OAAO,CAAC;QAE5B,4BAA4B;QAC5B,WAAW,EAAE,OAAO,CAAC;QAErB,0CAA0C;QAC1C,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,wBAAwB;IACpE,sCAAsC;IACtC,aAAa,EAAE,OAAO,CAAC;IAEvB,mCAAmC;IACnC,kBAAkB,EAAE;QAClB,SAAS,EAAE;YAAE,KAAK,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;QAChE,YAAY,EAAE;YAAE,KAAK,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;QACnE,QAAQ,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG;gBAAE,KAAK,EAAE,OAAO,CAAC;gBAAC,WAAW,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC;QACrE,YAAY,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG;gBAAE,KAAK,EAAE,OAAO,CAAC;gBAAC,WAAW,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC;KAC1E,CAAC;IAEF,yBAAyB;IACzB,YAAY,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IAE1D,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IAEnB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAwDD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,IAAI,EAAE,EACb,QAAQ,GAAE,SAAS,GAAG,QAAQ,GAAG,UAAsB,EACvD,cAAc,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAC/C,oBAAoB,CAsCtB;AA+MD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG;IAC7C,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAYA;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,sBAAsB,CAE1G"}
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plan Validator
|
|
3
|
+
*
|
|
4
|
+
* Validates the quality and completeness of generated plans
|
|
5
|
+
* Ensures plans follow best practices for structured execution
|
|
6
|
+
*/
|
|
7
|
+
import { validateTodoList } from '../utils/todoValidator.js';
|
|
8
|
+
/**
|
|
9
|
+
* Default validation criteria for different plan types
|
|
10
|
+
*/
|
|
11
|
+
const DEFAULT_CRITERIA = {
|
|
12
|
+
feature: {
|
|
13
|
+
minSteps: 3,
|
|
14
|
+
maxSteps: 8,
|
|
15
|
+
minQualityScore: 70,
|
|
16
|
+
requiredPatterns: {
|
|
17
|
+
discovery: true,
|
|
18
|
+
implementation: true,
|
|
19
|
+
testing: true,
|
|
20
|
+
completion: true
|
|
21
|
+
},
|
|
22
|
+
taskSpecific: {
|
|
23
|
+
specificReferences: true,
|
|
24
|
+
actionVerbs: true,
|
|
25
|
+
completionCriteria: true
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
bugfix: {
|
|
29
|
+
minSteps: 3,
|
|
30
|
+
maxSteps: 6,
|
|
31
|
+
minQualityScore: 75,
|
|
32
|
+
requiredPatterns: {
|
|
33
|
+
discovery: true,
|
|
34
|
+
implementation: true,
|
|
35
|
+
testing: true,
|
|
36
|
+
completion: false
|
|
37
|
+
},
|
|
38
|
+
taskSpecific: {
|
|
39
|
+
specificReferences: true,
|
|
40
|
+
actionVerbs: true,
|
|
41
|
+
completionCriteria: true
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
analysis: {
|
|
45
|
+
minSteps: 3,
|
|
46
|
+
maxSteps: 10,
|
|
47
|
+
minQualityScore: 65,
|
|
48
|
+
requiredPatterns: {
|
|
49
|
+
discovery: true,
|
|
50
|
+
implementation: false,
|
|
51
|
+
testing: false,
|
|
52
|
+
completion: true
|
|
53
|
+
},
|
|
54
|
+
taskSpecific: {
|
|
55
|
+
specificReferences: false,
|
|
56
|
+
actionVerbs: true,
|
|
57
|
+
completionCriteria: false
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Validate a plan against comprehensive criteria
|
|
63
|
+
*/
|
|
64
|
+
export function validatePlan(todos, planType = 'feature', customCriteria) {
|
|
65
|
+
// Get base validation from todo validator
|
|
66
|
+
const baseValidation = validateTodoList(todos);
|
|
67
|
+
// Get criteria for plan type
|
|
68
|
+
const criteria = {
|
|
69
|
+
...DEFAULT_CRITERIA[planType],
|
|
70
|
+
...customCriteria
|
|
71
|
+
};
|
|
72
|
+
// Detect actual plan type
|
|
73
|
+
const detectedType = detectPlanType(todos);
|
|
74
|
+
// Assess criteria
|
|
75
|
+
const criteriaAssessment = assessCriteria(todos, criteria);
|
|
76
|
+
// Calculate confidence
|
|
77
|
+
const confidence = calculateConfidence(baseValidation, criteriaAssessment);
|
|
78
|
+
// Check if all criteria are met
|
|
79
|
+
const meetsCriteria = baseValidation.isValid &&
|
|
80
|
+
criteriaAssessment.stepCount.valid &&
|
|
81
|
+
criteriaAssessment.qualityScore.valid &&
|
|
82
|
+
Object.values(criteriaAssessment.patterns).every(p => p.found) &&
|
|
83
|
+
Object.values(criteriaAssessment.taskSpecific).every(t => t.valid);
|
|
84
|
+
// Generate improvements
|
|
85
|
+
const improvements = generateImprovements(baseValidation, criteriaAssessment, criteria);
|
|
86
|
+
return {
|
|
87
|
+
...baseValidation,
|
|
88
|
+
meetsCriteria,
|
|
89
|
+
criteriaAssessment,
|
|
90
|
+
detectedType,
|
|
91
|
+
confidence,
|
|
92
|
+
improvements
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Detect plan type from todo content
|
|
97
|
+
*/
|
|
98
|
+
function detectPlanType(todos) {
|
|
99
|
+
const allContent = todos.map(t => t.content.toLowerCase()).join(' ');
|
|
100
|
+
let featureScore = 0;
|
|
101
|
+
let bugfixScore = 0;
|
|
102
|
+
let analysisScore = 0;
|
|
103
|
+
// Feature indicators
|
|
104
|
+
const featureWords = ['create', 'add', 'implement', 'build', 'develop', 'design', 'new'];
|
|
105
|
+
featureScore = featureWords.filter(word => allContent.includes(word)).length;
|
|
106
|
+
// Bugfix indicators
|
|
107
|
+
const bugfixWords = ['fix', 'repair', 'resolve', 'debug', 'issue', 'error', 'bug'];
|
|
108
|
+
bugfixScore = bugfixWords.filter(word => allContent.includes(word)).length;
|
|
109
|
+
// Analysis indicators
|
|
110
|
+
const analysisWords = ['analyze', 'review', 'understand', 'explore', 'examine', 'assess'];
|
|
111
|
+
analysisScore = analysisWords.filter(word => allContent.includes(word)).length;
|
|
112
|
+
// Determine type
|
|
113
|
+
if (featureScore > bugfixScore && featureScore > analysisScore)
|
|
114
|
+
return 'feature';
|
|
115
|
+
if (bugfixScore > featureScore && bugfixScore > analysisScore)
|
|
116
|
+
return 'bugfix';
|
|
117
|
+
if (analysisScore > featureScore && analysisScore > bugfixScore)
|
|
118
|
+
return 'analysis';
|
|
119
|
+
return 'mixed';
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Assess plan against specific criteria
|
|
123
|
+
*/
|
|
124
|
+
function assessCriteria(todos, criteria) {
|
|
125
|
+
const allContent = todos.map(t => t.content.toLowerCase()).join(' ');
|
|
126
|
+
// Step count assessment
|
|
127
|
+
const stepCount = {
|
|
128
|
+
valid: todos.length >= criteria.minSteps && todos.length <= criteria.maxSteps,
|
|
129
|
+
actual: todos.length,
|
|
130
|
+
required: `${criteria.minSteps}-${criteria.maxSteps}`
|
|
131
|
+
};
|
|
132
|
+
// Quality score assessment (from base validation)
|
|
133
|
+
const baseValidation = validateTodoList(todos);
|
|
134
|
+
const qualityScore = {
|
|
135
|
+
valid: baseValidation.overallQuality >= criteria.minQualityScore,
|
|
136
|
+
actual: baseValidation.overallQuality,
|
|
137
|
+
required: criteria.minQualityScore
|
|
138
|
+
};
|
|
139
|
+
// Pattern assessment
|
|
140
|
+
const patterns = {};
|
|
141
|
+
if (criteria.requiredPatterns.discovery) {
|
|
142
|
+
const discoveryWords = ['read', 'analyze', 'explore', 'understand', 'examine', 'review', 'investigate'];
|
|
143
|
+
patterns.discovery = {
|
|
144
|
+
found: discoveryWords.some(word => allContent.includes(word)),
|
|
145
|
+
description: 'Plan should include discovery/analysis steps'
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
if (criteria.requiredPatterns.implementation) {
|
|
149
|
+
const implWords = ['create', 'write', 'implement', 'build', 'modify', 'update', 'add', 'develop'];
|
|
150
|
+
patterns.implementation = {
|
|
151
|
+
found: implWords.some(word => allContent.includes(word)),
|
|
152
|
+
description: 'Plan should include implementation steps'
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
if (criteria.requiredPatterns.testing) {
|
|
156
|
+
const testWords = ['test', 'verify', 'validate', 'check', 'run'];
|
|
157
|
+
patterns.testing = {
|
|
158
|
+
found: testWords.some(word => allContent.includes(word)),
|
|
159
|
+
description: 'Plan should include testing/verification steps'
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
if (criteria.requiredPatterns.completion) {
|
|
163
|
+
const compWords = ['commit', 'document', 'summary', 'complete', 'finalize'];
|
|
164
|
+
patterns.completion = {
|
|
165
|
+
found: compWords.some(word => allContent.includes(word)),
|
|
166
|
+
description: 'Plan should include completion/documentation steps'
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
// Task-specific assessment
|
|
170
|
+
const taskSpecific = {};
|
|
171
|
+
if (criteria.taskSpecific.specificReferences) {
|
|
172
|
+
const hasFileRefs = todos.some(t => /\.(ts|js|py|md|json|yml|yaml|txt)|src\/|\/.*\/|[A-Z][a-zA-Z]*\./.test(t.content));
|
|
173
|
+
taskSpecific.specificReferences = {
|
|
174
|
+
valid: hasFileRefs,
|
|
175
|
+
description: 'Steps should reference specific files, functions, or components'
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
if (criteria.taskSpecific.actionVerbs) {
|
|
179
|
+
const actionVerbs = ['read', 'write', 'create', 'update', 'delete', 'fix', 'implement', 'test', 'run', 'build'];
|
|
180
|
+
const hasActionVerbs = todos.some(t => actionVerbs.some(verb => t.content.toLowerCase().startsWith(verb)));
|
|
181
|
+
taskSpecific.actionVerbs = {
|
|
182
|
+
valid: hasActionVerbs,
|
|
183
|
+
description: 'Steps should start with action verbs'
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
if (criteria.taskSpecific.completionCriteria) {
|
|
187
|
+
const hasCriteria = todos.some(t => t.content.length > 20 && // Reasonable detail
|
|
188
|
+
!t.content.toLowerCase().includes('handle') && // Avoid vague language
|
|
189
|
+
!t.content.toLowerCase().includes('deal with'));
|
|
190
|
+
taskSpecific.completionCriteria = {
|
|
191
|
+
valid: hasCriteria,
|
|
192
|
+
description: 'Steps should have clear, specific completion criteria'
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
return {
|
|
196
|
+
stepCount,
|
|
197
|
+
qualityScore,
|
|
198
|
+
patterns,
|
|
199
|
+
taskSpecific
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Calculate confidence in plan quality
|
|
204
|
+
*/
|
|
205
|
+
function calculateConfidence(baseValidation, criteriaAssessment) {
|
|
206
|
+
let confidence = baseValidation.overallQuality;
|
|
207
|
+
// Boost confidence for meeting criteria
|
|
208
|
+
if (criteriaAssessment.stepCount.valid)
|
|
209
|
+
confidence += 5;
|
|
210
|
+
if (criteriaAssessment.qualityScore.valid)
|
|
211
|
+
confidence += 10;
|
|
212
|
+
// Boost for patterns
|
|
213
|
+
const patternScore = Object.values(criteriaAssessment.patterns).filter((p) => p.found).length;
|
|
214
|
+
const totalPatterns = Object.keys(criteriaAssessment.patterns).length;
|
|
215
|
+
if (totalPatterns > 0) {
|
|
216
|
+
confidence += (patternScore / totalPatterns) * 15;
|
|
217
|
+
}
|
|
218
|
+
// Boost for task-specific criteria
|
|
219
|
+
const taskScore = Object.values(criteriaAssessment.taskSpecific).filter((t) => t.valid).length;
|
|
220
|
+
const totalTaskCriteria = Object.keys(criteriaAssessment.taskSpecific).length;
|
|
221
|
+
if (totalTaskCriteria > 0) {
|
|
222
|
+
confidence += (taskScore / totalTaskCriteria) * 10;
|
|
223
|
+
}
|
|
224
|
+
return Math.min(100, Math.max(0, Math.round(confidence)));
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Generate specific improvements based on validation results
|
|
228
|
+
*/
|
|
229
|
+
function generateImprovements(baseValidation, criteriaAssessment, criteria) {
|
|
230
|
+
const improvements = [];
|
|
231
|
+
// Step count improvements
|
|
232
|
+
if (!criteriaAssessment.stepCount.valid) {
|
|
233
|
+
if (criteriaAssessment.stepCount.actual < criteria.minSteps) {
|
|
234
|
+
improvements.push(`Add more steps (need ${criteria.minSteps - criteriaAssessment.stepCount.actual} more)`);
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
improvements.push(`Reduce steps to ${criteria.maxSteps} or fewer - consider breaking into multiple tasks`);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
// Quality improvements
|
|
241
|
+
if (!criteriaAssessment.qualityScore.valid) {
|
|
242
|
+
improvements.push('Improve step specificity and clarity - avoid vague language');
|
|
243
|
+
}
|
|
244
|
+
// Pattern improvements
|
|
245
|
+
Object.entries(criteriaAssessment.patterns).forEach(([, result]) => {
|
|
246
|
+
if (!result.found) {
|
|
247
|
+
improvements.push(result.description);
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
// Task-specific improvements
|
|
251
|
+
Object.entries(criteriaAssessment.taskSpecific).forEach(([, result]) => {
|
|
252
|
+
if (!result.valid) {
|
|
253
|
+
improvements.push(result.description);
|
|
254
|
+
}
|
|
255
|
+
});
|
|
256
|
+
// Add base validation suggestions
|
|
257
|
+
improvements.push(...baseValidation.suggestions.slice(0, 3));
|
|
258
|
+
// Remove duplicates and limit to top recommendations
|
|
259
|
+
return [...new Set(improvements)].slice(0, 8);
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Quick plan quality check
|
|
263
|
+
*/
|
|
264
|
+
export function quickPlanCheck(todos) {
|
|
265
|
+
if (todos.length === 0) {
|
|
266
|
+
return { isGood: false, score: 0, topIssue: 'No todos provided' };
|
|
267
|
+
}
|
|
268
|
+
const validation = validatePlan(todos);
|
|
269
|
+
return {
|
|
270
|
+
isGood: validation.confidence >= 70,
|
|
271
|
+
score: validation.confidence,
|
|
272
|
+
topIssue: validation.improvements[0]
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Get recommended criteria for task type
|
|
277
|
+
*/
|
|
278
|
+
export function getRecommendedCriteria(planType) {
|
|
279
|
+
return { ...DEFAULT_CRITERIA[planType] };
|
|
280
|
+
}
|
|
281
|
+
//# sourceMappingURL=planValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planValidator.js","sourceRoot":"","sources":["../../../../src/agents/codemie-code/validators/planValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACtC;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACtC;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAwC;IAS/D,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIvD,MAAM,CAAC,YAAY,IAAI,YAAY,EAAE;IAIrC,MAAM,CAAC,aAAa,IAAI,MAAM,EAAE;WAInB,kBAAkB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;CAS3D"}
|
package/dist/agents/registry.js
CHANGED
|
@@ -2,11 +2,13 @@ import { ClaudeCodeAdapter } from './adapters/claude-code.js';
|
|
|
2
2
|
import { CodexAdapter } from './adapters/codex.js';
|
|
3
3
|
import { CodeMieCodeAdapter } from './adapters/codemie-code.js';
|
|
4
4
|
export class AgentRegistry {
|
|
5
|
-
static adapters = new Map(
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
static adapters = new Map();
|
|
6
|
+
static {
|
|
7
|
+
// Initialize adapters
|
|
8
|
+
AgentRegistry.adapters.set('codemie-code', new CodeMieCodeAdapter());
|
|
9
|
+
AgentRegistry.adapters.set('claude', new ClaudeCodeAdapter());
|
|
10
|
+
AgentRegistry.adapters.set('codex', new CodexAdapter());
|
|
11
|
+
}
|
|
10
12
|
static getAgent(name) {
|
|
11
13
|
return AgentRegistry.adapters.get(name);
|
|
12
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAahE,MAAM,OAAO,aAAa;IAChB,MAAM,CAAC,QAAQ,GAA8B,IAAI,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAahE,MAAM,OAAO,aAAa;IAChB,MAAM,CAAC,QAAQ,GAA8B,IAAI,GAAG,EAAE,CAAC;IAE/D;QACE,sBAAsB;QACtB,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,kBAAkB,EAAE,CAAC,CAAC;QACrE,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,iBAAiB,EAAE,CAAC,CAAC;QAC9D,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,OAAO,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,YAAY;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,aAAa;QAClB,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,kBAAkB;QAC7B,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACtD,IAAI,MAAM,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,iBAAiB,IAAI,OAAO,CA+D3C"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import ora from 'ora';
|
|
4
|
+
import { CodeMieSSO } from '../../utils/sso-auth.js';
|
|
5
|
+
import { ConfigLoader } from '../../utils/config-loader.js';
|
|
6
|
+
import { fetchCodeMieModelsFromConfig } from '../../utils/codemie-model-fetcher.js';
|
|
7
|
+
import { logger } from '../../utils/logger.js';
|
|
8
|
+
export function createAuthCommand() {
|
|
9
|
+
const command = new Command('auth');
|
|
10
|
+
command.description('Manage SSO authentication');
|
|
11
|
+
// Login command
|
|
12
|
+
const loginCmd = new Command('login');
|
|
13
|
+
loginCmd
|
|
14
|
+
.description('Authenticate with AI/Run CodeMie SSO')
|
|
15
|
+
.option('--url <url>', 'AI/Run CodeMie URL to authenticate with')
|
|
16
|
+
.action(async (options) => {
|
|
17
|
+
try {
|
|
18
|
+
await handleLogin(options.url);
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
logger.error('Login failed:', error);
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
// Logout command
|
|
26
|
+
const logoutCmd = new Command('logout');
|
|
27
|
+
logoutCmd
|
|
28
|
+
.description('Clear SSO credentials and logout')
|
|
29
|
+
.action(async () => {
|
|
30
|
+
try {
|
|
31
|
+
await handleLogout();
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
logger.error('Logout failed:', error);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
// Status command
|
|
39
|
+
const statusCmd = new Command('status');
|
|
40
|
+
statusCmd
|
|
41
|
+
.description('Show authentication status')
|
|
42
|
+
.action(async () => {
|
|
43
|
+
try {
|
|
44
|
+
await handleStatus();
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
logger.error('Status check failed:', error);
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
// Refresh command
|
|
52
|
+
const refreshCmd = new Command('refresh');
|
|
53
|
+
refreshCmd
|
|
54
|
+
.description('Refresh SSO credentials')
|
|
55
|
+
.action(async () => {
|
|
56
|
+
try {
|
|
57
|
+
await handleRefresh();
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
logger.error('Refresh failed:', error);
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
command.addCommand(loginCmd);
|
|
65
|
+
command.addCommand(logoutCmd);
|
|
66
|
+
command.addCommand(statusCmd);
|
|
67
|
+
command.addCommand(refreshCmd);
|
|
68
|
+
return command;
|
|
69
|
+
}
|
|
70
|
+
async function handleLogin(url) {
|
|
71
|
+
const config = await ConfigLoader.load();
|
|
72
|
+
const codeMieUrl = url || config.codeMieUrl;
|
|
73
|
+
if (!codeMieUrl) {
|
|
74
|
+
console.log(chalk.red('ā No AI/Run CodeMie URL configured or provided'));
|
|
75
|
+
console.log(chalk.dim('Use: codemie auth login --url https://your-airun-codemie-instance.com'));
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const spinner = ora('Launching SSO authentication...').start();
|
|
79
|
+
try {
|
|
80
|
+
const sso = new CodeMieSSO();
|
|
81
|
+
const result = await sso.authenticate({ codeMieUrl, timeout: 120000 });
|
|
82
|
+
if (result.success) {
|
|
83
|
+
spinner.succeed(chalk.green('SSO authentication successful'));
|
|
84
|
+
console.log(chalk.cyan(`š Connected to: ${codeMieUrl}`));
|
|
85
|
+
console.log(chalk.cyan(`š Credentials stored securely`));
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
spinner.fail(chalk.red('SSO authentication failed'));
|
|
89
|
+
console.log(chalk.red(`Error: ${result.error}`));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
spinner.fail(chalk.red('Authentication error'));
|
|
94
|
+
console.log(chalk.red(`Error: ${error instanceof Error ? error.message : String(error)}`));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
async function handleLogout() {
|
|
98
|
+
const spinner = ora('Clearing SSO credentials...').start();
|
|
99
|
+
try {
|
|
100
|
+
const sso = new CodeMieSSO();
|
|
101
|
+
await sso.clearStoredCredentials();
|
|
102
|
+
spinner.succeed(chalk.green('Successfully logged out'));
|
|
103
|
+
console.log(chalk.dim('SSO credentials have been cleared'));
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
spinner.fail(chalk.red('Logout failed'));
|
|
107
|
+
console.log(chalk.red(`Error: ${error instanceof Error ? error.message : String(error)}`));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async function handleStatus() {
|
|
111
|
+
const config = await ConfigLoader.load();
|
|
112
|
+
console.log(chalk.bold('\nš Authentication Status:\n'));
|
|
113
|
+
if (config.provider !== 'ai-run-sso') {
|
|
114
|
+
console.log(chalk.yellow(' Provider: Not using SSO authentication'));
|
|
115
|
+
console.log(chalk.dim(` Current provider: ${config.provider || 'unknown'}`));
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
console.log(chalk.green(` Provider: CodeMie SSO`));
|
|
119
|
+
console.log(chalk.green(` CodeMie URL: ${config.codeMieUrl || 'not configured'}`));
|
|
120
|
+
try {
|
|
121
|
+
const sso = new CodeMieSSO();
|
|
122
|
+
const credentials = await sso.getStoredCredentials();
|
|
123
|
+
if (credentials) {
|
|
124
|
+
console.log(chalk.green(` Status: Authenticated`));
|
|
125
|
+
console.log(chalk.green(` API URL: ${credentials.apiUrl}`));
|
|
126
|
+
if (credentials.expiresAt) {
|
|
127
|
+
const expiresIn = Math.max(0, credentials.expiresAt - Date.now());
|
|
128
|
+
const hours = Math.floor(expiresIn / (1000 * 60 * 60));
|
|
129
|
+
const minutes = Math.floor((expiresIn % (1000 * 60 * 60)) / (1000 * 60));
|
|
130
|
+
if (expiresIn > 0) {
|
|
131
|
+
console.log(chalk.green(` Expires in: ${hours}h ${minutes}m`));
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
console.log(chalk.red(` Status: Expired`));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// Test API access
|
|
138
|
+
const spinner = ora('Testing API access...').start();
|
|
139
|
+
try {
|
|
140
|
+
await fetchCodeMieModelsFromConfig();
|
|
141
|
+
spinner.succeed(chalk.green('API access working'));
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
spinner.fail(chalk.red('API access failed'));
|
|
145
|
+
console.log(chalk.red(` Error: ${error instanceof Error ? error.message : String(error)}`));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
console.log(chalk.red(` Status: Not authenticated`));
|
|
150
|
+
console.log(chalk.dim(` Run: codemie auth login`));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
console.log(chalk.red(` Status: Error checking credentials`));
|
|
155
|
+
console.log(chalk.red(` Error: ${error instanceof Error ? error.message : String(error)}`));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
async function handleRefresh() {
|
|
159
|
+
const config = await ConfigLoader.load();
|
|
160
|
+
if (config.provider !== 'ai-run-sso' || !config.codeMieUrl) {
|
|
161
|
+
console.log(chalk.red('ā Not configured for SSO authentication'));
|
|
162
|
+
console.log(chalk.dim('Run: codemie setup'));
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
// Clear existing credentials and re-authenticate
|
|
166
|
+
const sso = new CodeMieSSO();
|
|
167
|
+
await sso.clearStoredCredentials();
|
|
168
|
+
await handleLogin(config.codeMieUrl);
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/cli/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,mBAAmB,IAAI,OAAO,CA8V7C"}
|