instar 1.3.1342 → 1.3.1343

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.
Files changed (53) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +48 -1
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  5. package/dist/core/PostUpdateMigrator.js +14 -0
  6. package/dist/core/PostUpdateMigrator.js.map +1 -1
  7. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  8. package/dist/core/devGatedFeatures.js +6 -0
  9. package/dist/core/devGatedFeatures.js.map +1 -1
  10. package/dist/core/types.d.ts +11 -0
  11. package/dist/core/types.d.ts.map +1 -1
  12. package/dist/core/types.js.map +1 -1
  13. package/dist/data/standards-guard-index.json +1 -1
  14. package/dist/data/standards-guard-index.meta.json +2 -2
  15. package/dist/data/standards-registry.meta.json +1 -1
  16. package/dist/messaging/AgentTokenManager.d.ts +7 -0
  17. package/dist/messaging/AgentTokenManager.d.ts.map +1 -1
  18. package/dist/messaging/AgentTokenManager.js +3 -1
  19. package/dist/messaging/AgentTokenManager.js.map +1 -1
  20. package/dist/messaging/DropPickup.d.ts +27 -1
  21. package/dist/messaging/DropPickup.d.ts.map +1 -1
  22. package/dist/messaging/DropPickup.js +79 -3
  23. package/dist/messaging/DropPickup.js.map +1 -1
  24. package/dist/messaging/MessageRouter.d.ts +24 -2
  25. package/dist/messaging/MessageRouter.d.ts.map +1 -1
  26. package/dist/messaging/MessageRouter.js +53 -7
  27. package/dist/messaging/MessageRouter.js.map +1 -1
  28. package/dist/messaging/types.d.ts +8 -0
  29. package/dist/messaging/types.d.ts.map +1 -1
  30. package/dist/messaging/types.js.map +1 -1
  31. package/dist/scaffold/templates.d.ts.map +1 -1
  32. package/dist/scaffold/templates.js +4 -0
  33. package/dist/scaffold/templates.js.map +1 -1
  34. package/dist/server/routes.d.ts.map +1 -1
  35. package/dist/server/routes.js +86 -2
  36. package/dist/server/routes.js.map +1 -1
  37. package/dist/threadline/ThreadlineEndpoints.d.ts +7 -0
  38. package/dist/threadline/ThreadlineEndpoints.d.ts.map +1 -1
  39. package/dist/threadline/ThreadlineEndpoints.js +3 -0
  40. package/dist/threadline/ThreadlineEndpoints.js.map +1 -1
  41. package/dist/threadline/localEnvelopeSignature.d.ts +282 -0
  42. package/dist/threadline/localEnvelopeSignature.d.ts.map +1 -0
  43. package/dist/threadline/localEnvelopeSignature.js +627 -0
  44. package/dist/threadline/localEnvelopeSignature.js.map +1 -0
  45. package/package.json +1 -1
  46. package/src/data/builtin-manifest.json +63 -63
  47. package/src/data/standards-guard-index.json +1 -1
  48. package/src/data/standards-guard-index.meta.json +2 -2
  49. package/src/data/standards-registry.meta.json +1 -1
  50. package/src/scaffold/templates.ts +4 -0
  51. package/upgrades/{1.3.1342.md → 1.3.1343.md} +23 -0
  52. package/upgrades/a2a-local-route-signed-envelope.eli16.md +33 -0
  53. package/upgrades/side-effects/a2a-local-route-signed-envelope.md +156 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"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"}
@@ -228,6 +228,9 @@ import { MessageDelivery } from '../messaging/MessageDelivery.js';
228
228
  import { MessageRouter } from '../messaging/MessageRouter.js';
229
229
  import { generateAgentToken } from '../messaging/AgentTokenManager.js';
230
230
  import { pickupDroppedMessages } from '../messaging/DropPickup.js';
231
+ import { createAgentLocalEnvelopeSigner, resolveLocalRouteSignatureMode } from '../threadline/localEnvelopeSignature.js';
232
+ /** The one second drop-pickup pass per boot (signed envelope §7); cleared at shutdown. */
233
+ let dropSecondPassTimer = null;
231
234
  import { pickupGitSyncMessages } from '../messaging/GitSyncTransport.js';
232
235
  import { DeliveryRetryManager } from '../messaging/DeliveryRetryManager.js';
233
236
  import { SpawnRequestManager } from '../messaging/SpawnRequestManager.js';
