@paths.design/caws-cli 9.3.2 → 10.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -27
- package/dist/commands/archive.js +67 -28
- package/dist/commands/burnup.js +20 -11
- package/dist/commands/diagnose.js +34 -22
- package/dist/commands/evaluate.js +27 -15
- package/dist/commands/gates.js +122 -0
- package/dist/commands/init.js +143 -15
- package/dist/commands/iterate.js +77 -4
- package/dist/commands/parallel.js +4 -0
- package/dist/commands/plan.js +9 -19
- package/dist/commands/provenance.js +53 -17
- package/dist/commands/quality-monitor.js +64 -45
- package/dist/commands/sidecar.js +71 -0
- package/dist/commands/specs.js +233 -44
- package/dist/commands/status.js +113 -9
- package/dist/commands/tutorial.js +10 -9
- package/dist/commands/validate.js +49 -6
- package/dist/commands/verify-acs.js +35 -78
- package/dist/commands/waivers.js +69 -12
- package/dist/commands/worktree.js +50 -25
- package/dist/error-handler.js +2 -13
- package/dist/gates/budget-limit.js +116 -0
- package/dist/gates/feedback.js +260 -0
- package/dist/gates/format.js +179 -0
- package/dist/gates/god-object.js +117 -0
- package/dist/gates/pipeline.js +167 -0
- package/dist/gates/scope-boundary.js +93 -0
- package/dist/gates/spec-completeness.js +102 -0
- package/dist/gates/todo-detection.js +205 -0
- package/dist/index.js +130 -151
- package/dist/parallel/parallel-manager.js +3 -3
- package/dist/policy/PolicyManager.js +42 -10
- package/dist/scaffold/claude-hooks.js +24 -1
- package/dist/scaffold/git-hooks.js +45 -102
- package/dist/scaffold/index.js +4 -3
- package/dist/session/session-manager.js +71 -14
- package/dist/sidecars/index.js +33 -0
- package/dist/sidecars/listeners.js +40 -0
- package/dist/sidecars/provenance-summary.js +238 -0
- package/dist/sidecars/quality-gaps.js +258 -0
- package/dist/sidecars/schema.js +149 -0
- package/dist/sidecars/spec-drift.js +151 -0
- package/dist/sidecars/waiver-draft.js +176 -0
- package/dist/templates/.caws/schemas/policy.schema.json +50 -0
- package/dist/templates/.caws/schemas/waivers.schema.json +30 -24
- package/dist/templates/.caws/schemas/working-spec.schema.json +51 -8
- package/dist/templates/.caws/schemas/worktrees.schema.json +3 -1
- package/dist/templates/.caws/templates/working-spec.template.yml +7 -3
- package/dist/templates/.claude/hooks/audit.sh +0 -0
- package/dist/templates/.claude/hooks/block-dangerous.sh +52 -11
- package/dist/templates/.claude/hooks/classify_command.py +592 -0
- package/dist/templates/.claude/hooks/doc-frontmatter-check.sh +173 -0
- package/dist/templates/.claude/hooks/quality-check.sh +23 -10
- package/dist/templates/.claude/hooks/scope-guard.sh +34 -32
- package/dist/templates/.claude/hooks/session-caws-status.sh +2 -2
- package/dist/templates/.claude/hooks/session-log.sh +76 -3
- package/dist/templates/.claude/hooks/stop-worktree-check.sh +1 -1
- package/dist/templates/.claude/hooks/test_classify_command.py +370 -0
- package/dist/templates/.claude/hooks/test_wrapper_smoke.sh +96 -0
- package/dist/templates/.claude/hooks/worktree-guard.sh +2 -2
- package/dist/templates/.claude/hooks/worktree-write-guard.sh +1 -1
- package/dist/templates/.claude/settings.json +26 -0
- package/dist/templates/.cursor/hooks/caws-quality-check.sh +4 -4
- package/dist/templates/.cursor/hooks/caws-scope-guard.sh +1 -1
- package/dist/templates/.cursor/hooks/session-log.sh +924 -0
- package/dist/templates/.cursor/hooks.json +25 -0
- package/dist/templates/.cursor/rules/02-quality-gates.mdc +3 -5
- package/dist/templates/.cursor/rules/10-documentation-quality-standards.mdc +6 -11
- package/dist/templates/.cursor/rules/11-scope-management-waivers.mdc +14 -18
- package/dist/templates/.cursor/rules/12-implementation-completeness.mdc +4 -4
- package/dist/templates/.cursor/rules/13-language-agnostic-standards.mdc +3 -13
- package/dist/templates/.github/copilot-instructions.md +5 -5
- package/dist/templates/.idea/runConfigurations/CAWS_Evaluate.xml +1 -1
- package/dist/templates/.junie/guidelines.md +2 -2
- package/dist/templates/.vscode/settings.json +3 -1
- package/dist/templates/.windsurf/rules/caws-quality-standards.md +2 -2
- package/dist/templates/.windsurf/workflows/caws-guided-development.md +3 -3
- package/dist/templates/CLAUDE.md +43 -8
- package/dist/templates/agents.md +29 -9
- package/dist/templates/docs/README.md +8 -7
- package/dist/templates/scripts/new_feature.sh +80 -0
- package/dist/test-analysis.js +43 -30
- package/dist/tool-loader.js +1 -1
- package/dist/utils/agent-session.js +202 -0
- package/dist/utils/detection.js +8 -2
- package/dist/utils/finalization.js +7 -6
- package/dist/utils/gitignore-updater.js +3 -0
- package/dist/utils/lifecycle-events.js +94 -0
- package/dist/utils/quality-gates-utils.js +29 -44
- package/dist/utils/schema-validator.js +42 -0
- package/dist/utils/spec-resolver.js +93 -21
- package/dist/utils/working-state.js +505 -0
- package/dist/validation/spec-validation.js +92 -22
- package/dist/waivers-manager.js +60 -6
- package/dist/worktree/worktree-manager.js +390 -93
- package/package.json +6 -6
- package/templates/.caws/schemas/policy.schema.json +50 -0
- package/templates/.caws/schemas/waivers.schema.json +30 -24
- package/templates/.caws/schemas/working-spec.schema.json +51 -8
- package/templates/.caws/schemas/worktrees.schema.json +3 -1
- package/templates/.caws/templates/working-spec.template.yml +7 -3
- package/templates/.claude/hooks/block-dangerous.sh +52 -11
- package/templates/.claude/hooks/classify_command.py +592 -0
- package/templates/.claude/hooks/doc-frontmatter-check.sh +173 -0
- package/templates/.claude/hooks/quality-check.sh +23 -10
- package/templates/.claude/hooks/scope-guard.sh +34 -32
- package/templates/.claude/hooks/session-caws-status.sh +2 -2
- package/templates/.claude/hooks/session-log.sh +76 -3
- package/templates/.claude/hooks/stop-worktree-check.sh +1 -1
- package/templates/.claude/hooks/test_classify_command.py +370 -0
- package/templates/.claude/hooks/test_wrapper_smoke.sh +96 -0
- package/templates/.claude/hooks/worktree-guard.sh +2 -2
- package/templates/.claude/hooks/worktree-write-guard.sh +1 -1
- package/templates/.claude/settings.json +26 -0
- package/templates/.cursor/hooks/caws-quality-check.sh +4 -4
- package/templates/.cursor/hooks/caws-scope-guard.sh +1 -1
- package/templates/.cursor/hooks/session-log.sh +924 -0
- package/templates/.cursor/hooks.json +25 -0
- package/templates/.cursor/rules/02-quality-gates.mdc +3 -5
- package/templates/.cursor/rules/10-documentation-quality-standards.mdc +6 -11
- package/templates/.cursor/rules/11-scope-management-waivers.mdc +14 -18
- package/templates/.cursor/rules/12-implementation-completeness.mdc +4 -4
- package/templates/.cursor/rules/13-language-agnostic-standards.mdc +3 -13
- package/templates/.github/copilot-instructions.md +5 -5
- package/templates/.idea/runConfigurations/CAWS_Evaluate.xml +1 -1
- package/templates/.junie/guidelines.md +2 -2
- package/templates/.vscode/settings.json +3 -1
- package/templates/.windsurf/rules/caws-quality-standards.md +2 -2
- package/templates/.windsurf/workflows/caws-guided-development.md +3 -3
- package/templates/CLAUDE.md +43 -8
- package/templates/{AGENTS.md → agents.md} +29 -9
- package/templates/docs/README.md +8 -7
- package/templates/scripts/new_feature.sh +80 -0
- package/dist/budget-derivation.d.ts +0 -74
- package/dist/budget-derivation.d.ts.map +0 -1
- package/dist/cicd-optimizer.d.ts +0 -142
- package/dist/cicd-optimizer.d.ts.map +0 -1
- package/dist/commands/archive.d.ts +0 -51
- package/dist/commands/archive.d.ts.map +0 -1
- package/dist/commands/burnup.d.ts +0 -6
- package/dist/commands/burnup.d.ts.map +0 -1
- package/dist/commands/diagnose.d.ts +0 -52
- package/dist/commands/diagnose.d.ts.map +0 -1
- package/dist/commands/evaluate.d.ts +0 -8
- package/dist/commands/evaluate.d.ts.map +0 -1
- package/dist/commands/init.d.ts +0 -5
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/iterate.d.ts +0 -8
- package/dist/commands/iterate.d.ts.map +0 -1
- package/dist/commands/mode.d.ts +0 -25
- package/dist/commands/mode.d.ts.map +0 -1
- package/dist/commands/parallel.d.ts +0 -7
- package/dist/commands/parallel.d.ts.map +0 -1
- package/dist/commands/plan.d.ts +0 -49
- package/dist/commands/plan.d.ts.map +0 -1
- package/dist/commands/provenance.d.ts +0 -32
- package/dist/commands/provenance.d.ts.map +0 -1
- package/dist/commands/quality-gates.d.ts +0 -6
- package/dist/commands/quality-gates.d.ts.map +0 -1
- package/dist/commands/quality-gates.js +0 -444
- package/dist/commands/quality-monitor.d.ts +0 -17
- package/dist/commands/quality-monitor.d.ts.map +0 -1
- package/dist/commands/session.d.ts +0 -7
- package/dist/commands/session.d.ts.map +0 -1
- package/dist/commands/specs.d.ts +0 -77
- package/dist/commands/specs.d.ts.map +0 -1
- package/dist/commands/status.d.ts +0 -44
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/templates.d.ts +0 -74
- package/dist/commands/templates.d.ts.map +0 -1
- package/dist/commands/tool.d.ts +0 -13
- package/dist/commands/tool.d.ts.map +0 -1
- package/dist/commands/troubleshoot.d.ts +0 -8
- package/dist/commands/troubleshoot.d.ts.map +0 -1
- package/dist/commands/troubleshoot.js +0 -104
- package/dist/commands/tutorial.d.ts +0 -55
- package/dist/commands/tutorial.d.ts.map +0 -1
- package/dist/commands/validate.d.ts +0 -15
- package/dist/commands/validate.d.ts.map +0 -1
- package/dist/commands/waivers.d.ts +0 -8
- package/dist/commands/waivers.d.ts.map +0 -1
- package/dist/commands/workflow.d.ts +0 -85
- package/dist/commands/workflow.d.ts.map +0 -1
- package/dist/commands/worktree.d.ts +0 -7
- package/dist/commands/worktree.d.ts.map +0 -1
- package/dist/config/index.d.ts +0 -29
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/lite-scope.d.ts +0 -33
- package/dist/config/lite-scope.d.ts.map +0 -1
- package/dist/config/modes.d.ts +0 -264
- package/dist/config/modes.d.ts.map +0 -1
- package/dist/constants/spec-types.d.ts +0 -93
- package/dist/constants/spec-types.d.ts.map +0 -1
- package/dist/error-handler.d.ts +0 -151
- package/dist/error-handler.d.ts.map +0 -1
- package/dist/generators/jest-config-generator.d.ts +0 -32
- package/dist/generators/jest-config-generator.d.ts.map +0 -1
- package/dist/generators/jest-config.d.ts +0 -32
- package/dist/generators/jest-config.d.ts.map +0 -1
- package/dist/generators/jest-config.js +0 -242
- package/dist/generators/working-spec.d.ts +0 -13
- package/dist/generators/working-spec.d.ts.map +0 -1
- package/dist/index-new.d.ts +0 -5
- package/dist/index-new.d.ts.map +0 -1
- package/dist/index-new.js +0 -317
- package/dist/index.d.ts +0 -5
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.backup +0 -4711
- package/dist/minimal-cli.d.ts +0 -3
- package/dist/minimal-cli.d.ts.map +0 -1
- package/dist/parallel/parallel-manager.d.ts +0 -67
- package/dist/parallel/parallel-manager.d.ts.map +0 -1
- package/dist/policy/PolicyManager.d.ts +0 -104
- package/dist/policy/PolicyManager.d.ts.map +0 -1
- package/dist/scaffold/claude-hooks.d.ts +0 -28
- package/dist/scaffold/claude-hooks.d.ts.map +0 -1
- package/dist/scaffold/cursor-hooks.d.ts +0 -7
- package/dist/scaffold/cursor-hooks.d.ts.map +0 -1
- package/dist/scaffold/git-hooks.d.ts +0 -38
- package/dist/scaffold/git-hooks.d.ts.map +0 -1
- package/dist/scaffold/index.d.ts +0 -17
- package/dist/scaffold/index.d.ts.map +0 -1
- package/dist/session/session-manager.d.ts +0 -94
- package/dist/session/session-manager.d.ts.map +0 -1
- package/dist/spec/SpecFileManager.d.ts +0 -146
- package/dist/spec/SpecFileManager.d.ts.map +0 -1
- package/dist/templates/.cursor/hooks/caws-tool-validation.sh +0 -121
- package/dist/templates/.github/copilot/instructions.md +0 -311
- package/dist/test-analysis.d.ts +0 -231
- package/dist/test-analysis.d.ts.map +0 -1
- package/dist/tool-interface.d.ts +0 -236
- package/dist/tool-interface.d.ts.map +0 -1
- package/dist/tool-loader.d.ts +0 -77
- package/dist/tool-loader.d.ts.map +0 -1
- package/dist/tool-validator.d.ts +0 -72
- package/dist/tool-validator.d.ts.map +0 -1
- package/dist/utils/async-utils.d.ts +0 -73
- package/dist/utils/async-utils.d.ts.map +0 -1
- package/dist/utils/command-wrapper.d.ts +0 -66
- package/dist/utils/command-wrapper.d.ts.map +0 -1
- package/dist/utils/detection.d.ts +0 -14
- package/dist/utils/detection.d.ts.map +0 -1
- package/dist/utils/error-categories.d.ts +0 -52
- package/dist/utils/error-categories.d.ts.map +0 -1
- package/dist/utils/finalization.d.ts +0 -17
- package/dist/utils/finalization.d.ts.map +0 -1
- package/dist/utils/git-lock.d.ts +0 -13
- package/dist/utils/git-lock.d.ts.map +0 -1
- package/dist/utils/gitignore-updater.d.ts +0 -39
- package/dist/utils/gitignore-updater.d.ts.map +0 -1
- package/dist/utils/ide-detection.d.ts +0 -89
- package/dist/utils/ide-detection.d.ts.map +0 -1
- package/dist/utils/project-analysis.d.ts +0 -34
- package/dist/utils/project-analysis.d.ts.map +0 -1
- package/dist/utils/promise-utils.d.ts +0 -30
- package/dist/utils/promise-utils.d.ts.map +0 -1
- package/dist/utils/quality-gates-utils.d.ts +0 -49
- package/dist/utils/quality-gates-utils.d.ts.map +0 -1
- package/dist/utils/quality-gates.d.ts +0 -49
- package/dist/utils/quality-gates.d.ts.map +0 -1
- package/dist/utils/quality-gates.js +0 -402
- package/dist/utils/spec-resolver.d.ts +0 -80
- package/dist/utils/spec-resolver.d.ts.map +0 -1
- package/dist/utils/typescript-detector.d.ts +0 -66
- package/dist/utils/typescript-detector.d.ts.map +0 -1
- package/dist/utils/yaml-validation.d.ts +0 -32
- package/dist/utils/yaml-validation.d.ts.map +0 -1
- package/dist/validation/spec-validation.d.ts +0 -43
- package/dist/validation/spec-validation.d.ts.map +0 -1
- package/dist/waivers-manager.d.ts +0 -167
- package/dist/waivers-manager.d.ts.map +0 -1
- package/dist/worktree/worktree-manager.d.ts +0 -54
- package/dist/worktree/worktree-manager.d.ts.map +0 -1
package/dist/minimal-cli.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"minimal-cli.d.ts","sourceRoot":"","sources":["../src/minimal-cli.js"],"names":[],"mappings":""}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Load and validate a parallel plan YAML file
|
|
3
|
-
* @param {string} filePath - Path to plan YAML file
|
|
4
|
-
* @returns {Object} Parsed and validated plan
|
|
5
|
-
*/
|
|
6
|
-
export function loadPlan(filePath: string): any;
|
|
7
|
-
/**
|
|
8
|
-
* Set up parallel worktrees from a plan
|
|
9
|
-
* @param {Object} plan - Validated plan from loadPlan
|
|
10
|
-
* @returns {Object[]} Array of created worktree entries
|
|
11
|
-
*/
|
|
12
|
-
export function setupParallel(plan: any): any[];
|
|
13
|
-
/**
|
|
14
|
-
* Get status of all parallel worktrees
|
|
15
|
-
* @returns {Object|null} Parallel status or null if no active run
|
|
16
|
-
*/
|
|
17
|
-
export function getParallelStatus(): any | null;
|
|
18
|
-
/**
|
|
19
|
-
* Merge all parallel branches back to base
|
|
20
|
-
* @param {Object} options - Merge options
|
|
21
|
-
* @param {string} [options.strategy] - Override merge strategy
|
|
22
|
-
* @param {boolean} [options.dryRun] - Preview without executing
|
|
23
|
-
* @param {boolean} [options.force] - Force merge even with conflicts
|
|
24
|
-
* @returns {Object} Merge results {merged, failed, conflicts}
|
|
25
|
-
*/
|
|
26
|
-
export function mergeParallel(options?: {
|
|
27
|
-
strategy?: string;
|
|
28
|
-
dryRun?: boolean;
|
|
29
|
-
force?: boolean;
|
|
30
|
-
}): any;
|
|
31
|
-
/**
|
|
32
|
-
* Tear down all parallel worktrees
|
|
33
|
-
* @param {Object} options - Teardown options
|
|
34
|
-
* @param {boolean} [options.deleteBranches] - Also delete branches
|
|
35
|
-
* @param {boolean} [options.force] - Force removal even if dirty
|
|
36
|
-
* @returns {Object} Teardown results {destroyed, failed}
|
|
37
|
-
*/
|
|
38
|
-
export function teardownParallel(options?: {
|
|
39
|
-
deleteBranches?: boolean;
|
|
40
|
-
force?: boolean;
|
|
41
|
-
}): any;
|
|
42
|
-
/**
|
|
43
|
-
* Detect file-level conflicts between agent branches
|
|
44
|
-
* @param {string} baseBranch - Base branch name
|
|
45
|
-
* @param {Object[]} agentStatuses - Agent status objects with branch field
|
|
46
|
-
* @returns {Object[]} Conflicts: [{file, agents: [name, name]}]
|
|
47
|
-
*/
|
|
48
|
-
export function detectFileConflicts(baseBranch: string, agentStatuses: any[]): any[];
|
|
49
|
-
/**
|
|
50
|
-
* Load the parallel registry
|
|
51
|
-
* @param {string} root - Repository root
|
|
52
|
-
* @returns {Object|null} Registry or null if not found
|
|
53
|
-
*/
|
|
54
|
-
export function loadParallelRegistry(root: string): any | null;
|
|
55
|
-
/**
|
|
56
|
-
* Save the parallel registry
|
|
57
|
-
* @param {string} root - Repository root
|
|
58
|
-
* @param {Object} data - Registry data
|
|
59
|
-
*/
|
|
60
|
-
export function saveParallelRegistry(root: string, data: any): void;
|
|
61
|
-
/**
|
|
62
|
-
* Remove the parallel registry
|
|
63
|
-
* @param {string} root - Repository root
|
|
64
|
-
*/
|
|
65
|
-
export function removeParallelRegistry(root: string): void;
|
|
66
|
-
export const PARALLEL_REGISTRY: ".caws/parallel.json";
|
|
67
|
-
//# sourceMappingURL=parallel-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parallel-manager.d.ts","sourceRoot":"","sources":["../../src/parallel/parallel-manager.js"],"names":[],"mappings":"AA0EA;;;;GAIG;AACH,mCAHW,MAAM,OAoDhB;AAED;;;;GAIG;AACH,0CAFa,KAAQ,CAyCpB;AAED;;;GAGG;AACH,qCAFa,MAAO,IAAI,CA2DvB;AA2CD;;;;;;;GAOG;AACH,wCALG;IAAyB,QAAQ,GAAzB,MAAM;IACY,MAAM,GAAxB,OAAO;IACW,KAAK,GAAvB,OAAO;CACf,OA2GF;AAED;;;;;;GAMG;AACH,2CAJG;IAA0B,cAAc,GAAhC,OAAO;IACW,KAAK,GAAvB,OAAO;CACf,OA0BF;AA3LD;;;;;GAKG;AACH,gDAJW,MAAM,iBACN,KAAQ,GACN,KAAQ,CAmCpB;AAnPD;;;;GAIG;AACH,2CAHW,MAAM,GACJ,MAAO,IAAI,CAYvB;AAED;;;;GAIG;AACH,2CAHW,MAAM,mBAOhB;AAED;;;GAGG;AACH,6CAFW,MAAM,QAOhB;AAnDD,gCAA0B,qBAAqB,CAAC"}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Policy Manager - Handles policy loading with intelligent caching
|
|
3
|
-
*
|
|
4
|
-
* Features:
|
|
5
|
-
* - TTL-based caching for performance
|
|
6
|
-
* - Graceful fallback to defaults when policy.yaml missing
|
|
7
|
-
* - Cache inspection and management API
|
|
8
|
-
* - Waiver validation and delta application
|
|
9
|
-
*/
|
|
10
|
-
export class PolicyManager {
|
|
11
|
-
constructor(options?: {});
|
|
12
|
-
enableCaching: any;
|
|
13
|
-
cacheTTL: any;
|
|
14
|
-
policyCache: Map<any, any>;
|
|
15
|
-
/**
|
|
16
|
-
* Load CAWS policy from policy.yaml with caching
|
|
17
|
-
*
|
|
18
|
-
* @param {string} projectRoot - Project root directory
|
|
19
|
-
* @param {Object} options - Loading options
|
|
20
|
-
* @param {boolean} options.useCache - Use cache if available (default: true)
|
|
21
|
-
* @param {number} options.cacheTTL - Cache TTL override in milliseconds
|
|
22
|
-
* @returns {Promise<Object>} Policy object
|
|
23
|
-
*/
|
|
24
|
-
loadPolicy(projectRoot: string, options?: {
|
|
25
|
-
useCache: boolean;
|
|
26
|
-
cacheTTL: number;
|
|
27
|
-
}): Promise<any>;
|
|
28
|
-
/**
|
|
29
|
-
* Load a waiver document by ID
|
|
30
|
-
*
|
|
31
|
-
* @param {string} waiverId - Waiver ID (e.g., WV-0001)
|
|
32
|
-
* @param {string} projectRoot - Project root directory
|
|
33
|
-
* @returns {Promise<Object|null>} Waiver document or null if not found
|
|
34
|
-
*/
|
|
35
|
-
loadWaiver(waiverId: string, projectRoot: string): Promise<any | null>;
|
|
36
|
-
/**
|
|
37
|
-
* Check if a waiver is currently valid
|
|
38
|
-
*
|
|
39
|
-
* @param {Object} waiver - Waiver document
|
|
40
|
-
* @returns {boolean} True if waiver is valid and active
|
|
41
|
-
*/
|
|
42
|
-
isWaiverValid(waiver: any): boolean;
|
|
43
|
-
/**
|
|
44
|
-
* Apply waivers to baseline budget
|
|
45
|
-
*
|
|
46
|
-
* @param {Object} baseline - Baseline budget from policy
|
|
47
|
-
* @param {string[]} waiverIds - Array of waiver IDs to apply
|
|
48
|
-
* @param {string} projectRoot - Project root directory
|
|
49
|
-
* @returns {Promise<Object>} Effective budget with waivers applied
|
|
50
|
-
*/
|
|
51
|
-
applyWaivers(baseline: any, waiverIds: string[], projectRoot: string): Promise<any>;
|
|
52
|
-
/**
|
|
53
|
-
* Validate policy structure
|
|
54
|
-
*
|
|
55
|
-
* @param {Object} policy - Policy to validate
|
|
56
|
-
* @throws {Error} If policy is invalid
|
|
57
|
-
*/
|
|
58
|
-
validatePolicy(policy: any): void;
|
|
59
|
-
/**
|
|
60
|
-
* Get default CAWS policy
|
|
61
|
-
*
|
|
62
|
-
* Returns sensible defaults when policy.yaml doesn't exist.
|
|
63
|
-
*
|
|
64
|
-
* @returns {Object} Default policy configuration
|
|
65
|
-
*/
|
|
66
|
-
getDefaultPolicy(): any;
|
|
67
|
-
/**
|
|
68
|
-
* Clear policy cache
|
|
69
|
-
*
|
|
70
|
-
* @param {string} [projectRoot] - Specific project to clear, or all if omitted
|
|
71
|
-
*/
|
|
72
|
-
clearCache(projectRoot?: string): void;
|
|
73
|
-
/**
|
|
74
|
-
* Get cache status for a project
|
|
75
|
-
*
|
|
76
|
-
* @param {string} projectRoot - Project root directory
|
|
77
|
-
* @returns {Object} Cache status information
|
|
78
|
-
*/
|
|
79
|
-
getCacheStatus(projectRoot: string): any;
|
|
80
|
-
/**
|
|
81
|
-
* Reload policy from disk (bypassing cache)
|
|
82
|
-
*
|
|
83
|
-
* @param {string} projectRoot - Project root directory
|
|
84
|
-
* @returns {Promise<Object>} Fresh policy
|
|
85
|
-
*/
|
|
86
|
-
reloadPolicy(projectRoot: string): Promise<any>;
|
|
87
|
-
/**
|
|
88
|
-
* Get all cached projects
|
|
89
|
-
*
|
|
90
|
-
* @returns {string[]} Array of project roots with cached policies
|
|
91
|
-
*/
|
|
92
|
-
getCachedProjects(): string[];
|
|
93
|
-
/**
|
|
94
|
-
* Get cache statistics
|
|
95
|
-
*
|
|
96
|
-
* @returns {Object} Cache statistics
|
|
97
|
-
*/
|
|
98
|
-
getCacheStats(): any;
|
|
99
|
-
}
|
|
100
|
-
export const defaultPolicyManager: PolicyManager;
|
|
101
|
-
export declare function loadPolicy(projectRoot: any, options: any): Promise<any>;
|
|
102
|
-
export declare function clearCache(projectRoot: any): void;
|
|
103
|
-
export declare function getCacheStatus(projectRoot: any): any;
|
|
104
|
-
//# sourceMappingURL=PolicyManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PolicyManager.d.ts","sourceRoot":"","sources":["../../src/policy/PolicyManager.js"],"names":[],"mappings":"AAWA;;;;;;;;GAQG;AACH;IACE,0BAIC;IAHC,mBAAkD;IAClD,cAA0C;IAC1C,2BAA4B;IAG9B;;;;;;;;OAQG;IACH,wBANW,MAAM,YAEd;QAAyB,QAAQ,EAAzB,OAAO;QACS,QAAQ,EAAxB,MAAM;KACd,GAAU,OAAO,KAAQ,CAuG3B;IAED;;;;;;OAMG;IACH,qBAJW,MAAM,eACN,MAAM,GACJ,OAAO,CAAC,MAAO,IAAI,CAAC,CAchC;IAED;;;;;OAKG;IACH,4BAFa,OAAO,CA2BnB;IAED;;;;;;;OAOG;IACH,uCAJW,MAAM,EAAE,eACR,MAAM,GACJ,OAAO,KAAQ,CA2B3B;IAED;;;;;OAKG;IACH,kCA8BC;IAED;;;;;;OAMG;IACH,wBAoDC;IAED;;;;OAIG;IACH,yBAFW,MAAM,QAQhB;IAED;;;;;OAKG;IACH,4BAHW,MAAM,OAmBhB;IAED;;;;;OAKG;IACH,0BAHW,MAAM,GACJ,OAAO,KAAQ,CAK3B;IAED;;;;OAIG;IACH,qBAFa,MAAM,EAAE,CAIpB;IAED;;;;OAIG;IACH,qBA2BC;CACF;AAGD,iDAAiD;AAOnC,iFAA+E;AAC/E,2DAA6D;AACzD,8DAAiE"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Scaffold Claude Code hooks for a CAWS project
|
|
3
|
-
* Creates .claude/settings.json with hooks and .claude/hooks/ directory with scripts
|
|
4
|
-
*
|
|
5
|
-
* @param {string} projectDir - Project directory path
|
|
6
|
-
* @param {string[]} levels - Hook levels to enable: 'safety', 'quality', 'scope', 'audit'
|
|
7
|
-
*/
|
|
8
|
-
export function scaffoldClaudeHooks(projectDir: string, levels?: string[]): Promise<void>;
|
|
9
|
-
/**
|
|
10
|
-
* Generate Claude Code settings with hooks configuration
|
|
11
|
-
* @param {string[]} levels - Enabled hook levels
|
|
12
|
-
* @param {Set<string>} enabledHooks - Set of enabled hook script names
|
|
13
|
-
* @returns {Object} Settings object for settings.json
|
|
14
|
-
*/
|
|
15
|
-
export function generateClaudeSettings(levels: string[], _enabledHooks: any): any;
|
|
16
|
-
/**
|
|
17
|
-
* Check if Claude Code hooks are already configured
|
|
18
|
-
* @param {string} projectDir - Project directory
|
|
19
|
-
* @returns {boolean} True if hooks are configured
|
|
20
|
-
*/
|
|
21
|
-
export function hasClaudeHooks(projectDir: string): boolean;
|
|
22
|
-
/**
|
|
23
|
-
* List configured Claude Code hooks
|
|
24
|
-
* @param {string} projectDir - Project directory
|
|
25
|
-
* @returns {Object} Hook configuration or null
|
|
26
|
-
*/
|
|
27
|
-
export function getClaudeHooksConfig(projectDir: string): any;
|
|
28
|
-
//# sourceMappingURL=claude-hooks.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-hooks.d.ts","sourceRoot":"","sources":["../../src/scaffold/claude-hooks.js"],"names":[],"mappings":"AAaA;;;;;;GAMG;AACH,gDAHW,MAAM,WACN,MAAM,EAAE,iBA0IlB;AAED;;;;;GAKG;AACH,+CAJW,MAAM,EAAE,2BAsNlB;AAED;;;;GAIG;AACH,2CAHW,MAAM,GACJ,OAAO,CAcnB;AAED;;;;GAIG;AACH,iDAHW,MAAM,OAehB"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Scaffold Cursor hooks for a CAWS project
|
|
3
|
-
* @param {string} projectDir - Project directory path
|
|
4
|
-
* @param {string[]} levels - Hook levels to enable
|
|
5
|
-
*/
|
|
6
|
-
export function scaffoldCursorHooks(projectDir: string, levels?: string[]): Promise<void>;
|
|
7
|
-
//# sourceMappingURL=cursor-hooks.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cursor-hooks.d.ts","sourceRoot":"","sources":["../../src/scaffold/cursor-hooks.js"],"names":[],"mappings":"AAaA;;;;GAIG;AACH,gDAHW,MAAM,WACN,MAAM,EAAE,iBA6JlB"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Scaffold git hooks for CAWS provenance tracking
|
|
3
|
-
* @param {string} projectDir - Project directory path
|
|
4
|
-
* @param {Object} options - Hook options
|
|
5
|
-
*/
|
|
6
|
-
export function scaffoldGitHooks(projectDir: string, options?: any): Promise<{
|
|
7
|
-
added: number;
|
|
8
|
-
skipped: number;
|
|
9
|
-
}>;
|
|
10
|
-
/**
|
|
11
|
-
* Remove CAWS git hooks
|
|
12
|
-
* @param {string} projectDir - Project directory path
|
|
13
|
-
*/
|
|
14
|
-
export function removeGitHooks(projectDir: string): Promise<void>;
|
|
15
|
-
/**
|
|
16
|
-
* Check git hooks status
|
|
17
|
-
* @param {string} projectDir - Project directory path
|
|
18
|
-
*/
|
|
19
|
-
export function checkGitHooksStatus(projectDir: string): Promise<void>;
|
|
20
|
-
/**
|
|
21
|
-
* Generate pre-push hook content
|
|
22
|
-
* Blocks --no-verify to enforce quality gates before pushing
|
|
23
|
-
*/
|
|
24
|
-
export function generatePrePushHook(): string;
|
|
25
|
-
/**
|
|
26
|
-
* Generate pre-commit hook content with staged file quality gates
|
|
27
|
-
* Implements fallback chain: Node script → CLI → Python scripts → Skip gracefully
|
|
28
|
-
*/
|
|
29
|
-
export function generatePreCommitHook(options: any): string;
|
|
30
|
-
/**
|
|
31
|
-
* Generate post-commit hook content
|
|
32
|
-
*/
|
|
33
|
-
export function generatePostCommitHook(): string;
|
|
34
|
-
/**
|
|
35
|
-
* Generate commit-msg hook content
|
|
36
|
-
*/
|
|
37
|
-
export function generateCommitMsgHook(): string;
|
|
38
|
-
//# sourceMappingURL=git-hooks.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git-hooks.d.ts","sourceRoot":"","sources":["../../src/scaffold/git-hooks.js"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,6CAHW,MAAM;;;GAwGhB;AAgvBD;;;GAGG;AACH,2CAFW,MAAM,iBAkChB;AAED;;;GAGG;AACH,gDAFW,MAAM,iBAgDhB;AAxYD;;;GAGG;AACH,8CA2MC;AA7oBD;;;GAGG;AACH,4DAgZC;AAED;;GAEG;AACH,iDAmCC;AAmND;;GAEG;AACH,gDA0FC"}
|
package/dist/scaffold/index.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Scaffold existing project with CAWS components
|
|
3
|
-
* @param {Object} options - Scaffold options
|
|
4
|
-
*/
|
|
5
|
-
export function scaffoldProject(options: any): Promise<void>;
|
|
6
|
-
export function scaffoldIDEIntegrations(targetDir: any, options: any): Promise<{
|
|
7
|
-
added: number;
|
|
8
|
-
skipped: number;
|
|
9
|
-
}>;
|
|
10
|
-
import { scaffoldClaudeHooks } from "./claude-hooks";
|
|
11
|
-
/**
|
|
12
|
-
* Set dependencies for scaffold module
|
|
13
|
-
* @param {Object} deps - Dependencies object
|
|
14
|
-
*/
|
|
15
|
-
export function setScaffoldDependencies(deps: any): void;
|
|
16
|
-
export { scaffoldClaudeHooks };
|
|
17
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scaffold/index.js"],"names":[],"mappings":"AA4MA;;;GAGG;AACH,6DAikBC;AAxtBD;;;GAoIC;;AAMD;;;GAGG;AACH,yDAGC"}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Start a new session, creating the initial capsule with baseline state
|
|
3
|
-
* @param {Object} options - Session options
|
|
4
|
-
* @param {string} [options.role] - Agent role (worker, integrator, qa)
|
|
5
|
-
* @param {string} [options.specId] - Associated feature spec ID
|
|
6
|
-
* @param {string[]} [options.allowedGlobs] - Allowed file patterns
|
|
7
|
-
* @param {string[]} [options.forbiddenGlobs] - Forbidden file patterns
|
|
8
|
-
* @param {string} [options.intent] - What this session intends to accomplish
|
|
9
|
-
* @returns {Object} Created capsule
|
|
10
|
-
*/
|
|
11
|
-
export function startSession(options?: {
|
|
12
|
-
role?: string;
|
|
13
|
-
specId?: string;
|
|
14
|
-
allowedGlobs?: string[];
|
|
15
|
-
forbiddenGlobs?: string[];
|
|
16
|
-
intent?: string;
|
|
17
|
-
}): any;
|
|
18
|
-
/**
|
|
19
|
-
* Add a checkpoint to the current (most recent active) session
|
|
20
|
-
* @param {Object} data - Checkpoint data
|
|
21
|
-
* @param {string} [data.sessionId] - Specific session ID (uses latest active if omitted)
|
|
22
|
-
* @param {string[]} [data.pathsTouched] - Files changed
|
|
23
|
-
* @param {string[]} [data.artifactsWritten] - Generated artifacts
|
|
24
|
-
* @param {Object[]} [data.testsRun] - Test results { name, status, evidence }
|
|
25
|
-
* @param {Object[]} [data.determinismChecks] - Determinism checks { name, status, total }
|
|
26
|
-
* @param {Object[]} [data.knownIssues] - Issues discovered { type, description }
|
|
27
|
-
* @param {string} [data.intent] - Updated intent description
|
|
28
|
-
* @returns {Object} Updated capsule
|
|
29
|
-
*/
|
|
30
|
-
export function checkpointSession(data?: {
|
|
31
|
-
sessionId?: string;
|
|
32
|
-
pathsTouched?: string[];
|
|
33
|
-
artifactsWritten?: string[];
|
|
34
|
-
testsRun?: any[];
|
|
35
|
-
determinismChecks?: any[];
|
|
36
|
-
knownIssues?: any[];
|
|
37
|
-
intent?: string;
|
|
38
|
-
}): any;
|
|
39
|
-
/**
|
|
40
|
-
* End a session, finalizing the capsule with handoff information
|
|
41
|
-
* @param {Object} data - End session data
|
|
42
|
-
* @param {string} [data.sessionId] - Specific session ID (uses latest active if omitted)
|
|
43
|
-
* @param {string[]} [data.nextActions] - What the next session should do
|
|
44
|
-
* @param {string[]} [data.riskNotes] - Risk notes for handoff
|
|
45
|
-
* @returns {Object} Finalized capsule
|
|
46
|
-
*/
|
|
47
|
-
export function endSession(data?: {
|
|
48
|
-
sessionId?: string;
|
|
49
|
-
nextActions?: string[];
|
|
50
|
-
riskNotes?: string[];
|
|
51
|
-
}): any;
|
|
52
|
-
/**
|
|
53
|
-
* List all sessions
|
|
54
|
-
* @param {Object} [options] - List options
|
|
55
|
-
* @param {string} [options.status] - Filter by status (active, completed)
|
|
56
|
-
* @param {number} [options.limit] - Max entries to return
|
|
57
|
-
* @returns {Object[]} Session entries
|
|
58
|
-
*/
|
|
59
|
-
export function listSessions(options?: {
|
|
60
|
-
status?: string;
|
|
61
|
-
limit?: number;
|
|
62
|
-
}): any[];
|
|
63
|
-
/**
|
|
64
|
-
* Show a specific session's full capsule
|
|
65
|
-
* @param {string} sessionId - Session ID (or "latest" for most recent)
|
|
66
|
-
* @returns {Object} Full capsule
|
|
67
|
-
*/
|
|
68
|
-
export function showSession(sessionId: string): any;
|
|
69
|
-
/**
|
|
70
|
-
* Briefing output for session start hooks - returns structured text
|
|
71
|
-
* @returns {string} Briefing text
|
|
72
|
-
*/
|
|
73
|
-
export function getBriefing(): string;
|
|
74
|
-
/**
|
|
75
|
-
* Load the session registry
|
|
76
|
-
* @param {string} root - Repository root
|
|
77
|
-
* @returns {Object} Registry object
|
|
78
|
-
*/
|
|
79
|
-
export function loadRegistry(root: string): any;
|
|
80
|
-
/**
|
|
81
|
-
* Get the git repository root
|
|
82
|
-
* @returns {string} Absolute path to repo root
|
|
83
|
-
*/
|
|
84
|
-
export function getRepoRoot(): string;
|
|
85
|
-
export const SESSIONS_DIR: ".caws/sessions";
|
|
86
|
-
export const REGISTRY_FILE: ".caws/sessions.json";
|
|
87
|
-
export const CAPSULE_SCHEMA_VERSION: "caws.capsule.v1";
|
|
88
|
-
/**
|
|
89
|
-
* Find all active sessions on a specific branch
|
|
90
|
-
* @param {string} branch - Branch name to search
|
|
91
|
-
* @returns {Object[]} Active sessions on that branch with id and metadata
|
|
92
|
-
*/
|
|
93
|
-
export function findActiveSessionsOnBranch(branch: string): any[];
|
|
94
|
-
//# sourceMappingURL=session-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.js"],"names":[],"mappings":"AA4JA;;;;;;;;;GASG;AACH,uCAPG;IAAyB,IAAI,GAArB,MAAM;IACW,MAAM,GAAvB,MAAM;IACa,YAAY,GAA/B,MAAM,EAAE;IACW,cAAc,GAAjC,MAAM,EAAE;IACS,MAAM,GAAvB,MAAM;CACd,OAyFF;AAED;;;;;;;;;;;GAWG;AACH,yCATG;IAAsB,SAAS,GAAvB,MAAM;IACU,YAAY,GAA5B,MAAM,EAAE;IACQ,gBAAgB,GAAhC,MAAM,EAAE;IACQ,QAAQ,GAAxB,KAAQ;IACQ,iBAAiB,GAAjC,KAAQ;IACQ,WAAW,GAA3B,KAAQ;IACM,MAAM,GAApB,MAAM;CACd,OAwDF;AAED;;;;;;;GAOG;AACH,kCALG;IAAsB,SAAS,GAAvB,MAAM;IACU,WAAW,GAA3B,MAAM,EAAE;IACQ,SAAS,GAAzB,MAAM,EAAE;CAChB,OAgEF;AAED;;;;;;GAMG;AACH,uCAJG;IAAyB,MAAM,GAAvB,MAAM;IACW,KAAK,GAAtB,MAAM;CACd,GAAU,KAAQ,CAuBpB;AAED;;;;GAIG;AACH,uCAHW,MAAM,OA2BhB;AAED;;;GAGG;AACH,+BAFa,MAAM,CA8DlB;AAlZD;;;;GAIG;AACH,mCAHW,MAAM,OAahB;AApHD;;;GAGG;AACH,+BAFa,MAAM,CAMlB;AAZD,2BAAqB,gBAAgB,CAAC;AACtC,4BAAsB,qBAAqB,CAAC;AAC5C,qCAA+B,iBAAiB,CAAC;AAwgBjD;;;;GAIG;AACH,mDAHW,MAAM,GACJ,KAAQ,CAQpB"}
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Spec File Manager - Handles WorkingSpec file operations and YAML conversion
|
|
3
|
-
*
|
|
4
|
-
* Features:
|
|
5
|
-
* - Bidirectional WorkingSpec ↔ YAML conversion
|
|
6
|
-
* - Temporary file support for validation workflows
|
|
7
|
-
* - Backup/restore capabilities
|
|
8
|
-
* - Automatic cleanup of old temporary files
|
|
9
|
-
*/
|
|
10
|
-
export class SpecFileManager {
|
|
11
|
-
constructor(config?: {});
|
|
12
|
-
projectRoot: any;
|
|
13
|
-
useTemporaryFiles: any;
|
|
14
|
-
tempDir: any;
|
|
15
|
-
/**
|
|
16
|
-
* Convert WorkingSpec object to YAML string
|
|
17
|
-
*
|
|
18
|
-
* @param {Object} spec - WorkingSpec to convert
|
|
19
|
-
* @returns {string} YAML string representation
|
|
20
|
-
*/
|
|
21
|
-
specToYaml(spec: any): string;
|
|
22
|
-
/**
|
|
23
|
-
* Parse YAML string to WorkingSpec object
|
|
24
|
-
*
|
|
25
|
-
* @param {string} yamlContent - YAML string to parse
|
|
26
|
-
* @returns {Object} Parsed WorkingSpec object
|
|
27
|
-
* @throws {Error} If YAML is invalid or doesn't match WorkingSpec schema
|
|
28
|
-
*/
|
|
29
|
-
yamlToSpec(yamlContent: string): any;
|
|
30
|
-
/**
|
|
31
|
-
* Get path to .caws/working-spec.yaml in project
|
|
32
|
-
*
|
|
33
|
-
* @returns {string} Absolute path to working spec file
|
|
34
|
-
*/
|
|
35
|
-
getSpecFilePath(): string;
|
|
36
|
-
/**
|
|
37
|
-
* Check if working spec file exists
|
|
38
|
-
*
|
|
39
|
-
* @returns {Promise<boolean>} True if file exists
|
|
40
|
-
*/
|
|
41
|
-
specFileExists(): Promise<boolean>;
|
|
42
|
-
/**
|
|
43
|
-
* Read working spec from .caws/working-spec.yaml
|
|
44
|
-
*
|
|
45
|
-
* @returns {Promise<Object>} Parsed WorkingSpec object
|
|
46
|
-
* @throws {Error} If file doesn't exist or is invalid
|
|
47
|
-
*/
|
|
48
|
-
readSpecFile(): Promise<any>;
|
|
49
|
-
/**
|
|
50
|
-
* Write WorkingSpec to file
|
|
51
|
-
*
|
|
52
|
-
* Writes to .caws/working-spec.yaml or a temporary file based on configuration.
|
|
53
|
-
*
|
|
54
|
-
* @param {Object} spec - WorkingSpec to write
|
|
55
|
-
* @param {Object} options - Write options
|
|
56
|
-
* @param {boolean} options.useTemp - Override temp file usage
|
|
57
|
-
* @param {boolean} options.backup - Create backup before writing
|
|
58
|
-
* @returns {Promise<Object>} Write result with file path and cleanup function
|
|
59
|
-
*/
|
|
60
|
-
writeSpecFile(spec: any, options?: {
|
|
61
|
-
useTemp: boolean;
|
|
62
|
-
backup: boolean;
|
|
63
|
-
}): Promise<any>;
|
|
64
|
-
/**
|
|
65
|
-
* Update existing working spec file
|
|
66
|
-
*
|
|
67
|
-
* Reads current spec, merges changes, and writes back.
|
|
68
|
-
*
|
|
69
|
-
* @param {Object} updates - Partial WorkingSpec with fields to update
|
|
70
|
-
* @returns {Promise<Object>} Updated WorkingSpec
|
|
71
|
-
*/
|
|
72
|
-
updateSpecFile(updates: any): Promise<any>;
|
|
73
|
-
/**
|
|
74
|
-
* Create backup of working spec
|
|
75
|
-
*
|
|
76
|
-
* @returns {Promise<string>} Path to backup file
|
|
77
|
-
*/
|
|
78
|
-
backupSpecFile(): Promise<string>;
|
|
79
|
-
/**
|
|
80
|
-
* Restore working spec from backup
|
|
81
|
-
*
|
|
82
|
-
* @param {string} backupPath - Path to backup file
|
|
83
|
-
* @returns {Promise<void>}
|
|
84
|
-
*/
|
|
85
|
-
restoreSpecFile(backupPath: string): Promise<void>;
|
|
86
|
-
/**
|
|
87
|
-
* List all backup files
|
|
88
|
-
*
|
|
89
|
-
* @returns {Promise<string[]>} Array of backup file paths
|
|
90
|
-
*/
|
|
91
|
-
listBackups(): Promise<string[]>;
|
|
92
|
-
/**
|
|
93
|
-
* Delete old backup files
|
|
94
|
-
*
|
|
95
|
-
* @param {Object} options - Cleanup options
|
|
96
|
-
* @param {number} options.maxAge - Maximum age in milliseconds (default: 7 days)
|
|
97
|
-
* @param {number} options.keep - Minimum number of backups to keep (default: 5)
|
|
98
|
-
* @returns {Promise<number>} Number of backups deleted
|
|
99
|
-
*/
|
|
100
|
-
cleanupBackups(options?: {
|
|
101
|
-
maxAge: number;
|
|
102
|
-
keep: number;
|
|
103
|
-
}): Promise<number>;
|
|
104
|
-
/**
|
|
105
|
-
* Validate spec file exists and is parseable
|
|
106
|
-
*
|
|
107
|
-
* @returns {Promise<Object>} Validation result
|
|
108
|
-
*/
|
|
109
|
-
validateSpecFile(): Promise<any>;
|
|
110
|
-
/**
|
|
111
|
-
* Clean up old temporary spec files
|
|
112
|
-
*
|
|
113
|
-
* Removes temp files older than specified age.
|
|
114
|
-
*
|
|
115
|
-
* @param {number} maxAge - Maximum age in milliseconds (default: 1 hour)
|
|
116
|
-
* @returns {Promise<number>} Number of files cleaned up
|
|
117
|
-
*/
|
|
118
|
-
cleanupTempFiles(maxAge?: number): Promise<number>;
|
|
119
|
-
/**
|
|
120
|
-
* Get spec file stats (size, modified date, etc.)
|
|
121
|
-
*
|
|
122
|
-
* @returns {Promise<Object>} File stats
|
|
123
|
-
*/
|
|
124
|
-
getSpecFileStats(): Promise<any>;
|
|
125
|
-
/**
|
|
126
|
-
* Create a new SpecFileManager instance with different configuration
|
|
127
|
-
*
|
|
128
|
-
* @param {Object} config - New configuration
|
|
129
|
-
* @returns {SpecFileManager} New instance
|
|
130
|
-
*/
|
|
131
|
-
withConfig(config: any): SpecFileManager;
|
|
132
|
-
}
|
|
133
|
-
export const defaultSpecFileManager: SpecFileManager;
|
|
134
|
-
/**
|
|
135
|
-
* Create a SpecFileManager instance with default configuration
|
|
136
|
-
*
|
|
137
|
-
* @param {string} projectRoot - Project root directory
|
|
138
|
-
* @param {Object} options - Additional options
|
|
139
|
-
* @returns {SpecFileManager} SpecFileManager instance
|
|
140
|
-
*/
|
|
141
|
-
export function createSpecFileManager(projectRoot: string, options?: any): SpecFileManager;
|
|
142
|
-
export declare function specToYaml(spec: any): string;
|
|
143
|
-
export declare function yamlToSpec(yaml: any): any;
|
|
144
|
-
export declare function readSpecFile(projectRoot: any): Promise<any>;
|
|
145
|
-
export declare function writeSpecFile(spec: any, projectRoot: any, options: any): Promise<any>;
|
|
146
|
-
//# sourceMappingURL=SpecFileManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SpecFileManager.d.ts","sourceRoot":"","sources":["../../src/spec/SpecFileManager.js"],"names":[],"mappings":"AAaA;;;;;;;;GAQG;AACH;IACE,yBAIC;IAHC,iBAAsD;IACtD,uBAA0D;IAC1D,aAA4C;IAG9C;;;;;OAKG;IACH,uBAFa,MAAM,CASlB;IAED;;;;;;OAMG;IACH,wBAJW,MAAM,OAqBhB;IAED;;;;OAIG;IACH,mBAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,kBAFa,OAAO,CAAC,OAAO,CAAC,CAS5B;IAED;;;;;OAKG;IACH,gBAHa,OAAO,KAAQ,CAe3B;IAED;;;;;;;;;;OAUG;IACH,mCAJG;QAAyB,OAAO,EAAxB,OAAO;QACU,MAAM,EAAvB,OAAO;KACf,GAAU,OAAO,KAAQ,CA2C3B;IAED;;;;;;;OAOG;IACH,8BAFa,OAAO,KAAQ,CAa3B;IAED;;;;OAIG;IACH,kBAFa,OAAO,CAAC,MAAM,CAAC,CAS3B;IAED;;;;;OAKG;IACH,4BAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAKzB;IAED;;;;OAIG;IACH,eAFa,OAAO,CAAC,MAAM,EAAE,CAAC,CAoB7B;IAED;;;;;;;OAOG;IACH,yBAJG;QAAwB,MAAM,EAAtB,MAAM;QACU,IAAI,EAApB,MAAM;KACd,GAAU,OAAO,CAAC,MAAM,CAAC,CA+B3B;IAED;;;;OAIG;IACH,oBAFa,OAAO,KAAQ,CAe3B;IAED;;;;;;;OAOG;IACH,0BAHW,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,CA6B3B;IAED;;;;OAIG;IACH,oBAFa,OAAO,KAAQ,CA0B3B;IAED;;;;;OAKG;IACH,yBAFa,eAAe,CAS3B;CACF;AAiBD,qDAAqD;AAfrD;;;;;;GAMG;AACH,mDAJW,MAAM,kBAEJ,eAAe,CAO3B;AAWa,sDAAiD;AACjD,mDAAiD;AAC/C,qEAKb;AACc,+FAKd"}
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# CAWS Tool Validation Hook
|
|
3
|
-
# Validates MCP tool calls against CAWS security policies
|
|
4
|
-
# @author @darianrosebrook
|
|
5
|
-
|
|
6
|
-
set -e
|
|
7
|
-
|
|
8
|
-
# Read input from Cursor
|
|
9
|
-
INPUT=$(cat)
|
|
10
|
-
TOOL_NAME=$(echo "$INPUT" | jq -r '.tool_name // ""')
|
|
11
|
-
TOOL_ARGS=$(echo "$INPUT" | jq -r '.arguments // "{}"')
|
|
12
|
-
|
|
13
|
-
# Only validate CAWS-related tools
|
|
14
|
-
if [[ "$TOOL_NAME" =~ ^caws_ ]]; then
|
|
15
|
-
|
|
16
|
-
echo "🔍 Validating CAWS tool call: $TOOL_NAME" >&2
|
|
17
|
-
|
|
18
|
-
# Check if CAWS CLI is available
|
|
19
|
-
if ! command -v caws &> /dev/null; then
|
|
20
|
-
echo '{
|
|
21
|
-
"userMessage": "❌ CAWS CLI not available",
|
|
22
|
-
"agentMessage": "Cannot execute CAWS tools - CLI not installed",
|
|
23
|
-
"block": true,
|
|
24
|
-
"suggestions": [
|
|
25
|
-
"Install CAWS CLI: npm install -g @caws/cli",
|
|
26
|
-
"Check PATH includes CAWS CLI"
|
|
27
|
-
]
|
|
28
|
-
}'
|
|
29
|
-
exit 1
|
|
30
|
-
fi
|
|
31
|
-
|
|
32
|
-
# Check if we're in a CAWS project
|
|
33
|
-
if [[ ! -f ".caws/working-spec.yaml" ]]; then
|
|
34
|
-
echo '{
|
|
35
|
-
"userMessage": "⚠️ Not in a CAWS project",
|
|
36
|
-
"agentMessage": "CAWS tools require .caws/working-spec.yaml",
|
|
37
|
-
"suggestions": [
|
|
38
|
-
"Initialize CAWS project: caws init",
|
|
39
|
-
"Create working spec: caws scaffold"
|
|
40
|
-
]
|
|
41
|
-
}'
|
|
42
|
-
fi
|
|
43
|
-
|
|
44
|
-
# Validate tool-specific arguments
|
|
45
|
-
case "$TOOL_NAME" in
|
|
46
|
-
"caws_waiver_create")
|
|
47
|
-
# Check waiver creation permissions
|
|
48
|
-
IMPACT_LEVEL=$(echo "$TOOL_ARGS" | jq -r '.impactLevel // "low"')
|
|
49
|
-
|
|
50
|
-
if [[ "$IMPACT_LEVEL" == "critical" ]]; then
|
|
51
|
-
echo '{
|
|
52
|
-
"userMessage": "🚨 Critical waiver requires approval",
|
|
53
|
-
"agentMessage": "Critical impact waivers need human approval",
|
|
54
|
-
"block": false,
|
|
55
|
-
"warnings": [
|
|
56
|
-
"Critical waivers require code owner review",
|
|
57
|
-
"Waiver will be flagged for manual approval"
|
|
58
|
-
]
|
|
59
|
-
}'
|
|
60
|
-
fi
|
|
61
|
-
|
|
62
|
-
# Check expiration time
|
|
63
|
-
EXPIRES_AT=$(echo "$TOOL_ARGS" | jq -r '.expiresAt // ""')
|
|
64
|
-
if [[ -n "$EXPIRES_AT" ]]; then
|
|
65
|
-
EXPIRE_TIME=$(date -j -f "%Y-%m-%dT%H:%M:%S%Z" "$EXPIRES_AT" +%s 2>/dev/null || echo "")
|
|
66
|
-
CURRENT_TIME=$(date +%s)
|
|
67
|
-
DAYS_DIFF=$(( (EXPIRE_TIME - CURRENT_TIME) / 86400 ))
|
|
68
|
-
|
|
69
|
-
if [[ $DAYS_DIFF -gt 90 ]]; then
|
|
70
|
-
echo '{
|
|
71
|
-
"userMessage": "⚠️ Waiver expiration too far in future",
|
|
72
|
-
"agentMessage": "Waivers cannot exceed 90 days expiration",
|
|
73
|
-
"suggestions": [
|
|
74
|
-
"Reduce expiration time to within 90 days",
|
|
75
|
-
"Consider shorter waiver periods for better security"
|
|
76
|
-
]
|
|
77
|
-
}'
|
|
78
|
-
fi
|
|
79
|
-
fi
|
|
80
|
-
;;
|
|
81
|
-
|
|
82
|
-
"caws_evaluate"|"caws_iterate")
|
|
83
|
-
# These are generally safe to run
|
|
84
|
-
echo '{"userMessage": "✅ CAWS quality tool validated", "agentMessage": "Tool execution approved"}'
|
|
85
|
-
;;
|
|
86
|
-
|
|
87
|
-
*)
|
|
88
|
-
# Unknown CAWS tool - allow but warn
|
|
89
|
-
echo '{
|
|
90
|
-
"userMessage": "⚠️ Unknown CAWS tool",
|
|
91
|
-
"agentMessage": "Tool '"'"$TOOL_NAME"'"' not recognized - proceeding with caution",
|
|
92
|
-
"suggestions": [
|
|
93
|
-
"Verify tool name and arguments",
|
|
94
|
-
"Check CAWS CLI documentation"
|
|
95
|
-
]
|
|
96
|
-
}'
|
|
97
|
-
;;
|
|
98
|
-
esac
|
|
99
|
-
|
|
100
|
-
elif [[ "$TOOL_NAME" =~ (exec|shell|run|terminal) ]]; then
|
|
101
|
-
# Generic shell execution - check for dangerous commands
|
|
102
|
-
COMMAND=$(echo "$TOOL_ARGS" | jq -r '.command // .cmd // ""')
|
|
103
|
-
|
|
104
|
-
DANGEROUS_COMMANDS=("rm -rf" "rm -rf /" "format" "mkfs" "dd" "fdisk" ">" "sudo" "chmod 777")
|
|
105
|
-
|
|
106
|
-
for dangerous in "${DANGEROUS_COMMANDS[@]}"; do
|
|
107
|
-
if [[ "$COMMAND" =~ $dangerous ]]; then
|
|
108
|
-
echo '{
|
|
109
|
-
"userMessage": "🚫 Dangerous command blocked",
|
|
110
|
-
"agentMessage": "Command contains dangerous operations: '"'"$dangerous"'"'",
|
|
111
|
-
"block": true,
|
|
112
|
-
"suggestions": [
|
|
113
|
-
"Avoid destructive operations",
|
|
114
|
-
"Use safer alternatives",
|
|
115
|
-
"Get explicit approval for dangerous commands"
|
|
116
|
-
]
|
|
117
|
-
}'
|
|
118
|
-
exit 1
|
|
119
|
-
fi
|
|
120
|
-
done
|
|
121
|
-
fi
|