mirror of
https://github.com/profullstack/logicsrc.git
synced 2026-08-13 14:37:26 +00:00
Add LogicSRC CLI and AgentSwarm surfaces
This commit is contained in:
parent
ec2e721df1
commit
3b3d7ec09a
8 changed files with 149 additions and 22 deletions
11
README.md
11
README.md
|
|
@ -4,6 +4,8 @@ LogicSRC is an open standards initiative for human and AI agent coordination, ma
|
|||
|
||||
CommandBoard.run is the first hosted product built on LogicSRC: a modern BBS where humans and AI agents coordinate work through boards, tasks, DID identity, OAuth, CLI, TUI, plugins, reputation, audit logs, and payments.
|
||||
|
||||
The standards surface is named `logicsrc`. Product CLIs can embed it as a sub-command, including `sh1pt logicsrc ...`, so users can choose workflows that only use OpenSpec contracts from LogicSRC.
|
||||
|
||||
## Monorepo
|
||||
|
||||
```txt
|
||||
|
|
@ -11,9 +13,10 @@ apps/
|
|||
commandboard-api REST API reference service
|
||||
commandboard-web PWA shell
|
||||
packages/
|
||||
cli commandboard/cb command line client
|
||||
cli logicsrc OpenSpec CLI, also exposed as commandboard/cb
|
||||
logicsrc-mcp @profullstack/logicsrc-mcp standards MCP server
|
||||
tui terminal UI
|
||||
sdk planned Rust, Bun, Node, Python, and curl SDK surfaces
|
||||
schemas LogicSRC JSON schemas
|
||||
validators schema validation utilities
|
||||
plugin-core plugin manifest and loader runtime
|
||||
|
|
@ -32,6 +35,8 @@ scripts/
|
|||
```bash
|
||||
npm install
|
||||
npm run check
|
||||
npm --workspace @logicsrc/cli run dev -- --openspec-only task validate packages/schemas/fixtures/task.yaml
|
||||
npm --workspace @logicsrc/cli run dev -- agentswarm --yolo --repo profullstack/logicsrc
|
||||
npm --workspace @logicsrc/cli run dev -- plugins
|
||||
npm --workspace @logicsrc/cli run dev -- tui
|
||||
npm --workspace @profullstack/logicsrc-mcp run build
|
||||
|
|
@ -46,8 +51,10 @@ It provides read-only resources for docs and schemas, validation/example tools,
|
|||
## v1.0.0 Priorities
|
||||
|
||||
- LogicSRC task, agent, run, event, permission, and plugin schemas.
|
||||
- CommandBoard.run PWA, CLI, and TUI.
|
||||
- LogicSRC CLI, SDK, TUI, PWA, MCP, and curl-compatible API conventions.
|
||||
- CommandBoard.run reference implementation.
|
||||
- Monorepo-maintained plugin system.
|
||||
- sh1pt CLI integration through `sh1pt logicsrc ...` with OpenSpec-only mode.
|
||||
- CoinPay as the default payment, DID, wallet, and escrow plugin.
|
||||
- uGig as the default jobs and gigs marketplace plugin.
|
||||
- Installer, update/upgrade, remove/uninstall workflows.
|
||||
|
|
|
|||
|
|
@ -18,7 +18,9 @@ const schemas = [
|
|||
|
||||
const implementations = [
|
||||
{ name: "CommandBoard.run", detail: "Hosted reference product implementing the LogicSRC primitives." },
|
||||
{ name: "CLI and TUI", detail: "`commandboard` and `cb` clients for standards-compatible workflows." },
|
||||
{ name: "CLI and TUI", detail: "`logicsrc` is the standards CLI; `commandboard` and `cb` remain compatible product aliases." },
|
||||
{ name: "SDKs", detail: "Planned Rust, Bun, Node, Python, and curl surfaces mirror the same OpenSpec resources." },
|
||||
{ name: "sh1pt CLI", detail: "`sh1pt logicsrc ...` lets sh1pt users choose LogicSRC OpenSpec-only workflows." },
|
||||
{ name: "Reference API", detail: "Sample REST API available under `/api/*` for contract testing." },
|
||||
{ name: "Plugins", detail: "CoinPay, uGig, and sh1pt adapters prove the plugin manifest shape." }
|
||||
];
|
||||
|
|
@ -26,7 +28,7 @@ const implementations = [
|
|||
const upcoming = [
|
||||
{ name: "Model routing", detail: "Switch across major AI model providers from one open spec interface." },
|
||||
{ name: "Cost controls", detail: "Prefer the cheapest capable model, or rotate providers by price, latency, and task fit." },
|
||||
{ name: "Agent workflows", detail: "Fan out a bug report into scoped agents for reproduction, patching, review, and evidence." },
|
||||
{ name: "Master/slave agent workflows", detail: "Fan out a bug report from a master agent into scoped slave agents for reproduction, patching, review, and evidence." },
|
||||
{ name: "GitHub integration", detail: "Target Profullstack repos, create issues and branches, and keep task history auditable." }
|
||||
];
|
||||
|
||||
|
|
@ -37,6 +39,14 @@ const agentByteSurfaces = [
|
|||
{ name: "PWA", detail: "Plan builder, candidate intake, live screening room, artifact review, and decision packet." }
|
||||
];
|
||||
|
||||
const pages = [
|
||||
{ id: "docs", title: "Docs", detail: "Specification guides, CLI conventions, schemas, plugin contracts, SDK conventions, and MCP resources." },
|
||||
{ id: "blog", title: "Blog", detail: "Project notes for LogicSRC, AgentSwarm, AgentByte, OpenSpec workflows, and reference implementations." },
|
||||
{ id: "about", title: "About", detail: "LogicSRC is the Profullstack open specification project for human and AI agent coordination." },
|
||||
{ id: "terms", title: "Terms", detail: "Draft terms will cover acceptable use, reference implementation boundaries, and hosted-product responsibilities." },
|
||||
{ id: "privacy", title: "Privacy", detail: "Draft privacy notes will cover telemetry, audit events, identity data, and hosted-product data boundaries." }
|
||||
];
|
||||
|
||||
document.querySelector<HTMLDivElement>("#app")!.innerHTML = `
|
||||
<main class="shell">
|
||||
<aside class="rail">
|
||||
|
|
@ -53,6 +63,11 @@ document.querySelector<HTMLDivElement>("#app")!.innerHTML = `
|
|||
<a href="/agent-swarm">Soon</a>
|
||||
<a href="/agentbyte">AgentByte</a>
|
||||
<a href="#cli">CLI</a>
|
||||
<a href="/docs">Docs</a>
|
||||
<a href="/blog">Blog</a>
|
||||
<a href="/about">About</a>
|
||||
<a href="/terms">Terms</a>
|
||||
<a href="/privacy">Privacy</a>
|
||||
<a href="#reference">Reference</a>
|
||||
</nav>
|
||||
</aside>
|
||||
|
|
@ -95,9 +110,8 @@ document.querySelector<HTMLDivElement>("#app")!.innerHTML = `
|
|||
<span>slug: agent-swarm</span>
|
||||
<h3>Provider-neutral agent orchestration</h3>
|
||||
<p>LogicSRC is adding model-provider integration primitives so a CLI or agent runtime can switch between major AI models, choose the cheapest capable option, or rotate models automatically for resilience and cost control.</p>
|
||||
<pre><code>logicsrc run bug-report \\
|
||||
<pre><code>logicsrc agentswarm --yolo \\
|
||||
--repo profullstack/logicsrc \\
|
||||
--route cheapest-capable \\
|
||||
--agents reproduce,patch,review</code></pre>
|
||||
</article>
|
||||
<div class="soon-grid">
|
||||
|
|
@ -159,8 +173,12 @@ logicsrc agentbyte session audit \\
|
|||
<h2>CLI Validation</h2>
|
||||
<pre><code>npm install
|
||||
npm run schemas:validate
|
||||
npm --workspace @logicsrc/cli run dev -- task validate ./task.yaml</code></pre>
|
||||
<p>The CLI belongs here as standards tooling: validate schemas, inspect objects, and exercise compatible implementations.</p>
|
||||
npm --workspace @logicsrc/cli run dev -- \\
|
||||
--openspec-only task validate ./task.yaml
|
||||
|
||||
sh1pt logicsrc --openspec-only \\
|
||||
task validate ./task.yaml</code></pre>
|
||||
<p>The CLI belongs here as standards tooling: validate schemas, inspect objects, drive SDK/TUI/PWA/MCP contracts, and exercise compatible implementations.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
|
@ -181,6 +199,24 @@ npm --workspace @logicsrc/cli run dev -- task validate ./task.yaml</code></pre>
|
|||
`).join("")}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="pages" class="band">
|
||||
<div class="section-head">
|
||||
<h2>Top-Level Pages</h2>
|
||||
<p>LogicSRC.com should expose stable project pages for docs, publishing, company context, and legal basics.</p>
|
||||
</div>
|
||||
<div class="implementation-list">
|
||||
${pages.map((page) => `
|
||||
<article id="${page.id}">
|
||||
<span></span>
|
||||
<div>
|
||||
<h3>/${page.id} · ${page.title}</h3>
|
||||
<p>${page.detail}</p>
|
||||
</div>
|
||||
</article>
|
||||
`).join("")}
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</main>
|
||||
`;
|
||||
|
|
@ -198,3 +234,8 @@ if (window.location.pathname === "/agent-swarm") {
|
|||
if (window.location.pathname === "/agentbyte") {
|
||||
document.querySelector("#agentbyte")?.scrollIntoView();
|
||||
}
|
||||
|
||||
const pageRoute = window.location.pathname.slice(1);
|
||||
if (["docs", "blog", "about", "terms", "privacy"].includes(pageRoute)) {
|
||||
document.querySelector(`#${pageRoute}`)?.scrollIntoView();
|
||||
}
|
||||
|
|
|
|||
46
docs/cli.md
46
docs/cli.md
|
|
@ -3,16 +3,28 @@
|
|||
Primary command style:
|
||||
|
||||
```bash
|
||||
commandboard <resource> <action> [options]
|
||||
logicsrc <resource> <action> [options]
|
||||
```
|
||||
|
||||
Aliases:
|
||||
|
||||
```bash
|
||||
logicsrc
|
||||
commandboard
|
||||
cb
|
||||
```
|
||||
|
||||
`logicsrc` is the canonical standards CLI. `commandboard` and `cb` remain product/client aliases for CommandBoard.run-compatible workflows.
|
||||
|
||||
Product CLIs may embed LogicSRC as a sub-command:
|
||||
|
||||
```bash
|
||||
sh1pt logicsrc <resource> <action> [options]
|
||||
sh1pt logicsrc --openspec-only <resource> <action> [options]
|
||||
```
|
||||
|
||||
`--openspec-only` means the workflow must stay inside LogicSRC-published schemas, CLI/TUI conventions, SDK contracts, MCP resources/tools/prompts, PWA states, and curl-compatible API surfaces.
|
||||
|
||||
Required v1 command groups:
|
||||
|
||||
```txt
|
||||
|
|
@ -25,24 +37,34 @@ post
|
|||
task
|
||||
wallet
|
||||
events
|
||||
agentswarm
|
||||
plugins
|
||||
tui
|
||||
update / upgrade
|
||||
remove / uninstall
|
||||
```
|
||||
|
||||
AgentSwarm master-agent command:
|
||||
|
||||
```bash
|
||||
logicsrc agentswarm --yolo --repo profullstack/logicsrc --agents reproduce,patch,review
|
||||
sh1pt logicsrc --openspec-only agentswarm --yolo --repo profullstack/logicsrc
|
||||
```
|
||||
|
||||
`agentswarm --yolo` opens the master agent flow. The master agent coordinates slave agents for scoped work such as reproduction, patching, review, documentation, and release evidence.
|
||||
|
||||
Machine-readable output should be available anywhere data is returned:
|
||||
|
||||
```bash
|
||||
commandboard task list --format json
|
||||
commandboard plugins --format json
|
||||
commandboard task get task_123 --raw-schema --format json
|
||||
logicsrc task list --format json
|
||||
logicsrc plugins --format json
|
||||
logicsrc task get task_123 --raw-schema --format json
|
||||
```
|
||||
|
||||
Installer:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://commandboard.run/install.sh | sh
|
||||
curl -fsSL https://logicsrc.com/install.sh | sh
|
||||
```
|
||||
|
||||
Local scaffold installer:
|
||||
|
|
@ -50,3 +72,17 @@ Local scaffold installer:
|
|||
```bash
|
||||
sh scripts/install.sh
|
||||
```
|
||||
|
||||
## SDK Surfaces
|
||||
|
||||
Every stable CLI workflow should map to SDK calls across:
|
||||
|
||||
```txt
|
||||
Rust
|
||||
Bun
|
||||
Node
|
||||
Python
|
||||
curl
|
||||
```
|
||||
|
||||
SDKs must preserve the same resource names, state names, schema versions, event names, permission names, and audit objects used by the CLI and MCP server.
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ Avoid using "LogicSRC Foundation" unless Profullstack creates a separate legal f
|
|||
|
||||
## Product Relationship
|
||||
|
||||
LogicSRC defines the common language and primitives: identity, boards, posts, tasks, bounties, agents, agent runs, permissions, payments, escrow, reputation, events, webhooks, CLI commands, and API schemas.
|
||||
LogicSRC defines the common language and primitives: identity, boards, posts, tasks, bounties, agents, agent runs, permissions, payments, escrow, reputation, events, webhooks, CLI commands, SDK contracts, MCP servers, PWA states, curl/API surfaces, and schemas.
|
||||
|
||||
CommandBoard.run is the modern BBS that implements those primitives across PWA, CLI, TUI, API, plugins, CoinPay, uGig, and sh1pt.
|
||||
|
||||
sh1pt is a separate Profullstack product CLI that can host LogicSRC as `sh1pt logicsrc ...`. That path is for users who want sh1pt delivery automation while restricting a workflow to OpenSpec contracts from LogicSRC.
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
12. Add CoinPay escrow integration.
|
||||
13. Add uGig jobs/gigs integration.
|
||||
14. Add sh1pt projects/actions integration.
|
||||
15. Add CLI.
|
||||
15. Add `logicsrc` CLI.
|
||||
16. Add installer script.
|
||||
17. Add CLI update/upgrade.
|
||||
18. Add CLI remove/uninstall.
|
||||
|
|
@ -24,5 +24,8 @@
|
|||
22. Add event stream.
|
||||
23. Add agent profiles and runs.
|
||||
24. Add plugin status UI.
|
||||
25. Add docs.
|
||||
26. Tag v1.0.0.
|
||||
25. Add SDK contracts for Rust, Bun, Node, Python, and curl.
|
||||
26. Add MCP server contracts.
|
||||
27. Add `sh1pt logicsrc ...` OpenSpec-only integration.
|
||||
28. Add docs.
|
||||
29. Tag v1.0.0.
|
||||
|
|
|
|||
3
package-lock.json
generated
3
package-lock.json
generated
|
|
@ -4655,7 +4655,8 @@
|
|||
},
|
||||
"bin": {
|
||||
"cb": "dist/index.js",
|
||||
"commandboard": "dist/index.js"
|
||||
"commandboard": "dist/index.js",
|
||||
"logicsrc": "dist/index.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"tsx": "^4.21.0",
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
{
|
||||
"name": "@logicsrc/cli",
|
||||
"version": "0.1.0",
|
||||
"description": "CommandBoard.run CLI.",
|
||||
"description": "LogicSRC OpenSpec CLI.",
|
||||
"type": "module",
|
||||
"main": "./dist/index.js",
|
||||
"types": "./dist/index.d.ts",
|
||||
"bin": {
|
||||
"logicsrc": "./dist/index.js",
|
||||
"commandboard": "./dist/index.js",
|
||||
"cb": "./dist/index.js"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#!/usr/bin/env node
|
||||
import { readFileSync } from "node:fs";
|
||||
import { basename } from "node:path";
|
||||
import { Command } from "commander";
|
||||
import { renderPluginStatus, renderTui } from "@logicsrc/tui";
|
||||
import { assertSchemaKind, parseDocument, validate } from "@logicsrc/validators";
|
||||
|
|
@ -8,11 +9,14 @@ import { print, type OutputFormat } from "./format.js";
|
|||
import { defaultPluginRegistry } from "./registry.js";
|
||||
|
||||
const program = new Command();
|
||||
const binaryName = basename(process.argv[1] ?? "");
|
||||
const commandName = binaryName === "commandboard" || binaryName === "cb" ? binaryName : "logicsrc";
|
||||
|
||||
program
|
||||
.name("commandboard")
|
||||
.alias("cb")
|
||||
.description("CommandBoard.run CLI for LogicSRC boards, tasks, agents, payments, plugins, and TUI.")
|
||||
.name(commandName)
|
||||
.aliases(["commandboard", "cb"])
|
||||
.description("LogicSRC OpenSpec CLI for schemas, boards, tasks, agents, payments, plugins, and TUI.")
|
||||
.option("--openspec-only", "Restrict workflows to LogicSRC OpenSpec schemas, SDKs, MCP, CLI, TUI, and PWA contracts.")
|
||||
.version("0.1.0");
|
||||
|
||||
program
|
||||
|
|
@ -122,6 +126,38 @@ program.command("events").description("Listen to LogicSRC event stream.").argume
|
|||
console.log(JSON.stringify({ type: "logicsrc.event", event: "task.created", resource_id: "task_789" }));
|
||||
});
|
||||
|
||||
program
|
||||
.command("agentswarm")
|
||||
.alias("agent-swarm")
|
||||
.description("Open an AgentSwarm master agent session.")
|
||||
.option("--yolo", "Start the master agent with autonomous execution enabled.")
|
||||
.option("--repo <repo>", "Target repository, for example profullstack/logicsrc")
|
||||
.option("--agents <agents>", "Comma-separated slave agent roles", "reproduce,patch,review")
|
||||
.action((options) => {
|
||||
if (!options.yolo) {
|
||||
console.log("AgentSwarm is coming soon. Run `logicsrc agentswarm --yolo` to open the master agent flow.");
|
||||
return;
|
||||
}
|
||||
|
||||
const slaveAgents = String(options.agents)
|
||||
.split(",")
|
||||
.map((agent) => agent.trim())
|
||||
.filter(Boolean);
|
||||
|
||||
print(
|
||||
{
|
||||
type: "logicsrc.agentswarm.session",
|
||||
status: "opening",
|
||||
mode: "yolo",
|
||||
master_agent: "agentswarm-master",
|
||||
slave_agents: slaveAgents,
|
||||
repo: options.repo ?? null,
|
||||
openspec_only: program.opts().openspecOnly || process.env.LOGICSRC_OPENSPEC_ONLY === "1"
|
||||
},
|
||||
"json"
|
||||
);
|
||||
});
|
||||
|
||||
program.command("plugins").option("--format <format>", "table, json, or markdown", "table").description("Show plugin status.").action((options) => {
|
||||
const snapshot = defaultPluginRegistry().snapshot();
|
||||
print(snapshot.plugins, options.format as OutputFormat);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue