IntermediateAutomation Engine v1

Capabilities

Capability adalah fungsi trusted dan reusable yang dipanggil flow/script melalui ID stabil; implementasi library tetap tersembunyi dari user automation.

Pemanggilan

js
aksi: {
  gunakan: "utility.text.uppercase",
  input: {
    text: "{command.args}"
  },
  simpan: "hasil"
}
js
const hasil = await capability.run(
  "utility.text.uppercase",
  { input: { text: command.args } }
)

balas(hasil.text)

Built-in capability saat ini

CapabilityOutput
utility.text.uppercase{ text } uppercase
utility.text.lowercase{ text } lowercase

Manifest capability

js
{
  id: "ai.chat",
  name: "AI Chat",
  version: "1.0.0",
  plugin: "pn3kn-ai",
  permissions: [],
  credential: {
    required: true,
    type: "AI_PROVIDER",
    fields: ["apiKey"]
  }
}

Error handling declarative

js
aksi: {
  gunakan: "media.sticker",
  input: { sumber: "{media}" },
  simpan: "hasil",
  simpanError: "stickerError",
  gagal: {
    pesan: "Sticker gagal dibuat.",
    ke: "$selesai"
  }
}

Jika capability gagal dan `gagal` tidak ditentukan, error diteruskan ke runtime. Jika `gagal` tersedia, flow dapat membalas dan/atau transition.

Output safety

Capability output harus JSON-safe, tidak circular, tidak mengandung function/symbol/bigint/binary mentah, kedalaman dibatasi, dan serialized output dibatasi 512 KB.

Typed contract & runtime policy

Capability trusted dapat mendeklarasikan schema input/output dan runtime policy. Flow tetap memakai aksi yang sama; scheduler menentukan apakah action aman dijalankan realtime atau harus dipindahkan ke capability job worker.

js
{
  id: "media.sticker",
  input: {
    type: "object",
    required: ["sumber"],
    properties: { sumber: { type: "object" } }
  },
  runtime: {
    execution: "job",
    resourceClass: "heavy",
    timeoutMs: 45000,
    retry: { maxAttempts: 1, backoffMs: 250 }
  }
}
  • realtime: action ringan berjalan langsung pada Automation Worker.
  • job: action berat masuk queue Capability Worker agar event loop command/session tetap ringan.
  • Schema invalid ditolak dengan error runtime standar sebelum handler plugin menjalankan logic.
  • Credential tetap didekripsi hanya di backend saat capability dijalankan.