@opencomputer/cli 0.6.6 → 0.6.7

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 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;
@@ -160,6 +220,7 @@ export declare class OpenComputerClient {
160
220
  private readonly config;
161
221
  private readonly idempotencyKey?;
162
222
  constructor(config: ResolvedConfig, idempotencyKey?: string | undefined);
223
+ private response;
163
224
  private request;
164
225
  startLogin(): Promise<{
165
226
  device_code: string;
@@ -184,6 +245,15 @@ export declare class OpenComputerClient {
184
245
  agents(): Promise<ManagedAgentSummary[]>;
185
246
  projects(): Promise<ManagedProject[]>;
186
247
  createProject(name: string, slug: string): Promise<ManagedProject>;
248
+ projectSourceArchive(projectId: string): Promise<Response>;
249
+ inspectTemplate(repositoryUrl: string): Promise<TemplateInspection>;
250
+ createTemplateInstallation(input: {
251
+ inspectionId: string;
252
+ projectName: string;
253
+ idempotencyKey: string;
254
+ }): Promise<TemplateInstallation>;
255
+ finalizeTemplateInstallation(installationId: string): Promise<TemplateInstallation>;
256
+ templateInstallation(installationId: string): Promise<TemplateInstallation>;
187
257
  secrets(input: {
188
258
  projectId: string;
189
259
  environment?: "development" | "production";
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 request(path, init = {}, authenticated = true) {
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)
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":"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"}
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"),