name: OpenCode Prompt description: Esegue un prompt opencode sul codice del repository. inputs: prompt: description: Il prompt da passare a opencode. required: true api-key: description: API key per il provider opencode. required: true api-provider: description: Nome del provider (default: opencode-go). required: false default: "opencode-go" model: description: Modello AI (formato provider/model). required: false default: "" agent: description: Agente opencode da utilizzare. required: false default: "" working-directory: description: Directory di lavoro per opencode. Se vuoto, usa la radice del repo. required: false default: "" outputs: result: description: Output prodotto da opencode. value: ${{ steps.esegui.outputs.result }} runs: using: composite steps: - name: Configura autenticazione opencode shell: bash run: | set -euo pipefail mkdir -p ~/.local/share/opencode jq -n \ --arg provider "${{ inputs.api-provider }}" \ --arg key "${{ inputs.api-key }}" \ '{($provider): {type: "api", key: $key}}' > ~/.local/share/opencode/auth.json chmod 600 ~/.local/share/opencode/auth.json - name: Esegui opencode id: esegui shell: bash run: | set -euo pipefail WD="${{ inputs.working-directory }}" [ -z "$WD" ] && WD="$GITHUB_WORKSPACE" cd "$WD" EXTRA_ARGS=() [ -n "${{ inputs.model }}" ] && EXTRA_ARGS+=(--model "${{ inputs.model }}") [ -n "${{ inputs.agent }}" ] && EXTRA_ARGS+=(--agent "${{ inputs.agent }}") opencode run "${{ inputs.prompt }}" "${EXTRA_ARGS[@]}" --dangerously-skip-permissions 2>&1 | tee "$GITHUB_WORKSPACE/opencode-output.txt" RESULT=$(cat "$GITHUB_WORKSPACE/opencode-output.txt") { echo "result<> "$GITHUB_OUTPUT"