UNPKG

aios-core

Version:

Synkra AIOS: AI-Orchestrated System for Full Stack Development - Core Framework

317 lines (227 loc) 7.22 kB
--- tools: - pm-tool # Uses configured PM tool (ClickUp, GitHub, Jira, or local-only) --- # pull-story **Purpose:** Pull story updates from the configured PM tool to check for external changes. **When to Use:** - To check if story status changed in PM tool - Before starting work on a story (ensure you have latest state) - To detect if someone else updated the story in PM tool ## Execution Modes **Choose your execution mode:** ### 1. YOLO Mode - Fast, Autonomous (0-1 prompts) - Autonomous decision making with logging - Minimal user interaction - **Best for:** Simple, deterministic tasks ### 2. Interactive Mode - Balanced, Educational (5-10 prompts) **[DEFAULT]** - Explicit decision checkpoints - Educational explanations - **Best for:** Learning, complex decisions ### 3. Pre-Flight Planning - Comprehensive Upfront Planning - Task analysis phase (identify all ambiguities) - Zero ambiguity execution - **Best for:** Ambiguous requirements, critical work **Parameter:** `mode` (optional, default: `interactive`) --- ## Task Definition (AIOS Task Format V1.0) ```yaml task: poPullStory() responsável: Pax (Balancer) responsavel_type: Agente atomic_layer: Organism **Entrada:** - campo: task tipo: string origem: User Input obrigatório: true validação: Must be registered task - campo: parameters tipo: object origem: User Input obrigatório: false validação: Valid task parameters - campo: mode tipo: string origem: User Input obrigatório: false validação: yolo|interactive|pre-flight **Saída:** - campo: execution_result tipo: object destino: Memory persistido: false - campo: logs tipo: array destino: File (.ai/logs/*) persistido: true - campo: state tipo: object destino: State management persistido: true ``` --- ## Pre-Conditions **Purpose:** Validate prerequisites BEFORE task execution (blocking) **Checklist:** ```yaml pre-conditions: - [ ] Task is registered; required parameters provided; dependencies met tipo: pre-condition blocker: true validação: | Check task is registered; required parameters provided; dependencies met error_message: "Pre-condition failed: Task is registered; required parameters provided; dependencies met" ``` --- ## Post-Conditions **Purpose:** Validate execution success AFTER task completes **Checklist:** ```yaml post-conditions: - [ ] Task completed; exit code 0; expected outputs created tipo: post-condition blocker: true validação: | Verify task completed; exit code 0; expected outputs created error_message: "Post-condition failed: Task completed; exit code 0; expected outputs created" ``` --- ## Acceptance Criteria **Purpose:** Definitive pass/fail criteria for task completion **Checklist:** ```yaml acceptance-criteria: - [ ] Task completed as expected; side effects documented tipo: acceptance-criterion blocker: true validação: | Assert task completed as expected; side effects documented error_message: "Acceptance criterion not met: Task completed as expected; side effects documented" ``` --- ## Tools **External/shared resources used by this task:** - **Tool:** task-runner - **Purpose:** Task execution and orchestration - **Source:** .aios-core/core/task-runner.js - **Tool:** logger - **Purpose:** Execution logging and error tracking - **Source:** .aios-core/utils/logger.js --- ## Scripts **Agent-specific code for this task:** - **Script:** execute-task.js - **Purpose:** Generic task execution wrapper - **Language:** JavaScript - **Location:** .aios-core/scripts/execute-task.js --- ## Error Handling **Strategy:** retry **Common Errors:** 1. **Error:** Task Not Found - **Cause:** Specified task not registered in system - **Resolution:** Verify task name and registration - **Recovery:** List available tasks, suggest similar 2. **Error:** Invalid Parameters - **Cause:** Task parameters do not match expected schema - **Resolution:** Validate parameters against task definition - **Recovery:** Provide parameter template, reject execution 3. **Error:** Execution Timeout - **Cause:** Task exceeds maximum execution time - **Resolution:** Optimize task or increase timeout - **Recovery:** Kill task, cleanup resources, log state --- ## Performance **Expected Metrics:** ```yaml duration_expected: 5-15 min (estimated) cost_estimated: $0.003-0.010 token_usage: ~3,000-10,000 tokens ``` **Optimization Notes:** - Break into smaller workflows; implement checkpointing; use async processing where possible --- ## Metadata ```yaml story: N/A version: 1.0.0 dependencies: - N/A tags: - product-management - planning updated_at: 2025-11-17 ``` --- ## Task Inputs ```yaml required: - story_id: '{epic}.{story}' # e.g., "3.20" optional: - auto_merge: false # If true, automatically apply updates to local file ``` ## Prerequisites - PM tool configured in `.aios-pm-config.yaml` (or will use local-only mode) ## Task Execution Steps ### Step 1: Get PM Adapter ```javascript const { getPMAdapter, isPMToolConfigured } = require('../.aios-core/scripts/pm-adapter-factory'); if (!isPMToolConfigured()) { console.log('ℹ️ Local-only mode: No PM tool configured'); console.log(' Local story file is the source of truth'); return; } const adapter = getPMAdapter(); console.log(`Pulling from ${adapter.getName()}...`); ``` ### Step 2: Pull Updates ```javascript const result = await adapter.pullStory(storyId); if (result.success) { if (result.updates) { console.log(`📥 Updates found:`); console.log(JSON.stringify(result.updates, null, 2)); } else { console.log(`✅ Story is up to date`); } } else { console.error(`❌ Pull failed: ${result.error}`); } ``` ### Step 3: Display Updates (if any) If updates found: ```markdown 📥 Updates available from {PM_TOOL}: **Status:** {old_status} {new_status} **Updated:** {timestamp} Review changes before merging to local file. ``` ### Step 4: Optional Auto-Merge If `auto_merge: true` and updates exist: ```javascript // Update local story file with pulled changes // CAUTION: Only merge non-conflicting fields (status, etc.) // DO NOT overwrite local task progress or dev notes ``` ## Error Handling - **No PM tool configured**: Inform local-only mode (not an error) - **Story not found in PM tool**: Display helpful message - **Connection failed**: Show adapter-specific error ## Notes - LocalAdapter always returns {success: true, updates: null} - Current implementation is pull-only (unidirectional sync) - Auto-merge should be used cautiously to avoid overwriting local changes - Future enhancement: bidirectional sync with conflict resolution ## Limitations (v1.0) - **Unidirectional**: Only pulls status changes, not full content - **No conflict resolution**: Manual merge required if conflicts exist - **Limited field mapping**: Only status synced in v1.0 ## Integration with Story Manager ```javascript const { pullStoryFromPM } = require('../.aios-core/scripts/story-manager'); const updates = await pullStoryFromPM(storyId); if (updates) { console.log('Updates available:', updates); } ```