@@ -16266,11 +16269,51 @@ export async function startServer(options) {
16266
16269
  localAgent: config.projectName,
16267
16270
  localMachine: machineId,
16268
16271
  serverUrl: `http://localhost:${config.port}`,
16272
+ // A2A local-route signed envelope §7: THE production signer, over the
16273
+ // Threadline identity (not the machine identity). It reads the identity
16274
+ // at each sign, so one created later by the Threadline bootstrap is used.
16275
+ envelopeSigner: createAgentLocalEnvelopeSigner(config.projectName, config.stateDir),
16269
16276
  }, crossMachineDeps);
16270
16277
  // Generate/persist agent token for cross-agent auth (idempotent — reuses existing token)
16271
16278
  const agentToken = generateAgentToken(config.projectName);
16272
16279
  // Pick up any messages dropped while this agent was offline
16273
- const dropResult = await pickupDroppedMessages(config.projectName, messageStore);
16280
+ // A2A local-route signed envelope §7: pickup applies the signature check
16281
+ // by mode. The boot pass runs before any peer is listening, so it never
16282
+ // probes and never expires; if it holds anything, ONE second pass runs
16283
+ // five minutes later with the first-contact probe allowed.
16284
+ const dropSignatureMode = () => resolveLocalRouteSignatureMode({
16285
+ enabled: liveConfig.get('threadline.localRouteSignature.enabled', undefined),
16286
+ dryRun: liveConfig.get('threadline.localRouteSignature.dryRun', undefined),
16287
+ }, config);
16288
+ const bootDropMode = dropSignatureMode();
16289
+ if (bootDropMode !== 'off')
16290
+ console.log(`[relay-agent-signature] drop pickup (boot pass) mode=${bootDropMode}`);
16291
+ const dropResult = await pickupDroppedMessages(config.projectName, messageStore, { mode: bootDropMode, stateDir: config.stateDir, pass: 'boot' });
16292
+ if (dropResult.held > 0) {
16293
+ console.log(`[relay-agent-signature] holding ${dropResult.held} unproven dropped message(s); second pass in 5 minutes`);
16294
+ dropSecondPassTimer = setTimeout(() => {
16295
+ dropSecondPassTimer = null;
16296
+ const mode = dropSignatureMode();
16297
+ console.log(`[relay-agent-signature] drop pickup (second pass) mode=${mode}`);
16298
+ pickupDroppedMessages(config.projectName, messageStore, { mode, stateDir: config.stateDir, pass: 'second' })
16299
+ .then((second) => {
16300
+ if (second.ingested > 0)
16301
+ console.log(`[relay-agent-signature] second pass ingested ${second.ingested} dropped message(s)`);
16302
+ if (second.held > 0 || second.expired > 0) {
16303
+ console.warn(`[relay-agent-signature] second pass: ${second.held} held, ${second.expired} expired (senders: ${second.heldSenders.join(', ') || 'unknown'})`);
16304
+ DegradationReporter.getInstance().report({
16305
+ feature: 'Threadline.localRouteSignature',
16306
+ primary: 'Ingest messages other agents parked for this agent while it was down',
16307
+ fallback: 'Unproven parked messages are held in the drop directory and deleted once older than 7 days',
16308
+ reason: `${second.held} parked message(s) held and ${second.expired} expired: their signature could not be verified (senders: ${second.heldSenders.join(', ') || 'unknown'})`,
16309
+ impact: 'Those messages were not delivered to this agent; their senders still show them as queued',
16310
+ });
16311
+ }
16312
+ })
16313
+ .catch((err) => console.warn(`[relay-agent-signature] second pass failed: ${err instanceof Error ? err.message : String(err)}`));
16314
+ }, 5 * 60_000);
16315
+ dropSecondPassTimer.unref();
16316
+ }
16274
16317
  const dropSummary = dropResult.ingested > 0
16275
16318
  ? ` | picked up ${dropResult.ingested} dropped message(s)`
16276
16319
  : '';
@@ -28151,6 +28194,10 @@ export async function startServer(options) {
28151
28194
  process.exit(1);
28152
28195
  }
28153
28196
  _shuttingDown = true;
28197
+ if (dropSecondPassTimer) {
28198
+ clearTimeout(dropSecondPassTimer);
28199
+ dropSecondPassTimer = null;
28200
+ }
28154
28201
  // Hard deadline: the teardown below awaits many subsystems in sequence and
28155
28202
  // any one of them (an origin worker, a tunnel, a Threadline relay, a server
28156
28203
  // with an open long-poll) can hang; without a bound the process never