agent-relay 2.3.13 → 2.3.14
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/package.json +20 -20
- package/packages/acp-bridge/package.json +2 -2
- package/packages/bridge/package.json +7 -7
- package/packages/broker-sdk/dist/protocol.d.ts +4 -0
- package/packages/broker-sdk/dist/protocol.d.ts.map +1 -1
- package/packages/broker-sdk/dist/relay.d.ts +6 -0
- package/packages/broker-sdk/dist/relay.d.ts.map +1 -1
- package/packages/broker-sdk/dist/relay.js +8 -0
- package/packages/broker-sdk/dist/relay.js.map +1 -1
- package/packages/broker-sdk/dist/relaycast.d.ts +9 -3
- package/packages/broker-sdk/dist/relaycast.d.ts.map +1 -1
- package/packages/broker-sdk/dist/relaycast.js +42 -8
- package/packages/broker-sdk/dist/relaycast.js.map +1 -1
- package/packages/broker-sdk/dist/workflows/runner.d.ts +4 -0
- package/packages/broker-sdk/dist/workflows/runner.d.ts.map +1 -1
- package/packages/broker-sdk/dist/workflows/runner.js +87 -25
- package/packages/broker-sdk/dist/workflows/runner.js.map +1 -1
- package/packages/broker-sdk/package.json +2 -2
- package/packages/broker-sdk/src/protocol.ts +5 -0
- package/packages/broker-sdk/src/relay.ts +11 -0
- package/packages/broker-sdk/src/relaycast.ts +45 -9
- package/packages/broker-sdk/src/workflows/README.md +30 -0
- package/packages/broker-sdk/src/workflows/runner.ts +112 -25
- package/packages/config/package.json +2 -2
- package/packages/continuity/package.json +2 -2
- package/packages/daemon/package.json +12 -12
- package/packages/hooks/package.json +4 -4
- package/packages/mcp/package.json +5 -5
- package/packages/memory/package.json +2 -2
- package/packages/policy/package.json +2 -2
- package/packages/protocol/package.json +1 -1
- package/packages/resiliency/package.json +1 -1
- package/packages/sdk/package.json +3 -3
- package/packages/spawner/package.json +1 -1
- package/packages/state/package.json +1 -1
- package/packages/storage/package.json +2 -2
- package/packages/telemetry/package.json +1 -1
- package/packages/trajectory/package.json +2 -2
- package/packages/user-directory/package.json +2 -2
- package/packages/utils/package.json +3 -3
- package/packages/wrapper/package.json +5 -5
|
@@ -125,18 +125,24 @@ export class WorkflowRunner {
|
|
|
125
125
|
private async ensureRelaycastApiKey(channel: string): Promise<void> {
|
|
126
126
|
if (process.env.RELAY_API_KEY) return;
|
|
127
127
|
|
|
128
|
-
// Check cached credentials
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
128
|
+
// Check cached credentials — prefer per-project cache (written by the local
|
|
129
|
+
// relay daemon) over the legacy global cache so concurrent workflows from
|
|
130
|
+
// different repos never stomp each other's credentials.
|
|
131
|
+
const projectCachePath = path.join(this.cwd, '.agent-relay', 'relaycast.json');
|
|
132
|
+
const globalCachePath = path.join(homedir(), '.agent-relay', 'relaycast.json');
|
|
133
|
+
|
|
134
|
+
for (const cachePath of [projectCachePath, globalCachePath]) {
|
|
135
|
+
if (existsSync(cachePath)) {
|
|
136
|
+
try {
|
|
137
|
+
const raw = await readFile(cachePath, 'utf-8');
|
|
138
|
+
const creds = JSON.parse(raw);
|
|
139
|
+
if (creds.api_key) {
|
|
140
|
+
process.env.RELAY_API_KEY = creds.api_key;
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
} catch {
|
|
144
|
+
// Cache corrupt — try next path
|
|
137
145
|
}
|
|
138
|
-
} catch {
|
|
139
|
-
// Cache corrupt — fall through to auto-create
|
|
140
146
|
}
|
|
141
147
|
}
|
|
142
148
|
|
|
@@ -164,11 +170,12 @@ export class WorkflowRunner {
|
|
|
164
170
|
throw new Error('Relaycast workspace response missing api_key');
|
|
165
171
|
}
|
|
166
172
|
|
|
167
|
-
// Cache credentials
|
|
168
|
-
|
|
173
|
+
// Cache credentials in the per-project directory so concurrent workflows
|
|
174
|
+
// from different repos each get their own workspace credentials.
|
|
175
|
+
const cacheDir = path.dirname(projectCachePath);
|
|
169
176
|
await mkdir(cacheDir, { recursive: true, mode: 0o700 });
|
|
170
177
|
await writeFile(
|
|
171
|
-
|
|
178
|
+
projectCachePath,
|
|
172
179
|
JSON.stringify({
|
|
173
180
|
workspace_id: workspaceId,
|
|
174
181
|
api_key: apiKey,
|
|
@@ -494,7 +501,10 @@ export class WorkflowRunner {
|
|
|
494
501
|
});
|
|
495
502
|
|
|
496
503
|
// Create the dedicated workflow channel and join it
|
|
497
|
-
this.relaycastApi = new RelaycastApi({
|
|
504
|
+
this.relaycastApi = new RelaycastApi({
|
|
505
|
+
agentName: 'WorkflowRunner',
|
|
506
|
+
cachePath: path.join(this.cwd, '.agent-relay', 'relaycast.json'),
|
|
507
|
+
});
|
|
498
508
|
await this.relaycastApi.createChannel(channel, workflow.description);
|
|
499
509
|
await this.relaycastApi.joinChannel(channel);
|
|
500
510
|
this.postToChannel(
|
|
@@ -522,7 +532,6 @@ export class WorkflowRunner {
|
|
|
522
532
|
if (allCompleted) {
|
|
523
533
|
await this.updateRunStatus(runId, 'completed');
|
|
524
534
|
this.emit({ type: 'run:completed', runId });
|
|
525
|
-
this.postToChannel(`Workflow **${workflow.name}** completed — all steps passed`);
|
|
526
535
|
|
|
527
536
|
// Complete trajectory with summary
|
|
528
537
|
const outcomes = this.collectOutcomes(stepStates, workflow.steps);
|
|
@@ -532,12 +541,17 @@ export class WorkflowRunner {
|
|
|
532
541
|
learnings: this.trajectory.extractLearnings(outcomes),
|
|
533
542
|
challenges: this.trajectory.extractChallenges(outcomes),
|
|
534
543
|
});
|
|
544
|
+
|
|
545
|
+
// Post rich completion report to channel
|
|
546
|
+
this.postCompletionReport(workflow.name, outcomes, summary, confidence);
|
|
535
547
|
} else {
|
|
536
548
|
const failedStep = [...stepStates.values()].find((s) => s.row.status === 'failed');
|
|
537
549
|
const errorMsg = failedStep?.row.error ?? 'One or more steps failed';
|
|
538
550
|
await this.updateRunStatus(runId, 'failed', errorMsg);
|
|
539
551
|
this.emit({ type: 'run:failed', runId, error: errorMsg });
|
|
540
|
-
|
|
552
|
+
|
|
553
|
+
const outcomes = this.collectOutcomes(stepStates, workflow.steps);
|
|
554
|
+
this.postFailureReport(workflow.name, outcomes, errorMsg);
|
|
541
555
|
|
|
542
556
|
// Abandon trajectory on failure
|
|
543
557
|
await this.trajectory.abandon(errorMsg);
|
|
@@ -549,7 +563,7 @@ export class WorkflowRunner {
|
|
|
549
563
|
|
|
550
564
|
if (status === 'cancelled') {
|
|
551
565
|
this.emit({ type: 'run:cancelled', runId });
|
|
552
|
-
this.postToChannel(`Workflow cancelled`);
|
|
566
|
+
this.postToChannel(`Workflow **${workflow.name}** cancelled`);
|
|
553
567
|
await this.trajectory.abandon('Cancelled by user');
|
|
554
568
|
} else {
|
|
555
569
|
this.emit({ type: 'run:failed', runId, error: errorMsg });
|
|
@@ -632,7 +646,10 @@ export class WorkflowRunner {
|
|
|
632
646
|
});
|
|
633
647
|
|
|
634
648
|
// Ensure channel exists and join it for resumed runs
|
|
635
|
-
this.relaycastApi = new RelaycastApi({
|
|
649
|
+
this.relaycastApi = new RelaycastApi({
|
|
650
|
+
agentName: 'WorkflowRunner',
|
|
651
|
+
cachePath: path.join(this.cwd, '.agent-relay', 'relaycast.json'),
|
|
652
|
+
});
|
|
636
653
|
await this.relaycastApi.createChannel(resumeChannel);
|
|
637
654
|
await this.relaycastApi.joinChannel(resumeChannel);
|
|
638
655
|
this.postToChannel(
|
|
@@ -653,7 +670,6 @@ export class WorkflowRunner {
|
|
|
653
670
|
if (allCompleted) {
|
|
654
671
|
await this.updateRunStatus(runId, 'completed');
|
|
655
672
|
this.emit({ type: 'run:completed', runId });
|
|
656
|
-
this.postToChannel(`Workflow **${workflow.name}** completed — all steps passed`);
|
|
657
673
|
|
|
658
674
|
const outcomes = this.collectOutcomes(stepStates, workflow.steps);
|
|
659
675
|
const summary = this.trajectory.buildRunSummary(outcomes);
|
|
@@ -662,12 +678,16 @@ export class WorkflowRunner {
|
|
|
662
678
|
learnings: this.trajectory.extractLearnings(outcomes),
|
|
663
679
|
challenges: this.trajectory.extractChallenges(outcomes),
|
|
664
680
|
});
|
|
681
|
+
|
|
682
|
+
this.postCompletionReport(workflow.name, outcomes, summary, confidence);
|
|
665
683
|
} else {
|
|
666
684
|
const failedStep = [...stepStates.values()].find((s) => s.row.status === 'failed');
|
|
667
685
|
const errorMsg = failedStep?.row.error ?? 'One or more steps failed';
|
|
668
686
|
await this.updateRunStatus(runId, 'failed', errorMsg);
|
|
669
687
|
this.emit({ type: 'run:failed', runId, error: errorMsg });
|
|
670
|
-
|
|
688
|
+
|
|
689
|
+
const outcomes = this.collectOutcomes(stepStates, workflow.steps);
|
|
690
|
+
this.postFailureReport(workflow.name, outcomes, errorMsg);
|
|
671
691
|
await this.trajectory.abandon(errorMsg);
|
|
672
692
|
}
|
|
673
693
|
} catch (err) {
|
|
@@ -934,7 +954,7 @@ export class WorkflowRunner {
|
|
|
934
954
|
const agentName = `${step.name}-${this.generateShortId()}`;
|
|
935
955
|
const taskWithExit = step.task + '\n\n---\n' +
|
|
936
956
|
'IMPORTANT: When you have fully completed this task, you MUST self-terminate by calling ' +
|
|
937
|
-
`the MCP tool:
|
|
957
|
+
`the MCP tool: remove_agent(name="${agentName}", reason="Task completed"). ` +
|
|
938
958
|
'Do not wait for further input — release yourself immediately after finishing.';
|
|
939
959
|
|
|
940
960
|
const agentChannels = this.channel ? [this.channel] : agentDef.channels;
|
|
@@ -948,12 +968,18 @@ export class WorkflowRunner {
|
|
|
948
968
|
idleThresholdSecs: agentDef.constraints?.idleThresholdSecs,
|
|
949
969
|
});
|
|
950
970
|
|
|
951
|
-
// Register the spawned agent in Relaycast for observability
|
|
971
|
+
// Register the spawned agent in Relaycast for observability + start heartbeat
|
|
972
|
+
let stopHeartbeat: (() => void) | undefined;
|
|
952
973
|
if (this.relaycastApi) {
|
|
953
|
-
await this.relaycastApi.registerExternalAgent(
|
|
974
|
+
const agentClient = await this.relaycastApi.registerExternalAgent(
|
|
954
975
|
agent.name,
|
|
955
976
|
`Workflow agent for step "${step.name}" (${agentDef.cli})`,
|
|
956
|
-
).catch(() =>
|
|
977
|
+
).catch(() => null);
|
|
978
|
+
|
|
979
|
+
// Keep the agent online in the dashboard while it's working
|
|
980
|
+
if (agentClient) {
|
|
981
|
+
stopHeartbeat = this.relaycastApi.startHeartbeat(agentClient);
|
|
982
|
+
}
|
|
957
983
|
}
|
|
958
984
|
|
|
959
985
|
// Invite the spawned agent to the workflow channel
|
|
@@ -970,6 +996,9 @@ export class WorkflowRunner {
|
|
|
970
996
|
// Wait for agent to exit (self-termination via /exit)
|
|
971
997
|
const exitResult = await agent.waitForExit(timeoutMs);
|
|
972
998
|
|
|
999
|
+
// Stop heartbeat now that agent has exited
|
|
1000
|
+
stopHeartbeat?.();
|
|
1001
|
+
|
|
973
1002
|
if (exitResult === 'timeout') {
|
|
974
1003
|
// Safety net: check if the verification file exists before giving up.
|
|
975
1004
|
// The agent may have completed work but failed to /exit.
|
|
@@ -1132,6 +1161,64 @@ export class WorkflowRunner {
|
|
|
1132
1161
|
});
|
|
1133
1162
|
}
|
|
1134
1163
|
|
|
1164
|
+
/** Post a rich completion report to the channel. */
|
|
1165
|
+
private postCompletionReport(
|
|
1166
|
+
workflowName: string,
|
|
1167
|
+
outcomes: StepOutcome[],
|
|
1168
|
+
summary: string,
|
|
1169
|
+
confidence: number,
|
|
1170
|
+
): void {
|
|
1171
|
+
const completed = outcomes.filter((o) => o.status === 'completed');
|
|
1172
|
+
const skipped = outcomes.filter((o) => o.status === 'skipped');
|
|
1173
|
+
const retried = outcomes.filter((o) => o.attempts > 1);
|
|
1174
|
+
|
|
1175
|
+
const lines: string[] = [
|
|
1176
|
+
`## Workflow **${workflowName}** — Complete`,
|
|
1177
|
+
'',
|
|
1178
|
+
summary,
|
|
1179
|
+
`Confidence: ${Math.round(confidence * 100)}%`,
|
|
1180
|
+
'',
|
|
1181
|
+
'### Steps',
|
|
1182
|
+
...completed.map((o) =>
|
|
1183
|
+
`- **${o.name}** (${o.agent}) — passed${o.verificationPassed ? ' (verified)' : ''}${o.attempts > 1 ? ` after ${o.attempts} attempts` : ''}`,
|
|
1184
|
+
),
|
|
1185
|
+
...skipped.map((o) => `- **${o.name}** — skipped`),
|
|
1186
|
+
];
|
|
1187
|
+
|
|
1188
|
+
if (retried.length > 0) {
|
|
1189
|
+
lines.push('', '### Retries');
|
|
1190
|
+
for (const o of retried) {
|
|
1191
|
+
lines.push(`- ${o.name}: ${o.attempts} attempts`);
|
|
1192
|
+
}
|
|
1193
|
+
}
|
|
1194
|
+
|
|
1195
|
+
this.postToChannel(lines.join('\n'));
|
|
1196
|
+
}
|
|
1197
|
+
|
|
1198
|
+
/** Post a failure report to the channel. */
|
|
1199
|
+
private postFailureReport(
|
|
1200
|
+
workflowName: string,
|
|
1201
|
+
outcomes: StepOutcome[],
|
|
1202
|
+
errorMsg: string,
|
|
1203
|
+
): void {
|
|
1204
|
+
const completed = outcomes.filter((o) => o.status === 'completed');
|
|
1205
|
+
const failed = outcomes.filter((o) => o.status === 'failed');
|
|
1206
|
+
const skipped = outcomes.filter((o) => o.status === 'skipped');
|
|
1207
|
+
|
|
1208
|
+
const lines: string[] = [
|
|
1209
|
+
`## Workflow **${workflowName}** — Failed`,
|
|
1210
|
+
'',
|
|
1211
|
+
`${completed.length}/${outcomes.length} steps passed. Error: ${errorMsg}`,
|
|
1212
|
+
'',
|
|
1213
|
+
'### Steps',
|
|
1214
|
+
...completed.map((o) => `- **${o.name}** (${o.agent}) — passed`),
|
|
1215
|
+
...failed.map((o) => `- **${o.name}** (${o.agent}) — FAILED: ${o.error ?? 'unknown'}`),
|
|
1216
|
+
...skipped.map((o) => `- **${o.name}** — skipped`),
|
|
1217
|
+
];
|
|
1218
|
+
|
|
1219
|
+
this.postToChannel(lines.join('\n'));
|
|
1220
|
+
}
|
|
1221
|
+
|
|
1135
1222
|
// ── Trajectory helpers ────────────────────────────────────────────────
|
|
1136
1223
|
|
|
1137
1224
|
/** Analyze DAG structure for trajectory context. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/config",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.14",
|
|
4
4
|
"description": "Shared configuration schemas and loaders for Agent Relay",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"test:watch": "vitest"
|
|
84
84
|
},
|
|
85
85
|
"dependencies": {
|
|
86
|
-
"@agent-relay/protocol": "2.3.
|
|
86
|
+
"@agent-relay/protocol": "2.3.14",
|
|
87
87
|
"zod": "^3.23.8",
|
|
88
88
|
"zod-to-json-schema": "^3.23.1"
|
|
89
89
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/continuity",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.14",
|
|
4
4
|
"description": "Session continuity manager for Relay (ledgers, handoffs, resume)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"test:watch": "vitest"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@agent-relay/memory": "2.3.
|
|
25
|
+
"@agent-relay/memory": "2.3.14"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/node": "^22.19.3",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/daemon",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.14",
|
|
4
4
|
"description": "Relay daemon server - agent coordination and message routing",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,17 +22,17 @@
|
|
|
22
22
|
"test:watch": "vitest"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@agent-relay/protocol": "2.3.
|
|
26
|
-
"@agent-relay/config": "2.3.
|
|
27
|
-
"@agent-relay/storage": "2.3.
|
|
28
|
-
"@agent-relay/bridge": "2.3.
|
|
29
|
-
"@agent-relay/utils": "2.3.
|
|
30
|
-
"@agent-relay/policy": "2.3.
|
|
31
|
-
"@agent-relay/memory": "2.3.
|
|
32
|
-
"@agent-relay/resiliency": "2.3.
|
|
33
|
-
"@agent-relay/user-directory": "2.3.
|
|
34
|
-
"@agent-relay/wrapper": "2.3.
|
|
35
|
-
"@agent-relay/telemetry": "2.3.
|
|
25
|
+
"@agent-relay/protocol": "2.3.14",
|
|
26
|
+
"@agent-relay/config": "2.3.14",
|
|
27
|
+
"@agent-relay/storage": "2.3.14",
|
|
28
|
+
"@agent-relay/bridge": "2.3.14",
|
|
29
|
+
"@agent-relay/utils": "2.3.14",
|
|
30
|
+
"@agent-relay/policy": "2.3.14",
|
|
31
|
+
"@agent-relay/memory": "2.3.14",
|
|
32
|
+
"@agent-relay/resiliency": "2.3.14",
|
|
33
|
+
"@agent-relay/user-directory": "2.3.14",
|
|
34
|
+
"@agent-relay/wrapper": "2.3.14",
|
|
35
|
+
"@agent-relay/telemetry": "2.3.14",
|
|
36
36
|
"ws": "^8.18.3",
|
|
37
37
|
"pg": "^8.16.3",
|
|
38
38
|
"uuid": "^10.0.0"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/hooks",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.14",
|
|
4
4
|
"description": "Hook emitter, registry, and trajectory hooks for Agent Relay",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -37,9 +37,9 @@
|
|
|
37
37
|
"test:watch": "vitest"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@agent-relay/protocol": "2.3.
|
|
41
|
-
"@agent-relay/config": "2.3.
|
|
42
|
-
"@agent-relay/trajectory": "2.3.
|
|
40
|
+
"@agent-relay/protocol": "2.3.14",
|
|
41
|
+
"@agent-relay/config": "2.3.14",
|
|
42
|
+
"@agent-relay/trajectory": "2.3.14"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@types/node": "^22.19.3",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/mcp",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.14",
|
|
4
4
|
"description": "MCP server for Agent Relay - native messaging tools for AI agents in Claude, Cursor, and VS Code",
|
|
5
5
|
"author": "Agent Workforce Inc.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -47,15 +47,15 @@
|
|
|
47
47
|
"prepublishOnly": "npm run clean && npm run build && npm test"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@agent-relay/config": "2.3.
|
|
51
|
-
"@agent-relay/protocol": "2.3.
|
|
52
|
-
"@agent-relay/utils": "2.3.
|
|
50
|
+
"@agent-relay/config": "2.3.14",
|
|
51
|
+
"@agent-relay/protocol": "2.3.14",
|
|
52
|
+
"@agent-relay/utils": "2.3.14",
|
|
53
53
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
54
54
|
"smol-toml": "^1.6.0",
|
|
55
55
|
"zod": "^3.23.8"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@agent-relay/sdk": "2.3.
|
|
58
|
+
"@agent-relay/sdk": "2.3.14",
|
|
59
59
|
"@types/node": "^22.19.3",
|
|
60
60
|
"typescript": "^5.9.3",
|
|
61
61
|
"vitest": "^2.1.9"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/memory",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.14",
|
|
4
4
|
"description": "Semantic memory storage and retrieval system for agent-relay with multiple backend support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"test:watch": "vitest"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@agent-relay/hooks": "2.3.
|
|
25
|
+
"@agent-relay/hooks": "2.3.14"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/node": "^22.19.3",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/policy",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.14",
|
|
4
4
|
"description": "Agent policy management with multi-level fallback (repo, local PRPM, cloud workspace)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"test:watch": "vitest"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@agent-relay/config": "2.3.
|
|
25
|
+
"@agent-relay/config": "2.3.14"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/node": "^22.19.3",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/sdk",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.14",
|
|
4
4
|
"description": "Lightweight SDK for agent-to-agent communication via Agent Relay",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
"access": "public"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@agent-relay/protocol": "2.3.
|
|
64
|
-
"@agent-relay/utils": "2.3.
|
|
63
|
+
"@agent-relay/protocol": "2.3.14",
|
|
64
|
+
"@agent-relay/utils": "2.3.14"
|
|
65
65
|
},
|
|
66
66
|
"engines": {
|
|
67
67
|
"node": ">=18.0.0"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/storage",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.14",
|
|
4
4
|
"description": "Storage adapters and interfaces for Relay message/session persistence",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
}
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@agent-relay/protocol": "2.3.
|
|
59
|
+
"@agent-relay/protocol": "2.3.14"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"@types/node": "^22.19.3",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/trajectory",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.14",
|
|
4
4
|
"description": "Trajectory integration utilities (trail/PDERO) for Relay",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"test:watch": "vitest"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@agent-relay/config": "2.3.
|
|
25
|
+
"@agent-relay/config": "2.3.14"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/node": "^22.19.3",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/user-directory",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.14",
|
|
4
4
|
"description": "User directory service for agent-relay (per-user credential storage)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"test:watch": "vitest"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@agent-relay/resiliency": "2.3.
|
|
25
|
+
"@agent-relay/resiliency": "2.3.14"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/node": "^22.19.3",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/utils",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.14",
|
|
4
4
|
"description": "Shared utilities for agent-relay: logging, name generation, command resolution, update checking",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/cjs/index.js",
|
|
@@ -112,8 +112,8 @@
|
|
|
112
112
|
"vitest": "^3.2.4"
|
|
113
113
|
},
|
|
114
114
|
"dependencies": {
|
|
115
|
-
"@agent-relay/config": "2.3.
|
|
116
|
-
"@agent-relay/protocol": "2.3.
|
|
115
|
+
"@agent-relay/config": "2.3.14",
|
|
116
|
+
"@agent-relay/protocol": "2.3.14",
|
|
117
117
|
"compare-versions": "^6.1.1"
|
|
118
118
|
},
|
|
119
119
|
"publishConfig": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/wrapper",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.14",
|
|
4
4
|
"description": "CLI agent wrappers for Agent Relay - tmux, pty integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -30,10 +30,10 @@
|
|
|
30
30
|
"clean": "rm -rf dist"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@agent-relay/protocol": "2.3.
|
|
34
|
-
"@agent-relay/config": "2.3.
|
|
35
|
-
"@agent-relay/continuity": "2.3.
|
|
36
|
-
"@agent-relay/resiliency": "2.3.
|
|
33
|
+
"@agent-relay/protocol": "2.3.14",
|
|
34
|
+
"@agent-relay/config": "2.3.14",
|
|
35
|
+
"@agent-relay/continuity": "2.3.14",
|
|
36
|
+
"@agent-relay/resiliency": "2.3.14",
|
|
37
37
|
"zod": "^3.23.8"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|