relayax-cli 0.2.25 → 0.2.27

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.
@@ -1,4 +1,17 @@
1
+ /**
2
+ * bin/relay-preamble.sh 스크립트 콘텐츠를 생성한다.
3
+ * relay CLI가 있으면 사용하고, 없으면 curl로 직접 ping.
4
+ */
5
+ export declare function generatePreambleScript(slug: string, apiUrl: string): string;
6
+ /**
7
+ * SKILL.md / command에 삽입할 preamble 마크다운을 생성한다.
8
+ * bin/relay-preamble.sh를 호출하는 구조.
9
+ */
1
10
  export declare function generatePreamble(slug: string): string;
11
+ /**
12
+ * teamDir에 bin/relay-preamble.sh를 생성한다.
13
+ */
14
+ export declare function generatePreambleBin(teamDir: string, slug: string, apiUrl: string): void;
2
15
  /**
3
16
  * frontmatter(---...---) 뒤에 preamble을 삽입한다.
4
17
  * frontmatter가 없으면 파일 맨 앞에 삽입한다.
@@ -3,25 +3,88 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generatePreambleScript = generatePreambleScript;
6
7
  exports.generatePreamble = generatePreamble;
8
+ exports.generatePreambleBin = generatePreambleBin;
7
9
  exports.injectPreamble = injectPreamble;
8
10
  exports.injectPreambleToTeam = injectPreambleToTeam;
9
11
  const fs_1 = __importDefault(require("fs"));
10
12
  const path_1 = __importDefault(require("path"));
11
13
  const PREAMBLE_START = '<!-- RELAY_PREAMBLE_START - DO NOT EDIT -->';
12
14
  const PREAMBLE_END = '<!-- RELAY_PREAMBLE_END -->';
15
+ /**
16
+ * bin/relay-preamble.sh 스크립트 콘텐츠를 생성한다.
17
+ * relay CLI가 있으면 사용하고, 없으면 curl로 직접 ping.
18
+ */
19
+ function generatePreambleScript(slug, apiUrl) {
20
+ const registrySlug = slug.startsWith('@') ? slug.slice(1) : slug;
21
+ return `#!/usr/bin/env bash
22
+ # relay-preamble.sh — auto-generated by relay publish
23
+ # Usage tracking + update check for ${slug}
24
+ set +e # preamble 실패가 팀 사용을 막으면 안 됨
25
+
26
+ SLUG="${slug}"
27
+ REGISTRY_SLUG="${registrySlug}"
28
+ API_URL="${apiUrl}"
29
+ SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
30
+ STATE_DIR="$HOME/.relay"
31
+ CACHE_FILE="$STATE_DIR/last-update-check"
32
+
33
+ # ─── Device hash (privacy-safe) ───
34
+ DEVICE_HASH=$(echo "$HOSTNAME:$USER" | shasum -a 256 | cut -d' ' -f1)
35
+
36
+ # ─── Usage ping (fire-and-forget) ───
37
+ if command -v relay &>/dev/null; then
38
+ relay ping "$SLUG" --quiet 2>/dev/null &
39
+ else
40
+ curl -sf -X POST "$API_URL/api/registry/$REGISTRY_SLUG/ping" \\
41
+ -H "Content-Type: application/json" \\
42
+ -d "{\\"device_hash\\":\\"$DEVICE_HASH\\"}" \\
43
+ 2>/dev/null &
44
+ fi
45
+
46
+ # ─── Update check (cached) ───
47
+ mkdir -p "$STATE_DIR"
48
+ if command -v relay &>/dev/null; then
49
+ _UPD=$(relay check-update "$SLUG" --quiet 2>/dev/null || true)
50
+ [ -n "$_UPD" ] && echo "$_UPD" || true
51
+ fi
52
+
53
+ # ─── Ready signal ───
54
+ echo "RELAY_READY: $SLUG"
55
+ `;
56
+ }
57
+ /**
58
+ * SKILL.md / command에 삽입할 preamble 마크다운을 생성한다.
59
+ * bin/relay-preamble.sh를 호출하는 구조.
60
+ */
13
61
  function generatePreamble(slug) {
14
62
  return `${PREAMBLE_START}
15
63
  ## Preamble (run first)
16
64
 
17
65
  \`\`\`bash
18
- relay check-update ${slug} --quiet 2>/dev/null
66
+ _DIR="$(cd "$(dirname "$0")" 2>/dev/null && pwd)" || _DIR=""
67
+ _PREAMBLE="$_DIR/bin/relay-preamble.sh"
68
+ [ ! -f "$_PREAMBLE" ] && _PREAMBLE="$HOME/.relay/teams/${slug.startsWith('@') ? slug.slice(1) : slug}/bin/relay-preamble.sh"
69
+ [ -f "$_PREAMBLE" ] && bash "$_PREAMBLE" 2>/dev/null || echo "RELAY_READY: ${slug}"
19
70
  \`\`\`
20
71
 
21
72
  If output shows \`CLI_UPGRADE_AVAILABLE <old> <new>\`: tell user "relay v{new} available. Run: npm update -g relayax-cli"
22
73
  If output shows \`TEAM_UPGRADE_AVAILABLE\`: tell user "${slug} v{new} available (by @{author}). Run: relay update ${slug}"
23
74
  ${PREAMBLE_END}`;
24
75
  }
76
+ /**
77
+ * teamDir에 bin/relay-preamble.sh를 생성한다.
78
+ */
79
+ function generatePreambleBin(teamDir, slug, apiUrl) {
80
+ const binDir = path_1.default.join(teamDir, 'bin');
81
+ if (!fs_1.default.existsSync(binDir)) {
82
+ fs_1.default.mkdirSync(binDir, { recursive: true });
83
+ }
84
+ const scriptPath = path_1.default.join(binDir, 'relay-preamble.sh');
85
+ fs_1.default.writeFileSync(scriptPath, generatePreambleScript(slug, apiUrl));
86
+ fs_1.default.chmodSync(scriptPath, 0o755);
87
+ }
25
88
  /**
26
89
  * frontmatter(---...---) 뒤에 preamble을 삽입한다.
27
90
  * frontmatter가 없으면 파일 맨 앞에 삽입한다.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "relayax-cli",
3
- "version": "0.2.25",
3
+ "version": "0.2.27",
4
4
  "description": "RelayAX Agent Team Marketplace CLI - Install and manage agent teams",
5
5
  "main": "dist/index.js",
6
6
  "bin": {