@agentteams/runner 0.0.61-dev.111 → 0.0.61-dev.113

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.
@@ -9,6 +9,7 @@ const COOLDOWN_MS = 60 * 60 * 1000; // 1시간
9
9
  let lastCliUpdateAttempt = 0;
10
10
  let lastRunnerUpdateAttempt = 0;
11
11
  let lastSuccessfulRunnerVersion = null;
12
+ let lastNotifiedRunnerVersion = null;
12
13
  const getCurrentRunnerVersion = () => packageJson.version ?? "0.0.0";
13
14
  const getInstalledCliVersion = (deps) => {
14
15
  try {
@@ -68,7 +69,8 @@ export const maybeAutoUpdate = async (meta, deps = {}) => {
68
69
  if (meta.runnerLatestVersion && now - lastRunnerUpdateAttempt >= COOLDOWN_MS) {
69
70
  lastRunnerUpdateAttempt = now;
70
71
  const currentRunnerVersion = getCurrentRunnerVersion();
71
- if (needsUpdate(currentRunnerVersion, meta.runnerLatestVersion) && lastSuccessfulRunnerVersion !== meta.runnerLatestVersion) {
72
+ const isAlreadyInstalled = lastSuccessfulRunnerVersion === meta.runnerLatestVersion;
73
+ if (!isAlreadyInstalled && needsUpdate(currentRunnerVersion, meta.runnerLatestVersion)) {
72
74
  try {
73
75
  resolvedLogger.info("Auto-updating Runner", {
74
76
  currentVersion: currentRunnerVersion,
@@ -82,16 +84,6 @@ export const maybeAutoUpdate = async (meta, deps = {}) => {
82
84
  resolvedLogger.info("Runner auto-update completed — restart required", {
83
85
  version: meta.runnerLatestVersion
84
86
  });
85
- if (deps.onRunnerUpdated) {
86
- try {
87
- await deps.onRunnerUpdated(meta.runnerLatestVersion);
88
- }
89
- catch (notifyError) {
90
- resolvedLogger.error("Failed to notify runner update", {
91
- error: notifyError instanceof Error ? notifyError.message : String(notifyError)
92
- });
93
- }
94
- }
95
87
  }
96
88
  catch (error) {
97
89
  resolvedLogger.error("Runner auto-update failed", {
@@ -100,6 +92,19 @@ export const maybeAutoUpdate = async (meta, deps = {}) => {
100
92
  }
101
93
  }
102
94
  }
95
+ // Runner 알림: 설치 성공 후 알림 미완료 시 매 폴링마다 재시도
96
+ if (meta.runnerLatestVersion && lastSuccessfulRunnerVersion === meta.runnerLatestVersion
97
+ && lastNotifiedRunnerVersion !== meta.runnerLatestVersion && deps.onRunnerUpdated) {
98
+ try {
99
+ await deps.onRunnerUpdated(meta.runnerLatestVersion);
100
+ lastNotifiedRunnerVersion = meta.runnerLatestVersion;
101
+ }
102
+ catch (notifyError) {
103
+ resolvedLogger.error("Failed to notify runner update", {
104
+ error: notifyError instanceof Error ? notifyError.message : String(notifyError)
105
+ });
106
+ }
107
+ }
103
108
  return { cliUpdated, runnerUpdated };
104
109
  };
105
110
  /** 테스트용: 쿨다운 타이머 리셋 */
@@ -107,5 +112,6 @@ export const resetAutoUpdateState = () => {
107
112
  lastCliUpdateAttempt = 0;
108
113
  lastRunnerUpdateAttempt = 0;
109
114
  lastSuccessfulRunnerVersion = null;
115
+ lastNotifiedRunnerVersion = null;
110
116
  };
111
117
  //# sourceMappingURL=auto-update.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auto-update.js","sourceRoot":"","sources":["../../src/utils/auto-update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-update.js","sourceRoot":"","sources":["../../src/utils/auto-update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,100 @@
1
+ import { test } from "node:test";
2
+ import assert from "node:assert/strict";
3
+ import { maybeAutoUpdate, resetAutoUpdateState } from "./auto-update.js";
4
+ test("maybeAutoUpdate calls onRunnerUpdated after successful install", async () => {
5
+ resetAutoUpdateState();
6
+ let installCalled = false;
7
+ let notifiedVersion = null;
8
+ const deps = {
9
+ runExecutableSync: (name, args) => {
10
+ if (name === "npm" && args[0] === "install") {
11
+ installCalled = true;
12
+ }
13
+ return "";
14
+ },
15
+ logger: {
16
+ info: () => { },
17
+ warn: () => { },
18
+ error: () => { }
19
+ },
20
+ now: () => Date.now(),
21
+ onRunnerUpdated: async (version) => {
22
+ notifiedVersion = version;
23
+ }
24
+ };
25
+ const meta = {
26
+ cliLatestVersion: null,
27
+ runnerLatestVersion: "99.9.9",
28
+ };
29
+ await maybeAutoUpdate(meta, deps);
30
+ assert.ok(installCalled, "installPackage should be called");
31
+ assert.equal(notifiedVersion, "99.9.9", "onRunnerUpdated should be called with new version");
32
+ });
33
+ test("maybeAutoUpdate does not call onRunnerUpdated again if it already succeeded for that version", async () => {
34
+ resetAutoUpdateState();
35
+ let installCount = 0;
36
+ let notifyCount = 0;
37
+ const deps = {
38
+ runExecutableSync: () => {
39
+ installCount++;
40
+ return "";
41
+ },
42
+ logger: {
43
+ info: () => { },
44
+ warn: () => { },
45
+ error: () => { }
46
+ },
47
+ now: () => Date.now(),
48
+ onRunnerUpdated: async () => {
49
+ notifyCount++;
50
+ }
51
+ };
52
+ const meta = {
53
+ cliLatestVersion: null,
54
+ runnerLatestVersion: "99.9.9",
55
+ };
56
+ // First call
57
+ await maybeAutoUpdate(meta, deps);
58
+ assert.equal(installCount, 1);
59
+ assert.equal(notifyCount, 1);
60
+ // Second call with same version
61
+ await maybeAutoUpdate(meta, { ...deps, now: () => Date.now() + 60 * 60 * 1000 + 1 });
62
+ assert.equal(installCount, 1, "should not install again");
63
+ assert.equal(notifyCount, 1, "should not notify again");
64
+ });
65
+ test("maybeAutoUpdate RETRIES notification if it failed before", async () => {
66
+ resetAutoUpdateState();
67
+ let notifyCount = 0;
68
+ let shouldFailNotify = true;
69
+ const deps = {
70
+ runExecutableSync: () => "",
71
+ logger: {
72
+ info: () => { },
73
+ warn: () => { },
74
+ error: () => { }
75
+ },
76
+ now: () => 10000000,
77
+ onRunnerUpdated: async () => {
78
+ if (shouldFailNotify) {
79
+ shouldFailNotify = false;
80
+ throw new Error("Network error");
81
+ }
82
+ notifyCount++;
83
+ }
84
+ };
85
+ const meta = {
86
+ cliLatestVersion: null,
87
+ runnerLatestVersion: "99.9.9",
88
+ };
89
+ // First call: install succeeds, notification fails
90
+ console.log("First call starting...");
91
+ await maybeAutoUpdate(meta, deps);
92
+ console.log("First call done. notifyCount:", notifyCount);
93
+ assert.equal(notifyCount, 0, "Notification should have failed");
94
+ // Second call: after cooldown
95
+ console.log("Second call starting...");
96
+ await maybeAutoUpdate(meta, { ...deps, now: () => 10000000 + 60 * 60 * 1000 + 1 });
97
+ console.log("Second call done. notifyCount:", notifyCount);
98
+ assert.equal(notifyCount, 1, "Should retry notification successfully");
99
+ });
100
+ //# sourceMappingURL=auto-update.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-update.test.js","sourceRoot":"","sources":["../../src/utils/auto-update.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentteams/runner",
3
- "version": "0.0.61-dev.111",
3
+ "version": "0.0.61-dev.113",
4
4
  "description": "AgentRunner - Background runner that polls and executes AI agent tasks",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",