sincronizado 1.1.0 → 1.1.3
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.
Potentially problematic release.
This version of sincronizado might be problematic. Click here for more details.
- package/bin/sincronizado +9 -0
- package/dist/App.d.ts +26 -0
- package/dist/App.d.ts.map +1 -0
- package/dist/App.js +52 -0
- package/dist/App.js.map +1 -0
- package/dist/components/Button.d.ts +17 -0
- package/dist/components/Button.d.ts.map +1 -0
- package/dist/components/Button.js +33 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/CheckboxGroup.d.ts +13 -0
- package/dist/components/CheckboxGroup.d.ts.map +1 -0
- package/dist/components/CheckboxGroup.js +25 -0
- package/dist/components/CheckboxGroup.js.map +1 -0
- package/dist/components/Header.d.ts +6 -0
- package/dist/components/Header.d.ts.map +1 -0
- package/dist/components/Header.js +15 -0
- package/dist/components/Header.js.map +1 -0
- package/dist/components/ProgressBar.d.ts +9 -0
- package/dist/components/ProgressBar.d.ts.map +1 -0
- package/dist/components/ProgressBar.js +20 -0
- package/dist/components/ProgressBar.js.map +1 -0
- package/dist/components/RadioGroup.d.ts +13 -0
- package/dist/components/RadioGroup.d.ts.map +1 -0
- package/dist/components/RadioGroup.js +19 -0
- package/dist/components/RadioGroup.js.map +1 -0
- package/dist/components/TextInput.d.ts +10 -0
- package/dist/components/TextInput.d.ts.map +1 -0
- package/dist/components/TextInput.js +38 -0
- package/dist/components/TextInput.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -36686
- package/dist/index.js.map +1 -0
- package/dist/lib/config.d.ts +16 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +46 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/ssh.d.ts +10 -0
- package/dist/lib/ssh.d.ts.map +1 -0
- package/dist/lib/ssh.js +46 -0
- package/dist/lib/ssh.js.map +1 -0
- package/dist/screens/Addons.d.ts +11 -0
- package/dist/screens/Addons.d.ts.map +1 -0
- package/dist/screens/Addons.js +97 -0
- package/dist/screens/Addons.js.map +1 -0
- package/dist/screens/AgentSelect.d.ts +11 -0
- package/dist/screens/AgentSelect.d.ts.map +1 -0
- package/dist/screens/AgentSelect.js +22 -0
- package/dist/screens/AgentSelect.js.map +1 -0
- package/dist/screens/Complete.d.ts +9 -0
- package/dist/screens/Complete.d.ts.map +1 -0
- package/dist/screens/Complete.js +8 -0
- package/dist/screens/Complete.js.map +1 -0
- package/dist/screens/Config.d.ts +11 -0
- package/dist/screens/Config.d.ts.map +1 -0
- package/dist/screens/Config.js +9 -0
- package/dist/screens/Config.js.map +1 -0
- package/dist/screens/Confirm.d.ts +10 -0
- package/dist/screens/Confirm.d.ts.map +1 -0
- package/dist/screens/Confirm.js +37 -0
- package/dist/screens/Confirm.js.map +1 -0
- package/dist/screens/Install.d.ts +10 -0
- package/dist/screens/Install.d.ts.map +1 -0
- package/dist/screens/Install.js +116 -0
- package/dist/screens/Install.js.map +1 -0
- package/dist/screens/ModeSelect.d.ts +11 -0
- package/dist/screens/ModeSelect.d.ts.map +1 -0
- package/dist/screens/ModeSelect.js +32 -0
- package/dist/screens/ModeSelect.js.map +1 -0
- package/dist/screens/Provider.d.ts +11 -0
- package/dist/screens/Provider.d.ts.map +1 -0
- package/dist/screens/Provider.js +37 -0
- package/dist/screens/Provider.js.map +1 -0
- package/dist/screens/Welcome.d.ts +8 -0
- package/dist/screens/Welcome.d.ts.map +1 -0
- package/dist/screens/Welcome.js +9 -0
- package/dist/screens/Welcome.js.map +1 -0
- package/package.json +5 -6
- package/dist/cli.js +0 -2
- package/dist/highlights-eq9cgrbb.scm +0 -604
- package/dist/highlights-ghv9g403.scm +0 -205
- package/dist/highlights-hk7bwhj4.scm +0 -284
- package/dist/highlights-r812a2qc.scm +0 -150
- package/dist/highlights-x6tmsnaa.scm +0 -115
- package/dist/injections-73j83es3.scm +0 -27
- package/dist/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
- package/dist/tree-sitter-markdown-411r6y9b.wasm +0 -0
- package/dist/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
- package/dist/tree-sitter-typescript-zxjzwt75.wasm +0 -0
- package/dist/tree-sitter-zig-e78zbjpm.wasm +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;AAC3C,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAC,GAAG,KAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface InstallFlags {
|
|
2
|
+
agent: 'opencode' | 'claude';
|
|
3
|
+
mode: 'minimal' | 'standard' | 'full' | 'custom';
|
|
4
|
+
withKimaki?: boolean;
|
|
5
|
+
withLunaroute?: boolean;
|
|
6
|
+
withMCP?: boolean;
|
|
7
|
+
withWorktreeSession?: boolean;
|
|
8
|
+
withSessionHandoff?: boolean;
|
|
9
|
+
withAgentOfEmpires?: boolean;
|
|
10
|
+
noAgentOS?: boolean;
|
|
11
|
+
noCcmanager?: boolean;
|
|
12
|
+
noPlugins?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function generateInstallScript(flags: InstallFlags): string;
|
|
15
|
+
export declare function buildFlags(config: InstallFlags): string;
|
|
16
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC7B,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;IACjD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAgBjE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAcvD"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export function generateInstallScript(flags) {
|
|
2
|
+
const parts = ['#!/bin/bash', 'set -euo pipefail', ''];
|
|
3
|
+
parts.push(`./setup-vps.sh --agent=${flags.agent} --mode=${flags.mode}`);
|
|
4
|
+
if (flags.withKimaki)
|
|
5
|
+
parts.push('--with-kimaki');
|
|
6
|
+
if (flags.withLunaroute)
|
|
7
|
+
parts.push('--with-lunaroute');
|
|
8
|
+
if (flags.withMCP)
|
|
9
|
+
parts.push('--with-mcp');
|
|
10
|
+
if (flags.withWorktreeSession)
|
|
11
|
+
parts.push('--with-worktree-session');
|
|
12
|
+
if (flags.withSessionHandoff)
|
|
13
|
+
parts.push('--with-session-handoff');
|
|
14
|
+
if (flags.withAgentOfEmpires)
|
|
15
|
+
parts.push('--with-agent-of-empires');
|
|
16
|
+
if (flags.noAgentOS)
|
|
17
|
+
parts.push('--no-agent-os');
|
|
18
|
+
if (flags.noCcmanager)
|
|
19
|
+
parts.push('--no-ccmanager');
|
|
20
|
+
if (flags.noPlugins)
|
|
21
|
+
parts.push('--no-plugins');
|
|
22
|
+
return parts.join(' ');
|
|
23
|
+
}
|
|
24
|
+
export function buildFlags(config) {
|
|
25
|
+
const flags = [`--agent=${config.agent}`, `--mode=${config.mode}`];
|
|
26
|
+
if (config.withKimaki)
|
|
27
|
+
flags.push('--with-kimaki');
|
|
28
|
+
if (config.withLunaroute)
|
|
29
|
+
flags.push('--with-lunaroute');
|
|
30
|
+
if (config.withMCP)
|
|
31
|
+
flags.push('--with-mcp');
|
|
32
|
+
if (config.withWorktreeSession)
|
|
33
|
+
flags.push('--with-worktree-session');
|
|
34
|
+
if (config.withSessionHandoff)
|
|
35
|
+
flags.push('--with-session-handoff');
|
|
36
|
+
if (config.withAgentOfEmpires)
|
|
37
|
+
flags.push('--with-agent-of-empires');
|
|
38
|
+
if (config.noAgentOS)
|
|
39
|
+
flags.push('--no-agent-os');
|
|
40
|
+
if (config.noCcmanager)
|
|
41
|
+
flags.push('--no-ccmanager');
|
|
42
|
+
if (config.noPlugins)
|
|
43
|
+
flags.push('--no-plugins');
|
|
44
|
+
return flags.join(' ');
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAcA,MAAM,UAAU,qBAAqB,CAAC,KAAmB;IACvD,MAAM,KAAK,GAAa,CAAC,aAAa,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAEjE,KAAK,CAAC,IAAI,CAAC,0BAA0B,KAAK,CAAC,KAAK,WAAW,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAEzE,IAAI,KAAK,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAClD,IAAI,KAAK,CAAC,aAAa;QAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACxD,IAAI,KAAK,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,mBAAmB;QAAE,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACrE,IAAI,KAAK,CAAC,kBAAkB;QAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACnE,IAAI,KAAK,CAAC,kBAAkB;QAAE,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACpE,IAAI,KAAK,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACjD,IAAI,KAAK,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpD,IAAI,KAAK,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAEhD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAoB;IAC7C,MAAM,KAAK,GAAa,CAAC,WAAW,MAAM,CAAC,KAAK,EAAE,EAAE,UAAU,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAE7E,IAAI,MAAM,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACnD,IAAI,MAAM,CAAC,aAAa;QAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,mBAAmB;QAAE,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACtE,IAAI,MAAM,CAAC,kBAAkB;QAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACpE,IAAI,MAAM,CAAC,kBAAkB;QAAE,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACrE,IAAI,MAAM,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAClD,IAAI,MAAM,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAEjD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface SSHOptions {
|
|
2
|
+
hostname: string;
|
|
3
|
+
user: string;
|
|
4
|
+
command: string;
|
|
5
|
+
onOutput?: (data: string) => void;
|
|
6
|
+
onError?: (error: Error) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function runSSH({ hostname, user, command, onOutput, onError }: SSHOptions): Promise<number>;
|
|
9
|
+
export declare function testConnection(hostname: string, user: string): Promise<boolean>;
|
|
10
|
+
//# sourceMappingURL=ssh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../../src/lib/ssh.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAmClG;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAWrF"}
|
package/dist/lib/ssh.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { spawn } from "child_process";
|
|
2
|
+
export function runSSH({ hostname, user, command, onOutput, onError }) {
|
|
3
|
+
return new Promise((resolve, reject) => {
|
|
4
|
+
const sshCommand = `ssh -o StrictHostKeyChecking=no -o ConnectTimeout=30 ${user}@${hostname} "${command}"`;
|
|
5
|
+
const proc = spawn("sh", ["-c", sshCommand], {
|
|
6
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
7
|
+
});
|
|
8
|
+
let output = "";
|
|
9
|
+
proc.stdout?.on("data", (data) => {
|
|
10
|
+
const chunk = data.toString();
|
|
11
|
+
output += chunk;
|
|
12
|
+
onOutput?.(chunk);
|
|
13
|
+
});
|
|
14
|
+
proc.stderr?.on("data", (data) => {
|
|
15
|
+
const chunk = data.toString();
|
|
16
|
+
output += chunk;
|
|
17
|
+
onOutput?.(chunk);
|
|
18
|
+
});
|
|
19
|
+
proc.on("close", (code) => {
|
|
20
|
+
if (code === 0) {
|
|
21
|
+
resolve(code);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
reject(new Error(`SSH command failed with code ${code}: ${output}`));
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
proc.on("error", (error) => {
|
|
28
|
+
onError?.(error);
|
|
29
|
+
reject(error);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
export async function testConnection(hostname, user) {
|
|
34
|
+
try {
|
|
35
|
+
await runSSH({
|
|
36
|
+
hostname,
|
|
37
|
+
user,
|
|
38
|
+
command: "echo 'connected'",
|
|
39
|
+
});
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=ssh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../src/lib/ssh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAUtC,MAAM,UAAU,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAc;IAC/E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,UAAU,GAAG,wDAAwD,IAAI,IAAI,QAAQ,KAAK,OAAO,GAAG,CAAC;QAE3G,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE;YAC3C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC;YAChB,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC;YAChB,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC;YACvE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACzB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YACjB,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,IAAY;IACjE,IAAI,CAAC;QACH,MAAM,MAAM,CAAC;YACX,QAAQ;YACR,IAAI;YACJ,OAAO,EAAE,kBAAkB;SAC5B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { InstallConfig } from '../App.js';
|
|
3
|
+
interface AddonsProps {
|
|
4
|
+
config: InstallConfig;
|
|
5
|
+
onChange: (updates: Partial<InstallConfig>) => void;
|
|
6
|
+
onContinue: () => void;
|
|
7
|
+
onBack: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function Addons({ config, onChange, onContinue, onBack }: AddonsProps): React.ReactNode;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=Addons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Addons.d.ts","sourceRoot":"","sources":["../../src/screens/Addons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,UAAU,WAAW;IACnB,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IACpD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AA0DD,wBAAgB,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,WAAW,mBAkE3E"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
|
|
2
|
+
import { CheckboxGroup } from '../components/CheckboxGroup.js';
|
|
3
|
+
import { ButtonGroup } from '../components/Button.js';
|
|
4
|
+
const addonOptions = [
|
|
5
|
+
{
|
|
6
|
+
value: 'withKimaki',
|
|
7
|
+
label: 'Kimaki (Discord Bot)',
|
|
8
|
+
description: 'Control agents via Discord with voice support',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
value: 'withLunaroute',
|
|
12
|
+
label: 'LunaRoute (AI Proxy)',
|
|
13
|
+
description: 'Debug AI interactions and track token usage',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
value: 'withWorktreeSession',
|
|
17
|
+
label: 'Worktree Sessions',
|
|
18
|
+
description: 'Git worktree per OpenCode session',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
value: 'withSessionHandoff',
|
|
22
|
+
label: 'Session Handoff',
|
|
23
|
+
description: 'Seamless context continuation between sessions',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
value: 'withAgentOfEmpires',
|
|
27
|
+
label: 'Agent of Empires',
|
|
28
|
+
description: 'Alternative session manager (replaces ccmanager)',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
value: 'withOpenSync',
|
|
32
|
+
label: 'OpenSync (Session Analytics)',
|
|
33
|
+
description: 'Track all AI sessions, token usage, and export eval datasets',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
value: 'setupAlias',
|
|
37
|
+
label: 'Setup shell alias',
|
|
38
|
+
description: "Type 'opencode' or 'claude' from anywhere",
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
const skipOptions = [
|
|
42
|
+
{
|
|
43
|
+
value: 'noAgentOS',
|
|
44
|
+
label: 'Skip Agent-OS',
|
|
45
|
+
description: 'No web UI for mobile access',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
value: 'noCcmanager',
|
|
49
|
+
label: 'Skip ccmanager',
|
|
50
|
+
description: 'No session TUI (use agent-of-empires instead)',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
value: 'noPlugins',
|
|
54
|
+
label: 'Skip OpenCode plugins',
|
|
55
|
+
description: 'No direnv, agentmap, sync, ai-sessions',
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
export function Addons({ config, onChange, onContinue, onBack }) {
|
|
59
|
+
const selectedAddons = [
|
|
60
|
+
...(config.withKimaki ? ['withKimaki'] : []),
|
|
61
|
+
...(config.withLunaroute ? ['withLunaroute'] : []),
|
|
62
|
+
...(config.withWorktreeSession ? ['withWorktreeSession'] : []),
|
|
63
|
+
...(config.withSessionHandoff ? ['withSessionHandoff'] : []),
|
|
64
|
+
...(config.withAgentOfEmpires ? ['withAgentOfEmpires'] : []),
|
|
65
|
+
...(config.withOpenSync ? ['withOpenSync'] : []),
|
|
66
|
+
...(config.setupAlias ? ['setupAlias'] : []),
|
|
67
|
+
];
|
|
68
|
+
const selectedSkips = [
|
|
69
|
+
...(config.noAgentOS ? ['noAgentOS'] : []),
|
|
70
|
+
...(config.noCcmanager ? ['noCcmanager'] : []),
|
|
71
|
+
...(config.noPlugins ? ['noPlugins'] : []),
|
|
72
|
+
];
|
|
73
|
+
const handleAddonChange = (values) => {
|
|
74
|
+
onChange({
|
|
75
|
+
withKimaki: values.includes('withKimaki'),
|
|
76
|
+
withLunaroute: values.includes('withLunaroute'),
|
|
77
|
+
withWorktreeSession: values.includes('withWorktreeSession'),
|
|
78
|
+
withSessionHandoff: values.includes('withSessionHandoff'),
|
|
79
|
+
withAgentOfEmpires: values.includes('withAgentOfEmpires'),
|
|
80
|
+
withOpenSync: values.includes('withOpenSync'),
|
|
81
|
+
setupAlias: values.includes('setupAlias'),
|
|
82
|
+
noCcmanager: values.includes('withAgentOfEmpires'),
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
const handleSkipChange = (values) => {
|
|
86
|
+
onChange({
|
|
87
|
+
noAgentOS: values.includes('noAgentOS'),
|
|
88
|
+
noCcmanager: values.includes('noCcmanager'),
|
|
89
|
+
noPlugins: values.includes('noPlugins'),
|
|
90
|
+
});
|
|
91
|
+
};
|
|
92
|
+
return (_jsxs("box", { flexDirection: "column", paddingTop: 2, children: [_jsx("box", { paddingBottom: 1, children: _jsx("text", { bold: true, children: "Add optional features:" }) }), _jsx("box", { paddingBottom: 1, children: _jsx(CheckboxGroup, { options: addonOptions, values: selectedAddons, onChange: handleAddonChange }) }), _jsx("box", { paddingTop: 1, paddingBottom: 1, children: _jsx("text", { bold: true, children: "Skip default components:" }) }), _jsx("box", { paddingBottom: 2, children: _jsx(CheckboxGroup, { options: skipOptions, values: selectedSkips, onChange: handleSkipChange }) }), _jsx("box", { paddingTop: 1, children: _jsx(ButtonGroup, { buttons: [
|
|
93
|
+
{ label: 'Continue', onClick: onContinue, variant: 'primary' },
|
|
94
|
+
{ label: 'Back', onClick: onBack, variant: 'secondary' },
|
|
95
|
+
] }) })] }));
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=Addons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Addons.js","sourceRoot":"","sources":["../../src/screens/Addons.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { InstallConfig } from '../App.js';
|
|
3
|
+
interface AgentSelectProps {
|
|
4
|
+
config: InstallConfig;
|
|
5
|
+
onChange: (updates: Partial<InstallConfig>) => void;
|
|
6
|
+
onContinue: () => void;
|
|
7
|
+
onBack: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function AgentSelect({ config, onChange, onContinue, onBack }: AgentSelectProps): React.ReactNode;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=AgentSelect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentSelect.d.ts","sourceRoot":"","sources":["../../src/screens/AgentSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,aAAa,EAAW,MAAM,WAAW,CAAC;AAExD,UAAU,gBAAgB;IACxB,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IACpD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAeD,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,gBAAgB,mBAuBrF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
|
|
2
|
+
import { RadioGroup } from '../components/RadioGroup.js';
|
|
3
|
+
import { ButtonGroup } from '../components/Button.js';
|
|
4
|
+
const agents = [
|
|
5
|
+
{
|
|
6
|
+
value: 'opencode',
|
|
7
|
+
label: 'OpenCode',
|
|
8
|
+
description: 'Open-source AI coding assistant with plugin ecosystem',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
value: 'claude',
|
|
12
|
+
label: 'Claude Code',
|
|
13
|
+
description: "Anthropic's Claude with MCP server support",
|
|
14
|
+
},
|
|
15
|
+
];
|
|
16
|
+
export function AgentSelect({ config, onChange, onContinue, onBack }) {
|
|
17
|
+
return (_jsxs("box", { flexDirection: "column", paddingTop: 2, children: [_jsx("box", { paddingBottom: 1, children: _jsx("text", { children: "Select your AI agent:" }) }), _jsx("box", { paddingBottom: 2, children: _jsx(RadioGroup, { options: agents, value: config.agent, onChange: (agent) => onChange({ agent }) }) }), _jsx("box", { paddingTop: 2, children: _jsx(ButtonGroup, { buttons: [
|
|
18
|
+
{ label: 'Continue', onClick: onContinue, variant: 'primary' },
|
|
19
|
+
{ label: 'Back', onClick: onBack, variant: 'secondary' },
|
|
20
|
+
] }) })] }));
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=AgentSelect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentSelect.js","sourceRoot":"","sources":["../../src/screens/AgentSelect.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAUtD,MAAM,MAAM,GAA6D;IACvE;QACE,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,uDAAuD;KACrE;IACD;QACE,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,4CAA4C;KAC1D;CACF,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAoB;IACpF,OAAO,CACL,eAAK,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,aACvC,cAAK,aAAa,EAAE,CAAC,YACnB,mDAAkC,GAC9B,EACN,cAAK,aAAa,EAAE,CAAC,YACnB,KAAC,UAAU,IACT,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,GACxC,GACE,EACN,cAAK,UAAU,EAAE,CAAC,YAChB,KAAC,WAAW,IACV,OAAO,EAAE;wBACP,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE;wBAC9D,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE;qBACzD,GACD,GACE,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { InstallConfig } from '../App.js';
|
|
3
|
+
interface CompleteProps {
|
|
4
|
+
config: InstallConfig;
|
|
5
|
+
onExit: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function Complete({ config, onExit }: CompleteProps): React.ReactNode;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=Complete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Complete.d.ts","sourceRoot":"","sources":["../../src/screens/Complete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,UAAU,aAAa;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,aAAa,mBA2KzD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
|
|
2
|
+
import { ButtonGroup } from '../components/Button.js';
|
|
3
|
+
export function Complete({ config, onExit }) {
|
|
4
|
+
const ip = config.hostname || '<hostname>';
|
|
5
|
+
let stepNum = 1;
|
|
6
|
+
return (_jsxs("box", { flexDirection: "column", paddingTop: 2, children: [_jsx("box", { paddingBottom: 1, children: _jsx("text", { color: "green", bold: true, children: "\u2713 Installation complete!" }) }), _jsx("box", { paddingTop: 1, paddingBottom: 1, children: _jsx("text", { bold: true, children: "Next steps:" }) }), _jsxs("box", { paddingLeft: 2, children: [_jsxs("text", { children: [stepNum++, ". Run: ./launcher/opencode.ps1 (Windows)"] }), _jsx("text", { children: " Or: ./launcher/opencode.sh (macOS/Linux)" })] }), config.setupAlias && (_jsxs("box", { paddingLeft: 2, paddingTop: 1, children: [_jsxs("text", { children: [stepNum++, ". Setup shell alias:"] }), _jsx("text", { children: " Windows (PowerShell):" }), _jsx("text", { children: ' echo "function opencode { & \'~/sincronizado/launcher/opencode.ps1\' $args }" | Add-Content $PROFILE' }), _jsx("text", { children: " macOS/Linux:" }), _jsx("text", { children: ' echo \'alias opencode="~/sincronizado/launcher/opencode.sh"\' >> ~/.bashrc' }), _jsx("text", { children: " source ~/.bashrc" })] })), !config.noAgentOS && (_jsx("box", { paddingLeft: 2, paddingTop: 1, children: _jsxs("text", { children: [stepNum++, ". Access mobile UI: http://", ip, ":3000"] }) })), config.withOpenSync && (_jsxs("box", { paddingLeft: 2, paddingTop: 1, children: [_jsxs("text", { children: [stepNum++, ". Install OpenSync plugin:"] }), _jsx("text", { children: " npm install -g opencode-sync-plugin" }), _jsx("text", { children: " opencode-sync login" }), _jsx("text", { dimColor: true, children: " Then add to opencode.json plugins array" })] })), config.withLunaroute && (_jsx("box", { paddingLeft: 2, paddingTop: 1, children: _jsxs("text", { children: [stepNum++, ". AI proxy dashboard: http://", ip, ":8082"] }) })), config.withKimaki && (_jsxs("box", { paddingLeft: 2, paddingTop: 1, children: [_jsxs("text", { children: [stepNum++, ". Configure Discord bot:"] }), _jsxs("text", { children: [' ', "ssh ", config.sshUser, "@", ip] }), _jsx("text", { children: " npx kimaki" })] })), _jsx("box", { paddingTop: 3, children: _jsx(ButtonGroup, { buttons: [{ label: 'Exit', onClick: onExit, variant: 'primary' }] }) }), _jsxs("box", { paddingTop: 2, children: [_jsx("text", { color: "#FFFFC5", dimColor: true, children: ' ██ ██ ' }), _jsx("text", { color: "#FFFFC5", dimColor: true, children: ' ████ ███ ███ █████ ' }), _jsx("text", { color: "#FFFFC5", dimColor: true, children: ' █████ ████ ████ █████ ' }), _jsx("text", { color: "#FFFFC5", dimColor: true, children: ' ████ ███ ███ ████ ' }), _jsx("text", { color: "#FFFFC5", dimColor: true, children: ' ████ ██ ███ ███ ███ ████ ' }), _jsx("text", { color: "#FFFFC5", dimColor: true, children: ' ████████ ████ ████ ████ ██ ██ ████ ████████ ' }), _jsx("text", { color: "#FFFFC5", dimColor: true, children: ' ████████████ ████ ████ ████ ███ █████████████ ' }), _jsx("text", { color: "#FFFFC5", dimColor: true, children: ' █████████ ████ ███ ██████████████████████ ███████████████████████ ███ ████ █████████ ' }), _jsx("text", { color: "#FFFFC5", dimColor: true, children: ' █████████ ████ ████ ███ ██████████████████████ ███████████████████████ ███ ███ ████ █████████ ' }), _jsx("text", { color: "#FFFFC5", dimColor: true, children: ' ████████ █████████ ████ ███ ██████████ ████████ ' }), _jsx("text", { color: "#FFFFC5", dimColor: true, children: ' █████████ ██████ ████ ████ ██████ █████████ ' }), _jsx("text", { color: "#FFFFC5", dimColor: true, children: ' ████████ ████ █ ████ █████████ ' }), _jsx("text", { color: "#FFFFC5", dimColor: true, children: ' █████████ ████ ███ ████ █████████ ' }), _jsx("text", { color: "#FFFFC5", dimColor: true, children: ' ████████ ████ ██████ ████ ████████ ' }), _jsx("text", { color: "#FFFFC5", dimColor: true, children: ' ████ █████ ███ ███ █████ ████ ' }), _jsx("text", { color: "#FFFFC5", dimColor: true, children: ' ██ ██ █ ███ ' })] }), config.withOpenSync && (_jsx("box", { paddingTop: 1, children: _jsx("text", { color: "#FFFFC5", dimColor: true, children: "\uD83D\uDCCA OpenSync: Track sessions anywhere" }) }))] }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=Complete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Complete.js","sourceRoot":"","sources":["../../src/screens/Complete.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { InstallConfig } from '../App.js';
|
|
3
|
+
interface ConfigProps {
|
|
4
|
+
config: InstallConfig;
|
|
5
|
+
onChange: (updates: Partial<InstallConfig>) => void;
|
|
6
|
+
onContinue: () => void;
|
|
7
|
+
onBack: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function Config({ config, onChange, onContinue, onBack }: ConfigProps): React.ReactNode;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=Config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/screens/Config.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,UAAU,WAAW;IACnB,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IACpD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,WAAW,mBAoC3E"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
|
|
2
|
+
import { ButtonGroup } from '../components/Button.js';
|
|
3
|
+
export function Config({ config, onChange, onContinue, onBack }) {
|
|
4
|
+
return (_jsxs("box", { flexDirection: "column", paddingTop: 2, children: [_jsx("box", { paddingBottom: 1, children: _jsx("text", { bold: true, children: "VPS Connection Details" }) }), _jsxs("box", { paddingBottom: 1, children: [_jsx("text", { children: "Hostname/IP: " }), _jsx("text", { color: "#FFFFC5", children: config.hostname || '<not set>' })] }), _jsxs("box", { paddingBottom: 1, children: [_jsx("text", { children: "SSH User: " }), _jsx("text", { color: "#FFFFC5", children: config.sshUser })] }), _jsxs("box", { paddingBottom: 1, children: [_jsx("text", { children: "Project Root: " }), _jsx("text", { color: "#FFFFC5", children: config.projectRoot })] }), _jsx("box", { paddingTop: 2, children: _jsx("text", { dimColor: true, children: "Configure these in your .opencode.config.json or via environment variables:" }) }), _jsx("box", { paddingTop: 1, paddingLeft: 2, children: _jsx("text", { dimColor: true, children: "SINC_HOSTNAME, SINC_SSH_USER, SINC_PROJECT_ROOT" }) }), _jsx("box", { paddingTop: 3, children: _jsx(ButtonGroup, { buttons: [
|
|
5
|
+
{ label: 'Continue', onClick: onContinue, variant: 'primary' },
|
|
6
|
+
{ label: 'Back', onClick: onBack, variant: 'secondary' },
|
|
7
|
+
] }) })] }));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=Config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/screens/Config.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAUtD,MAAM,UAAU,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAe;IAC1E,OAAO,CACL,eAAK,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,aACvC,cAAK,aAAa,EAAE,CAAC,YACnB,eAAM,IAAI,6CAA8B,GACpC,EACN,eAAK,aAAa,EAAE,CAAC,aACnB,2CAA0B,EAC1B,eAAM,KAAK,EAAC,SAAS,YAAE,MAAM,CAAC,QAAQ,IAAI,WAAW,GAAQ,IACzD,EACN,eAAK,aAAa,EAAE,CAAC,aACnB,wCAAuB,EACvB,eAAM,KAAK,EAAC,SAAS,YAAE,MAAM,CAAC,OAAO,GAAQ,IACzC,EACN,eAAK,aAAa,EAAE,CAAC,aACnB,4CAA2B,EAC3B,eAAM,KAAK,EAAC,SAAS,YAAE,MAAM,CAAC,WAAW,GAAQ,IAC7C,EACN,cAAK,UAAU,EAAE,CAAC,YAChB,eAAM,QAAQ,kGAEP,GACH,EACN,cAAK,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,YAChC,eAAM,QAAQ,sEAAuD,GACjE,EACN,cAAK,UAAU,EAAE,CAAC,YAChB,KAAC,WAAW,IACV,OAAO,EAAE;wBACP,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE;wBAC9D,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE;qBACzD,GACD,GACE,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { InstallConfig } from '../App.js';
|
|
3
|
+
interface ConfirmProps {
|
|
4
|
+
config: InstallConfig;
|
|
5
|
+
onInstall: () => void;
|
|
6
|
+
onBack: () => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function Confirm({ config, onInstall, onBack }: ConfirmProps): React.ReactNode;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=Confirm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Confirm.d.ts","sourceRoot":"","sources":["../../src/screens/Confirm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,UAAU,YAAY;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,YAAY,mBA6DlE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
|
|
2
|
+
import { ButtonGroup } from '../components/Button.js';
|
|
3
|
+
export function Confirm({ config, onInstall, onBack }) {
|
|
4
|
+
const renderAddons = () => {
|
|
5
|
+
const addons = [];
|
|
6
|
+
if (config.withKimaki)
|
|
7
|
+
addons.push('Kimaki');
|
|
8
|
+
if (config.withLunaroute)
|
|
9
|
+
addons.push('LunaRoute');
|
|
10
|
+
if (config.withWorktreeSession)
|
|
11
|
+
addons.push('Worktree Sessions');
|
|
12
|
+
if (config.withSessionHandoff)
|
|
13
|
+
addons.push('Session Handoff');
|
|
14
|
+
if (config.withAgentOfEmpires)
|
|
15
|
+
addons.push('Agent of Empires');
|
|
16
|
+
if (addons.length === 0)
|
|
17
|
+
return 'None';
|
|
18
|
+
return addons.join(', ');
|
|
19
|
+
};
|
|
20
|
+
const renderSkips = () => {
|
|
21
|
+
const skips = [];
|
|
22
|
+
if (config.noAgentOS)
|
|
23
|
+
skips.push('Agent-OS');
|
|
24
|
+
if (config.noCcmanager)
|
|
25
|
+
skips.push('ccmanager');
|
|
26
|
+
if (config.noPlugins)
|
|
27
|
+
skips.push('OpenCode plugins');
|
|
28
|
+
if (skips.length === 0)
|
|
29
|
+
return 'None';
|
|
30
|
+
return skips.join(', ');
|
|
31
|
+
};
|
|
32
|
+
return (_jsxs("box", { flexDirection: "column", paddingTop: 2, children: [_jsx("box", { paddingBottom: 1, children: _jsx("text", { bold: true, children: "Review your installation:" }) }), _jsxs("box", { paddingLeft: 2, children: [_jsxs("text", { children: [_jsx("text", { bold: true, children: "Mode:" }), " ", config.mode] }), _jsxs("text", { children: [_jsx("text", { bold: true, children: "Provider:" }), " ", config.provider] }), _jsxs("text", { children: [_jsx("text", { bold: true, children: "Hostname:" }), " ", config.hostname || '<not set>'] }), _jsxs("text", { children: [_jsx("text", { bold: true, children: "SSH User:" }), " ", config.sshUser] }), _jsxs("text", { children: [_jsx("text", { bold: true, children: "Add-ons:" }), " ", renderAddons()] }), _jsxs("text", { children: [_jsx("text", { bold: true, children: "Skip:" }), " ", renderSkips()] })] }), _jsx("box", { paddingTop: 2, children: _jsx("text", { dimColor: true, children: "This will SSH into your VPS and run the installation script." }) }), _jsx("box", { paddingTop: 3, children: _jsx(ButtonGroup, { buttons: [
|
|
33
|
+
{ label: 'Install', onClick: onInstall, variant: 'primary' },
|
|
34
|
+
{ label: 'Back', onClick: onBack, variant: 'secondary' },
|
|
35
|
+
] }) })] }));
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=Confirm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Confirm.js","sourceRoot":"","sources":["../../src/screens/Confirm.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAStD,MAAM,UAAU,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAgB;IACjE,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,UAAU;YAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,aAAa;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,MAAM,CAAC,mBAAmB;YAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjE,IAAI,MAAM,CAAC,kBAAkB;YAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9D,IAAI,MAAM,CAAC,kBAAkB;YAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAE/D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QACvC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,MAAM,CAAC,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAErD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QACtC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,aACvC,cAAK,aAAa,EAAE,CAAC,YACnB,eAAM,IAAI,gDAAiC,GACvC,EACN,eAAK,WAAW,EAAE,CAAC,aACjB,2BACE,eAAM,IAAI,4BAAa,OAAE,MAAM,CAAC,IAAI,IAC/B,EACP,2BACE,eAAM,IAAI,gCAAiB,OAAE,MAAM,CAAC,QAAQ,IACvC,EACP,2BACE,eAAM,IAAI,gCAAiB,OAAE,MAAM,CAAC,QAAQ,IAAI,WAAW,IACtD,EACP,2BACE,eAAM,IAAI,gCAAiB,OAAE,MAAM,CAAC,OAAO,IACtC,EACP,2BACE,eAAM,IAAI,+BAAgB,OAAE,YAAY,EAAE,IACrC,EACP,2BACE,eAAM,IAAI,4BAAa,OAAE,WAAW,EAAE,IACjC,IACH,EACN,cAAK,UAAU,EAAE,CAAC,YAChB,eAAM,QAAQ,mFAAoE,GAC9E,EACN,cAAK,UAAU,EAAE,CAAC,YAChB,KAAC,WAAW,IACV,OAAO,EAAE;wBACP,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;wBAC5D,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE;qBACzD,GACD,GACE,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { InstallConfig } from '../App.js';
|
|
3
|
+
interface InstallProps {
|
|
4
|
+
config: InstallConfig;
|
|
5
|
+
onComplete: () => void;
|
|
6
|
+
onBack: () => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function Install({ config, onComplete, onBack }: InstallProps): React.ReactNode;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=Install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Install.d.ts","sourceRoot":"","sources":["../../src/screens/Install.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG/C,UAAU,YAAY;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AASD,wBAAgB,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,YAAY,mBAqInE"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "@opentui/react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
3
|
+
import { useKeyboard } from '@opentui/react';
|
|
4
|
+
import { ProgressBar } from '../components/ProgressBar.js';
|
|
5
|
+
import { Button } from '../components/Button.js';
|
|
6
|
+
import { spawn } from 'child_process';
|
|
7
|
+
export function Install({ config, onComplete, onBack }) {
|
|
8
|
+
const [steps, setSteps] = useState([
|
|
9
|
+
{ name: 'Connect to VPS', command: '', progress: 0, status: 'pending' },
|
|
10
|
+
{ name: 'Install base dependencies', command: '', progress: 0, status: 'pending' },
|
|
11
|
+
{ name: 'Install Eternal Terminal', command: '', progress: 0, status: 'pending' },
|
|
12
|
+
{ name: 'Install OpenCode', command: '', progress: 0, status: 'pending' },
|
|
13
|
+
{ name: 'Install components', command: '', progress: 0, status: 'pending' },
|
|
14
|
+
{ name: 'Configure firewall', command: '', progress: 0, status: 'pending' },
|
|
15
|
+
]);
|
|
16
|
+
const [currentStep, setCurrentStep] = useState(0);
|
|
17
|
+
const [isCancelled, setIsCancelled] = useState(false);
|
|
18
|
+
const [output, setOutput] = useState([]);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (isCancelled)
|
|
21
|
+
return;
|
|
22
|
+
runInstallation();
|
|
23
|
+
}, []);
|
|
24
|
+
const runInstallation = async () => {
|
|
25
|
+
const flags = buildFlags(config);
|
|
26
|
+
const hostname = config.hostname || 'localhost';
|
|
27
|
+
for (let i = 0; i < steps.length; i++) {
|
|
28
|
+
if (isCancelled)
|
|
29
|
+
break;
|
|
30
|
+
setCurrentStep(i);
|
|
31
|
+
updateStep(i, { status: 'running' });
|
|
32
|
+
try {
|
|
33
|
+
await runSSHCommand(hostname, config.sshUser, flags, i);
|
|
34
|
+
updateStep(i, { status: 'complete', progress: 100 });
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
updateStep(i, { status: 'error' });
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (!isCancelled) {
|
|
42
|
+
onComplete();
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
const runSSHCommand = (hostname, user, flags, step) => {
|
|
46
|
+
return new Promise((resolve, reject) => {
|
|
47
|
+
const scriptUrl = 'https://raw.githubusercontent.com/microck/sincronizado/main/scripts/setup-vps.sh';
|
|
48
|
+
const command = `ssh ${user}@${hostname} "curl -fsSL ${scriptUrl} | sudo bash -s -- ${flags}"`;
|
|
49
|
+
const proc = spawn('sh', ['-c', command], { stdio: ['pipe', 'pipe', 'pipe'] });
|
|
50
|
+
proc.stdout?.on('data', (data) => {
|
|
51
|
+
const lines = data.toString().split('\n');
|
|
52
|
+
setOutput((prev) => [...prev.slice(-10), ...lines]);
|
|
53
|
+
const progress = estimateProgress(lines.join('\n'), step);
|
|
54
|
+
updateStep(step, { progress });
|
|
55
|
+
});
|
|
56
|
+
proc.stderr?.on('data', (data) => {
|
|
57
|
+
setOutput((prev) => [...prev.slice(-10), data.toString().trim()]);
|
|
58
|
+
});
|
|
59
|
+
proc.on('close', (code) => {
|
|
60
|
+
if (code === 0) {
|
|
61
|
+
resolve();
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
reject(new Error(`Exit code: ${code}`));
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
proc.on('error', reject);
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
const estimateProgress = (output, step) => {
|
|
71
|
+
const markers = {
|
|
72
|
+
0: ['Connecting', 'connected'],
|
|
73
|
+
1: ['Updating packages', 'Dependencies installed'],
|
|
74
|
+
2: ['Installing Eternal Terminal', 'Eternal Terminal installed'],
|
|
75
|
+
3: ['Installing OpenCode', 'OpenCode installed'],
|
|
76
|
+
4: ['Installing', 'installed'],
|
|
77
|
+
5: ['Configuring firewall', 'Firewall configured'],
|
|
78
|
+
};
|
|
79
|
+
const stepMarkers = markers[step] || [];
|
|
80
|
+
if (output.includes(stepMarkers[1] || ''))
|
|
81
|
+
return 100;
|
|
82
|
+
if (output.includes(stepMarkers[0] || ''))
|
|
83
|
+
return 50;
|
|
84
|
+
return 25;
|
|
85
|
+
};
|
|
86
|
+
const updateStep = (index, updates) => {
|
|
87
|
+
setSteps((prev) => prev.map((step, i) => (i === index ? { ...step, ...updates } : step)));
|
|
88
|
+
};
|
|
89
|
+
useKeyboard((key) => {
|
|
90
|
+
if (key.name === 'escape') {
|
|
91
|
+
setIsCancelled(true);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
return (_jsxs("box", { flexDirection: "column", paddingTop: 2, children: [_jsxs("box", { paddingBottom: 1, children: [_jsxs("text", { children: ["Installing on ", config.hostname || 'VPS', "..."] }), _jsx("text", { dimColor: true, children: "Press ESC to cancel" })] }), _jsx("box", { flexDirection: "column", paddingBottom: 1, children: steps.map((step, index) => (_jsx("box", { paddingBottom: 1, children: _jsx(ProgressBar, { progress: step.progress, label: step.name, status: step.status }) }, step.name))) }), output.length > 0 && (_jsx("box", { borderStyle: "single", paddingX: 1, height: 6, children: _jsx("text", { dimColor: true, children: output.slice(-5).join('\n') }) })), isCancelled && (_jsx("box", { paddingTop: 2, children: _jsx(Button, { label: "Back", onClick: onBack, variant: "secondary" }) }))] }));
|
|
95
|
+
}
|
|
96
|
+
function buildFlags(config) {
|
|
97
|
+
const flags = [`--mode=${config.mode}`];
|
|
98
|
+
if (config.withKimaki)
|
|
99
|
+
flags.push('--with-kimaki');
|
|
100
|
+
if (config.withLunaroute)
|
|
101
|
+
flags.push('--with-lunaroute');
|
|
102
|
+
if (config.withWorktreeSession)
|
|
103
|
+
flags.push('--with-worktree-session');
|
|
104
|
+
if (config.withSessionHandoff)
|
|
105
|
+
flags.push('--with-session-handoff');
|
|
106
|
+
if (config.withAgentOfEmpires)
|
|
107
|
+
flags.push('--with-agent-of-empires');
|
|
108
|
+
if (config.noAgentOS)
|
|
109
|
+
flags.push('--no-agent-os');
|
|
110
|
+
if (config.noCcmanager)
|
|
111
|
+
flags.push('--no-ccmanager');
|
|
112
|
+
if (config.noPlugins)
|
|
113
|
+
flags.push('--no-plugins');
|
|
114
|
+
return flags.join(' ');
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=Install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Install.js","sourceRoot":"","sources":["../../src/screens/Install.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { InstallConfig } from '../App.js';
|
|
3
|
+
interface ModeSelectProps {
|
|
4
|
+
config: InstallConfig;
|
|
5
|
+
onChange: (updates: Partial<InstallConfig>) => void;
|
|
6
|
+
onContinue: () => void;
|
|
7
|
+
onBack: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function ModeSelect({ config, onChange, onContinue, onBack }: ModeSelectProps): React.ReactNode;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=ModeSelect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModeSelect.d.ts","sourceRoot":"","sources":["../../src/screens/ModeSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,WAAW,CAAC;AAE5D,UAAU,eAAe;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IACpD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAyBD,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,eAAe,mBAmBnF"}
|