mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-01 08:13:37 +00:00
docs: add comprehensive documentation for shared packages
- Added README.md for all 6 shared packages: - @automaker/types: Type definitions and interfaces - @automaker/utils: Utility functions (logger, error handling, images) - @automaker/platform: Platform utilities (paths, subprocess, security) - @automaker/model-resolver: Claude model resolution - @automaker/dependency-resolver: Feature dependency ordering - @automaker/git-utils: Git operations and diff generation - Removed MIT license from all package.json files (using custom dual license) - Created comprehensive LLM guide (docs/llm-shared-packages.md): - When to use each package - Import patterns and examples - Common usage patterns - Migration checklist - Do's and don'ts for LLMs Documentation helps developers and AI assistants understand package purpose, usage, and best practices. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
165
libs/platform/README.md
Normal file
165
libs/platform/README.md
Normal file
@@ -0,0 +1,165 @@
|
||||
# @automaker/platform
|
||||
|
||||
Platform-specific utilities for AutoMaker.
|
||||
|
||||
## Overview
|
||||
|
||||
This package provides platform-specific utilities including path management, subprocess handling, and security validation. It handles AutoMaker's directory structure and system operations.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
npm install @automaker/platform
|
||||
```
|
||||
|
||||
## Exports
|
||||
|
||||
### Path Management
|
||||
AutoMaker directory structure utilities.
|
||||
|
||||
```typescript
|
||||
import {
|
||||
getAutomakerDir,
|
||||
getFeaturesDir,
|
||||
getFeatureDir,
|
||||
getFeatureImagesDir,
|
||||
getBoardDir,
|
||||
getImagesDir,
|
||||
getContextDir,
|
||||
getWorktreesDir,
|
||||
getAppSpecPath,
|
||||
getBranchTrackingPath,
|
||||
ensureAutomakerDir
|
||||
} from '@automaker/platform';
|
||||
|
||||
// Get AutoMaker directory: /project/.automaker
|
||||
const automakerDir = getAutomakerDir('/project/path');
|
||||
|
||||
// Get features directory: /project/.automaker/features
|
||||
const featuresDir = getFeaturesDir('/project/path');
|
||||
|
||||
// Get specific feature directory: /project/.automaker/features/feature-id
|
||||
const featureDir = getFeatureDir('/project/path', 'feature-id');
|
||||
|
||||
// Get feature images: /project/.automaker/features/feature-id/images
|
||||
const imagesDir = getFeatureImagesDir('/project/path', 'feature-id');
|
||||
|
||||
// Ensure .automaker directory exists
|
||||
await ensureAutomakerDir('/project/path');
|
||||
```
|
||||
|
||||
### Subprocess Management
|
||||
Spawn and manage subprocesses with JSON-lines output.
|
||||
|
||||
```typescript
|
||||
import { spawnJSONLProcess, spawnProcess } from '@automaker/platform';
|
||||
|
||||
// Spawn process with JSONL output parsing
|
||||
const result = await spawnJSONLProcess({
|
||||
command: 'claude-agent',
|
||||
args: ['--output', 'jsonl'],
|
||||
cwd: '/project/path',
|
||||
onLine: (data) => console.log('Received:', data),
|
||||
onError: (error) => console.error('Error:', error)
|
||||
});
|
||||
|
||||
// Spawn regular process
|
||||
const output = await spawnProcess({
|
||||
command: 'git',
|
||||
args: ['status'],
|
||||
cwd: '/project/path'
|
||||
});
|
||||
```
|
||||
|
||||
### Security Validation
|
||||
Path validation and security checks.
|
||||
|
||||
```typescript
|
||||
import {
|
||||
initAllowedPaths,
|
||||
addAllowedPath,
|
||||
isPathAllowed,
|
||||
validatePath,
|
||||
getAllowedPaths
|
||||
} from '@automaker/platform';
|
||||
|
||||
// Initialize allowed paths from environment
|
||||
initAllowedPaths();
|
||||
|
||||
// Add custom allowed path
|
||||
addAllowedPath('/custom/path');
|
||||
|
||||
// Check if path is allowed
|
||||
if (isPathAllowed('/project/path')) {
|
||||
console.log('Path is allowed');
|
||||
}
|
||||
|
||||
// Validate and normalize path
|
||||
const safePath = validatePath('/requested/path');
|
||||
|
||||
// Get all allowed paths
|
||||
const allowed = getAllowedPaths();
|
||||
```
|
||||
|
||||
## Usage Example
|
||||
|
||||
```typescript
|
||||
import {
|
||||
getFeatureDir,
|
||||
ensureAutomakerDir,
|
||||
spawnJSONLProcess,
|
||||
validatePath
|
||||
} from '@automaker/platform';
|
||||
|
||||
async function executeFeature(projectPath: string, featureId: string) {
|
||||
// Validate project path
|
||||
const safePath = validatePath(projectPath);
|
||||
|
||||
// Ensure AutoMaker directory exists
|
||||
await ensureAutomakerDir(safePath);
|
||||
|
||||
// Get feature directory
|
||||
const featureDir = getFeatureDir(safePath, featureId);
|
||||
|
||||
// Execute agent in feature directory
|
||||
const result = await spawnJSONLProcess({
|
||||
command: 'claude-agent',
|
||||
args: ['execute'],
|
||||
cwd: featureDir,
|
||||
onLine: (data) => {
|
||||
if (data.type === 'progress') {
|
||||
console.log('Progress:', data.progress);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
```
|
||||
|
||||
## Directory Structure
|
||||
|
||||
AutoMaker uses the following directory structure:
|
||||
|
||||
```
|
||||
/project/
|
||||
├── .automaker/
|
||||
│ ├── features/ # Feature storage
|
||||
│ │ └── {featureId}/
|
||||
│ │ ├── feature.json
|
||||
│ │ └── images/
|
||||
│ ├── board/ # Board configuration
|
||||
│ ├── context/ # Context files
|
||||
│ ├── images/ # Global images
|
||||
│ ├── worktrees/ # Git worktrees
|
||||
│ ├── app-spec.md # App specification
|
||||
│ └── branch-tracking.json
|
||||
```
|
||||
|
||||
## Dependencies
|
||||
|
||||
- `@automaker/types` - Type definitions
|
||||
|
||||
## Used By
|
||||
|
||||
- `@automaker/server`
|
||||
@@ -10,7 +10,6 @@
|
||||
},
|
||||
"keywords": ["automaker", "platform"],
|
||||
"author": "",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@automaker/types": "^1.0.0"
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user