@opencomputer/cli 0.6.6 → 0.6.8
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/dist/api.d.ts +75 -0
- package/dist/api.js +40 -4
- package/dist/api.js.map +1 -1
- package/dist/commands.js +295 -7
- package/dist/commands.js.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/project-local.d.ts +7 -0
- package/dist/project-local.js +106 -0
- package/dist/project-local.js.map +1 -0
- package/dist/project-local.test.d.ts +1 -0
- package/dist/project-local.test.js +30 -0
- package/dist/project-local.test.js.map +1 -0
- package/dist/template-local.d.ts +6 -0
- package/dist/template-local.js +57 -0
- package/dist/template-local.js.map +1 -0
- package/dist/template.d.ts +72 -0
- package/dist/template.js +326 -0
- package/dist/template.js.map +1 -0
- package/dist/template.test.d.ts +1 -0
- package/dist/template.test.js +109 -0
- package/dist/template.test.js.map +1 -0
- package/package.json +1 -1
package/dist/api.d.ts
CHANGED
|
@@ -85,6 +85,66 @@ export interface AgentRuntimeVariableMetadata {
|
|
|
85
85
|
createdAt: string;
|
|
86
86
|
updatedAt: string;
|
|
87
87
|
}
|
|
88
|
+
export interface TemplateInspection {
|
|
89
|
+
id: string;
|
|
90
|
+
repository: {
|
|
91
|
+
url: string;
|
|
92
|
+
fullName: string;
|
|
93
|
+
defaultBranch: "main";
|
|
94
|
+
commitSha: string;
|
|
95
|
+
};
|
|
96
|
+
template: {
|
|
97
|
+
name: string;
|
|
98
|
+
description: string;
|
|
99
|
+
documentation?: string;
|
|
100
|
+
defaultProjectName?: string;
|
|
101
|
+
firstRun?: {
|
|
102
|
+
agent: string;
|
|
103
|
+
prompt: string;
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
agents: Array<{
|
|
107
|
+
id: string;
|
|
108
|
+
name: string;
|
|
109
|
+
}>;
|
|
110
|
+
requirements: {
|
|
111
|
+
secrets: Array<{
|
|
112
|
+
name: string;
|
|
113
|
+
description?: string;
|
|
114
|
+
documentation?: string;
|
|
115
|
+
required?: boolean;
|
|
116
|
+
agentId?: string;
|
|
117
|
+
allowedOrigins: string[];
|
|
118
|
+
}>;
|
|
119
|
+
runtimeVariables: Array<{
|
|
120
|
+
name: string;
|
|
121
|
+
description?: string;
|
|
122
|
+
documentation?: string;
|
|
123
|
+
required: boolean;
|
|
124
|
+
example?: string;
|
|
125
|
+
agentId?: string;
|
|
126
|
+
}>;
|
|
127
|
+
connections: Array<{
|
|
128
|
+
id: string;
|
|
129
|
+
description?: string;
|
|
130
|
+
provider: string;
|
|
131
|
+
permissions: string[];
|
|
132
|
+
}>;
|
|
133
|
+
};
|
|
134
|
+
expiresAt: string;
|
|
135
|
+
}
|
|
136
|
+
export interface TemplateInstallation {
|
|
137
|
+
id: string;
|
|
138
|
+
inspectionId: string;
|
|
139
|
+
projectId: string;
|
|
140
|
+
projectAgentId: string;
|
|
141
|
+
projectUrl: string;
|
|
142
|
+
state: "awaiting_configuration" | "creating_project" | "building" | "deploying" | "ready" | "failed";
|
|
143
|
+
error?: {
|
|
144
|
+
stage: string;
|
|
145
|
+
message: string;
|
|
146
|
+
};
|
|
147
|
+
}
|
|
88
148
|
export interface ManagedAgentWebhook {
|
|
89
149
|
id: string;
|
|
90
150
|
projectId: string;
|
|
@@ -92,6 +152,8 @@ export interface ManagedAgentWebhook {
|
|
|
92
152
|
agentId: string;
|
|
93
153
|
name: string;
|
|
94
154
|
enabled: boolean;
|
|
155
|
+
/** Delivery identity source, `header:<name>` or `body:<json-pointer>`. */
|
|
156
|
+
identity?: string;
|
|
95
157
|
invocationUrl: string;
|
|
96
158
|
token?: string;
|
|
97
159
|
createdAt: string;
|
|
@@ -160,6 +222,7 @@ export declare class OpenComputerClient {
|
|
|
160
222
|
private readonly config;
|
|
161
223
|
private readonly idempotencyKey?;
|
|
162
224
|
constructor(config: ResolvedConfig, idempotencyKey?: string | undefined);
|
|
225
|
+
private response;
|
|
163
226
|
private request;
|
|
164
227
|
startLogin(): Promise<{
|
|
165
228
|
device_code: string;
|
|
@@ -184,6 +247,15 @@ export declare class OpenComputerClient {
|
|
|
184
247
|
agents(): Promise<ManagedAgentSummary[]>;
|
|
185
248
|
projects(): Promise<ManagedProject[]>;
|
|
186
249
|
createProject(name: string, slug: string): Promise<ManagedProject>;
|
|
250
|
+
projectSourceArchive(projectId: string): Promise<Response>;
|
|
251
|
+
inspectTemplate(repositoryUrl: string): Promise<TemplateInspection>;
|
|
252
|
+
createTemplateInstallation(input: {
|
|
253
|
+
inspectionId: string;
|
|
254
|
+
projectName: string;
|
|
255
|
+
idempotencyKey: string;
|
|
256
|
+
}): Promise<TemplateInstallation>;
|
|
257
|
+
finalizeTemplateInstallation(installationId: string): Promise<TemplateInstallation>;
|
|
258
|
+
templateInstallation(installationId: string): Promise<TemplateInstallation>;
|
|
187
259
|
secrets(input: {
|
|
188
260
|
projectId: string;
|
|
189
261
|
environment?: "development" | "production";
|
|
@@ -255,12 +327,15 @@ export declare class OpenComputerClient {
|
|
|
255
327
|
name: string;
|
|
256
328
|
environment: "development" | "production";
|
|
257
329
|
agentId: string;
|
|
330
|
+
identity?: string;
|
|
258
331
|
}): Promise<ManagedAgentWebhook>;
|
|
259
332
|
updateWebhook(input: {
|
|
260
333
|
projectId: string;
|
|
261
334
|
webhookId: string;
|
|
262
335
|
name?: string;
|
|
263
336
|
enabled?: boolean;
|
|
337
|
+
/** A source sets it; null clears it. */
|
|
338
|
+
identity?: string | null;
|
|
264
339
|
}): Promise<ManagedAgentWebhook>;
|
|
265
340
|
rotateWebhookToken(input: {
|
|
266
341
|
projectId: string;
|
package/dist/api.js
CHANGED
|
@@ -28,7 +28,7 @@ export class OpenComputerClient {
|
|
|
28
28
|
this.config = config;
|
|
29
29
|
this.idempotencyKey = idempotencyKey;
|
|
30
30
|
}
|
|
31
|
-
async
|
|
31
|
+
async response(path, init = {}, authenticated = true) {
|
|
32
32
|
const headers = new Headers(init.headers);
|
|
33
33
|
if (init.body && !headers.has("content-type")) {
|
|
34
34
|
headers.set("content-type", "application/json");
|
|
@@ -57,12 +57,17 @@ export class OpenComputerClient {
|
|
|
57
57
|
redirect: "manual",
|
|
58
58
|
signal: AbortSignal.timeout(30_000),
|
|
59
59
|
});
|
|
60
|
-
if (response.status === 204)
|
|
61
|
-
return undefined;
|
|
62
|
-
const body = await response.json().catch(() => undefined);
|
|
63
60
|
if (!response.ok) {
|
|
61
|
+
const body = await response.json().catch(() => undefined);
|
|
64
62
|
throw new APIError(errorMessage(body, response.status), response.status);
|
|
65
63
|
}
|
|
64
|
+
return response;
|
|
65
|
+
}
|
|
66
|
+
async request(path, init = {}, authenticated = true) {
|
|
67
|
+
const response = await this.response(path, init, authenticated);
|
|
68
|
+
if (response.status === 204)
|
|
69
|
+
return undefined;
|
|
70
|
+
const body = await response.json().catch(() => undefined);
|
|
66
71
|
return body;
|
|
67
72
|
}
|
|
68
73
|
startLogin() {
|
|
@@ -97,6 +102,35 @@ export class OpenComputerClient {
|
|
|
97
102
|
body: JSON.stringify({ name, slug }),
|
|
98
103
|
});
|
|
99
104
|
}
|
|
105
|
+
projectSourceArchive(projectId) {
|
|
106
|
+
return this.response(`/api/managed-agents/projects/${encodeURIComponent(projectId)}/source-archive`);
|
|
107
|
+
}
|
|
108
|
+
async inspectTemplate(repositoryUrl) {
|
|
109
|
+
const deadline = Date.now() + 10 * 60_000;
|
|
110
|
+
for (;;) {
|
|
111
|
+
const result = await this.request("/api/managed-agents/template-inspections", {
|
|
112
|
+
method: "POST",
|
|
113
|
+
body: JSON.stringify({ repositoryUrl }),
|
|
114
|
+
});
|
|
115
|
+
if (result.status !== "preparing") {
|
|
116
|
+
return result;
|
|
117
|
+
}
|
|
118
|
+
const preparing = result;
|
|
119
|
+
if (Date.now() >= deadline) {
|
|
120
|
+
throw new Error("Template preparation is still running; try again shortly");
|
|
121
|
+
}
|
|
122
|
+
await new Promise((resolvePromise) => setTimeout(resolvePromise, Math.max(500, preparing.retryAfterMs)));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
createTemplateInstallation(input) {
|
|
126
|
+
return this.request("/api/managed-agents/template-installations", { method: "POST", body: JSON.stringify(input) });
|
|
127
|
+
}
|
|
128
|
+
finalizeTemplateInstallation(installationId) {
|
|
129
|
+
return this.request(`/api/managed-agents/template-installations/${encodeURIComponent(installationId)}/finalize`, { method: "POST" });
|
|
130
|
+
}
|
|
131
|
+
templateInstallation(installationId) {
|
|
132
|
+
return this.request(`/api/managed-agents/template-installations/${encodeURIComponent(installationId)}`);
|
|
133
|
+
}
|
|
100
134
|
async secrets(input) {
|
|
101
135
|
const query = new URLSearchParams();
|
|
102
136
|
if (input.environment)
|
|
@@ -203,6 +237,7 @@ export class OpenComputerClient {
|
|
|
203
237
|
name: input.name,
|
|
204
238
|
environment: input.environment,
|
|
205
239
|
agentId: input.agentId,
|
|
240
|
+
...(input.identity !== undefined ? { identity: input.identity } : {}),
|
|
206
241
|
}),
|
|
207
242
|
}).then((result) => result.webhook);
|
|
208
243
|
}
|
|
@@ -212,6 +247,7 @@ export class OpenComputerClient {
|
|
|
212
247
|
body: JSON.stringify({
|
|
213
248
|
...(input.name !== undefined ? { name: input.name } : {}),
|
|
214
249
|
...(input.enabled !== undefined ? { enabled: input.enabled } : {}),
|
|
250
|
+
...(input.identity !== undefined ? { identity: input.identity } : {}),
|
|
215
251
|
}),
|
|
216
252
|
}).then((result) => result.webhook);
|
|
217
253
|
}
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA8OzC,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGtB;IAFX,YACE,OAAe,EACN,MAAc;QAEvB,KAAK,CAAC,OAAO,CAAC,CAAC;QAFN,WAAM,GAAN,MAAM,CAAQ;IAGzB,CAAC;CACF;AAED,SAAS,YAAY,CAAC,IAAa,EAAE,MAAc;IACjD,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,IAA+B,CAAC;QAC/C,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC;QAC1D,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,OAAO,GAAI,MAAM,CAAC,KAAiC,CAAC,OAAO,CAAC;YAClE,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAAE,OAAO,OAAO,CAAC;QAClD,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,OAAO,CAAC;IAChE,CAAC;IACD,OAAO,gCAAgC,MAAM,GAAG,CAAC;AACnD,CAAC;AAED,MAAM,OAAO,kBAAkB;IAEV;IACA;IAFnB,YACmB,MAAsB,EACtB,cAAuB;QADvB,WAAM,GAAN,MAAM,CAAgB;QACtB,mBAAc,GAAd,cAAc,CAAS;IACvC,CAAC;IAEI,KAAK,CAAC,QAAQ,CACpB,IAAY,EACZ,OAAoB,EAAE,EACtB,aAAa,GAAG,IAAI;QAEpB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACpD,IAAI,IAAI,CAAC,cAAc,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACjE,OAAO,CAAC,GAAG,CACT,iBAAiB,EACjB,UAAU,CAAC,QAAQ,CAAC;iBACjB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;iBAC3B,MAAM,CAAC,IAAI,CAAC;iBACZ,MAAM,CAAC,MAAM,CAAC;iBACd,MAAM,CAAC,IAAI,CAAC;iBACZ,MAAM,CAAC,IAAI,CAAC;iBACZ,MAAM,CAAC,IAAI,CAAC;iBACZ,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;iBACtD,MAAM,CAAC,KAAK,CAAC,CACjB,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,EAAE;YAC3D,GAAG,IAAI;YACP,OAAO;YACP,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACnE,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,IAAY,EACZ,OAAoB,EAAE,EACtB,aAAa,GAAG,IAAI;QAEpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAChE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,SAAc,CAAC;QACnD,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACnE,OAAO,IAAS,CAAC;IACnB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAOhB,kBAAkB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,aAAa,CAAC,UAAkB,EAAE,cAAsB;QACtD,OAAO,IAAI,CAAC,OAAO,CAUjB,2BAA2B,EAC3B;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,WAAW,EAAE,UAAU;gBACvB,eAAe,EAAE,cAAc;aAChC,CAAC;SACH,EACD,KAAK,CACN,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAuB,aAAa,CAAC,CAAC;IAC3D,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,OAAO,CAAO,sBAAsB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,4BAA4B,CAC7B,CAAC;QACF,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,8BAA8B,CAC/B,CAAC;QACF,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,IAAY;QACtC,OAAO,IAAI,CAAC,OAAO,CAAiB,8BAA8B,EAAE;YAClE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACrC,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB,CAAC,SAAiB;QACpC,OAAO,IAAI,CAAC,QAAQ,CAClB,gCAAgC,kBAAkB,CAAC,SAAS,CAAC,iBAAiB,CAC/E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,aAAqB;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QAC1C,SAAS,CAAC;YACR,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAE/B,0CAA0C,EAAE;gBAC5C,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;aACxC,CAAC,CAAC;YACH,IAAK,MAAsC,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACnE,OAAO,MAA4B,CAAC;YACtC,CAAC;YACD,MAAM,SAAS,GAAG,MAAqC,CAAC;YACxD,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE,CACnC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,CAClE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,0BAA0B,CAAC,KAI1B;QACC,OAAO,IAAI,CAAC,OAAO,CACjB,4CAA4C,EAC5C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAChD,CAAC;IACJ,CAAC;IAED,4BAA4B,CAAC,cAAsB;QACjD,OAAO,IAAI,CAAC,OAAO,CACjB,8CAA8C,kBAAkB,CAAC,cAAc,CAAC,WAAW,EAC3F,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,cAAsB;QACzC,OAAO,IAAI,CAAC,OAAO,CACjB,8CAA8C,kBAAkB,CAAC,cAAc,CAAC,EAAE,CACnF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAIb;QACC,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,WAAW;YAAE,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,OAAO;YAAE,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,gCAAgC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,MAAM,EAAE,CACvF,CAAC;QACF,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,SAAS,CAAC,KAOT;QACC,OAAO,IAAI,CAAC,OAAO,CACjB,gCAAgC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAC/G;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,cAAc,EAAE,KAAK,CAAC,cAAc;aACrC,CAAC;SACH,CACF,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,KAKZ;QACC,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACtE,IAAI,KAAK,CAAC,OAAO;YAAE,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,OAAO,CACjB,gCAAgC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,EACnI,EAAE,MAAM,EAAE,QAAQ,EAAE,CACrB,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,sBAAsB;QAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,8CAA8C,CAC/C,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,0EAA0E;IAC1E,4DAA4D;IAC5D,kBAAkB,CAAC,KAA6C;QAC9D,OAAO,IAAI,CAAC,OAAO,CAKhB,8CAA8C,EAAE;YACjD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,0EAA0E;IAC1E,4EAA4E;IAC5E,gBAAgB,CACd,EAAU,EACV,UAKC;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,gDAAgD,kBAAkB,CAAC,EAAE,CAAC,WAAW,EACjF;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,YAAY,EAAE,UAAU,CAAC,YAAY;gBACrC,aAAa,EAAE,UAAU,CAAC,aAAa;gBACvC,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,UAAU,EAAE,UAAU,CAAC,UAAU;aAClC,CAAC;SACH,CACF,CAAC;IACJ,CAAC;IAED,qBAAqB,CAAC,EAAU;QAC9B,OAAO,IAAI,CAAC,OAAO,CACjB,gDAAgD,kBAAkB,CAAC,EAAE,CAAC,EAAE,EACxE,EAAE,MAAM,EAAE,QAAQ,EAAE,CACrB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,SAAiB;QACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,gCAAgC,kBAAkB,CAAC,SAAS,CAAC,wBAAwB,CACtF,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,qBAAqB,CAAC,KAKrB;QACC,OAAO,IAAI,CAAC,OAAO,CACjB,gCAAgC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,0BAA0B,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,WAAW,EAAE,EAClI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CACpE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,KAItB;QACC,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,WAAW;YAAE,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,OAAO;YAAE,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAG/B,gCAAgC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,qBAAqB,MAAM,EAAE,CACjG,CAAC;QACF,OAAO,MAAM,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,kBAAkB,CAAC,KAMlB;QACC,OAAO,IAAI,CAAC,OAAO,CACjB,gCAAgC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,sBAAsB,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EACzH;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrD,CAAC;SACH,CACF,CAAC;IACJ,CAAC;IAED,qBAAqB,CAAC,KAKrB;QACC,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACtE,IAAI,KAAK,CAAC,OAAO;YAAE,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,OAAO,CACjB,gCAAgC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,sBAAsB,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,EAC7I,EAAE,MAAM,EAAE,QAAQ,EAAE,CACrB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAId;QACC,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,WAAW;YAAE,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,OAAO;YAAE,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,gCAAgC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,MAAM,EAAE,CACxF,CAAC;QACF,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,aAAa,CAAC,KAMb;QACC,OAAO,IAAI,CAAC,OAAO,CACjB,gCAAgC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,EAC9E;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtE,CAAC;SACH,CACF,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,aAAa,CAAC,KAOb;QACC,OAAO,IAAI,CAAC,OAAO,CACjB,gCAAgC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EACrH;YACE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzD,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtE,CAAC;SACH,CACF,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,kBAAkB,CAAC,KAA+C;QAChE,OAAO,IAAI,CAAC,OAAO,CACjB,gCAAgC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,EAClI,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,aAAa,CAAC,KAA+C;QAC3D,OAAO,IAAI,CAAC,OAAO,CACjB,gCAAgC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EACrH,EAAE,MAAM,EAAE,QAAQ,EAAE,CACrB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAMJ;QACC,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,OAAO;YAAE,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,KAAK,CAAC,SAAS;YAAE,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,KAAK,CAAC,WAAW;YAAE,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,KAAK;YAAE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,KAAK,CAAC,KAAK;YAAE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,OAAO,CACjB,4BAA4B,KAAK,CAAC,QAAQ,EAAE,EAAE,CAC/C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,8BAA8B,CAC/B,CAAC;QACF,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,kBAAkB,CAAC,KAwClB;QACC,OAAO,IAAI,CAAC,OAAO,CACjB,iCAAiC,EACjC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAChD,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,OAAe;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAsB,8BAA8B,EAAE;YACvE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAE9B,8BAA8B,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,SAAiB;QACvB,OAAO,IAAI,CAAC,OAAO,CACjB,gCAAgC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAChE,CAAC;IACJ,CAAC;IAED,UAAU,CACR,SAAiB,EACjB,KAAa,EACb,iBAAyB,MAAM,CAAC,UAAU,EAAE;QAE5C,OAAO,IAAI,CAAC,OAAO,CACjB,gCAAgC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,EACrE;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK;gBACL,cAAc;aACf,CAAC;SACH,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,KAAa;QAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,gCAAgC,kBAAkB,CAAC,SAAS,CAAC,iBAAiB,KAAK,EAAE,CACtF,CAAC;QACF,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,cAAc,CAAC,SAAiB;QAC9B,OAAO,IAAI,CAAC,OAAO,CACjB,gCAAgC,kBAAkB,CAAC,SAAS,CAAC,UAAU,EACvE,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,SAAiB;QAC7B,OAAO,IAAI,CAAC,OAAO,CACjB,gCAAgC,kBAAkB,CAAC,SAAS,CAAC,SAAS,EACtE,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,OAAO,IAAI,CAAC,OAAO,CACjB,gCAAgC,kBAAkB,CAAC,SAAS,CAAC,MAAM,EACnE,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,SAAiB;QAChC,OAAO,IAAI,CAAC,OAAO,CACjB,gCAAgC,kBAAkB,CAAC,SAAS,CAAC,YAAY,EACzE,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB,CAAC;IACJ,CAAC;CACF"}
|
package/dist/commands.js
CHANGED
|
@@ -7,6 +7,10 @@ import { ensureProjectBinding, findOpenComputerProjectRoot, } from "./binding.js
|
|
|
7
7
|
import { assertStarterTarget, buildAgentArtifact, findAgentRoot, initializeAgentProject, } from "./project.js";
|
|
8
8
|
import { developmentAgentReference, parseSessionCommand, resolveProjectAgent, } from "./session-command.js";
|
|
9
9
|
import { formatSessionEvent } from "./session-prompt.js";
|
|
10
|
+
import { buildTemplateProject, normalizeTemplateRepositoryUrl, readTemplateManifest, templateDeployUrl, } from "./template.js";
|
|
11
|
+
import { defaultTemplateDirectory, materializeTemplateCheckout, } from "./template-local.js";
|
|
12
|
+
import { materializeProjectArchive } from "./project-local.js";
|
|
13
|
+
import { createInterface } from "node:readline/promises";
|
|
10
14
|
import { doctorProject } from "./doctor.js";
|
|
11
15
|
import { CLIError } from "./errors.js";
|
|
12
16
|
export function deploymentAlias(requestedAlias) {
|
|
@@ -61,6 +65,49 @@ function consumeModelAccessProvider(args) {
|
|
|
61
65
|
}
|
|
62
66
|
return "codex";
|
|
63
67
|
}
|
|
68
|
+
async function readTemplateSecretValue() {
|
|
69
|
+
if (!process.stdin.isTTY) {
|
|
70
|
+
const chunks = [];
|
|
71
|
+
for await (const chunk of process.stdin) {
|
|
72
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
73
|
+
}
|
|
74
|
+
const value = Buffer.concat(chunks).toString("utf8").replace(/\r?\n$/, "");
|
|
75
|
+
if (!value)
|
|
76
|
+
throw new Error("Secret value was empty");
|
|
77
|
+
return value;
|
|
78
|
+
}
|
|
79
|
+
process.stderr.write("Secret value (hidden): ");
|
|
80
|
+
process.stdin.setRawMode(true);
|
|
81
|
+
process.stdin.resume();
|
|
82
|
+
return new Promise((resolve, reject) => {
|
|
83
|
+
let value = "";
|
|
84
|
+
const finish = (error) => {
|
|
85
|
+
process.stdin.off("data", onData);
|
|
86
|
+
process.stdin.setRawMode(false);
|
|
87
|
+
process.stdin.pause();
|
|
88
|
+
process.stderr.write("\n");
|
|
89
|
+
if (error)
|
|
90
|
+
reject(error);
|
|
91
|
+
else if (!value)
|
|
92
|
+
reject(new Error("Secret value was empty"));
|
|
93
|
+
else
|
|
94
|
+
resolve(value);
|
|
95
|
+
};
|
|
96
|
+
const onData = (chunk) => {
|
|
97
|
+
for (const byte of chunk) {
|
|
98
|
+
if (byte === 3)
|
|
99
|
+
return finish(new Error("Secret entry cancelled"));
|
|
100
|
+
if (byte === 10 || byte === 13)
|
|
101
|
+
return finish();
|
|
102
|
+
if (byte === 8 || byte === 127)
|
|
103
|
+
value = value.slice(0, -1);
|
|
104
|
+
else
|
|
105
|
+
value += String.fromCharCode(byte);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
process.stdin.on("data", onData);
|
|
109
|
+
});
|
|
110
|
+
}
|
|
64
111
|
async function readStdinValue(enabled) {
|
|
65
112
|
if (!enabled) {
|
|
66
113
|
throw new CLIError("value_stdin_required", "A value must be supplied through standard input.", "Pipe the value into this command and add `--value-stdin`.");
|
|
@@ -358,8 +405,224 @@ async function runAgent(client, agent, prompt, keep, json, verbose, idempotencyK
|
|
|
358
405
|
}
|
|
359
406
|
export async function runCommand(command, rawArgs, globals) {
|
|
360
407
|
const args = [...rawArgs];
|
|
408
|
+
if (command === "template" && args[0] === "validate") {
|
|
409
|
+
args.shift();
|
|
410
|
+
const repositoryUrl = option(args, "--repository-url");
|
|
411
|
+
const appUrl = option(args, "--app-url");
|
|
412
|
+
const directory = args.shift() ?? process.cwd();
|
|
413
|
+
if (args.length)
|
|
414
|
+
throw new Error(`Unexpected argument: ${args[0]}`);
|
|
415
|
+
const manifest = await readTemplateManifest(directory);
|
|
416
|
+
const deployUrl = repositoryUrl
|
|
417
|
+
? templateDeployUrl(repositoryUrl, appUrl)
|
|
418
|
+
: undefined;
|
|
419
|
+
if (globals.json) {
|
|
420
|
+
printJSON({ file: "oc-template.toml", manifest, deployUrl });
|
|
421
|
+
}
|
|
422
|
+
else {
|
|
423
|
+
process.stdout.write(`Valid template: ${manifest.template.name}\n` +
|
|
424
|
+
(deployUrl ? `Deploy URL: ${deployUrl}\n` : ""));
|
|
425
|
+
}
|
|
426
|
+
return;
|
|
427
|
+
}
|
|
428
|
+
if (command === "template" && args[0] === "build") {
|
|
429
|
+
args.shift();
|
|
430
|
+
const output = option(args, "--output");
|
|
431
|
+
const directory = args.shift() ?? process.cwd();
|
|
432
|
+
if (args.length)
|
|
433
|
+
throw new Error(`Unexpected argument: ${args[0]}`);
|
|
434
|
+
const bundle = await buildTemplateProject(directory);
|
|
435
|
+
const serialized = `${JSON.stringify(bundle)}\n`;
|
|
436
|
+
if (output) {
|
|
437
|
+
const { writeFile } = await import("node:fs/promises");
|
|
438
|
+
await writeFile(output, serialized, { mode: 0o600 });
|
|
439
|
+
if (!globals.json)
|
|
440
|
+
process.stdout.write(`Built template bundle: ${output}\n`);
|
|
441
|
+
}
|
|
442
|
+
else {
|
|
443
|
+
process.stdout.write(serialized);
|
|
444
|
+
}
|
|
445
|
+
return;
|
|
446
|
+
}
|
|
361
447
|
const config = await resolveConfig(globals);
|
|
362
448
|
const client = new OpenComputerClient(config, globals.idempotencyKey);
|
|
449
|
+
if (command === "project" && args[0] === "clone") {
|
|
450
|
+
args.shift();
|
|
451
|
+
const directory = option(args, "--directory");
|
|
452
|
+
const projectId = args.shift();
|
|
453
|
+
if (!projectId || args.length) {
|
|
454
|
+
throw new Error("Usage: opencomputer project clone <project-id> [--directory <path>]");
|
|
455
|
+
}
|
|
456
|
+
const project = (await client.projects()).find((candidate) => candidate.id === projectId);
|
|
457
|
+
if (!project)
|
|
458
|
+
throw new Error(`Project not found: ${projectId}`);
|
|
459
|
+
const checkout = await materializeProjectArchive({
|
|
460
|
+
response: await client.projectSourceArchive(project.id),
|
|
461
|
+
directory: directory ?? project.slug,
|
|
462
|
+
});
|
|
463
|
+
const binding = await ensureProjectBinding(client, config, checkout.directory, {
|
|
464
|
+
project: project.id,
|
|
465
|
+
});
|
|
466
|
+
if (globals.json)
|
|
467
|
+
printJSON({ checkout, binding });
|
|
468
|
+
else {
|
|
469
|
+
process.stdout.write(`Cloned ${binding.projectName} (${binding.projectId}).\n\n` +
|
|
470
|
+
`Next:\n cd ${checkout.directory}\n npm install\n` +
|
|
471
|
+
` npm run deploy -- --watch --api-url ${config.apiUrl}\n`);
|
|
472
|
+
}
|
|
473
|
+
return;
|
|
474
|
+
}
|
|
475
|
+
if (command === "template") {
|
|
476
|
+
const action = args.shift();
|
|
477
|
+
if (action === "clone") {
|
|
478
|
+
const commitSha = option(args, "--commit");
|
|
479
|
+
const project = option(args, "--project");
|
|
480
|
+
const directory = option(args, "--directory");
|
|
481
|
+
const repositoryUrl = args.shift();
|
|
482
|
+
if (!repositoryUrl || !commitSha || !project || args.length) {
|
|
483
|
+
throw new Error("Usage: opencomputer template clone <repository-url> --commit <sha> --project <id> [--directory <path>]");
|
|
484
|
+
}
|
|
485
|
+
const normalized = normalizeTemplateRepositoryUrl(repositoryUrl);
|
|
486
|
+
const checkout = await materializeTemplateCheckout(normalized, commitSha, directory);
|
|
487
|
+
const binding = await ensureProjectBinding(client, config, checkout.directory, { project });
|
|
488
|
+
if (globals.json)
|
|
489
|
+
printJSON({ checkout, binding });
|
|
490
|
+
else {
|
|
491
|
+
process.stdout.write(`Cloned ${normalized}@${commitSha.slice(0, 12)}\n` +
|
|
492
|
+
`Linked to ${binding.projectName} (${binding.projectId}).\n\n` +
|
|
493
|
+
`Next:\n cd ${checkout.directory}\n npm install\n npm run deploy -- --watch\n`);
|
|
494
|
+
}
|
|
495
|
+
return;
|
|
496
|
+
}
|
|
497
|
+
if (action !== "deploy") {
|
|
498
|
+
throw new Error("Usage: opencomputer template <deploy|clone> ...");
|
|
499
|
+
}
|
|
500
|
+
const projectNameOption = option(args, "--project-name");
|
|
501
|
+
const directoryOption = option(args, "--directory");
|
|
502
|
+
const confirmed = flag(args, "--yes");
|
|
503
|
+
const repositoryUrl = args.shift();
|
|
504
|
+
if (!repositoryUrl) {
|
|
505
|
+
throw new Error("A GitHub repository URL is required");
|
|
506
|
+
}
|
|
507
|
+
if (args.length)
|
|
508
|
+
throw new Error(`Unexpected argument: ${args[0]}`);
|
|
509
|
+
const inspection = await client.inspectTemplate(normalizeTemplateRepositoryUrl(repositoryUrl));
|
|
510
|
+
if (!globals.json) {
|
|
511
|
+
process.stdout.write(`\n${inspection.template.name}\n${inspection.template.description}\n` +
|
|
512
|
+
`Source: ${inspection.repository.fullName}@${inspection.repository.commitSha.slice(0, 12)}\n` +
|
|
513
|
+
`Agents: ${inspection.agents.map((agent) => agent.name).join(", ")}\n` +
|
|
514
|
+
`Target: Development\n\n`);
|
|
515
|
+
}
|
|
516
|
+
if (inspection.requirements.connections.length) {
|
|
517
|
+
throw new Error("This template needs an interactive provider connection. Open its deploy URL in the dashboard to continue.");
|
|
518
|
+
}
|
|
519
|
+
const requiredSecrets = inspection.requirements.secrets.filter((requirement) => requirement.required !== false);
|
|
520
|
+
if (!process.stdin.isTTY && requiredSecrets.length) {
|
|
521
|
+
throw new Error(`Secret ${requiredSecrets[0].name} requires an interactive terminal; secret values are never accepted as command-line arguments`);
|
|
522
|
+
}
|
|
523
|
+
if ((!process.stdin.isTTY || !process.stdout.isTTY) && !projectNameOption) {
|
|
524
|
+
throw new Error("--project-name is required in non-interactive mode");
|
|
525
|
+
}
|
|
526
|
+
const terminal = process.stdin.isTTY && process.stdout.isTTY
|
|
527
|
+
? createInterface({ input: process.stdin, output: process.stdout })
|
|
528
|
+
: undefined;
|
|
529
|
+
let projectName = projectNameOption ??
|
|
530
|
+
inspection.template.defaultProjectName ??
|
|
531
|
+
inspection.template.name;
|
|
532
|
+
if (terminal && !projectNameOption) {
|
|
533
|
+
projectName =
|
|
534
|
+
(await terminal.question(`Project name [${projectName}]: `)).trim() ||
|
|
535
|
+
projectName;
|
|
536
|
+
}
|
|
537
|
+
if (terminal && !confirmed) {
|
|
538
|
+
const answer = (await terminal.question("Create this Development project? [y/N] "))
|
|
539
|
+
.trim()
|
|
540
|
+
.toLowerCase();
|
|
541
|
+
if (answer !== "y" && answer !== "yes") {
|
|
542
|
+
terminal.close();
|
|
543
|
+
throw new Error("Template deployment cancelled");
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
const checkout = await materializeTemplateCheckout(inspection.repository.url, inspection.repository.commitSha, directoryOption ?? defaultTemplateDirectory(inspection.repository.url));
|
|
547
|
+
const runtimeValues = new Map();
|
|
548
|
+
for (const requirement of inspection.requirements.runtimeVariables) {
|
|
549
|
+
if (!terminal) {
|
|
550
|
+
if (requirement.required) {
|
|
551
|
+
throw new Error(`Runtime variable ${requirement.name} requires an interactive terminal`);
|
|
552
|
+
}
|
|
553
|
+
continue;
|
|
554
|
+
}
|
|
555
|
+
const hint = requirement.example ? ` [${requirement.example}]` : "";
|
|
556
|
+
const value = (await terminal.question(`${requirement.name}${hint}: `)).trim() ||
|
|
557
|
+
requirement.example ||
|
|
558
|
+
"";
|
|
559
|
+
if (requirement.required && !value) {
|
|
560
|
+
terminal.close();
|
|
561
|
+
throw new Error(`${requirement.name} is required`);
|
|
562
|
+
}
|
|
563
|
+
if (value)
|
|
564
|
+
runtimeValues.set(requirement.name, value);
|
|
565
|
+
}
|
|
566
|
+
terminal?.close();
|
|
567
|
+
const installation = await client.createTemplateInstallation({
|
|
568
|
+
inspectionId: inspection.id,
|
|
569
|
+
projectName,
|
|
570
|
+
idempotencyKey: crypto.randomUUID(),
|
|
571
|
+
});
|
|
572
|
+
const installationAgentId = (localAgentId) => !localAgentId || localAgentId === inspection.agents[0]?.id
|
|
573
|
+
? installation.projectAgentId
|
|
574
|
+
: `${installation.projectAgentId}--${localAgentId}`;
|
|
575
|
+
for (const requirement of requiredSecrets) {
|
|
576
|
+
process.stderr.write(`${requirement.name}\n`);
|
|
577
|
+
const value = await readTemplateSecretValue();
|
|
578
|
+
await client.putSecret({
|
|
579
|
+
projectId: installation.projectId,
|
|
580
|
+
name: requirement.name,
|
|
581
|
+
value,
|
|
582
|
+
environment: "development",
|
|
583
|
+
agentId: installationAgentId(requirement.agentId),
|
|
584
|
+
allowedOrigins: requirement.allowedOrigins,
|
|
585
|
+
});
|
|
586
|
+
}
|
|
587
|
+
for (const requirement of inspection.requirements.runtimeVariables) {
|
|
588
|
+
const value = runtimeValues.get(requirement.name);
|
|
589
|
+
if (!value)
|
|
590
|
+
continue;
|
|
591
|
+
await client.putRuntimeVariable({
|
|
592
|
+
projectId: installation.projectId,
|
|
593
|
+
name: requirement.name,
|
|
594
|
+
value,
|
|
595
|
+
environment: "development",
|
|
596
|
+
agentId: installationAgentId(requirement.agentId),
|
|
597
|
+
});
|
|
598
|
+
}
|
|
599
|
+
let current = await client.finalizeTemplateInstallation(installation.id);
|
|
600
|
+
const deadline = Date.now() + 10 * 60_000;
|
|
601
|
+
while (!["ready", "failed"].includes(current.state) &&
|
|
602
|
+
Date.now() < deadline) {
|
|
603
|
+
await new Promise((resolvePromise) => setTimeout(resolvePromise, 1_000));
|
|
604
|
+
current = await client.templateInstallation(current.id);
|
|
605
|
+
if (!globals.json)
|
|
606
|
+
process.stderr.write(`Template installation: ${current.state}\r`);
|
|
607
|
+
}
|
|
608
|
+
if (current.state === "failed") {
|
|
609
|
+
throw new Error(current.error?.message ?? "Template installation failed");
|
|
610
|
+
}
|
|
611
|
+
if (current.state !== "ready") {
|
|
612
|
+
throw new Error(`Template installation is still ${current.state}; ${current.projectUrl}`);
|
|
613
|
+
}
|
|
614
|
+
const binding = await ensureProjectBinding(client, config, checkout.directory, {
|
|
615
|
+
project: current.projectId,
|
|
616
|
+
});
|
|
617
|
+
if (globals.json)
|
|
618
|
+
printJSON({ installation: current, checkout, binding });
|
|
619
|
+
else {
|
|
620
|
+
process.stdout.write(`\nReady: ${current.projectUrl}\n` +
|
|
621
|
+
`Local: ${checkout.directory}\n\n` +
|
|
622
|
+
`Next:\n cd ${checkout.directory}\n npm install\n npm run deploy -- --watch\n`);
|
|
623
|
+
}
|
|
624
|
+
return;
|
|
625
|
+
}
|
|
363
626
|
if (command === "login") {
|
|
364
627
|
const identity = await login(config, {
|
|
365
628
|
noBrowser: flag(args, "--no-browser"),
|
|
@@ -828,15 +1091,18 @@ export async function runCommand(command, rawArgs, globals) {
|
|
|
828
1091
|
else {
|
|
829
1092
|
for (const webhook of webhooks) {
|
|
830
1093
|
process.stdout.write(`${webhook.id} ${webhook.enabled ? "enabled " : "disabled"} ` +
|
|
831
|
-
`${webhook.name} ${webhook.invocationUrl}
|
|
1094
|
+
`${webhook.name} ${webhook.invocationUrl}` +
|
|
1095
|
+
(webhook.identity ? ` identity=${webhook.identity}` : "") +
|
|
1096
|
+
"\n");
|
|
832
1097
|
}
|
|
833
1098
|
}
|
|
834
1099
|
return;
|
|
835
1100
|
}
|
|
836
1101
|
if (action === "create") {
|
|
837
1102
|
const name = args.shift()?.trim();
|
|
1103
|
+
const identity = option(args, "--identity");
|
|
838
1104
|
if (!name || args.length) {
|
|
839
|
-
throw new Error("Use `opencomputer webhooks create <name
|
|
1105
|
+
throw new Error("Use `opencomputer webhooks create <name> [--identity header:<name>|body:<json-pointer>]`.");
|
|
840
1106
|
}
|
|
841
1107
|
const existing = (await client.webhooks({
|
|
842
1108
|
projectId: project.projectId,
|
|
@@ -849,21 +1115,42 @@ export async function runCommand(command, rawArgs, globals) {
|
|
|
849
1115
|
name,
|
|
850
1116
|
environment,
|
|
851
1117
|
agentId,
|
|
1118
|
+
...(identity ? { identity } : {}),
|
|
852
1119
|
}));
|
|
853
1120
|
if (globals.json)
|
|
854
1121
|
printJSON({ ...webhook, reused: Boolean(existing) });
|
|
855
1122
|
else {
|
|
856
1123
|
process.stdout.write(`${existing ? "Reused" : "Created"} ${webhook.name} (${webhook.id}) for ${agentId}@${environment}.\n` +
|
|
857
1124
|
`URL: ${webhook.invocationUrl}\n` +
|
|
1125
|
+
(webhook.identity ? `Identity: ${webhook.identity}\n` : "") +
|
|
858
1126
|
(existing
|
|
859
|
-
? "The existing token remains unchanged.\n"
|
|
860
|
-
: `Token: ${webhook.token ?? "unavailable"}\
|
|
1127
|
+
? "The existing token remains unchanged; this URL omits it.\n"
|
|
1128
|
+
: `Token: ${webhook.token ?? "unavailable"}\n` +
|
|
1129
|
+
"Save this URL now. It carries the token and will not be shown again.\n"));
|
|
861
1130
|
}
|
|
862
1131
|
return;
|
|
863
1132
|
}
|
|
864
1133
|
const webhookId = args.shift();
|
|
1134
|
+
const identityOption = action === "update" ? option(args, "--identity") : undefined;
|
|
865
1135
|
if (!webhookId || args.length) {
|
|
866
|
-
throw new Error("Use `opencomputer webhooks list|create|enable|disable|rotate-token|remove`.");
|
|
1136
|
+
throw new Error("Use `opencomputer webhooks list|create|update|enable|disable|rotate-token|remove`.");
|
|
1137
|
+
}
|
|
1138
|
+
if (action === "update") {
|
|
1139
|
+
if (identityOption === undefined) {
|
|
1140
|
+
throw new Error("Use `opencomputer webhooks update <id> --identity header:<name>|body:<json-pointer>|none`.");
|
|
1141
|
+
}
|
|
1142
|
+
const webhook = await client.updateWebhook({
|
|
1143
|
+
projectId: project.projectId,
|
|
1144
|
+
webhookId,
|
|
1145
|
+
identity: identityOption === "none" ? null : identityOption,
|
|
1146
|
+
});
|
|
1147
|
+
if (globals.json)
|
|
1148
|
+
printJSON(webhook);
|
|
1149
|
+
else
|
|
1150
|
+
process.stdout.write(webhook.identity
|
|
1151
|
+
? `${webhook.name} now takes its delivery identity from ${webhook.identity}.\n`
|
|
1152
|
+
: `${webhook.name} now treats every delivery without an Idempotency-Key as new.\n`);
|
|
1153
|
+
return;
|
|
867
1154
|
}
|
|
868
1155
|
if (action === "enable" || action === "disable") {
|
|
869
1156
|
const webhook = await client.updateWebhook({
|
|
@@ -886,8 +1173,9 @@ export async function runCommand(command, rawArgs, globals) {
|
|
|
886
1173
|
printJSON(webhook);
|
|
887
1174
|
else {
|
|
888
1175
|
process.stdout.write(`Rotated the token for ${webhook.name}.\n` +
|
|
1176
|
+
`URL: ${webhook.invocationUrl}\n` +
|
|
889
1177
|
`Token: ${webhook.token ?? "unavailable"}\n` +
|
|
890
|
-
"Save this
|
|
1178
|
+
"Save this URL now. The previous token and URL no longer work.\n");
|
|
891
1179
|
}
|
|
892
1180
|
return;
|
|
893
1181
|
}
|
|
@@ -899,7 +1187,7 @@ export async function runCommand(command, rawArgs, globals) {
|
|
|
899
1187
|
process.stdout.write(`Removed webhook ${webhookId}.\n`);
|
|
900
1188
|
return;
|
|
901
1189
|
}
|
|
902
|
-
throw new Error("Use `opencomputer webhooks list|create|enable|disable|rotate-token|remove`.");
|
|
1190
|
+
throw new Error("Use `opencomputer webhooks list|create|update|enable|disable|rotate-token|remove`.");
|
|
903
1191
|
}
|
|
904
1192
|
if (command === "logs") {
|
|
905
1193
|
const follow = flag(args, "--follow");
|