@groundnuty/macf-channel-server 0.2.34 → 0.2.36

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.
@@ -4,6 +4,24 @@ import { MacfError } from '@groundnuty/macf-core';
4
4
  export declare class CollisionError extends MacfError {
5
5
  constructor(name: string, host: string, port: number);
6
6
  }
7
+ /**
8
+ * Thrown when the conditional registration loses a race (groundnuty/macf#439):
9
+ * the collision check decided to register/takeover, but between that read and
10
+ * the write a concurrent instance of the same identity claimed the slot. This
11
+ * instance aborts cleanly (the winner holds the slot) rather than silently
12
+ * clobbering it. `current` is the conflicting registration observed at write
13
+ * time (null if the slot was emptied in the window).
14
+ */
15
+ export declare class RegisterRaceError extends MacfError {
16
+ constructor(name: string, current: AgentInfo | null);
17
+ }
18
+ /** Result of a collision /health ping: liveness + the advertised version
19
+ * (null when the peer answered but carried no `version` field — a
20
+ * pre-groundnuty/macf#424 instance — or was unreachable/unparseable). */
21
+ export interface HealthPingResult {
22
+ readonly alive: boolean;
23
+ readonly version: string | null;
24
+ }
7
25
  export type CollisionResult = {
8
26
  readonly action: 'register';
9
27
  } | {
@@ -15,11 +33,41 @@ export type CollisionResult = {
15
33
  };
16
34
  /**
17
35
  * Check if an agent is already registered and alive.
18
- * Returns the action to take: register (fresh), takeover (dead), or abort (alive).
36
+ *
37
+ * Returns the action to take: register (fresh), takeover (the slot is held by a
38
+ * dead OR alive-but-older instance), or abort (a same/newer live peer holds it).
39
+ *
40
+ * Version-aware takeover (groundnuty/macf#424): a same-version alive peer is
41
+ * still protected (alive → abort), but an alive instance running an *older*
42
+ * version no longer permanently squats the slot — a newer incoming displaces
43
+ * it. The "missing version = oldest" asymmetry is load-bearing: a `/health`
44
+ * with no `version` field is, by construction, a pre-#424 instance (the exact
45
+ * squatter that motivated this), so a versioned incoming takes it over.
46
+ *
47
+ * Quadrant (incoming × existing-alive), assuming the existing peer answers
48
+ * `/health` (dead → takeover regardless):
49
+ *
50
+ * incoming versioned, existing unversioned → takeover (takeover_unversioned_existing)
51
+ * incoming versioned, existing older → takeover (takeover_newer_version)
52
+ * incoming versioned, existing same/newer → abort (abort_same_or_newer)
53
+ * incoming unversioned, existing versioned → abort (abort_incoming_unversioned)
54
+ * incoming unversioned, existing unversioned → abort (abort_incoming_unversioned)
55
+ *
56
+ * `MACF_NO_VERSION_TAKEOVER=1` disables the version predicate (alive → abort
57
+ * always) for the known exception: an operator intentionally pinning an older
58
+ * version while a newer instance launches. Sister escape to MACF_OUTBOUND_LEGACY.
59
+ *
60
+ * Takeover-after-serve: the registry write (takeover/register) happens in the
61
+ * caller AFTER this instance's server is up + answering, so a newer-but-crashing
62
+ * instance never strands the slot. The version compare adds no new TOCTOU window
63
+ * over the existing ping→decide→register sequence — two racing newer instances
64
+ * degrade to the same race the current `variable_exists` check already has.
65
+ *
66
+ * @param incomingVersion this instance's channel-server version (PACKAGE_VERSION).
19
67
  */
20
68
  export declare function checkCollision(name: string, registry: Registry, certPaths: {
21
69
  readonly caCertPath: string;
22
70
  readonly agentCertPath: string;
23
71
  readonly agentKeyPath: string;
24
- }, logger: Logger): Promise<CollisionResult>;
72
+ }, incomingVersion: string, logger: Logger): Promise<CollisionResult>;
25
73
  //# sourceMappingURL=collision.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collision.d.ts","sourceRoot":"","sources":["../src/collision.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,qBAAa,cAAe,SAAQ,SAAS;gBAC/B,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAQrD;AAgED,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAC/B;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,CAAC;AAE/D;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE;IACT,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B,EACD,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,CAAC,CAwC1B"}
