mirror of
https://github.com/profullstack/logicsrc.git
synced 2026-08-13 14:37:26 +00:00
78 lines
2.6 KiB
Markdown
78 lines
2.6 KiB
Markdown
# @logicsrc/agentstack
|
|
|
|
AgentStack is the LogicSRC module for **portable agent, task, payment, and reputation
|
|
coordination** across Profullstack microsaas apps (sh1pt, uGig, qaaas.dev, crawlproof,
|
|
commandboard.run, coinpayportal, logicsrc, intr0s).
|
|
|
|
It is the reference implementation of the `agentstack` capability in the Profullstack
|
|
Shared AppKit OpenSpec (`profullstack-web/openspec/specs/agentstack`).
|
|
|
|
## What it provides
|
|
|
|
- **DID helpers** for CoinPay-linked identities: `userDid`, `agentDid`, `makeDid`, `parseDid`
|
|
(`did:coinpay:user:123`, `did:coinpay:agent:abc`).
|
|
- **`DidTask`** — a portable task model with a defined status lifecycle
|
|
(`pending → queued → running → blocked → complete | failed | cancelled`) that can bind to
|
|
payment, escrow, and reputation events.
|
|
- **`AgentStack`** — an in-memory coordinator that registers agents, tracks tasks, records
|
|
delegation grants, checks active scoped authority, and emits coordination events. Storage
|
|
backends can wrap the same API.
|
|
- **`agentStackPlugin`** — a LogicSRC `PluginDefinition` (validated against the plugin
|
|
manifest schema) exposing AgentStack as a coordination plugin with routes, events,
|
|
permissions, and a TUI panel.
|
|
|
|
## Usage
|
|
|
|
```ts
|
|
import { AgentStack, userDid, agentDid } from "@logicsrc/agentstack";
|
|
|
|
const stack = new AgentStack();
|
|
const owner = userDid("123");
|
|
|
|
stack.registerAgent({
|
|
did: agentDid("abc"),
|
|
name: "Build Agent",
|
|
sourceApp: "commandboard.run",
|
|
supportedProtocols: ["logicsrc/1"]
|
|
});
|
|
|
|
const task = stack.createTask({ ownerDid: owner, sourceApp: "sh1pt.com", title: "Ship build" });
|
|
stack.assignTask(task.id, agentDid("abc"));
|
|
stack.updateTaskStatus(task.id, "running");
|
|
stack.updateTaskStatus(task.id, "complete", { reputationEventId: "rep_1" });
|
|
|
|
const grant = stack.delegate(owner, agentDid("abc"), ["tasks:create"]);
|
|
stack.hasDelegation(owner, agentDid("abc"), "tasks:create"); // true while the grant is active
|
|
stack.revokeDelegation(grant.id);
|
|
```
|
|
|
|
## Cross-app identity
|
|
|
|
Each app keeps a local `users.id` and links it to a CoinPay DID, giving cross-app identity
|
|
without shared cookies or one global account database:
|
|
|
|
```txt
|
|
sh1pt.users.id -> did:coinpay:user:123
|
|
ugig.users.id -> did:coinpay:user:123
|
|
```
|
|
|
|
## Runtime
|
|
|
|
Runtime-neutral by design — pure TypeScript with no Bun- or Node-only APIs (time is injected
|
|
via the `AgentStack` constructor). Runs on **Bun, Node.js, Cloudflare Workers, and the
|
|
browser**, matching the Profullstack dual-runtime standard.
|
|
|
|
## Environment
|
|
|
|
```txt
|
|
AGENTSTACK_API_URL
|
|
AGENTSTACK_API_KEY
|
|
COINPAY_API_BASE_URL
|
|
```
|
|
|
|
## Scripts
|
|
|
|
```bash
|
|
npm run build # tsc -> dist
|
|
npm test # vitest
|
|
```
|