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.
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +48 -1
- package/dist/commands/server.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +14 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/devGatedFeatures.d.ts.map +1 -1
- package/dist/core/devGatedFeatures.js +6 -0
- package/dist/core/devGatedFeatures.js.map +1 -1
- package/dist/core/types.d.ts +11 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/data/standards-guard-index.json +1 -1
- package/dist/data/standards-guard-index.meta.json +2 -2
- package/dist/data/standards-registry.meta.json +1 -1
- package/dist/messaging/AgentTokenManager.d.ts +7 -0
- package/dist/messaging/AgentTokenManager.d.ts.map +1 -1
- package/dist/messaging/AgentTokenManager.js +3 -1
- package/dist/messaging/AgentTokenManager.js.map +1 -1
- package/dist/messaging/DropPickup.d.ts +27 -1
- package/dist/messaging/DropPickup.d.ts.map +1 -1
- package/dist/messaging/DropPickup.js +79 -3
- package/dist/messaging/DropPickup.js.map +1 -1
- package/dist/messaging/MessageRouter.d.ts +24 -2
- package/dist/messaging/MessageRouter.d.ts.map +1 -1
- package/dist/messaging/MessageRouter.js +53 -7
- package/dist/messaging/MessageRouter.js.map +1 -1
- package/dist/messaging/types.d.ts +8 -0
- package/dist/messaging/types.d.ts.map +1 -1
- package/dist/messaging/types.js.map +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +4 -0
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +86 -2
- package/dist/server/routes.js.map +1 -1
- package/dist/threadline/ThreadlineEndpoints.d.ts +7 -0
- package/dist/threadline/ThreadlineEndpoints.d.ts.map +1 -1
- package/dist/threadline/ThreadlineEndpoints.js +3 -0
- package/dist/threadline/ThreadlineEndpoints.js.map +1 -1
- package/dist/threadline/localEnvelopeSignature.d.ts +282 -0
- package/dist/threadline/localEnvelopeSignature.d.ts.map +1 -0
- package/dist/threadline/localEnvelopeSignature.js +627 -0
- package/dist/threadline/localEnvelopeSignature.js.map +1 -0
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +63 -63
- package/src/data/standards-guard-index.json +1 -1
- package/src/data/standards-guard-index.meta.json +2 -2
- package/src/data/standards-registry.meta.json +1 -1
- package/src/scaffold/templates.ts +4 -0
- package/upgrades/{1.3.1342.md → 1.3.1343.md} +23 -0
- package/upgrades/a2a-local-route-signed-envelope.eli16.md +33 -0
- 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":"AAwGA,OAAO,EAAE,cAAc,EAAwD,MAAM,2BAA2B,CAAC;AAUjH,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AA4BjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/server.js
CHANGED
|
@@ -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
|
-
|
|
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
|