@ai-coders/installer 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/LICENSE +18 -0
- package/README.md +64 -0
- package/dist/callback-page.d.ts +11 -0
- package/dist/callback-page.js +230 -0
- package/dist/callback-page.js.map +1 -0
- package/dist/clerk-auth.d.ts +18 -0
- package/dist/clerk-auth.js +296 -0
- package/dist/clerk-auth.js.map +1 -0
- package/dist/cli-command.d.ts +10 -0
- package/dist/cli-command.js +17 -0
- package/dist/cli-command.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +84 -0
- package/dist/cli.js.map +1 -0
- package/dist/i18n.d.ts +52 -0
- package/dist/i18n.js +163 -0
- package/dist/i18n.js.map +1 -0
- package/dist/product-manifest.d.ts +43 -0
- package/dist/product-manifest.js +140 -0
- package/dist/product-manifest.js.map +1 -0
- package/dist/products/second-brain/apply.d.ts +86 -0
- package/dist/products/second-brain/apply.js +277 -0
- package/dist/products/second-brain/apply.js.map +1 -0
- package/dist/products/second-brain/bearer.d.ts +29 -0
- package/dist/products/second-brain/bearer.js +78 -0
- package/dist/products/second-brain/bearer.js.map +1 -0
- package/dist/products/second-brain/bootstrap.d.ts +33 -0
- package/dist/products/second-brain/bootstrap.js +39 -0
- package/dist/products/second-brain/bootstrap.js.map +1 -0
- package/dist/products/second-brain/envfile.d.ts +35 -0
- package/dist/products/second-brain/envfile.js +136 -0
- package/dist/products/second-brain/envfile.js.map +1 -0
- package/dist/products/second-brain/github.d.ts +77 -0
- package/dist/products/second-brain/github.js +195 -0
- package/dist/products/second-brain/github.js.map +1 -0
- package/dist/products/second-brain/hostinger.d.ts +140 -0
- package/dist/products/second-brain/hostinger.js +607 -0
- package/dist/products/second-brain/hostinger.js.map +1 -0
- package/dist/products/second-brain/i18n.d.ts +887 -0
- package/dist/products/second-brain/i18n.js +587 -0
- package/dist/products/second-brain/i18n.js.map +1 -0
- package/dist/products/second-brain/keys.d.ts +5 -0
- package/dist/products/second-brain/keys.js +16 -0
- package/dist/products/second-brain/keys.js.map +1 -0
- package/dist/products/second-brain/main.d.ts +3 -0
- package/dist/products/second-brain/main.js +78 -0
- package/dist/products/second-brain/main.js.map +1 -0
- package/dist/products/second-brain/ports.d.ts +34 -0
- package/dist/products/second-brain/ports.js +77 -0
- package/dist/products/second-brain/ports.js.map +1 -0
- package/dist/products/second-brain/recovery.d.ts +50 -0
- package/dist/products/second-brain/recovery.js +96 -0
- package/dist/products/second-brain/recovery.js.map +1 -0
- package/dist/products/second-brain/sealed-box.d.ts +1 -0
- package/dist/products/second-brain/sealed-box.js +11 -0
- package/dist/products/second-brain/sealed-box.js.map +1 -0
- package/dist/products/second-brain/server.d.ts +143 -0
- package/dist/products/second-brain/server.js +280 -0
- package/dist/products/second-brain/server.js.map +1 -0
- package/dist/products/second-brain/service.d.ts +26 -0
- package/dist/products/second-brain/service.js +806 -0
- package/dist/products/second-brain/service.js.map +1 -0
- package/dist/products/second-brain/ssh.d.ts +35 -0
- package/dist/products/second-brain/ssh.js +140 -0
- package/dist/products/second-brain/ssh.js.map +1 -0
- package/dist/products/second-brain/state.d.ts +27 -0
- package/dist/products/second-brain/state.js +60 -0
- package/dist/products/second-brain/state.js.map +1 -0
- package/dist/products/second-brain/ui/assets/index-BoXpakUt.css +2 -0
- package/dist/products/second-brain/ui/assets/index-MgfOpW_R.js +66 -0
- package/dist/products/second-brain/ui/index.html +15 -0
- package/dist/products/second-brain/verify.d.ts +23 -0
- package/dist/products/second-brain/verify.js +59 -0
- package/dist/products/second-brain/verify.js.map +1 -0
- package/dist/products/severino/apply.d.ts +87 -0
- package/dist/products/severino/apply.js +250 -0
- package/dist/products/severino/apply.js.map +1 -0
- package/dist/products/severino/domain.d.ts +6 -0
- package/dist/products/severino/domain.js +20 -0
- package/dist/products/severino/domain.js.map +1 -0
- package/dist/products/severino/envfile.d.ts +20 -0
- package/dist/products/severino/envfile.js +89 -0
- package/dist/products/severino/envfile.js.map +1 -0
- package/dist/products/severino/github.d.ts +77 -0
- package/dist/products/severino/github.js +195 -0
- package/dist/products/severino/github.js.map +1 -0
- package/dist/products/severino/hostinger.d.ts +140 -0
- package/dist/products/severino/hostinger.js +607 -0
- package/dist/products/severino/hostinger.js.map +1 -0
- package/dist/products/severino/i18n.d.ts +887 -0
- package/dist/products/severino/i18n.js +587 -0
- package/dist/products/severino/i18n.js.map +1 -0
- package/dist/products/severino/keys.d.ts +5 -0
- package/dist/products/severino/keys.js +16 -0
- package/dist/products/severino/keys.js.map +1 -0
- package/dist/products/severino/main.d.ts +3 -0
- package/dist/products/severino/main.js +78 -0
- package/dist/products/severino/main.js.map +1 -0
- package/dist/products/severino/recovery.d.ts +50 -0
- package/dist/products/severino/recovery.js +96 -0
- package/dist/products/severino/recovery.js.map +1 -0
- package/dist/products/severino/sealed-box.d.ts +1 -0
- package/dist/products/severino/sealed-box.js +11 -0
- package/dist/products/severino/sealed-box.js.map +1 -0
- package/dist/products/severino/server.d.ts +123 -0
- package/dist/products/severino/server.js +274 -0
- package/dist/products/severino/server.js.map +1 -0
- package/dist/products/severino/service.d.ts +28 -0
- package/dist/products/severino/service.js +752 -0
- package/dist/products/severino/service.js.map +1 -0
- package/dist/products/severino/slack-manifest.d.ts +3 -0
- package/dist/products/severino/slack-manifest.js +45 -0
- package/dist/products/severino/slack-manifest.js.map +1 -0
- package/dist/products/severino/ssh.d.ts +35 -0
- package/dist/products/severino/ssh.js +140 -0
- package/dist/products/severino/ssh.js.map +1 -0
- package/dist/products/severino/state.d.ts +26 -0
- package/dist/products/severino/state.js +61 -0
- package/dist/products/severino/state.js.map +1 -0
- package/dist/products/severino/ui/assets/index-7S8Hl4jq.js +96 -0
- package/dist/products/severino/ui/assets/index-D5kql1Bh.css +2 -0
- package/dist/products/severino/ui/index.html +15 -0
- package/dist/products/severino/verify.d.ts +22 -0
- package/dist/products/severino/verify.js +149 -0
- package/dist/products/severino/verify.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clerk-auth.js","sourceRoot":"","sources":["../src/clerk-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { loadInstallerProject } from "./product-manifest.js";
|
|
2
|
+
export type LoadedInstallerProject = Awaited<ReturnType<typeof loadInstallerProject>>;
|
|
3
|
+
export declare function runInstallerCli(options: {
|
|
4
|
+
readonly args: readonly string[];
|
|
5
|
+
readonly cwd: string;
|
|
6
|
+
readonly version: string;
|
|
7
|
+
readonly writeOutput: (value: string) => void;
|
|
8
|
+
readonly authenticate: () => Promise<void>;
|
|
9
|
+
readonly startProduct: (project: LoadedInstallerProject) => Promise<void>;
|
|
10
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { installerUsage, loadInstallerProject, parseInstallerCommand, } from "./product-manifest.js";
|
|
2
|
+
import { cliMessages } from "./i18n.js";
|
|
3
|
+
export async function runInstallerCli(options) {
|
|
4
|
+
const command = parseInstallerCommand(options.args);
|
|
5
|
+
if (command.kind === "help") {
|
|
6
|
+
options.writeOutput(installerUsage);
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
if (command.kind === "version") {
|
|
10
|
+
options.writeOutput(cliMessages.installerVersion(options.version));
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const project = await loadInstallerProject(options.cwd, command.product);
|
|
14
|
+
await options.authenticate();
|
|
15
|
+
await options.startProduct(project);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=cli-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-command.js","sourceRoot":"","sources":["../src/cli-command.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAMxC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OASrC;IACC,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;IAC7B,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC"}
|
package/dist/cli.d.ts
ADDED
package/dist/cli.js
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { readFile } from "node:fs/promises";
|
|
3
|
+
import { authenticateWithClerk, clerkOAuthClientId, clerkOAuthIssuer, } from "./clerk-auth.js";
|
|
4
|
+
import { runInstallerCli } from "./cli-command.js";
|
|
5
|
+
import { cliMessages } from "./i18n.js";
|
|
6
|
+
const productEntryPoints = {
|
|
7
|
+
"second-brain": {
|
|
8
|
+
modulePath: "./products/second-brain/main.js",
|
|
9
|
+
exportName: "runSecondBrainInstaller",
|
|
10
|
+
invalidMessage: cliMessages.secondBrainPackageInvalid,
|
|
11
|
+
},
|
|
12
|
+
severino: {
|
|
13
|
+
modulePath: "./products/severino/main.js",
|
|
14
|
+
exportName: "runSeverinoInstaller",
|
|
15
|
+
invalidMessage: cliMessages.severinoPackageInvalid,
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
function productRunnerFrom(value, exportName) {
|
|
19
|
+
if (typeof value !== "object" || value === null)
|
|
20
|
+
return null;
|
|
21
|
+
const candidate = value[exportName];
|
|
22
|
+
return typeof candidate === "function" ? candidate : null;
|
|
23
|
+
}
|
|
24
|
+
async function readPackageVersion() {
|
|
25
|
+
let metadata;
|
|
26
|
+
try {
|
|
27
|
+
const raw = await readFile(new URL("../package.json", import.meta.url), "utf8");
|
|
28
|
+
metadata = JSON.parse(raw);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
throw new Error(cliMessages.packageMetadataInvalid);
|
|
32
|
+
}
|
|
33
|
+
if (typeof metadata !== "object" ||
|
|
34
|
+
metadata === null ||
|
|
35
|
+
!("version" in metadata) ||
|
|
36
|
+
typeof metadata.version !== "string") {
|
|
37
|
+
throw new Error(cliMessages.packageMetadataInvalid);
|
|
38
|
+
}
|
|
39
|
+
return metadata.version;
|
|
40
|
+
}
|
|
41
|
+
async function startProduct(product, projectRoot) {
|
|
42
|
+
const entryPoint = productEntryPoints[product];
|
|
43
|
+
const moduleUrl = new URL(entryPoint.modulePath, import.meta.url);
|
|
44
|
+
let productModule;
|
|
45
|
+
try {
|
|
46
|
+
productModule = await import(moduleUrl.href);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
throw new Error(entryPoint.invalidMessage);
|
|
50
|
+
}
|
|
51
|
+
const runner = productRunnerFrom(productModule, entryPoint.exportName);
|
|
52
|
+
if (runner === null) {
|
|
53
|
+
throw new Error(entryPoint.invalidMessage);
|
|
54
|
+
}
|
|
55
|
+
await runner({ projectRoot });
|
|
56
|
+
}
|
|
57
|
+
async function main() {
|
|
58
|
+
const version = await readPackageVersion();
|
|
59
|
+
await runInstallerCli({
|
|
60
|
+
args: process.argv.slice(2),
|
|
61
|
+
cwd: process.cwd(),
|
|
62
|
+
version,
|
|
63
|
+
writeOutput(value) {
|
|
64
|
+
process.stdout.write(value);
|
|
65
|
+
},
|
|
66
|
+
async authenticate() {
|
|
67
|
+
await authenticateWithClerk({
|
|
68
|
+
issuer: clerkOAuthIssuer,
|
|
69
|
+
clientId: clerkOAuthClientId,
|
|
70
|
+
writeOutput(value) {
|
|
71
|
+
process.stdout.write(value);
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
},
|
|
75
|
+
async startProduct(project) {
|
|
76
|
+
await startProduct(project.product, project.projectRoot);
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
main().catch((error) => {
|
|
81
|
+
process.stderr.write(cliMessages.terminalError(error instanceof Error ? error.message : String(error)));
|
|
82
|
+
process.exitCode = 1;
|
|
83
|
+
});
|
|
84
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/i18n.d.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI support strings. English is the source table; Brazilian Portuguese must
|
|
3
|
+
* mirror it key-for-key and is the language rendered to members.
|
|
4
|
+
*/
|
|
5
|
+
export type CliLanguage = "en" | "pt-BR";
|
|
6
|
+
export interface CliMessageTable {
|
|
7
|
+
readonly installerUsage: (templateUrl: string) => string;
|
|
8
|
+
readonly installerVersion: (version: string) => string;
|
|
9
|
+
readonly terminalError: (message: string) => string;
|
|
10
|
+
readonly projectPathNotAccepted: (usage: string) => string;
|
|
11
|
+
readonly currentDirectoryIsNotSecondBrain: string;
|
|
12
|
+
readonly downloadSecondBrainTemplate: (templateUrl: string) => string;
|
|
13
|
+
readonly currentDirectoryIsNotSeverino: string;
|
|
14
|
+
readonly downloadSeverinoTemplate: (templateUrl: string) => string;
|
|
15
|
+
readonly severinoNotAnEveApp: string;
|
|
16
|
+
readonly manifestReadFailed: (fileName: string) => string;
|
|
17
|
+
readonly manifestInvalidJson: (fileName: string) => string;
|
|
18
|
+
readonly manifestInvalidContract: (fileName: string) => string;
|
|
19
|
+
readonly manifestProductMismatch: (manifestProduct: string, requestedProduct: string) => string;
|
|
20
|
+
readonly packageMetadataInvalid: string;
|
|
21
|
+
readonly secondBrainPackageInvalid: string;
|
|
22
|
+
readonly severinoPackageInvalid: string;
|
|
23
|
+
readonly authenticationCompletePage: string;
|
|
24
|
+
readonly authenticationFailedPage: string;
|
|
25
|
+
readonly oauthIssuerInvalidUrl: string;
|
|
26
|
+
readonly oauthIssuerRequiresHttps: string;
|
|
27
|
+
readonly oauthIssuerUrlInvalid: string;
|
|
28
|
+
readonly callbackServerStartFailed: string;
|
|
29
|
+
readonly callbackNotFound: string;
|
|
30
|
+
readonly callbackAlreadyHandled: string;
|
|
31
|
+
readonly authenticationNotApproved: (errorCode: string) => string;
|
|
32
|
+
readonly callbackStateMismatch: string;
|
|
33
|
+
readonly callbackMissingCode: string;
|
|
34
|
+
readonly authenticationTimedOut: string;
|
|
35
|
+
readonly tokenRequestFailed: string;
|
|
36
|
+
readonly authorizationCodeRejected: (status: number) => string;
|
|
37
|
+
readonly tokenResponseInvalidJson: string;
|
|
38
|
+
readonly tokenResponseMissingAccessToken: string;
|
|
39
|
+
readonly userInfoRequestFailed: string;
|
|
40
|
+
readonly authenticatedSessionRejected: (status: number) => string;
|
|
41
|
+
readonly userInfoResponseInvalidJson: string;
|
|
42
|
+
readonly userInfoResponseMissingUserId: string;
|
|
43
|
+
readonly oauthClientIdRequired: string;
|
|
44
|
+
readonly signInPrompt: (url: string) => string;
|
|
45
|
+
readonly authenticatedAs: (identity: string) => string;
|
|
46
|
+
}
|
|
47
|
+
export declare const defaultCliLanguage: CliLanguage;
|
|
48
|
+
export declare const cliMessageTables: {
|
|
49
|
+
readonly en: CliMessageTable;
|
|
50
|
+
readonly "pt-BR": CliMessageTable;
|
|
51
|
+
};
|
|
52
|
+
export declare const cliMessages: CliMessageTable;
|
package/dist/i18n.js
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { renderAuthenticationCallbackPage } from "./callback-page.js";
|
|
2
|
+
function sanitizeTerminalText(value) {
|
|
3
|
+
return value.replace(/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f-\u009f]/g, "");
|
|
4
|
+
}
|
|
5
|
+
function terminalFrame(section, body) {
|
|
6
|
+
const safeSection = sanitizeTerminalText(section).replaceAll("\n", " ");
|
|
7
|
+
const lines = sanitizeTerminalText(body).trimEnd().split("\n");
|
|
8
|
+
return [
|
|
9
|
+
`┌─ AI CODERS ACADEMY / ${safeSection}`,
|
|
10
|
+
"│",
|
|
11
|
+
...lines.map((line) => (line === "" ? "│" : `│ ${line}`)),
|
|
12
|
+
"└─",
|
|
13
|
+
"",
|
|
14
|
+
].join("\n");
|
|
15
|
+
}
|
|
16
|
+
const en = {
|
|
17
|
+
installerUsage: (templateUrl) => terminalFrame("INSTALLER", `AI Coders Installer
|
|
18
|
+
|
|
19
|
+
Usage:
|
|
20
|
+
npx @ai-coders/installer second-brain
|
|
21
|
+
npx @ai-coders/installer severino
|
|
22
|
+
npx @ai-coders/installer --help
|
|
23
|
+
npx @ai-coders/installer --version
|
|
24
|
+
|
|
25
|
+
Run the command from the product repository root. The installer reads the
|
|
26
|
+
product contract from fixed files in the current directory: ./invokta.mcp.json
|
|
27
|
+
for Second Brain and ./package.json for Severino.
|
|
28
|
+
|
|
29
|
+
Installation requires browser authentication with an AI Coders account.
|
|
30
|
+
|
|
31
|
+
Need a product repository? Download the template at:
|
|
32
|
+
${templateUrl}`),
|
|
33
|
+
installerVersion: (version) => terminalFrame("INSTALLER", `@ai-coders/installer ${version}`),
|
|
34
|
+
terminalError: (message) => terminalFrame("ERROR", `! ${message}`),
|
|
35
|
+
projectPathNotAccepted: (usage) => `The installer uses the current directory and does not accept a project path.\n\n${usage}`,
|
|
36
|
+
currentDirectoryIsNotSecondBrain: "The current directory is not a Second Brain repository.",
|
|
37
|
+
downloadSecondBrainTemplate: (templateUrl) => `Download the Second Brain template at ${templateUrl}, open the downloaded repository folder, and run the installer again.`,
|
|
38
|
+
currentDirectoryIsNotSeverino: "The current directory is not a Severino repository.",
|
|
39
|
+
downloadSeverinoTemplate: (templateUrl) => `Download the Severino template at ${templateUrl}, open the downloaded repository folder, and run the installer again.`,
|
|
40
|
+
severinoNotAnEveApp: "This repository does not declare the eve framework dependency.",
|
|
41
|
+
manifestReadFailed: (fileName) => `Could not read ${fileName}.`,
|
|
42
|
+
manifestInvalidJson: (fileName) => `${fileName} is not valid JSON.`,
|
|
43
|
+
manifestInvalidContract: (fileName) => `${fileName} does not contain a valid installer contract.`,
|
|
44
|
+
manifestProductMismatch: (manifestProduct, requestedProduct) => `The manifest product ${manifestProduct} does not match requested installer ${requestedProduct}.`,
|
|
45
|
+
packageMetadataInvalid: "The installer package metadata is invalid.",
|
|
46
|
+
secondBrainPackageInvalid: "The Second Brain installer package is invalid.",
|
|
47
|
+
severinoPackageInvalid: "The Severino installer package is invalid.",
|
|
48
|
+
authenticationCompletePage: renderAuthenticationCallbackPage({
|
|
49
|
+
language: "en",
|
|
50
|
+
title: "Authentication complete | AI Coders Academy",
|
|
51
|
+
status: "success",
|
|
52
|
+
statusLabel: "Access authorized",
|
|
53
|
+
heading: "Authentication complete",
|
|
54
|
+
description: "You can now close this tab and return to the installer.",
|
|
55
|
+
footer: "AI Coders Installer",
|
|
56
|
+
}),
|
|
57
|
+
authenticationFailedPage: renderAuthenticationCallbackPage({
|
|
58
|
+
language: "en",
|
|
59
|
+
title: "Authentication failed | AI Coders Academy",
|
|
60
|
+
status: "failure",
|
|
61
|
+
statusLabel: "Access not authorized",
|
|
62
|
+
heading: "Authentication failed",
|
|
63
|
+
description: "Close this tab, return to the installer, and try authenticating again.",
|
|
64
|
+
footer: "AI Coders Installer",
|
|
65
|
+
}),
|
|
66
|
+
oauthIssuerInvalidUrl: "The Clerk OAuth issuer must be a valid URL.",
|
|
67
|
+
oauthIssuerRequiresHttps: "The Clerk OAuth issuer must use HTTPS.",
|
|
68
|
+
oauthIssuerUrlInvalid: "The Clerk OAuth issuer URL is invalid.",
|
|
69
|
+
callbackServerStartFailed: "The local authentication callback could not be started.",
|
|
70
|
+
callbackNotFound: "Not found.",
|
|
71
|
+
callbackAlreadyHandled: "The authentication callback was already handled.",
|
|
72
|
+
authenticationNotApproved: (errorCode) => `Clerk authentication was not approved (${errorCode}).`,
|
|
73
|
+
callbackStateMismatch: "The OAuth callback state did not match.",
|
|
74
|
+
callbackMissingCode: "The OAuth callback did not include an authorization code.",
|
|
75
|
+
authenticationTimedOut: "Clerk authentication timed out.",
|
|
76
|
+
tokenRequestFailed: "The Clerk token request could not be completed.",
|
|
77
|
+
authorizationCodeRejected: (status) => `Clerk rejected the authorization code (HTTP ${status}).`,
|
|
78
|
+
tokenResponseInvalidJson: "The Clerk token response was not valid JSON.",
|
|
79
|
+
tokenResponseMissingAccessToken: "The Clerk token response did not include an access token.",
|
|
80
|
+
userInfoRequestFailed: "The Clerk user information request could not be completed.",
|
|
81
|
+
authenticatedSessionRejected: (status) => `Clerk rejected the authenticated session (HTTP ${status}).`,
|
|
82
|
+
userInfoResponseInvalidJson: "The Clerk user information response was not valid JSON.",
|
|
83
|
+
userInfoResponseMissingUserId: "The Clerk user information response did not include a user ID.",
|
|
84
|
+
oauthClientIdRequired: "The Clerk OAuth client ID is required.",
|
|
85
|
+
signInPrompt: (url) => terminalFrame("INSTALLER", `AUTHENTICATION\nSign in to AI Coders in your browser to continue:\n\n${url}`),
|
|
86
|
+
authenticatedAs: (identity) => terminalFrame("INSTALLER", `✓ Authenticated as ${identity}.`),
|
|
87
|
+
};
|
|
88
|
+
const ptBR = {
|
|
89
|
+
installerUsage: (templateUrl) => terminalFrame("INSTALLER", `Instalador AI Coders
|
|
90
|
+
|
|
91
|
+
Uso:
|
|
92
|
+
npx @ai-coders/installer second-brain
|
|
93
|
+
npx @ai-coders/installer severino
|
|
94
|
+
npx @ai-coders/installer --help
|
|
95
|
+
npx @ai-coders/installer --version
|
|
96
|
+
|
|
97
|
+
Execute o comando na raiz do repositório do produto. O instalador lê o
|
|
98
|
+
contrato do produto em arquivos fixos do diretório atual: ./invokta.mcp.json
|
|
99
|
+
para o Second Brain e ./package.json para o Severino.
|
|
100
|
+
|
|
101
|
+
A instalação exige autenticação pelo navegador com uma conta AI Coders.
|
|
102
|
+
|
|
103
|
+
Ainda não tem o repositório do produto? Baixe o template em:
|
|
104
|
+
${templateUrl}`),
|
|
105
|
+
installerVersion: (version) => terminalFrame("INSTALLER", `@ai-coders/installer ${version}`),
|
|
106
|
+
terminalError: (message) => terminalFrame("ERRO", `! ${message}`),
|
|
107
|
+
projectPathNotAccepted: (usage) => `O instalador usa o diretório atual e não aceita o caminho de um projeto.\n\n${usage}`,
|
|
108
|
+
currentDirectoryIsNotSecondBrain: "A pasta atual não é um repositório do Second Brain.",
|
|
109
|
+
downloadSecondBrainTemplate: (templateUrl) => `Baixe o template do Second Brain em ${templateUrl}, abra a pasta do repositório baixado e execute o instalador novamente.`,
|
|
110
|
+
currentDirectoryIsNotSeverino: "A pasta atual não é um repositório do Severino.",
|
|
111
|
+
downloadSeverinoTemplate: (templateUrl) => `Baixe o template do Severino em ${templateUrl}, abra a pasta do repositório baixado e execute o instalador novamente.`,
|
|
112
|
+
severinoNotAnEveApp: "Este repositório não declara a dependência do framework eve.",
|
|
113
|
+
manifestReadFailed: (fileName) => `Não foi possível ler o arquivo ${fileName}.`,
|
|
114
|
+
manifestInvalidJson: (fileName) => `O arquivo ${fileName} não contém um JSON válido.`,
|
|
115
|
+
manifestInvalidContract: (fileName) => `O arquivo ${fileName} não contém um contrato válido para o instalador.`,
|
|
116
|
+
manifestProductMismatch: (manifestProduct, requestedProduct) => `O produto ${manifestProduct} do manifesto não corresponde ao instalador solicitado ${requestedProduct}.`,
|
|
117
|
+
packageMetadataInvalid: "Os metadados do pacote do instalador são inválidos.",
|
|
118
|
+
secondBrainPackageInvalid: "O pacote do instalador do Second Brain é inválido.",
|
|
119
|
+
severinoPackageInvalid: "O pacote do instalador do Severino é inválido.",
|
|
120
|
+
authenticationCompletePage: renderAuthenticationCallbackPage({
|
|
121
|
+
language: "pt-BR",
|
|
122
|
+
title: "Autenticação concluída | AI Coders Academy",
|
|
123
|
+
status: "success",
|
|
124
|
+
statusLabel: "Acesso autorizado",
|
|
125
|
+
heading: "Autenticação concluída",
|
|
126
|
+
description: "Você já pode fechar esta aba e voltar ao instalador.",
|
|
127
|
+
footer: "Instalador AI Coders",
|
|
128
|
+
}),
|
|
129
|
+
authenticationFailedPage: renderAuthenticationCallbackPage({
|
|
130
|
+
language: "pt-BR",
|
|
131
|
+
title: "Falha na autenticação | AI Coders Academy",
|
|
132
|
+
status: "failure",
|
|
133
|
+
statusLabel: "Acesso não autorizado",
|
|
134
|
+
heading: "Falha na autenticação",
|
|
135
|
+
description: "Feche esta aba, volte ao instalador e tente fazer a autenticação novamente.",
|
|
136
|
+
footer: "Instalador AI Coders",
|
|
137
|
+
}),
|
|
138
|
+
oauthIssuerInvalidUrl: "O emissor OAuth do Clerk deve ser uma URL válida.",
|
|
139
|
+
oauthIssuerRequiresHttps: "O emissor OAuth do Clerk deve usar HTTPS.",
|
|
140
|
+
oauthIssuerUrlInvalid: "A URL do emissor OAuth do Clerk é inválida.",
|
|
141
|
+
callbackServerStartFailed: "Não foi possível iniciar o callback local de autenticação.",
|
|
142
|
+
callbackNotFound: "Não encontrado.",
|
|
143
|
+
callbackAlreadyHandled: "O callback de autenticação já foi processado.",
|
|
144
|
+
authenticationNotApproved: (errorCode) => `A autenticação no Clerk não foi autorizada (${errorCode}).`,
|
|
145
|
+
callbackStateMismatch: "O estado do callback OAuth não corresponde.",
|
|
146
|
+
callbackMissingCode: "O callback OAuth não retornou um código de autorização.",
|
|
147
|
+
authenticationTimedOut: "A autenticação no Clerk expirou.",
|
|
148
|
+
tokenRequestFailed: "Não foi possível concluir a solicitação do token ao Clerk.",
|
|
149
|
+
authorizationCodeRejected: (status) => `O Clerk recusou o código de autorização (HTTP ${status}).`,
|
|
150
|
+
tokenResponseInvalidJson: "A resposta de token do Clerk não contém um JSON válido.",
|
|
151
|
+
tokenResponseMissingAccessToken: "A resposta de token do Clerk não contém um token de acesso.",
|
|
152
|
+
userInfoRequestFailed: "Não foi possível consultar os dados do usuário no Clerk.",
|
|
153
|
+
authenticatedSessionRejected: (status) => `O Clerk recusou a sessão autenticada (HTTP ${status}).`,
|
|
154
|
+
userInfoResponseInvalidJson: "A resposta com os dados do usuário do Clerk não contém um JSON válido.",
|
|
155
|
+
userInfoResponseMissingUserId: "A resposta com os dados do usuário do Clerk não contém um ID de usuário.",
|
|
156
|
+
oauthClientIdRequired: "O Client ID OAuth do Clerk é obrigatório.",
|
|
157
|
+
signInPrompt: (url) => terminalFrame("INSTALLER", `AUTENTICAÇÃO\nEntre na sua conta AI Coders pelo navegador para continuar:\n\n${url}`),
|
|
158
|
+
authenticatedAs: (identity) => terminalFrame("INSTALLER", `✓ Autenticado como ${identity}.`),
|
|
159
|
+
};
|
|
160
|
+
export const defaultCliLanguage = "pt-BR";
|
|
161
|
+
export const cliMessageTables = { en, "pt-BR": ptBR };
|
|
162
|
+
export const cliMessages = cliMessageTables[defaultCliLanguage];
|
|
163
|
+
//# sourceMappingURL=i18n.js.map
|
package/dist/i18n.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const invoktaMcpManifestFileName = "invokta.mcp.json";
|
|
3
|
+
export declare const packageManifestFileName = "package.json";
|
|
4
|
+
export declare const productTemplatesUrl = "https://membros.aicoders.academy/templates";
|
|
5
|
+
/** @deprecated kept for compatibility; both products share the templates page. */
|
|
6
|
+
export declare const secondBrainTemplateUrl = "https://membros.aicoders.academy/templates";
|
|
7
|
+
export declare const installerUsage: string;
|
|
8
|
+
declare const invoktaMcpManifestSchema: z.ZodObject<{
|
|
9
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
10
|
+
id: z.ZodString;
|
|
11
|
+
version: z.ZodString;
|
|
12
|
+
title: z.ZodString;
|
|
13
|
+
description: z.ZodString;
|
|
14
|
+
capabilityIds: z.ZodArray<z.ZodString>;
|
|
15
|
+
server: z.ZodObject<{
|
|
16
|
+
name: z.ZodString;
|
|
17
|
+
entrypoint: z.ZodString;
|
|
18
|
+
forwardEnv: z.ZodArray<z.ZodString>;
|
|
19
|
+
}, z.core.$strict>;
|
|
20
|
+
}, z.core.$strict>;
|
|
21
|
+
export type InvoktaMcpManifest = z.infer<typeof invoktaMcpManifestSchema>;
|
|
22
|
+
export interface EveAppManifest {
|
|
23
|
+
readonly id: string;
|
|
24
|
+
readonly version: string;
|
|
25
|
+
}
|
|
26
|
+
export type InstallerProductManifest = InvoktaMcpManifest | EveAppManifest;
|
|
27
|
+
export type InstallerProduct = "second-brain" | "severino";
|
|
28
|
+
export declare const installerProducts: readonly InstallerProduct[];
|
|
29
|
+
export type InstallerCommand = {
|
|
30
|
+
readonly kind: "help";
|
|
31
|
+
} | {
|
|
32
|
+
readonly kind: "version";
|
|
33
|
+
} | {
|
|
34
|
+
readonly kind: "install";
|
|
35
|
+
readonly product: InstallerProduct;
|
|
36
|
+
};
|
|
37
|
+
export declare function parseInstallerCommand(args: readonly string[]): InstallerCommand;
|
|
38
|
+
export declare function loadInstallerProject(projectRoot: string, product: InstallerProduct): Promise<{
|
|
39
|
+
readonly projectRoot: string;
|
|
40
|
+
readonly product: InstallerProduct;
|
|
41
|
+
readonly manifest: InstallerProductManifest;
|
|
42
|
+
}>;
|
|
43
|
+
export {};
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { cliMessages } from "./i18n.js";
|
|
5
|
+
export const invoktaMcpManifestFileName = "invokta.mcp.json";
|
|
6
|
+
export const packageManifestFileName = "package.json";
|
|
7
|
+
export const productTemplatesUrl = "https://membros.aicoders.academy/templates";
|
|
8
|
+
/** @deprecated kept for compatibility; both products share the templates page. */
|
|
9
|
+
export const secondBrainTemplateUrl = productTemplatesUrl;
|
|
10
|
+
export const installerUsage = cliMessages.installerUsage(productTemplatesUrl);
|
|
11
|
+
const slug = z
|
|
12
|
+
.string()
|
|
13
|
+
.regex(/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/, "Product identifiers must use lowercase letters, numbers, and hyphens.");
|
|
14
|
+
const projectRelativePath = z.string().superRefine((value, context) => {
|
|
15
|
+
if (value === "" ||
|
|
16
|
+
path.posix.isAbsolute(value) ||
|
|
17
|
+
value.includes("\0") ||
|
|
18
|
+
value.split("/").some((segment) => segment === "" || segment === "..")) {
|
|
19
|
+
context.addIssue({
|
|
20
|
+
code: "custom",
|
|
21
|
+
message: "The entrypoint must stay inside the product repository.",
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
const environmentName = z
|
|
26
|
+
.string()
|
|
27
|
+
.regex(/^[A-Z_][A-Z0-9_]{0,127}$/, "Invalid environment variable name.");
|
|
28
|
+
const invoktaMcpManifestSchema = z
|
|
29
|
+
.object({
|
|
30
|
+
schemaVersion: z.literal(1),
|
|
31
|
+
id: slug,
|
|
32
|
+
version: z.string().min(1).max(120),
|
|
33
|
+
title: z.string().min(1).max(120),
|
|
34
|
+
description: z.string().min(1).max(1_000),
|
|
35
|
+
capabilityIds: z.array(z.string().min(1).max(128)).max(256),
|
|
36
|
+
server: z
|
|
37
|
+
.object({
|
|
38
|
+
name: slug,
|
|
39
|
+
entrypoint: projectRelativePath,
|
|
40
|
+
forwardEnv: z.array(environmentName).max(128),
|
|
41
|
+
})
|
|
42
|
+
.strict(),
|
|
43
|
+
})
|
|
44
|
+
.strict();
|
|
45
|
+
// Severino repositories are plain eve apps; their target contract is the
|
|
46
|
+
// package manifest itself: the stable package name plus the eve dependency.
|
|
47
|
+
const severinoPackageSchema = z
|
|
48
|
+
.object({
|
|
49
|
+
name: z.string().min(1).max(214),
|
|
50
|
+
version: z.string().min(1).max(120).optional(),
|
|
51
|
+
dependencies: z.record(z.string(), z.string()).optional(),
|
|
52
|
+
})
|
|
53
|
+
.loose();
|
|
54
|
+
export const installerProducts = [
|
|
55
|
+
"second-brain",
|
|
56
|
+
"severino",
|
|
57
|
+
];
|
|
58
|
+
function isInstallerProduct(value) {
|
|
59
|
+
return installerProducts.includes(value);
|
|
60
|
+
}
|
|
61
|
+
function productDirectoryHelp(product) {
|
|
62
|
+
if (product === "severino") {
|
|
63
|
+
return `${cliMessages.currentDirectoryIsNotSeverino}
|
|
64
|
+
${cliMessages.downloadSeverinoTemplate(productTemplatesUrl)}`;
|
|
65
|
+
}
|
|
66
|
+
return `${cliMessages.currentDirectoryIsNotSecondBrain}
|
|
67
|
+
${cliMessages.downloadSecondBrainTemplate(productTemplatesUrl)}`;
|
|
68
|
+
}
|
|
69
|
+
export function parseInstallerCommand(args) {
|
|
70
|
+
if (args.length === 1 && (args[0] === "--help" || args[0] === "-h")) {
|
|
71
|
+
return { kind: "help" };
|
|
72
|
+
}
|
|
73
|
+
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v")) {
|
|
74
|
+
return { kind: "version" };
|
|
75
|
+
}
|
|
76
|
+
if (args.length > 1) {
|
|
77
|
+
throw new Error(cliMessages.projectPathNotAccepted(installerUsage));
|
|
78
|
+
}
|
|
79
|
+
const product = args[0];
|
|
80
|
+
if (product === undefined || !isInstallerProduct(product)) {
|
|
81
|
+
throw new Error(installerUsage);
|
|
82
|
+
}
|
|
83
|
+
return { kind: "install", product };
|
|
84
|
+
}
|
|
85
|
+
async function readManifestFile(projectRoot, fileName, product) {
|
|
86
|
+
const manifestPath = path.join(projectRoot, fileName);
|
|
87
|
+
let raw;
|
|
88
|
+
try {
|
|
89
|
+
raw = await readFile(manifestPath, "utf8");
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
if (error.code === "ENOENT") {
|
|
93
|
+
throw new Error(productDirectoryHelp(product));
|
|
94
|
+
}
|
|
95
|
+
throw new Error(cliMessages.manifestReadFailed(fileName));
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
return JSON.parse(raw);
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
throw new Error(cliMessages.manifestInvalidJson(fileName));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
async function loadSecondBrainManifest(projectRoot) {
|
|
105
|
+
const value = await readManifestFile(projectRoot, invoktaMcpManifestFileName, "second-brain");
|
|
106
|
+
const parsedManifest = invoktaMcpManifestSchema.safeParse(value);
|
|
107
|
+
if (!parsedManifest.success) {
|
|
108
|
+
throw new Error(cliMessages.manifestInvalidContract(invoktaMcpManifestFileName));
|
|
109
|
+
}
|
|
110
|
+
const manifest = parsedManifest.data;
|
|
111
|
+
if (manifest.id !== "second-brain") {
|
|
112
|
+
const mismatch = cliMessages.manifestProductMismatch(JSON.stringify(manifest.id), JSON.stringify("second-brain"));
|
|
113
|
+
throw new Error(`${mismatch}\n\n${productDirectoryHelp("second-brain")}`);
|
|
114
|
+
}
|
|
115
|
+
return manifest;
|
|
116
|
+
}
|
|
117
|
+
async function loadSeverinoManifest(projectRoot) {
|
|
118
|
+
const value = await readManifestFile(projectRoot, packageManifestFileName, "severino");
|
|
119
|
+
const parsedManifest = severinoPackageSchema.safeParse(value);
|
|
120
|
+
if (!parsedManifest.success) {
|
|
121
|
+
throw new Error(cliMessages.manifestInvalidContract(packageManifestFileName));
|
|
122
|
+
}
|
|
123
|
+
const manifest = parsedManifest.data;
|
|
124
|
+
if (manifest.name !== "severino") {
|
|
125
|
+
const mismatch = cliMessages.manifestProductMismatch(JSON.stringify(manifest.name), JSON.stringify("severino"));
|
|
126
|
+
throw new Error(`${mismatch}\n\n${productDirectoryHelp("severino")}`);
|
|
127
|
+
}
|
|
128
|
+
if (manifest.dependencies?.["eve"] === undefined) {
|
|
129
|
+
throw new Error(`${cliMessages.severinoNotAnEveApp}\n\n${productDirectoryHelp("severino")}`);
|
|
130
|
+
}
|
|
131
|
+
return { id: "severino", version: manifest.version ?? "0.0.0" };
|
|
132
|
+
}
|
|
133
|
+
export async function loadInstallerProject(projectRoot, product) {
|
|
134
|
+
const resolvedRoot = path.resolve(projectRoot);
|
|
135
|
+
const manifest = product === "severino"
|
|
136
|
+
? await loadSeverinoManifest(resolvedRoot)
|
|
137
|
+
: await loadSecondBrainManifest(resolvedRoot);
|
|
138
|
+
return { projectRoot: resolvedRoot, product, manifest };
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=product-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product-manifest.js","sourceRoot":"","sources":["../src/product-manifest.ts"],"names":[],"mappings":"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"}
|