@rk0429/agentic-relay 19.14.3 → 20.0.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.
@@ -1,3 +1,10 @@
1
+ export type PackageManagerKind = "npm" | "pnpm" | "volta" | "unknown";
2
+ export interface PackageManagerInfo {
3
+ kind: PackageManagerKind;
4
+ command: string;
5
+ installArgs: (pkg: string) => string[];
6
+ listArgs: (pkg: string) => string[];
7
+ }
1
8
  export interface UpdateCheckResult {
2
9
  currentVersion: string;
3
10
  latestVersion: string;
@@ -11,4 +18,13 @@ export declare function verifyInstalledVersion(expectedVersion: string): Promise
11
18
  }>;
12
19
  export declare function getCurrentVersion(): Promise<string>;
13
20
  export declare function isNewerVersion(current: string, latest: string): boolean;
14
- export declare function detectPackageManager(): string;
21
+ /**
22
+ * Detect which package manager installed the currently running agentic-relay.
23
+ *
24
+ * Uses `import.meta.filename` (symlink-resolved absolute path of the current
25
+ * module) to identify the installation directory, then matches against known
26
+ * directory patterns for each package manager.
27
+ *
28
+ * @param modulePathOverride - Override the module path for testing.
29
+ */
30
+ export declare function detectPackageManager(modulePathOverride?: string): PackageManagerInfo;
@@ -18,49 +18,70 @@ export async function checkForUpdate() {
18
18
  }
19
19
  export async function performUpdate(check) {
20
20
  const pm = detectPackageManager();
21
- const args = pm === "pnpm"
22
- ? ["add", "-g", `${PACKAGE_NAME}@${check.latestVersion}`]
23
- : ["install", "-g", `${PACKAGE_NAME}@${check.latestVersion}`];
21
+ if (pm.kind === "unknown") {
22
+ throw new Error("Could not determine the package manager that installed agentic-relay.\n" +
23
+ "Please update manually using the package manager you used to install it.");
24
+ }
25
+ const args = pm.installArgs(`${PACKAGE_NAME}@${check.latestVersion}`);
24
26
  const exitCode = await new Promise((resolve, reject) => {
25
- const child = crossSpawn(pm, args, { stdio: "inherit" });
27
+ const child = crossSpawn(pm.command, args, { stdio: "inherit" });
26
28
  child.on("error", reject);
27
29
  child.on("close", (code) => resolve(code ?? 1));
28
30
  });
29
31
  if (exitCode !== 0) {
30
- throw new Error(`${pm} exited with code ${exitCode}.\nManual update: ${pm} ${args.join(" ")}`);
32
+ throw new Error(`${pm.command} exited with code ${exitCode}.\nManual update: ${pm.command} ${args.join(" ")}`);
31
33
  }
32
34
  }
33
35
  export async function verifyInstalledVersion(expectedVersion) {
34
36
  const pm = detectPackageManager();
35
- const args = pm === "pnpm"
36
- ? ["list", "-g", PACKAGE_NAME, "--json"]
37
- : ["ls", "-g", PACKAGE_NAME, "--json"];
37
+ if (pm.kind === "unknown") {
38
+ return { installed: "unknown", match: false };
39
+ }
40
+ if (pm.kind === "volta") {
41
+ const installed = await getVoltaInstalledVersion();
42
+ return { installed, match: installed === expectedVersion };
43
+ }
44
+ const args = pm.listArgs(PACKAGE_NAME);
38
45
  const output = await new Promise((resolve, reject) => {
39
46
  let stdout = "";
40
- const child = crossSpawn(pm, args, { stdio: ["ignore", "pipe", "ignore"] });
47
+ const child = crossSpawn(pm.command, args, { stdio: ["ignore", "pipe", "ignore"] });
41
48
  child.stdout?.on("data", (chunk) => {
42
49
  stdout += chunk.toString();
43
50
  });
44
51
  child.on("error", reject);
45
52
  child.on("close", () => resolve(stdout));
46
53
  });
47
- const installed = parseInstalledVersion(output, pm);
54
+ const installed = parseInstalledVersion(output, pm.kind);
48
55
  return { installed, match: installed === expectedVersion };
49
56
  }
