@ai-coders/installer 0.4.0 → 0.6.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.
Files changed (44) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +4 -0
  3. package/dist/cli-command.js +2 -5
  4. package/dist/cli-command.js.map +1 -1
  5. package/dist/empty-directory.d.ts +2 -0
  6. package/dist/empty-directory.js +22 -0
  7. package/dist/empty-directory.js.map +1 -0
  8. package/dist/i18n.d.ts +1 -0
  9. package/dist/i18n.js +2 -0
  10. package/dist/i18n.js.map +1 -1
  11. package/dist/product-manifest.js +4 -2
  12. package/dist/product-manifest.js.map +1 -1
  13. package/dist/products/second-brain/apply.d.ts +1 -0
  14. package/dist/products/second-brain/apply.js +4 -2
  15. package/dist/products/second-brain/apply.js.map +1 -1
  16. package/dist/products/second-brain/bootstrap.d.ts +1 -1
  17. package/dist/products/second-brain/bootstrap.js +1 -1
  18. package/dist/products/second-brain/bootstrap.js.map +1 -1
  19. package/dist/products/second-brain/envfile.d.ts +2 -0
  20. package/dist/products/second-brain/envfile.js +15 -0
  21. package/dist/products/second-brain/envfile.js.map +1 -1
  22. package/dist/products/severino/apply.d.ts +6 -1
  23. package/dist/products/severino/apply.js +18 -0
  24. package/dist/products/severino/apply.js.map +1 -1
  25. package/dist/products/severino/envfile.d.ts +3 -0
  26. package/dist/products/severino/envfile.js +9 -0
  27. package/dist/products/severino/envfile.js.map +1 -1
  28. package/dist/products/severino/i18n.d.ts +54 -6
  29. package/dist/products/severino/i18n.js +36 -4
  30. package/dist/products/severino/i18n.js.map +1 -1
  31. package/dist/products/severino/service.d.ts +2 -0
  32. package/dist/products/severino/service.js +40 -0
  33. package/dist/products/severino/service.js.map +1 -1
  34. package/dist/products/severino/telegram.d.ts +9 -0
  35. package/dist/products/severino/telegram.js +56 -0
  36. package/dist/products/severino/telegram.js.map +1 -0
  37. package/dist/products/severino/ui/assets/index-BbOYfL7B.js +96 -0
  38. package/dist/products/severino/ui/assets/index-WAuO7N9N.css +2 -0
  39. package/dist/products/severino/ui/index.html +2 -2
  40. package/dist/project-bootstrap.js +3 -6
  41. package/dist/project-bootstrap.js.map +1 -1
  42. package/package.json +1 -1
  43. package/dist/products/severino/ui/assets/index-7S8Hl4jq.js +0 -96
  44. package/dist/products/severino/ui/assets/index-D5kql1Bh.css +0 -2
@@ -0,0 +1,56 @@
1
+ function isTelegramResponse(value) {
2
+ return (typeof value === "object" &&
3
+ value !== null &&
4
+ "ok" in value &&
5
+ value.ok === true);
6
+ }
7
+ async function callTelegram(input, method, request, body) {
8
+ let response;
9
+ try {
10
+ response = await request(`https://api.telegram.org/bot${input.botToken}/${method}`, {
11
+ method: "POST",
12
+ headers: { "content-type": "application/json" },
13
+ ...(body === undefined ? {} : { body: JSON.stringify(body) }),
14
+ });
15
+ }
16
+ catch {
17
+ throw new Error("The installer could not reach the Telegram Bot API.");
18
+ }
19
+ const responseBody = await response.json().catch(() => null);
20
+ if (!response.ok || !isTelegramResponse(responseBody)) {
21
+ throw new Error("Telegram rejected the bot token or webhook configuration.");
22
+ }
23
+ return responseBody;
24
+ }
25
+ /** Registers the deployed eve route without ever including credentials in errors. */
26
+ export async function configureTelegramWebhook(input, request = fetch) {
27
+ if (!/^\d+:[A-Za-z0-9_-]+$/.test(input.botToken)) {
28
+ throw new Error("The Telegram bot token has an invalid format.");
29
+ }
30
+ if (!/^[A-Za-z0-9_-]{1,256}$/.test(input.webhookSecretToken)) {
31
+ throw new Error("The Telegram webhook secret has an invalid format.");
32
+ }
33
+ const publicUrl = new URL(input.publicUrl);
34
+ if (publicUrl.protocol !== "https:") {
35
+ throw new Error("The Telegram webhook requires a public HTTPS URL.");
36
+ }
37
+ const webhookUrl = new URL("/eve/v1/telegram", publicUrl).toString();
38
+ const identity = await callTelegram(input, "getMe", request);
39
+ const result = identity.result;
40
+ const actualUsername = typeof result === "object" &&
41
+ result !== null &&
42
+ "username" in result &&
43
+ typeof result.username === "string"
44
+ ? result.username
45
+ : null;
46
+ if (actualUsername === null ||
47
+ actualUsername.toLowerCase() !== input.botUsername.toLowerCase()) {
48
+ throw new Error("The Telegram bot username does not match the supplied bot token.");
49
+ }
50
+ await callTelegram(input, "setWebhook", request, {
51
+ url: webhookUrl,
52
+ secret_token: input.webhookSecretToken,
53
+ allowed_updates: ["message", "callback_query"],
54
+ });
55
+ }
56
+ //# sourceMappingURL=telegram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../../packages/severino/src/telegram.ts"],"names":[],"mappings":"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"}