@darwinso/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 Darwin
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,55 @@
1
+ # Darwin CLI
2
+
3
+ The official command-line client for Darwin. It uses the same authenticated
4
+ account, agents, goals, approvals, integrations, and reviewed tools as the web
5
+ app, MCP, and messaging channels.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install --global @darwinso/cli
11
+ ```
12
+
13
+ Create an API key in
14
+ [Darwin Developer settings](https://darwin.so/settings?tab=developer), then
15
+ configure the CLI:
16
+
17
+ ```bash
18
+ darwin configure --api-key "darwin_..."
19
+ ```
20
+
21
+ You can also set `DARWIN_API_KEY` in CI. `DARWIN_API_URL` overrides the
22
+ production API URL for local development.
23
+
24
+ ## Use
25
+
26
+ ```bash
27
+ darwin agent message "Summarize my active goals."
28
+ darwin agent message "Check Darwin's pending approvals."
29
+ darwin agent message "Now ask my personal agent what is on my calendar."
30
+ darwin goals list
31
+ darwin approvals list
32
+ darwin tools list
33
+ darwin tools execute create_goal --input '{"intent":"Plan the launch","kind":"PRIVATE"}'
34
+ ```
35
+
36
+ Agent messages are intent routed. Name an accessible personal or business agent naturally; the CLI does not require an agent ID on every request.
37
+
38
+ Use `darwin --help` for the complete command list. The generic `tools` commands
39
+ track the reviewed public tool catalog, so new Darwin capabilities do not
40
+ require a new CLI release for each command.
41
+
42
+ ## Development
43
+
44
+ ```bash
45
+ npm install
46
+ npm run check
47
+ npm test
48
+ npm pack --dry-run
49
+ ```
50
+
51
+ The OpenAPI contract is synchronized from
52
+ [`darwin-studios/darwin`](https://github.com/darwin-studios/darwin). Do not edit
53
+ `openapi.json` directly in this repository.
54
+
55
+ Documentation: [docs.darwin.so/cli](https://docs.darwin.so/cli)
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,295 @@
1
+ #!/usr/bin/env node
2
+ import { chmod, mkdir, readFile, rm, writeFile } from 'node:fs/promises';
3
+ import { homedir } from 'node:os';
4
+ import { dirname, join } from 'node:path';
5
+ const defaultBaseUrl = 'https://api.darwin.so/api/v1';
6
+ const configRoot = process.env.XDG_CONFIG_HOME?.trim() || join(homedir(), '.config');
7
+ const configPath = join(configRoot, 'darwin', 'config.json');
8
+ class DarwinApiError extends Error {
9
+ status;
10
+ body;
11
+ constructor(status, message, body) {
12
+ super(message);
13
+ this.status = status;
14
+ this.body = body;
15
+ this.name = 'DarwinApiError';
16
+ }
17
+ }
18
+ async function readConfig() {
19
+ try {
20
+ return JSON.parse(await readFile(configPath, 'utf8'));
21
+ }
22
+ catch {
23
+ return {};
24
+ }
25
+ }
26
+ async function credentials() {
27
+ const config = await readConfig();
28
+ return {
29
+ apiKey: process.env.DARWIN_API_KEY?.trim() || config.apiKey?.trim(),
30
+ baseUrl: process.env.DARWIN_API_URL?.trim() || config.baseUrl?.trim() || defaultBaseUrl,
31
+ };
32
+ }
33
+ async function request(apiKey, baseUrl, path, options = {}) {
34
+ const url = new URL(`${baseUrl.replace(/\/+$/, '')}/${path.replace(/^\/+/, '')}`);
35
+ for (const [key, value] of Object.entries(options.query ?? {})) {
36
+ if (value !== undefined) {
37
+ url.searchParams.set(key, String(value));
38
+ }
39
+ }
40
+ const response = await fetch(url, {
41
+ method: options.method ?? 'GET',
42
+ headers: {
43
+ Accept: 'application/json',
44
+ Authorization: `Bearer ${apiKey}`,
45
+ ...(options.body === undefined ? {} : { 'Content-Type': 'application/json' }),
46
+ },
47
+ body: options.body === undefined ? undefined : JSON.stringify(options.body),
48
+ });
49
+ const text = await response.text();
50
+ let body;
51
+ try {
52
+ body = text ? JSON.parse(text) : undefined;
53
+ }
54
+ catch {
55
+ body = text;
56
+ }
57
+ if (!response.ok) {
58
+ const message = body && typeof body === 'object' && 'message' in body && typeof body.message === 'string'
59
+ ? body.message
60
+ : response.statusText || 'Darwin API request failed';
61
+ throw new DarwinApiError(response.status, message, body);
62
+ }
63
+ return body;
64
+ }
65
+ function option(args, name) {
66
+ const index = args.indexOf(name);
67
+ if (index === -1)
68
+ return undefined;
69
+ const value = args[index + 1];
70
+ if (!value || value.startsWith('--')) {
71
+ throw new Error(`${name} requires a value.`);
72
+ }
73
+ return value;
74
+ }
75
+ function integerOption(args, name) {
76
+ const value = option(args, name);
77
+ if (value === undefined)
78
+ return undefined;
79
+ const parsed = Number(value);
80
+ if (!Number.isSafeInteger(parsed) || parsed < 1) {
81
+ throw new Error(`${name} must be a positive integer.`);
82
+ }
83
+ return parsed;
84
+ }
85
+ function jsonObjectOption(args, name) {
86
+ const value = option(args, name);
87
+ if (!value)
88
+ return {};
89
+ let parsed;
90
+ try {
91
+ parsed = JSON.parse(value);
92
+ }
93
+ catch {
94
+ throw new Error(`${name} must be valid JSON.`);
95
+ }
96
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
97
+ throw new Error(`${name} must be a JSON object.`);
98
+ }
99
+ return parsed;
100
+ }
101
+ function redact(value) {
102
+ if (!value)
103
+ return null;
104
+ if (value.length <= 12)
105
+ return `${value.slice(0, 3)}...`;
106
+ return `${value.slice(0, 7)}...${value.slice(-4)}`;
107
+ }
108
+ async function configure(args) {
109
+ const apiKey = option(args, '--api-key');
110
+ if (!apiKey?.trim()) {
111
+ throw new Error('Pass an API key with --api-key.');
112
+ }
113
+ const baseUrl = option(args, '--base-url')?.trim();
114
+ const config = {
115
+ apiKey: apiKey.trim(),
116
+ ...(baseUrl ? { baseUrl: baseUrl.replace(/\/+$/, '') } : {}),
117
+ };
118
+ await mkdir(dirname(configPath), { recursive: true });
119
+ await writeFile(configPath, `${JSON.stringify(config, null, 2)}\n`, {
120
+ mode: 0o600,
121
+ });
122
+ await chmod(configPath, 0o600);
123
+ process.stdout.write(`Saved Darwin credentials to ${configPath}\n`);
124
+ }
125
+ async function showConfig() {
126
+ const resolved = await credentials();
127
+ process.stdout.write(`${JSON.stringify({
128
+ apiKey: redact(resolved.apiKey),
129
+ baseUrl: resolved.baseUrl,
130
+ configPath,
131
+ }, null, 2)}\n`);
132
+ }
133
+ async function logout() {
134
+ await rm(configPath, { force: true });
135
+ process.stdout.write(`Removed Darwin credentials from ${configPath}\n`);
136
+ }
137
+ async function version() {
138
+ const packageJson = JSON.parse(await readFile(new URL('../package.json', import.meta.url), 'utf8'));
139
+ process.stdout.write(`${packageJson.version}\n`);
140
+ }
141
+ function help() {
142
+ process.stdout.write(`Darwin CLI
143
+
144
+ Usage:
145
+ darwin configure --api-key <key> [--base-url <url>]
146
+ darwin config show
147
+ darwin logout
148
+ darwin agent message <text> [--request-id <id>]
149
+ darwin conversation [--limit <number>] [--cursor <cursor>]
150
+ darwin goals list
151
+ darwin goals get <id>
152
+ darwin goals create --intent <text> [--title <text>] [--kind <kind>]
153
+ darwin approvals list [--status <status>]
154
+ darwin approvals decide <id> <approve|reject> [--reason <text>]
155
+ darwin integrations
156
+ darwin tools list
157
+ darwin tools execute <tool> [--input <json-object>]
158
+
159
+ Options:
160
+ -h, --help Show help
161
+ -v, --version Show the installed version
162
+
163
+ Set DARWIN_API_KEY and optionally DARWIN_API_URL instead of storing local
164
+ configuration when running in CI.
165
+ `);
166
+ }
167
+ async function main() {
168
+ const args = process.argv.slice(2);
169
+ if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
170
+ help();
171
+ return;
172
+ }
173
+ if (args.includes('--version') || args.includes('-v')) {
174
+ await version();
175
+ return;
176
+ }
177
+ if (args[0] === 'configure') {
178
+ await configure(args.slice(1));
179
+ return;
180
+ }
181
+ if (args[0] === 'config' && args[1] === 'show') {
182
+ await showConfig();
183
+ return;
184
+ }
185
+ if (args[0] === 'logout') {
186
+ await logout();
187
+ return;
188
+ }
189
+ const auth = await credentials();
190
+ if (!auth.apiKey) {
191
+ throw new Error('No API key found. Run darwin configure --api-key <key> or set DARWIN_API_KEY.');
192
+ }
193
+ const resource = args[0];
194
+ const operation = args[1];
195
+ let result;
196
+ if (resource === 'agent' && operation === 'message') {
197
+ const requestIdIndex = args.indexOf('--request-id');
198
+ const contentEnd = requestIdIndex === -1 ? args.length : requestIdIndex;
199
+ const content = args.slice(2, contentEnd).join(' ').trim();
200
+ if (!content) {
201
+ throw new Error('Pass a message after "darwin agent message".');
202
+ }
203
+ result = await request(auth.apiKey, auth.baseUrl, '/agent/messages', {
204
+ method: 'POST',
205
+ body: {
206
+ content,
207
+ requestId: option(args, '--request-id'),
208
+ },
209
+ });
210
+ }
211
+ else if (resource === 'conversation') {
212
+ result = await request(auth.apiKey, auth.baseUrl, '/agent/conversation', {
213
+ query: {
214
+ limit: integerOption(args, '--limit'),
215
+ cursor: option(args, '--cursor'),
216
+ },
217
+ });
218
+ }
219
+ else if (resource === 'goals' && operation === 'list') {
220
+ result = await request(auth.apiKey, auth.baseUrl, '/goals');
221
+ }
222
+ else if (resource === 'goals' && operation === 'get') {
223
+ const goalId = args[2]?.trim();
224
+ if (!goalId) {
225
+ throw new Error('Pass a goal ID after "darwin goals get".');
226
+ }
227
+ result = await request(auth.apiKey, auth.baseUrl, `/goals/${encodeURIComponent(goalId)}`);
228
+ }
229
+ else if (resource === 'goals' && operation === 'create') {
230
+ const intent = option(args, '--intent');
231
+ if (!intent?.trim()) {
232
+ throw new Error('Pass a goal intent with --intent.');
233
+ }
234
+ result = await request(auth.apiKey, auth.baseUrl, '/goals', {
235
+ method: 'POST',
236
+ body: {
237
+ intent,
238
+ title: option(args, '--title'),
239
+ kind: option(args, '--kind')?.toUpperCase(),
240
+ },
241
+ });
242
+ }
243
+ else if (resource === 'approvals' && operation === 'list') {
244
+ result = await request(auth.apiKey, auth.baseUrl, '/approvals', {
245
+ query: { status: option(args, '--status') },
246
+ });
247
+ }
248
+ else if (resource === 'approvals' && operation === 'decide') {
249
+ const decision = args[3]?.toUpperCase();
250
+ if (decision !== 'APPROVE' && decision !== 'REJECT') {
251
+ throw new Error('Decision must be approve or reject.');
252
+ }
253
+ const approvalId = args[2]?.trim();
254
+ if (!approvalId) {
255
+ throw new Error('Pass the approval ID before the decision.');
256
+ }
257
+ result = await request(auth.apiKey, auth.baseUrl, `/approvals/${encodeURIComponent(approvalId)}/decisions`, {
258
+ method: 'POST',
259
+ body: {
260
+ decision,
261
+ reason: option(args, '--reason'),
262
+ },
263
+ });
264
+ }
265
+ else if (resource === 'integrations') {
266
+ result = await request(auth.apiKey, auth.baseUrl, '/integrations');
267
+ }
268
+ else if (resource === 'tools' && operation === 'list') {
269
+ result = await request(auth.apiKey, auth.baseUrl, '/tools');
270
+ }
271
+ else if (resource === 'tools' && operation === 'execute') {
272
+ const tool = args[2]?.trim();
273
+ if (!tool) {
274
+ throw new Error('Pass a tool name after "darwin tools execute".');
275
+ }
276
+ result = await request(auth.apiKey, auth.baseUrl, `/tools/${encodeURIComponent(tool)}/executions`, {
277
+ method: 'POST',
278
+ body: { input: jsonObjectOption(args, '--input') },
279
+ });
280
+ }
281
+ else {
282
+ throw new Error(`Unknown command: ${args.join(' ')}`);
283
+ }
284
+ process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
285
+ }
286
+ main().catch((error) => {
287
+ if (error instanceof DarwinApiError) {
288
+ process.stderr.write(`Darwin API error (${error.status}): ${error.message}\n`);
289
+ }
290
+ else {
291
+ process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
292
+ }
293
+ process.exitCode = 1;
294
+ });
295
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,cAAc,GAAG,8BAA8B,CAAC;AACtD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AACrF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAO7D,MAAM,cAAe,SAAQ,KAAK;IAErB;IAEA;IAHX,YACW,MAAc,EACvB,OAAe,EACN,IAAc;QAEvB,KAAK,CAAC,OAAO,CAAC,CAAC;QAJN,WAAM,GAAN,MAAM,CAAQ;QAEd,SAAI,GAAJ,IAAI,CAAU;QAGvB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAQD,KAAK,UAAU,UAAU;IACvB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAiB,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE;QACnE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,cAAc;KACxF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,MAAc,EAAE,OAAe,EAAE,IAAY,EAAE,UAA0B,EAAE;IAChG,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAClF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAC/B,OAAO,EAAE;YACP,MAAM,EAAE,kBAAkB;YAC1B,aAAa,EAAE,UAAU,MAAM,EAAE;YACjC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;SAC9E;QACD,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;KAC5E,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,OAAO,GACX,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,SAAS,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;YACvF,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,2BAA2B,CAAC;QACzD,MAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,MAAM,CAAC,IAAc,EAAE,IAAY;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,oBAAoB,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,IAAc,EAAE,IAAY;IACjD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAE1C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,8BAA8B,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAc,EAAE,IAAY;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAEtB,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,sBAAsB,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,yBAAyB,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,MAAiC,CAAC;AAC3C,CAAC;AAED,SAAS,MAAM,CAAC,KAAyB;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE;QAAE,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;IACzD,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAc;IACrC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACnD,MAAM,MAAM,GAAiB;QAC3B,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;QACrB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7D,CAAC;IACF,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,SAAS,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAClE,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IACH,MAAM,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,UAAU,IAAI,CAAC,CAAC;AACtE,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;IACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,IAAI,CAAC,SAAS,CACf;QACE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,UAAU;KACX,EACD,IAAI,EACJ,CAAC,CACF,IAAI,CACN,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,MAAM;IACnB,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,UAAU,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,KAAK,UAAU,OAAO;IACpB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAEjG,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,OAAO,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,IAAI;IACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;CAuBtB,CAAC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxE,IAAI,EAAE,CAAC;QACP,OAAO;IACT,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,OAAO,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;QAC5B,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QAC/C,MAAM,UAAU,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,WAAW,EAAE,CAAC;IACjC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,MAAe,CAAC;IAEpB,IAAI,QAAQ,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACpD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC;QACxE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE;YACnE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,OAAO;gBACP,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC;aACxC;SACF,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;QACvC,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,qBAAqB,EAAE;YACvE,KAAK,EAAE;gBACL,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC;gBACrC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;aACjC;SACF,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,QAAQ,KAAK,OAAO,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACxD,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;SAAM,IAAI,QAAQ,KAAK,OAAO,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;SAAM,IAAI,QAAQ,KAAK,OAAO,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE;YAC1D,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,MAAM;gBACN,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC;gBAC9B,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE;aAC5C;SACF,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,QAAQ,KAAK,WAAW,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QAC5D,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE;YAC9D,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE;SAC5C,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,QAAQ,KAAK,WAAW,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;QACxC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc,kBAAkB,CAAC,UAAU,CAAC,YAAY,EAAE;YAC1G,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,QAAQ;gBACR,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;aACjC;SACF,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;QACvC,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACrE,CAAC;SAAM,IAAI,QAAQ,KAAK,OAAO,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACxD,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;SAAM,IAAI,QAAQ,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,kBAAkB,CAAC,IAAI,CAAC,aAAa,EAAE;YACjG,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;SACnD,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,KAAK,CAAC,MAAM,MAAM,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IACjF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@darwinso/cli",
3
+ "version": "0.1.0",
4
+ "description": "Official command-line client for Darwin",
5
+ "keywords": [
6
+ "darwin",
7
+ "agent",
8
+ "cli"
9
+ ],
10
+ "homepage": "https://docs.darwin.so/cli",
11
+ "bugs": {
12
+ "url": "https://github.com/darwin-studios/darwin-cli/issues"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/darwin-studios/darwin-cli.git"
17
+ },
18
+ "license": "MIT",
19
+ "type": "module",
20
+ "bin": {
21
+ "darwin": "dist/index.js"
22
+ },
23
+ "files": [
24
+ "dist",
25
+ "README.md",
26
+ "LICENSE"
27
+ ],
28
+ "scripts": {
29
+ "build": "tsc -p tsconfig.json",
30
+ "check": "npm run check-types && npm run check-contract",
31
+ "check-contract": "node scripts/check-openapi.mjs",
32
+ "check-types": "tsc -p tsconfig.json --noEmit",
33
+ "prepack": "npm run check && npm test",
34
+ "test": "npm run build && node --test test/*.test.mjs"
35
+ },
36
+ "devDependencies": {
37
+ "@types/node": "22.19.19",
38
+ "typescript": "5.9.2"
39
+ },
40
+ "engines": {
41
+ "node": ">=20"
42
+ },
43
+ "publishConfig": {
44
+ "access": "public",
45
+ "registry": "https://registry.npmjs.org"
46
+ }
47
+ }