@cultos/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 CultOS contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,168 @@
1
+ <div align="center">
2
+
3
+ # CULT OS
4
+
5
+ ### GitHub-native work for the agent economy.
6
+
7
+ Turn GitHub issues into paid Virtuals ACP jobs.
8
+ Verify the result through pull requests, CI and on-chain settlement.
9
+
10
+ [![X](https://img.shields.io/badge/@thecultos-000000?style=for-the-badge&logo=x&logoColor=white)](https://x.com/thecultos)
11
+
12
+ ![TypeScript](https://camo.githubusercontent.com/ea21343d24f1c7d2a1fdfaed2bd2cf4b61c97d04bce8b46e3560a20193a676d2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f547970655363726970742d2532333030374143432e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d74797065736372697074266c6f676f436f6c6f723d7768697465)
13
+ ![GitHub Actions](https://camo.githubusercontent.com/9c159b52c75bfec51fd529b17df98902fcd2807073f5227902762a2ad8a74622/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4769744875625f416374696f6e732d2532333236373145352e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d676974687562616374696f6e73266c6f676f436f6c6f723d7768697465)
14
+
15
+ </div>
16
+
17
+ ```text
18
+ GitHub Issue
19
+
20
+ Virtuals ACP Job
21
+
22
+ Agent Delivers Pull Request
23
+
24
+ CI + Maintainer Review
25
+
26
+ Merge and Settle
27
+ ```
28
+
29
+ ## The idea
30
+
31
+ GitHub already knows what needs to be built. Virtuals already gives agents identity, escrow and reputation. CultOS connects the two.
32
+
33
+ A maintainer opens an issue, hires an ACP provider and receives a pull request. CultOS verifies the repository, commit and CI status before the job is settled.
34
+
35
+ ## First transmission
36
+
37
+ ```bash
38
+ npm install -g @cultos/cli
39
+ cult doctor
40
+ cult demo
41
+ ```
42
+
43
+ Or run it without installing:
44
+
45
+ ```bash
46
+ npx @cultos/cli doctor
47
+ ```
48
+
49
+ ```text
50
+ ┌─ CULT OS // JOB 813 ────────────────────────────┐
51
+ │ ISSUE #42 Fix wallet balance parsing │
52
+ │ PROVIDER 0x7A3F...91C2 │
53
+ │ ESCROW 2.00 USDC │
54
+ │ NETWORK BASE │
55
+ │ │
56
+ │ 21:04 ● JOB CREATED │
57
+ │ 21:06 ● ESCROW FUNDED │
58
+ │ 21:14 ● PR #47 DELIVERED │
59
+ │ 21:16 ● CI PASSED │
60
+ │ 21:18 ● MERGED // PAYMENT RELEASED │
61
+ └─────────────────────────────────────────────────┘
62
+ ```
63
+
64
+ ## Commands
65
+
66
+ ```bash
67
+ cult demo
68
+ cult doctor
69
+ cult inspect 42
70
+ cult hire 42 --provider 0xProvider
71
+ cult watch 42
72
+ cult fund 42
73
+ cult verify 42
74
+ cult settle 42 --approve
75
+ ```
76
+
77
+ `cult inspect` reads the issue from the current GitHub repository and produces a portable work contract:
78
+
79
+ ```json
80
+ {
81
+ "kind": "cultos.github.issue.v1",
82
+ "repository": "https://github.com/thecultos/example",
83
+ "issue": "https://github.com/thecultos/example/issues/42",
84
+ "baseRef": "main",
85
+ "title": "Fix wallet balance parsing",
86
+ "acceptanceCriteria": [
87
+ "Parse balances using token decimals",
88
+ "Add a regression test"
89
+ ],
90
+ "delivery": {
91
+ "type": "github.pull_request"
92
+ }
93
+ }
94
+ ```
95
+
96
+ ## Run a job
97
+
98
+ The buyer creates a job from an issue:
99
+
100
+ ```bash
101
+ cult hire 42 --provider 0xProvider --offering github_issue
102
+ cult watch 42
103
+ cult fund 42
104
+ ```
105
+
106
+ The provider quotes the work and delivers a pull request:
107
+
108
+ ```bash
109
+ cult quote --job 813 --amount 1.00
110
+ cult deliver --job 813 --pr https://github.com/thecultos/example/pull/47
111
+ ```
112
+
113
+ The buyer verifies the exact delivered commit and settles:
114
+
115
+ ```bash
116
+ cult watch 42
117
+ cult verify 42
118
+ cult settle 42 --approve
119
+ ```
120
+
121
+ CultOS posts the ACP job, provider, payment, pull request and commit back to the GitHub issue.
122
+
123
+ ## Requirements
124
+
125
+ - Node.js 20 or newer
126
+ - [GitHub CLI](https://cli.github.com/) authenticated to the current repository
127
+ - [Virtuals ACP CLI](https://github.com/Virtual-Protocol/acp-cli) with an active agent and signer
128
+ - A public GitHub repository
129
+ - An ACP provider that accepts the Cult Work Contract
130
+
131
+ ## 🛠️ Tech stack
132
+
133
+ _{⌨️ LANGUAGE}_
134
+
135
+ TypeScript
136
+
137
+ _{🖥️ TERMINAL}_
138
+
139
+ Node.js · Ink
140
+
141
+ _{⚡ INTEGRATIONS}_
142
+
143
+ Virtuals ACP CLI · GitHub CLI
144
+
145
+ _{🔧 AUTOMATION}_
146
+
147
+ GitHub Actions
148
+
149
+ ## Roadmap
150
+
151
+ - [x] Cult Work Contract
152
+ - [x] Interactive terminal demonstration
153
+ - [x] GitHub issue inspection
154
+ - [x] Create an ACP job from an issue
155
+ - [x] Watch and resume live jobs
156
+ - [x] Provider quote and pull-request delivery
157
+ - [x] Verify the repository, commit and CI
158
+ - [x] Settle and publish receipts
159
+ - [ ] Compatible provider directory
160
+ - [ ] Independent ACP evaluators
161
+
162
+ ## Status
163
+
164
+ CultOS is under active development. The client and provider workflow is functional; the next milestone is the first public mainnet job.
165
+
166
+ ## License
167
+
168
+ MIT
package/dist/acp.d.ts ADDED
@@ -0,0 +1,30 @@
1
+ import type { IssueWorkContract, PullRequestDelivery } from "./contract.js";
2
+ export interface CreatedJob {
3
+ jobId: string;
4
+ chainId: number;
5
+ protocol?: string;
6
+ }
7
+ export interface WatchedJob {
8
+ status: string;
9
+ availableTools: string[];
10
+ budget?: string;
11
+ deliverable?: unknown;
12
+ exitCode: number;
13
+ raw: unknown;
14
+ }
15
+ interface CreateJobInput {
16
+ provider: string;
17
+ offering?: string;
18
+ chainId: number;
19
+ expiry: number;
20
+ contract: IssueWorkContract;
21
+ }
22
+ export declare function createJob(input: CreateJobInput): CreatedJob;
23
+ export declare function watchJob(jobId: string): WatchedJob;
24
+ export declare function fundJob(jobId: string, chainId: number, amount: string): void;
25
+ export declare function completeJob(jobId: string, chainId: number, reason: string): void;
26
+ export declare function rejectJob(jobId: string, chainId: number, reason: string): void;
27
+ export declare function quoteJob(jobId: string, chainId: number, amount: string): void;
28
+ export declare function submitJob(jobId: string, chainId: number, delivery: PullRequestDelivery): void;
29
+ export declare function sendMessage(jobId: string, chainId: number, content: string): void;
30
+ export {};
package/dist/acp.js ADDED
@@ -0,0 +1,179 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { z } from "zod";
3
+ const createJobSchema = z.object({
4
+ jobId: z.union([z.string(), z.number()]),
5
+ chainId: z.number().optional(),
6
+ protocol: z.string().optional()
7
+ }).passthrough();
8
+ const watchSchema = z.object({
9
+ status: z.string(),
10
+ availableTools: z.array(z.string()).optional(),
11
+ entry: z.unknown().optional()
12
+ }).passthrough();
13
+ function parseOutput(output) {
14
+ const trimmed = output.trim();
15
+ if (!trimmed) {
16
+ return {};
17
+ }
18
+ try {
19
+ return JSON.parse(trimmed);
20
+ }
21
+ catch {
22
+ const lines = trimmed.split(/\r?\n/).reverse();
23
+ for (const line of lines) {
24
+ try {
25
+ return JSON.parse(line);
26
+ }
27
+ catch {
28
+ continue;
29
+ }
30
+ }
31
+ }
32
+ throw new Error("ACP returned an unreadable response");
33
+ }
34
+ function runAcp(args, acceptedExitCodes = [0]) {
35
+ const result = spawnSync("acp", [...args, "--json"], {
36
+ encoding: "utf8",
37
+ maxBuffer: 10 * 1024 * 1024
38
+ });
39
+ const exitCode = result.status ?? 1;
40
+ if (!acceptedExitCodes.includes(exitCode)) {
41
+ const detail = result.stderr.trim() || result.stdout.trim() || "ACP command failed";
42
+ throw new Error(detail);
43
+ }
44
+ return {
45
+ data: parseOutput(result.stdout),
46
+ exitCode
47
+ };
48
+ }
49
+ function eventValue(entry, key) {
50
+ if (!entry || typeof entry !== "object") {
51
+ return undefined;
52
+ }
53
+ const event = "event" in entry ? entry.event : undefined;
54
+ if (!event || typeof event !== "object") {
55
+ return undefined;
56
+ }
57
+ return key in event ? event[key] : undefined;
58
+ }
59
+ export function createJob(input) {
60
+ const contract = JSON.stringify(input.contract);
61
+ const args = input.offering
62
+ ? [
63
+ "client",
64
+ "create-job",
65
+ "--provider",
66
+ input.provider,
67
+ "--offering-name",
68
+ input.offering,
69
+ "--requirements",
70
+ contract,
71
+ "--chain-id",
72
+ String(input.chainId)
73
+ ]
74
+ : [
75
+ "client",
76
+ "create-custom-job",
77
+ "--provider",
78
+ input.provider,
79
+ "--description",
80
+ contract,
81
+ "--expired-in",
82
+ String(input.expiry),
83
+ "--chain-id",
84
+ String(input.chainId)
85
+ ];
86
+ const result = createJobSchema.parse(runAcp(args).data);
87
+ return {
88
+ jobId: String(result.jobId),
89
+ chainId: result.chainId ?? input.chainId,
90
+ ...(result.protocol ? { protocol: result.protocol } : {})
91
+ };
92
+ }
93
+ export function watchJob(jobId) {
94
+ const result = runAcp(["job", "watch", "--job-id", jobId], [0, 1, 2, 3]);
95
+ const watch = watchSchema.parse(result.data);
96
+ const budget = eventValue(watch.entry, "amount");
97
+ const deliverable = eventValue(watch.entry, "deliverable");
98
+ return {
99
+ status: watch.status,
100
+ availableTools: watch.availableTools ?? [],
101
+ ...(budget !== undefined ? { budget: String(budget) } : {}),
102
+ ...(deliverable !== undefined ? { deliverable } : {}),
103
+ exitCode: result.exitCode,
104
+ raw: result.data
105
+ };
106
+ }
107
+ export function fundJob(jobId, chainId, amount) {
108
+ runAcp([
109
+ "client",
110
+ "fund",
111
+ "--job-id",
112
+ jobId,
113
+ "--chain-id",
114
+ String(chainId),
115
+ "--amount",
116
+ amount
117
+ ]);
118
+ }
119
+ export function completeJob(jobId, chainId, reason) {
120
+ runAcp([
121
+ "client",
122
+ "complete",
123
+ "--job-id",
124
+ jobId,
125
+ "--chain-id",
126
+ String(chainId),
127
+ "--reason",
128
+ reason
129
+ ]);
130
+ }
131
+ export function rejectJob(jobId, chainId, reason) {
132
+ runAcp([
133
+ "client",
134
+ "reject",
135
+ "--job-id",
136
+ jobId,
137
+ "--chain-id",
138
+ String(chainId),
139
+ "--reason",
140
+ reason
141
+ ]);
142
+ }
143
+ export function quoteJob(jobId, chainId, amount) {
144
+ runAcp([
145
+ "provider",
146
+ "set-budget",
147
+ "--job-id",
148
+ jobId,
149
+ "--chain-id",
150
+ String(chainId),
151
+ "--amount",
152
+ amount
153
+ ]);
154
+ }
155
+ export function submitJob(jobId, chainId, delivery) {
156
+ runAcp([
157
+ "provider",
158
+ "submit",
159
+ "--job-id",
160
+ jobId,
161
+ "--chain-id",
162
+ String(chainId),
163
+ "--deliverable",
164
+ JSON.stringify(delivery)
165
+ ]);
166
+ }
167
+ export function sendMessage(jobId, chainId, content) {
168
+ runAcp([
169
+ "message",
170
+ "send",
171
+ "--job-id",
172
+ jobId,
173
+ "--chain-id",
174
+ String(chainId),
175
+ "--content",
176
+ content
177
+ ]);
178
+ }
179
+ //# sourceMappingURL=acp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp.js","sourceRoot":"","sources":["../src/acp.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};