rust-soham/golem-claw/golem-wait-for-external-input-ts

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Waiting for external input using Golem promises in a TypeScript Golem project. Use when the user asks about promises, waiting for external events, human-in-the-loop workflows, pausing an agent until an external signal, or suspending execution until data arrives from outside.

Install

npx vskill@latest install rust-soham/golem-claw/golem-wait-for-external-input-ts

SKILL.md

Waiting for External Input with Golem Promises (TypeScript)

Overview

A Golem promise lets an agent suspend its execution until an external event completes it. The agent creates a promise, passes the promise ID to an external system (another agent, a webhook, a UI, an HTTP API call), and then awaits the result. The Golem runtime durably suspends the agent — consuming no resources — until the promise is fulfilled.

API

All functions are in @golemcloud/golem-ts-sdk:

FunctionSignatureDescription
createPromise() => PromiseIdCreates a new promise and returns its ID
awaitPromise(id: PromiseId) => Promise<Uint8Array>Awaits promise completion (non-blocking)
completePromise(id: PromiseId, data: Uint8Array) => booleanCompletes a promise with raw bytes

Imports

typescript
import { createPromise, awaitPromise, completePromise } from '@golemcloud/golem-ts-sdk';
import type { PromiseId } from '@golemcloud/golem-ts-sdk';

Usage Pattern

1. Create a Promise and Wait
typescript
const promiseId = createPromise();
// Pass promiseId to an external system...
// Agent is durably suspended here until the promise is completed
const resultBytes = await awaitPromise(promiseId);
const result = new TextDecoder().decode(resultBytes);
2. Complete a Promise from Another Agent
typescript
const data = new TextEncoder().encode(JSON.stringify({ status: "approved" }));
completePromise(promiseId, data);
3. Decode JSON from a Completed Promise
typescript
const promiseId = createPromise();
const bytes = await awaitPromise(promiseId);
const decision = JSON.parse(new TextDecoder().decode(bytes));

PromiseId Structure

A PromiseId contains an agentId and an oplogIdx. To let an external system complete the promise via the Golem REST API, the agent must expose both fields. The external caller then sends:

POST /v1/components/{component_id}/workers/{agent_name}/complete
Content-Type: application/json
{"oplogIdx": <oplog_idx>, "data": [<bytes>]}

Full Example: Human-in-the-Loop Approval

typescript
import { BaseAgent, agent, endpoint } from '@golemcloud/golem-ts-sdk';
import { createPromise, awaitPromise, completePromise } from '@golemcloud/golem-ts-sdk';
import type { PromiseId } from '@golemcloud/golem-ts-sdk';
@agent({ mount: "/workflows/{name}" })
class WorkflowAgent extends BaseAgent {
private readonly name: string;
constructor(name: string) {
super();
this.name = name;
}
@endpoint({ post: "/approve" })
async startApproval(): Promise<string> {
// 1. Create a promise
const promiseId = createPromise();
// 2. Pass promiseId.oplogIdx to an external system
// The agent is now durably suspended.
// 3. Wait for external completion
const bytes = await awaitPromise(promiseId);
const decision = JSON.parse(new TextDecoder().decode(bytes));
if (decision.status === "approved") {
return `Workflow ${this.name} approved ✅`;
} else {
return `Workflow ${this.name} rejected ❌`;
}
}
}

Use Cases

  • Human-in-the-loop: Pause a workflow until a human approves or rejects
  • Webhook callbacks: Wait for an external HTTP callback to arrive
  • Inter-agent synchronization: One agent creates a promise, another completes it
  • External event ingestion: Suspend until an IoT sensor, payment gateway, or third-party API sends a signal

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/rust-soham/golem-claw/golem-wait-for-external-input-ts/badge)](https://verified-skill.com/skills/rust-soham/golem-claw/golem-wait-for-external-input-ts)

Something wrong with this skill or its page? Tell us.