50
- function parseInstalledVersion(json, pm) {
57
+ function parseInstalledVersion(json, _kind) {
51
58
  try {
52
59
  const data = JSON.parse(json);
53
- if (pm === "pnpm") {
54
- const deps = data.dependencies;
55
- return deps?.[PACKAGE_NAME]?.version ?? "unknown";
56
- }
57
- const deps = data.dependencies;
58
- return deps?.[PACKAGE_NAME]?.version ?? "unknown";
60
+ return data.dependencies?.[PACKAGE_NAME]?.version ?? "unknown";
59
61
  }
60
62
  catch {
61
63
  return "unknown";
62
64
  }
63
65
  }
66
+ async function getVoltaInstalledVersion() {
67
+ const output = await new Promise((resolve, reject) => {
68
+ let stdout = "";
69
+ const child = crossSpawn("volta", ["list", PACKAGE_NAME, "--format=plain"], {
70
+ stdio: ["ignore", "pipe", "ignore"],
71
+ });
72
+ child.stdout?.on("data", (chunk) => {
73
+ stdout += chunk.toString();
74
+ });
75
+ child.on("error", reject);
76
+ child.on("close", () => resolve(stdout));
77
+ });
78
+ // volta list output format: "package @rk0429/agentic-relay@19.14.3 (default)"
79
+ const match = new RegExp(`${escapeRegExp(PACKAGE_NAME)}@(\\S+)`).exec(output);
80
+ return match?.[1] ?? "unknown";
81
+ }
82
+ function escapeRegExp(s) {
83
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
84
+ }
64
85
  export async function getCurrentVersion() {
65
86
  const dirname = path.dirname(fileURLToPath(import.meta.url));
66
87
  const packageJsonPath = path.resolve(dirname, "..", "..", "package.json");
@@ -92,11 +113,65 @@ export function isNewerVersion(current, latest) {
92
113
  }
93
114
  return false;
94
115
  }
95
- export function detectPackageManager() {
96
- const scriptPath = process.argv[1] ?? "";
97
- if (scriptPath.includes("/pnpm/") || scriptPath.includes("/.pnpm/")) {
116
+ const PM_INFO = {
117
+ npm: {
118
+ command: "npm",
119
+ installArgs: (pkg) => ["install", "-g", pkg],
120
+ listArgs: (pkg) => ["ls", "-g", pkg, "--json"],
121
+ },
122
+ pnpm: {
123
+ command: "pnpm",
124
+ installArgs: (pkg) => ["add", "-g", pkg],
125
+ listArgs: (pkg) => ["list", "-g", pkg, "--json"],
126
+ },
127
+ volta: {
128
+ command: "volta",
129
+ installArgs: (pkg) => ["install", pkg],
130
+ listArgs: (pkg) => ["list", pkg, "--format=plain"],
131
+ },
132
+ };
133
+ /**
134
+ * Detect which package manager installed the currently running agentic-relay.
135
+ *
136
+ * Uses `import.meta.filename` (symlink-resolved absolute path of the current
137
+ * module) to identify the installation directory, then matches against known
138
+ * directory patterns for each package manager.
139
+ *
140
+ * @param modulePathOverride - Override the module path for testing.
141
+ */
142
+ export function detectPackageManager(modulePathOverride) {
143
+ const modulePath = normalisePathSeparators(modulePathOverride ?? import.meta.filename ?? fileURLToPath(import.meta.url));
144
+ const kind = classifyInstallPath(modulePath);
145
+ if (kind === "unknown") {
146
+ return {
147
+ kind: "unknown",
148
+ command: "",
149
+ installArgs: () => [],
150
+ listArgs: () => [],
151
+ };
152
+ }
153
+ return { kind, ...PM_INFO[kind] };
154
+ }
155
+ function classifyInstallPath(modulePath) {
156
+ // Volta: $VOLTA_HOME/tools/image/packages/<pkg>/...
157
+ if (/\/tools\/image\/packages\//i.test(modulePath)) {
158
+ return "volta";
159
+ }
160
+ // pnpm: {pnpmHome}/global/v11/... or legacy global/5/...
161
+ if (/\/pnpm\/global\/(?:v?\d+)\//i.test(modulePath)) {
162
+ return "pnpm";
163
+ }
164
+ // pnpm: also match /.pnpm/ (store-based layout)
165
+ if (/\/\.pnpm\//i.test(modulePath)) {
98
166
  return "pnpm";
99
167
  }
100
- return "npm";
168
+ // npm: {prefix}/lib/node_modules/<pkg>/... or {prefix}/node_modules/<pkg>/...
169
+ if (/\/node_modules\//i.test(modulePath)) {
170
+ return "npm";
171
+ }
172
+ return "unknown";
173
+ }
174
+ function normalisePathSeparators(p) {
175
+ return p.replace(/\\/g, "/");
101
176
  }
102
177
  //# sourceMappingURL=self-update.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/application/self-update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/application/self-update.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export interface WorkflowExecutionDeps {
12
12
  executeAgentStep: AgentStepExecutor;
13
13
  executeCommand: CommandExecutor;
14
14
  workflowRepo: WorkflowFileRepository;
15
+ readFile: (path: string, encoding: BufferEncoding) => Promise<string>;
15
16
  }
16
17
  export interface AgentStepExecutor {
17
18
  execute(opts: {
@@ -116,11 +117,15 @@ export declare class WorkflowExecutionService {
116
117
  private finalizeRootResult;
117
118
  private persistInterruptState;
118
119
  private runWorkflowFrame;
120
+ private handlePendingExitCondition;
121
+ private beginNewIterationIfNeeded;
122
+ private executeIterationSteps;
119
123
  private resumeFrames;
120
124
  private resumeParentFrames;
121
125
  private executeStep;
122
126
  private runSubWorkflow;
123
127
  private evaluateExitCondition;
128
+ private evaluateExitConditionsAt;
124
129
  private handleStepFailure;
125
130
  private logNewlySkippedSteps;
126
131
  private reportProgress;
@@ -134,9 +139,11 @@ export declare class WorkflowExecutionService {
134
139
  private buildExitConditionCheckpoint;
135
140
  private rebaseInterruptState;
136
141
  private getNextStepIdAfter;
142
+ private getContinuationStepId;
137
143
  private getStepIndex;
138
144
  private getStepDefinition;
139
- private requireCompletedStepResult;
145
+ private resolveExitConditionTargetStepId;
146
+ private findCompletedStepResult;
140
147
  private findTerminalCompletedResult;
141
148
  private toPublicResult;
142
149
  private assertFrameMatchesWorkflow;