1
+ {"version":3,"file":"collision.d.ts","sourceRoot":"","sources":["../src/collision.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAiB,MAAM,uBAAuB,CAAC;AAKjE,qBAAa,cAAe,SAAQ,SAAS;gBAC/B,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAQrD;AAED;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,SAAS;gBAClC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;CAYpD;AAID;;0EAE0E;AAC1E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAkFD,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAC/B;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE;IACT,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B,EACD,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,CAAC,CA4E1B"}
package/dist/collision.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import { request } from 'node:https';
2
2
  import { readFileSync } from 'node:fs';
3
- import { MacfError } from '@groundnuty/macf-core';
3
+ import { MacfError, compareSemver } from '@groundnuty/macf-core';
4
+ /** Matches a parseable `x.y.z` (optional leading `v`) version string. */
5
+ const VERSION_PATTERN = /^v?\d+\.\d+\.\d+$/;
4
6
  export class CollisionError extends MacfError {
5
7
  constructor(name, host, port) {
6
8
  super('AGENT_COLLISION', `Agent '${name}' is already running at ${host}:${port}. ` +
@@ -8,10 +10,30 @@ export class CollisionError extends MacfError {
8
10
  this.name = 'CollisionError';
9
11
  }
10
12
  }
13
+ /**
14
+ * Thrown when the conditional registration loses a race (groundnuty/macf#439):
15
+ * the collision check decided to register/takeover, but between that read and
16
+ * the write a concurrent instance of the same identity claimed the slot. This
17
+ * instance aborts cleanly (the winner holds the slot) rather than silently
18
+ * clobbering it. `current` is the conflicting registration observed at write
19
+ * time (null if the slot was emptied in the window).
20
+ */
21
+ export class RegisterRaceError extends MacfError {
22
+ constructor(name, current) {
23
+ super('AGENT_REGISTER_RACE', current === null
24
+ ? `Agent '${name}' lost a registration race: the slot changed between ` +
25
+ 'the collision check and the write (now empty). Aborting; relaunch to retry.'
26
+ : `Agent '${name}' lost a registration race: another instance registered ` +
27
+ `concurrently (now ${current.host}:${current.port}, instance ${current.instance_id}). ` +
28
+ 'Aborting; the winner holds the slot.');
29
+ this.name = 'RegisterRaceError';
30
+ }
31
+ }
11
32
  const HEALTH_PING_TIMEOUT_MS = 5000;
12
33
  /**
13
34
  * Ping an agent's /health endpoint via mTLS.
14
- * Returns true if the agent responds, false if unreachable.
35
+ * Returns `{ alive, version }`: alive iff the agent responds 2xx; version is
36
+ * the `version` field parsed from the JSON body (null if absent/unparseable).
15
37
  */
16
38
  function pingHealth(host, port, caCertPath, agentCertPath, agentKeyPath, timeoutMs = HEALTH_PING_TIMEOUT_MS) {
17
39
  // readFileSync on missing/unreadable cert files throws ENOENT/EACCES
@@ -31,7 +53,7 @@ function pingHealth(host, port, caCertPath, agentCertPath, agentKeyPath, timeout
31
53
  key = readFileSync(agentKeyPath);
32
54
  }
33
55
  catch {
34
- return Promise.resolve(false);
56
+ return Promise.resolve({ alive: false, version: null });
35
57
  }
36
58
  return new Promise((resolve) => {
37
59
  const req = request({
@@ -45,23 +67,74 @@ function pingHealth(host, port, caCertPath, agentCertPath, agentKeyPath, timeout
45
67
  rejectUnauthorized: true,
46
68
  timeout: timeoutMs,
47
69
  }, (res) => {
48
- // Any 2xx response means the agent is alive
49
- resolve(res.statusCode !== undefined && res.statusCode >= 200 && res.statusCode < 300);
50
- res.resume(); // drain response
70
+ const alive = res.statusCode !== undefined && res.statusCode >= 200 && res.statusCode < 300;
71
+ if (!alive) {
72
+ res.resume(); // drain
73
+ resolve({ alive: false, version: null });
74
+ return;
75
+ }
76
+ // Alive — read the body to extract the advertised version. A peer
77
+ // that answers 2xx but carries no `version` field (or an unparseable
78
+ // body) is treated as version=null (a pre-#424 instance).
79
+ const chunks = [];
80
+ res.on('data', (c) => chunks.push(c));
81
+ res.on('end', () => {
82
+ let version = null;
83
+ try {
84
+ const body = JSON.parse(Buffer.concat(chunks).toString('utf-8'));
85
+ if (typeof body.version === 'string')
86
+ version = body.version;
87
+ }
88
+ catch {
89
+ // alive but unparseable → version stays null
90
+ }
91
+ resolve({ alive: true, version });
92
+ });
93
+ res.on('error', () => resolve({ alive: true, version: null }));
51
94
  });
52
- req.on('error', () => resolve(false));
95
+ req.on('error', () => resolve({ alive: false, version: null }));
53
96
  req.on('timeout', () => {
54
97
  req.destroy();
55
- resolve(false);
98
+ resolve({ alive: false, version: null });
56
99
  });
57
100
  req.end();
58
101
  });
59
102
  }
60
103
  /**
61
104
  * Check if an agent is already registered and alive.
62
- * Returns the action to take: register (fresh), takeover (dead), or abort (alive).
105
+ *
106
+ * Returns the action to take: register (fresh), takeover (the slot is held by a
107
+ * dead OR alive-but-older instance), or abort (a same/newer live peer holds it).
108
+ *
109
+ * Version-aware takeover (groundnuty/macf#424): a same-version alive peer is
110
+ * still protected (alive → abort), but an alive instance running an *older*
111
+ * version no longer permanently squats the slot — a newer incoming displaces
112
+ * it. The "missing version = oldest" asymmetry is load-bearing: a `/health`
113
+ * with no `version` field is, by construction, a pre-#424 instance (the exact
114
+ * squatter that motivated this), so a versioned incoming takes it over.
115
+ *
116
+ * Quadrant (incoming × existing-alive), assuming the existing peer answers
117
+ * `/health` (dead → takeover regardless):
118
+ *
119
+ * incoming versioned, existing unversioned → takeover (takeover_unversioned_existing)
120
+ * incoming versioned, existing older → takeover (takeover_newer_version)
121
+ * incoming versioned, existing same/newer → abort (abort_same_or_newer)
122
+ * incoming unversioned, existing versioned → abort (abort_incoming_unversioned)
123
+ * incoming unversioned, existing unversioned → abort (abort_incoming_unversioned)
124
+ *
125
+ * `MACF_NO_VERSION_TAKEOVER=1` disables the version predicate (alive → abort
126
+ * always) for the known exception: an operator intentionally pinning an older
127
+ * version while a newer instance launches. Sister escape to MACF_OUTBOUND_LEGACY.
128
+ *
129
+ * Takeover-after-serve: the registry write (takeover/register) happens in the
130
+ * caller AFTER this instance's server is up + answering, so a newer-but-crashing
131
+ * instance never strands the slot. The version compare adds no new TOCTOU window
132
+ * over the existing ping→decide→register sequence — two racing newer instances
133
+ * degrade to the same race the current `variable_exists` check already has.
134
+ *
135
+ * @param incomingVersion this instance's channel-server version (PACKAGE_VERSION).
63
136
  */
64
- export async function checkCollision(name, registry, certPaths, logger) {
137
+ export async function checkCollision(name, registry, certPaths, incomingVersion, logger) {
65
138
  const existing = await registry.get(name);
66
139
  if (existing === null) {
67
140
  logger.info('collision_check', { result: 'fresh', agent: name });
@@ -74,14 +147,53 @@ export async function checkCollision(name, registry, certPaths, logger) {
74
147
  port: existing.port,
75
148
  instance_id: existing.instance_id,
76
149
  });
77
- const alive = await pingHealth(existing.host, existing.port, certPaths.caCertPath, certPaths.agentCertPath, certPaths.agentKeyPath);
150
+ const { alive, version: existingVersion } = await pingHealth(existing.host, existing.port, certPaths.caCertPath, certPaths.agentCertPath, certPaths.agentKeyPath);
78
151
  if (alive) {
152
+ const versionTakeoverDisabled = process.env['MACF_NO_VERSION_TAKEOVER'] === '1';
153
+ const incomingVersioned = VERSION_PATTERN.test(incomingVersion);
154
+ // Decide takeover-vs-abort against a LIVE peer (the #424 quadrant).
155
+ let takeover;
156
+ let basis;
157
+ if (versionTakeoverDisabled) {
158
+ takeover = false;
159
+ basis = 'abort_version_takeover_disabled';
160
+ }
161
+ else if (!incomingVersioned) {
162
+ // An unversioned incoming never displaces a live peer.
163
+ takeover = false;
164
+ basis = 'abort_incoming_unversioned';
165
+ }
166
+ else if (existingVersion === null) {
167
+ // Existing answered but advertised no version → pre-#424 ⟹ oldest.
168
+ takeover = true;
169
+ basis = 'takeover_unversioned_existing';
170
+ }
171
+ else if (!VERSION_PATTERN.test(existingVersion)) {
172
+ // Non-null but unparseable (malformed /health body, or a pre-release tag
173
+ // the x.y.z parser can't read) → treated as oldest → takeover, but logged
174
+ // with a distinct basis so the line doesn't falsely claim a real version
175
+ // comparison happened (#438 review note 3).
176
+ takeover = true;
177
+ basis = 'takeover_unparseable_existing';
178
+ }
179
+ else if (compareSemver(incomingVersion, existingVersion) > 0) {
180
+ takeover = true;
181
+ basis = 'takeover_newer_version';
182
+ }
183
+ else {
184
+ takeover = false;
185
+ basis = 'abort_same_or_newer';
186
+ }
79
187
  logger.warn('collision_check', {
80
- result: 'abort',
188
+ result: basis,
81
189
  agent: name,
190
+ incoming_version: incomingVersion,
191
+ existing_version: existingVersion,
82
192
  host: existing.host,
83
193
  port: existing.port,
84
194
  });
195
+ if (takeover)
196
+ return { action: 'takeover', previous: existing };
85
197
  return { action: 'abort', existing };
86
198
  }
87
199
  logger.info('collision_check', {
@@ -1 +1 @@
1
- {"version":3,"file":"collision.js","sourceRoot":"","sources":["../src/collision.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collision.js","sourceRoot":"","sources":["../src/collision.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -12,9 +12,9 @@ export { createLogger } from '@groundnuty/macf-core';
12
12
  export { loadConfig } from '@groundnuty/macf-core';
13
13
  export { NotifyPayloadSchema, NotifyTypeSchema, HealthResponseSchema, CiCompletionPayloadSchema, CheckSuiteConclusionSchema, } from '@groundnuty/macf-core';
14
14
  export type { NotifyPayload, NotifyType, HealthResponse, AgentConfig, Logger, McpChannel, HttpsServer, HealthState, CiCompletionPayload, CheckSuiteConclusion, } from '@groundnuty/macf-core';
15
- export { createRegistryFromConfig, createRegistry, createGitHubClient, GitHubApiError, AgentInfoSchema, RegistryConfigSchema } from '@groundnuty/macf-core';
16
- export type { AgentInfo, Registry, RegistryConfig, GitHubVariablesClient } from '@groundnuty/macf-core';
17
- export { checkCollision, CollisionError } from './collision.js';
15
+ export { createRegistryFromConfig, createRegistry, createGitHubClient, GitHubApiError, AgentInfoSchema, agentInfoEquals, RegistryConfigSchema } from '@groundnuty/macf-core';
16
+ export type { AgentInfo, Registry, RegisterResult, RegistryConfig, GitHubVariablesClient } from '@groundnuty/macf-core';
17
+ export { checkCollision, CollisionError, RegisterRaceError } from './collision.js';
18
18
  export type { CollisionResult } from './collision.js';
19
19
  export { registerShutdownHandler } from './shutdown.js';
20
20
  export { generateToken } from '@groundnuty/macf-core';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7J,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EACL,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAC3D,yBAAyB,EAAE,0BAA0B,GACtD,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAC9D,UAAU,EAAE,WAAW,EAAE,WAAW,EACpC,mBAAmB,EAAE,oBAAoB,GAC1C,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC5J,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACzH,YAAY,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAChG,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/G,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7J,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EACL,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAC3D,yBAAyB,EAAE,0BAA0B,GACtD,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAC9D,UAAU,EAAE,WAAW,EAAE,WAAW,EACpC,mBAAmB,EAAE,oBAAoB,GAC1C,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7K,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACxH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnF,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACzH,YAAY,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAChG,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/G,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -12,8 +12,8 @@ export { createLogger } from '@groundnuty/macf-core';
12
12
  export { loadConfig } from '@groundnuty/macf-core';
13
13
  export { NotifyPayloadSchema, NotifyTypeSchema, HealthResponseSchema, CiCompletionPayloadSchema, CheckSuiteConclusionSchema, } from '@groundnuty/macf-core';
14
14
  // P2: Registry & Discovery
15
- export { createRegistryFromConfig, createRegistry, createGitHubClient, GitHubApiError, AgentInfoSchema, RegistryConfigSchema } from '@groundnuty/macf-core';
16
- export { checkCollision, CollisionError } from './collision.js';
15
+ export { createRegistryFromConfig, createRegistry, createGitHubClient, GitHubApiError, AgentInfoSchema, agentInfoEquals, RegistryConfigSchema } from '@groundnuty/macf-core';
16
+ export { checkCollision, CollisionError, RegisterRaceError } from './collision.js';
17
17
  export { registerShutdownHandler } from './shutdown.js';
18
18
  export { generateToken } from '@groundnuty/macf-core';
19
19
  export { checkPendingIssues } from './startup-issues.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7J,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EACL,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAC3D,yBAAyB,EAAE,0BAA0B,GACtD,MAAM,uBAAuB,CAAC;AAO/B,2BAA2B;AAC3B,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE5J,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,6BAA6B;AAC7B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEzH,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEhG,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7J,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EACL,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAC3D,yBAAyB,EAAE,0BAA0B,GACtD,MAAM,uBAAuB,CAAC;AAO/B,2BAA2B;AAC3B,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7K,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,6BAA6B;AAC7B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEzH,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEhG,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/otel.d.ts CHANGED
@@ -37,6 +37,27 @@
37
37
  *
38
38
  * See DR-021 for the full rationale + option analysis.
39
39
  */
40
+ /**
41
+ * Build the OTel Resource for the channel server.
42
+ *
43
+ * Merge order (later wins on key collision):
44
+ * 1. `defaultResource()` — SDK defaults (telemetry.sdk.*, default service.name).
45
+ * 2. `detectResources({ detectors: [envDetector] })` — parses
46
+ * `OTEL_RESOURCE_ATTRIBUTES` (gen_ai.agent.name, gen_ai.agent.role,
47
+ * service.namespace, …). `defaultResource()` does NOT run the env
48
+ * detector itself (verified on @opentelemetry/resources 2.7.0), so
49
+ * without this explicit merge those attrs never land — exported spans
50
+ * carried `service.name` but `gen_ai.agent.name` was <UNSET>
51
+ * (groundnuty/macf#427, surfaced verifying #422 AC-5).
52
+ * 3. explicit `service.name` / `service.version` — applied last so the
53
+ * channel server's computed service.name wins over any env/default value.
54
+ *
55
+ * Extracted from bootstrapOtel() as a pure function of the dynamically-imported
56
+ * SDK modules so the merge is unit-testable without standing up the provider.
57
+ * Takes `resources`/`semconv` as params (rather than importing) to preserve
58
+ * the zero-cost dynamic-import doctrine — see the module header.
59
+ */
60
+ export declare function buildResource(resources: typeof import('@opentelemetry/resources'), semconv: typeof import('@opentelemetry/semantic-conventions'), serviceName: string, serviceVersion: string): ReturnType<(typeof import('@opentelemetry/resources'))['defaultResource']>;
40
61
  /**
41
62
  * Opt-in OTEL bootstrap. No-op (and zero module-resolution cost) when
42
63
  * `OTEL_EXPORTER_OTLP_ENDPOINT` is unset. When set, dynamic-imports
@@ -1 +1 @@
1
- {"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA+InD"}
1
+ {"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,cAAc,0BAA0B,CAAC,EACpD,OAAO,EAAE,cAAc,qCAAqC,CAAC,EAC7D,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,UAAU,CAAC,CAAC,cAAc,0BAA0B,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAU5E;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA2InD"}
package/dist/otel.js CHANGED
@@ -37,6 +37,35 @@
37
37
  *
38
38
  * See DR-021 for the full rationale + option analysis.
39
39
  */
40
+ /**
41
+ * Build the OTel Resource for the channel server.
42
+ *
43
+ * Merge order (later wins on key collision):
44
+ * 1. `defaultResource()` — SDK defaults (telemetry.sdk.*, default service.name).
45
+ * 2. `detectResources({ detectors: [envDetector] })` — parses
46
+ * `OTEL_RESOURCE_ATTRIBUTES` (gen_ai.agent.name, gen_ai.agent.role,
47
+ * service.namespace, …). `defaultResource()` does NOT run the env
48
+ * detector itself (verified on @opentelemetry/resources 2.7.0), so
49
+ * without this explicit merge those attrs never land — exported spans
50
+ * carried `service.name` but `gen_ai.agent.name` was <UNSET>
51
+ * (groundnuty/macf#427, surfaced verifying #422 AC-5).
52
+ * 3. explicit `service.name` / `service.version` — applied last so the
53
+ * channel server's computed service.name wins over any env/default value.
54
+ *
55
+ * Extracted from bootstrapOtel() as a pure function of the dynamically-imported
56
+ * SDK modules so the merge is unit-testable without standing up the provider.
57
+ * Takes `resources`/`semconv` as params (rather than importing) to preserve
58
+ * the zero-cost dynamic-import doctrine — see the module header.
59
+ */
60
+ export function buildResource(resources, semconv, serviceName, serviceVersion) {
61
+ return resources
62
+ .defaultResource()
63
+ .merge(resources.detectResources({ detectors: [resources.envDetector] }))
64
+ .merge(resources.resourceFromAttributes({
65
+ [semconv.ATTR_SERVICE_NAME]: serviceName,
66
+ [semconv.ATTR_SERVICE_VERSION]: serviceVersion,
67
+ }));
68
+ }
40
69
  /**
41
70
  * Opt-in OTEL bootstrap. No-op (and zero module-resolution cost) when
42
71
  * `OTEL_EXPORTER_OTLP_ENDPOINT` is unset. When set, dynamic-imports
@@ -102,13 +131,11 @@ export async function bootstrapOtel() {
102
131
  `or unset OTEL_EXPORTER_OTLP_ENDPOINT to disable telemetry.\n`);
103
132
  process.exit(1);
104
133
  }
105
- // Resource attributes inherit from the SDK's default detectors
106
- // (process.*, host.*, telemetry.sdk.*) via `defaultResource()`,
107
- // merged with our explicit service.* attributes on top.
108
- const resource = resources.defaultResource().merge(resources.resourceFromAttributes({
109
- [semconv.ATTR_SERVICE_NAME]: serviceName,
110
- [semconv.ATTR_SERVICE_VERSION]: serviceVersion,
111
- }));
134
+ // Resource = SDK defaults + OTEL_RESOURCE_ATTRIBUTES (gen_ai.agent.name,
135
+ // gen_ai.agent.role, service.namespace) + explicit service.* on top.
136
+ // See buildResource() for the merge order + why the env detector is
137
+ // explicit (groundnuty/macf#427).
138
+ const resource = buildResource(resources, semconv, serviceName, serviceVersion);
112
139
  const tracerProvider = new sdkNode.NodeTracerProvider({
113
140
  resource,
114
141
  spanProcessors: [new sdkBase.BatchSpanProcessor(new traceExporter.OTLPTraceExporter())],
package/dist/otel.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"otel.js","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"otel.js","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -17,7 +17,7 @@ import { buildAgentCard } from './agent-card.js';
17
17
  import { TaskStore } from './a2a-task.js';
18
18
  import { PACKAGE_VERSION } from './package-version.js';
19
19
  import { createRegistry, createRegistryFromConfig } from '@groundnuty/macf-core';
20
- import { checkCollision, CollisionError } from './collision.js';
20
+ import { checkCollision, CollisionError, RegisterRaceError } from './collision.js';
21
21
  import { registerShutdownHandler } from './shutdown.js';
22
22
  import { createTokenRefresher } from './token-refresh.js';
23
23
  import { createRefreshAwareClient } from './refresh-aware-client.js';
@@ -429,12 +429,15 @@ async function main() {
429
429
  await mcp.connect();
430
430
  // P1: Bind port
431
431
  const { actualPort } = await httpsServer.start(config.port, config.host);
432
- // P2: Collision detection
432
+ // P2: Collision detection. The HTTPS server is already bound + serving
433
+ // (P1 above), so a version-aware takeover (groundnuty/macf#424) only fires
434
+ // for an instance that can actually serve — a crash-on-boot newer instance
435
+ // never reaches here to strand the slot.
433
436
  const collisionResult = await checkCollision(config.agentName, registry, {
434
437
  caCertPath: config.caCertPath,
435
438
  agentCertPath: config.agentCertPath,
436
439
  agentKeyPath: config.agentKeyPath,
437
- }, logger);
440
+ }, PACKAGE_VERSION, logger);
438
441
  if (collisionResult.action === 'abort') {
439
442
  await httpsServer.stop();
440
443
  throw new CollisionError(config.agentName, collisionResult.existing.host, collisionResult.existing.port);
@@ -447,7 +450,25 @@ async function main() {
447
450
  instance_id: config.instanceId,
448
451
  started: new Date().toISOString(),
449
452
  };
450
- await registry.register(config.agentName, agentInfo);
453
+ // P2: Conditional (CAS) write to close the read→write TOCTOU window
454
+ // (groundnuty/macf#439). The collision check above observed the slot as
455
+ // either absent (action 'register') or held by the takeover target (action
456
+ // 'takeover'). Write only if the slot still matches that observation — a
457
+ // concurrent same-identity instance that registered in the window makes this
458
+ // write a no-op and aborts us cleanly, rather than silently clobbering it.
459
+ const expectedSlot = collisionResult.action === 'takeover' ? collisionResult.previous : null;
460
+ const registerResult = await registry.registerConditional(config.agentName, agentInfo, expectedSlot);
461
+ if (!registerResult.ok) {
462
+ logger.warn('register_race_lost', {
463
+ agent: config.agentName,
464
+ expected_instance: expectedSlot?.instance_id ?? null,
465
+ current_instance: registerResult.current?.instance_id ?? null,
466
+ current_host: registerResult.current?.host ?? null,
467
+ current_port: registerResult.current?.port ?? null,
468
+ });
469
+ await httpsServer.stop();
470
+ throw new RegisterRaceError(config.agentName, registerResult.current);
471
+ }
451
472
  logger.info('registered', {
452
473
  agent: config.agentName,
453
474
  host: config.advertiseHost,
@@ -471,7 +492,17 @@ async function main() {
471
492
  } // end runStartup
472
493
  }
473
494
  main().catch((err) => {
474
- process.stderr.write(`Fatal: ${err instanceof Error ? err.message : String(err)}\n`);
495
+ // Force a clean exit on any fatal bootstrap abort (groundnuty/macf#449).
496
+ // Both bootstrap-abort idioms — CollisionError and RegisterRaceError (#447)
497
+ // — throw out of main() to here. Setting `process.exitCode = 1` alone is
498
+ // NOT enough to terminate: the MCP stdio transport keeps stdin's readable
499
+ // stream open, so the event loop stays alive and the process *hangs*
500
+ // instead of exiting 1 (reproducible with a held-open stdin, e.g.
501
+ // `sleep 10 | node …`). `process.exit(1)` tears down regardless. We set
502
+ // exitCode first (so the code is correct even if the write callback never
503
+ // fires) and exit from the stderr-flush callback so the diagnostic isn't
504
+ // truncated on a pipe.
475
505
  process.exitCode = 1;
506
+ process.stderr.write(`Fatal: ${err instanceof Error ? err.message : String(err)}\n`, () => process.exit(1));
476
507
  });
477
508
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@groundnuty/macf-channel-server",
3
- "version": "0.2.34",
3
+ "version": "0.2.36",
4
4
  "description": "MCP channel server for the Multi-Agent Coordination Framework. HTTPS + mTLS endpoint agents connect to for inter-agent messaging (notify), CI-completion routing, and /sign certificate issuance. Invoked by Claude Code's plugin via `npx -y @groundnuty/macf-channel-server` per DR-022.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -33,7 +33,7 @@
33
33
  "test:integration": "vitest run --config vitest.integration.config.ts"
34
34
  },
35
35
  "dependencies": {
36
- "@groundnuty/macf-core": "0.2.34",
36
+ "@groundnuty/macf-core": "0.2.36",
37
37
  "@modelcontextprotocol/sdk": "~1.29.0",
38
38
  "@opentelemetry/api": "1.9.1",
39
39
  "@opentelemetry/core": "2.7.0",