@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 +21 -0
- package/README.md +168 -0
- package/dist/acp.d.ts +30 -0
- package/dist/acp.js +179 -0
- package/dist/acp.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +287 -0
- package/dist/cli.js.map +1 -0
- package/dist/contract.d.ts +30 -0
- package/dist/contract.js +65 -0
- package/dist/contract.js.map +1 -0
- package/dist/demo.d.ts +1 -0
- package/dist/demo.js +21 -0
- package/dist/demo.js.map +1 -0
- package/dist/doctor.d.ts +1 -0
- package/dist/doctor.js +75 -0
- package/dist/doctor.js.map +1 -0
- package/dist/github.d.ts +31 -0
- package/dist/github.js +113 -0
- package/dist/github.js.map +1 -0
- package/dist/state.d.ts +20 -0
- package/dist/state.js +61 -0
- package/dist/state.js.map +1 -0
- package/dist/verify.d.ts +12 -0
- package/dist/verify.js +41 -0
- package/dist/verify.js.map +1 -0
- package/package.json +55 -0
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
|
+
[](https://x.com/thecultos)
|
|
11
|
+
|
|
12
|
+

|
|
13
|
+

|
|
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
|
package/dist/acp.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp.js","sourceRoot":"","sources":["../src/acp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC9C,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC,WAAW,EAAE,CAAC;AA8BjB,SAAS,WAAW,CAAC,MAAc;IACjC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;QAC/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,MAAM,CAAC,IAAc,EAAE,iBAAiB,GAAG,CAAC,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,EAAE;QACnD,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;KAC5B,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IAEpC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,oBAAoB,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO;QACL,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;QAChC,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAc,EAAE,GAAW;IAC7C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAyB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ;QACzB,CAAC,CAAC;YACE,QAAQ;YACR,YAAY;YACZ,YAAY;YACZ,KAAK,CAAC,QAAQ;YACd,iBAAiB;YACjB,KAAK,CAAC,QAAQ;YACd,gBAAgB;YAChB,QAAQ;YACR,YAAY;YACZ,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;SACtB;QACH,CAAC,CAAC;YACE,QAAQ;YACR,mBAAmB;YACnB,YAAY;YACZ,KAAK,CAAC,QAAQ;YACd,eAAe;YACf,QAAQ;YACR,cAAc;YACd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YACpB,YAAY;YACZ,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;SACtB,CAAC;IACN,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IAExD,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;QACxC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,MAAM,MAAM,GAAG,MAAM,CACnB,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,EACnC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACb,CAAC;IACF,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAE3D,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,EAAE;QAC1C,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG,EAAE,MAAM,CAAC,IAAI;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,OAAe,EAAE,MAAc;IACpE,MAAM,CAAC;QACL,QAAQ;QACR,MAAM;QACN,UAAU;QACV,KAAK;QACL,YAAY;QACZ,MAAM,CAAC,OAAO,CAAC;QACf,UAAU;QACV,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,OAAe,EAAE,MAAc;IACxE,MAAM,CAAC;QACL,QAAQ;QACR,UAAU;QACV,UAAU;QACV,KAAK;QACL,YAAY;QACZ,MAAM,CAAC,OAAO,CAAC;QACf,UAAU;QACV,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,OAAe,EAAE,MAAc;IACtE,MAAM,CAAC;QACL,QAAQ;QACR,QAAQ;QACR,UAAU;QACV,KAAK;QACL,YAAY;QACZ,MAAM,CAAC,OAAO,CAAC;QACf,UAAU;QACV,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,OAAe,EAAE,MAAc;IACrE,MAAM,CAAC;QACL,UAAU;QACV,YAAY;QACZ,UAAU;QACV,KAAK;QACL,YAAY;QACZ,MAAM,CAAC,OAAO,CAAC;QACf,UAAU;QACV,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,OAAe,EAAE,QAA6B;IACrF,MAAM,CAAC;QACL,UAAU;QACV,QAAQ;QACR,UAAU;QACV,KAAK;QACL,YAAY;QACZ,MAAM,CAAC,OAAO,CAAC;QACf,eAAe;QACf,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;KACzB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,OAAe,EAAE,OAAe;IACzE,MAAM,CAAC;QACL,SAAS;QACT,MAAM;QACN,UAAU;QACV,KAAK;QACL,YAAY;QACZ,MAAM,CAAC,OAAO,CAAC;QACf,WAAW;QACX,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
|
package/dist/cli.d.ts
ADDED