SparkUAPIExperimentalllms.txtРусский

Sections · 10/11

Recipes

Ready-made examples — deploy progress, Xcode build, server monitoring, timer, task queue, agent confirmation.

Markdown ↗

Each recipe shows what integration you need (fields and card template, see Field types) and working code. Tokens everywhere are read from SPARKU_TOKEN_<ADDRESS> — see sparku CLI.

1. Deploy progress in CI with flash on error#

Integration: deploy, card template "Progress". Fields: progress (progress), stage (state: running/done/failed), title (text).

#!/bin/bash
# deploy.sh — run in CI
set -euo pipefail

sparku push deploy title="api · prod" stage=running progress=0

total_steps=5
for step in $(seq 1 $total_steps); do
  ./run-step.sh "$step" || {
    sparku push deploy stage=failed
    sparku notify deploy "Deploy failed at step $step" --state failed --color red
    exit 1
  }
  sparku push deploy progress="$(( step * 100 / total_steps ))%"
done

sparku push deploy stage=done progress=100%
sparku notify deploy "Deploy ready" --state done

2. Xcode build / swift build#

Integration: build, template "Status". Fields: phase (state: building/testing/passed/failed), title (text).

#!/bin/bash
# build.sh
sparku push build title="SparkU" phase=building

if ! xcodebuild -scheme SparkU -destination 'platform=macOS' build 2>build.log; then
  sparku push build phase=failed
  sparku notify build "Build failed" --state failed --color red
  exit 1
fi

sparku push build phase=testing
if ! xcodebuild -scheme SparkU -destination 'platform=macOS' test 2>test.log; then
  sparku push build phase=failed
  sparku notify build "Tests failed" --state failed --color red
  exit 1
fi

sparku push build phase=passed
sparku notify build "Build and tests green" --state passed

3. Server monitoring on Python every N seconds#

Integration: server, template "Meters". Fields: cpu (number, 0–100, %), memory (number, 0–100, %), latency (number, ms).

#!/usr/bin/env python3
import http.client, json, os, socket, time

TOKEN = os.environ["SPARKU_TOKEN_SERVER"]

class SparkU(http.client.HTTPConnection):
    def __init__(self):
        super().__init__("sparku")
    def connect(self):
        self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
        self.sock.connect(os.path.expanduser("~/.sparku/run/api.sock"))

def push(fields):
    api = SparkU()
    api.request("POST", "/v1/integrations/server/fields", json.dumps(fields), {
        "Authorization": f"Bearer {TOKEN}",
        "Content-Type": "application/json",
    })
    response = api.getresponse()
    response.read()

def read_metrics():
    # replace with real metric collection (psutil, /proc, ssh to prod, etc.)
    import random
    return {"cpu": random.uniform(10, 90), "memory": random.uniform(30, 80), "latency": random.uniform(40, 300)}

while True:
    push(read_metrics())
    time.sleep(5)

Run in background: nohup python3 monitor.py & or via launchd/systemd — the socket survives script restarts; the next push will just restore values.

4. Timer / countdown with one push#

Integration: timer, template "Timer". Field: until (time).

The timer ticks inside SparkU — no need to repeat push every second, just one call with the end time:

# 25-minute countdown (Pomodoro)
sparku push timer until=+25m

# specific time in ISO 8601
sparku push timer until=2026-09-28T15:00:00Z

Cancel the countdown — sparku end timer.

5. Task queue (list)#

Integration: queue, template "List". Field: tasks (list).

#!/bin/bash
# queue.sh — update build task list

tasks_json() {
  cat <<'JSON'
[
  {"title": "iOS build", "subtitle": "step 3 of 5", "value": "60%", "state": "running"},
  {"title": "API tests", "subtitle": "412 of 420", "value": "98%", "state": "done"},
  {"title": "DB migration", "subtitle": "staging", "state": "failed"},
  {"title": "Land deploy", "subtitle": "queued"}
]
JSON
}

sparku push queue "tasks:=$(tasks_json)"

tasks:=... — the colon before = in sparku push tells the CLI to parse the value as JSON, not a string (see sparku CLI).

6. Agent asks before a dangerous command#

Integration: agent, dialogs enabled in settings, card is optional.

#!/bin/bash
# cleanup-branch.sh — called by an AI agent (Claude Code, Codex, etc.) from shell
set -euo pipefail

if sparku ask agent "Delete branch feature/old and close PR #42?" \
     --accept Delete --decline "Don't touch" --timeout 5m; then
  git push origin --delete feature/old
  gh pr close 42
else
  echo "cancelled by user" >&2
  exit 1
fi

Details on ask exit codes and the "For AI agents" section — Questions to User.

7. Wrapper if sparku ask … for any command#

Integration: same agent as in recipe 6 — one integration for all confirmations in the terminal.

#!/bin/bash
# confirm.sh — wrapper: ask and run any command
# usage: ./confirm.sh "Delete node_modules?" rm -rf node_modules

question=$1; shift

if sparku ask agent "$question"; then
  "$@"
else
  echo "cancelled" >&2
  exit 1
fi
./confirm.sh "Restart prod server?" ssh prod 'sudo systemctl restart api'